{"version":3,"file":"js/chunk-vendors.4b55548c.js","mappings":"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A,mBACA,4BACA,eACA,qBACA,mBACA,+BACA,sBACA,mBACA,oBACA,aACA,gCACA,wBACA,gBACA,oBACA,WACA,oBACA,gBACA,sBACA,mBACA,+BACA,4BACA,oBACA,sBACA,0BACA,0BACA,kCACA,gCACA,8BACA,gCACA,6BACA,6BACA,2BACA,wBACA,yBACA,0BACA,4BACA,iBACA,iCACA,qBACA,gCACA,wBACA,6BACA,sCACA,4BACA,6BACA,6BACA,6BACA,wBACA,oBACA,0BACA,sBACA,gBACA,kBACA,kBACA,yBACA,6BACA,0BACA,8BACA,gBACA,0BACA,uBACA,gCACA,4BACA,kCACA,iBACA,6BACA,eACA,uBAESC,GAA2C,CACpD,OACA,aACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,KACA,UACA,SACA,SACA,SACA,UACA,UACA,gBACA,YACA,eACA,MACA,QACA,MACA,MACA,QACA,MACA,YAESC,GAAyC,sCACzCC,GAA4C,4CAG5CC,GAAiB,CAC1B,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SCnKG,SAASC,GAAc76B,GAC1B,MAAM86B,EAAY,IAAI76B,IAAID,GAC1B,IAAI4rB,EAAOkP,EAAU/N,SAIrB,OAHAnB,EAAOA,GAAQ,IACfA,EAAO,GAAOA,GACdkP,EAAU/N,SAAWnB,EACdkP,EAAUx9B,UACrB,CACA,SAASy9B,GAA6BC,GAGlC,IAAIC,EAAW,GACf,IAAgE,IAA5DD,EAAiB96B,OAAO,+BAAuC,CAE/D,MAAMg7B,EAAmBF,EAAiBtkC,MAAM,KAChD,IAAK,MAAM4pB,KAAW4a,EACd5a,EAAQzpB,OAAOE,WAAW,iCAC1BkkC,EAAW3a,EAAQzpB,OAAOiO,MAAM,mCAAmC,GAG/E,CACA,OAAOm2B,CACX,CACO,SAASE,GAAqBH,EAAkBI,GACnD,MAAMC,EAAWL,EAAiBtkC,MAAM,KACxC,IAAK,MAAM4pB,KAAW+a,EAClB,GAAI/a,EAAQzpB,OAAOE,WAAWqkC,GAC1B,OAAO9a,EAAQzpB,OAAOiO,MAAMs2B,EAAW,SAAS,GAGxD,MAAO,EACX,CAOO,SAASE,GAA6BN,GACzC,IAAIC,EAAW,GACXD,EAAiBjkC,WAAW,gCAE5BkkC,EAAWF,GAA6BC,GACxCA,EAAmBT,IAGvB,IAAIgB,EAAeJ,GAAqBH,EAAkB,gBAI1D,GADAO,EAAeA,EAAapkC,SAAS,KAAOokC,EAAaxqC,MAAM,GAAI,GAAKwqC,GACV,IAA1DP,EAAiB96B,OAAO,+BACoB,IAA5C86B,EAAiB96B,OAAO,eAAuB,CAE/C,IAAIs7B,EAA2B,GAC3BC,EAAc,GACdC,EAAaC,OAAOn3B,KAAK,aAAc,UACvCo3B,EAAiB,GAIrB,GAFAH,EAAcN,GAAqBH,EAAkB,eACrDU,EAAaC,OAAOn3B,KAAK22B,GAAqBH,EAAkB,cAAe,WAC1EO,EAAc,CAGfC,EAA2BL,GAAqBH,EAAkB,4BAClE,MAAMvrB,EAAW+rB,EAAyBp8B,cAC1C,GAAiB,UAAbqQ,GAAqC,SAAbA,EACxB,MAAM,IAAIle,MAAM,mGAGpB,GADAqqC,EAAiBT,GAAqBH,EAAkB,mBACnDY,EACD,MAAM,IAAIrqC,MAAM,4DAEpBgqC,EAAe,GAAGC,OAA8BC,UAAoBG,GACxE,CACA,IAAKH,EACD,MAAM,IAAIlqC,MAAM,yDAEf,GAA0B,IAAtBmqC,EAAW9mC,OAChB,MAAM,IAAIrD,MAAM,wDAEpB,MAAO,CACHsqC,KAAM,oBACN77B,IAAKu7B,EACLE,cACAC,aACAT,WAER,CACK,CAED,IAAIa,EAAaX,GAAqBH,EAAkB,yBACpDS,EAAcN,GAAqBH,EAAkB,eAKzD,GAHKS,IACDA,EAAcM,GAAsBR,KAEnCA,EACD,MAAM,IAAIhqC,MAAM,8DAEf,IAAKuqC,EACN,MAAM,IAAIvqC,MAAM,uEAMpB,OAHIuqC,EAAW/kC,WAAW,OACtB+kC,EAAaA,EAAW7b,UAAU,IAE/B,CAAE4b,KAAM,gBAAiB77B,IAAKu7B,EAAcE,cAAaK,aACpE,CACJ,CAMA,SAAS,GAAOjqB,GACZ,OAAO8a,mBAAmB9a,GACrB/a,QAAQ,OAAQ,KAChBA,QAAQ,KAAM,OACdA,QAAQ,MAAO,OACfA,QAAQ,OAAQ,IACzB,CASO,SAASklC,GAAgBh8B,EAAKlO,GACjC,MAAMgpC,EAAY,IAAI76B,IAAID,GAC1B,IAAI4rB,EAAOkP,EAAU/N,SAGrB,OAFAnB,EAAOA,EAAQA,EAAKz0B,SAAS,KAAO,GAAGy0B,IAAO95B,IAAS,GAAG85B,KAAQ95B,IAAUA,EAC5EgpC,EAAU/N,SAAWnB,EACdkP,EAAUx9B,UACrB,CAUO,SAAS2+B,GAAgBj8B,EAAKlO,EAAMmK,GACvC,MAAM6+B,EAAY,IAAI76B,IAAID,GACpBk8B,EAAcvP,mBAAmB76B,GACjCqqC,EAAelgC,EAAQ0wB,mBAAmB1wB,QAAShL,EAEnDmrC,EAAoC,KAArBtB,EAAU56B,OAAgB,IAAM46B,EAAU56B,OACzD6tB,EAAe,GACrB,IAAK,MAAMN,KAAQ2O,EAAarrC,MAAM,GAAG2F,MAAM,KAC3C,GAAI+2B,EAAM,CACN,MAAOhuB,GAAOguB,EAAK/2B,MAAM,IAAK,GAC1B+I,IAAQy8B,GACRnO,EAAat8B,KAAKg8B,EAE1B,CAMJ,OAJI0O,GACApO,EAAat8B,KAAK,GAAGyqC,KAAeC,KAExCrB,EAAU56B,OAAS6tB,EAAan5B,OAAS,IAAIm5B,EAAaz1B,KAAK,OAAS,GACjEwiC,EAAUx9B,UACrB,CAOO,SAAS++B,GAAgBr8B,EAAKlO,GACjC,IAAIlB,EACJ,MAAMkqC,EAAY,IAAI76B,IAAID,GAC1B,OAAmD,QAA3CpP,EAAKkqC,EAAU36B,aAAarM,IAAIhC,UAA0B,IAAPlB,EAAgBA,OAAKK,CACpF,CAQO,SAASqrC,GAAWt8B,EAAKu8B,GAC5B,MAAMzB,EAAY,IAAI76B,IAAID,GAE1B,OADA86B,EAAU0B,SAAWD,EACdzB,EAAUx9B,UACrB,CAMO,SAASm/B,GAAWz8B,GACvB,IACI,MAAM86B,EAAY,IAAI76B,IAAID,GAC1B,OAAO86B,EAAU/N,QACrB,CACA,MAAOrxB,IACH,MACJ,CACJ,CAMO,SAASghC,GAAa18B,GACzB,IACI,MAAM86B,EAAY,IAAI76B,IAAID,GAC1B,OAAO86B,EAAUrrB,SAAStY,SAAS,KAAO2jC,EAAUrrB,SAAS1e,MAAM,GAAI,GAAK+pC,EAAUrrB,QAC1F,CACA,MAAO/T,IACH,MACJ,CACJ,CAMO,SAASihC,GAAmB38B,GAC/B,MAAM86B,EAAY,IAAI76B,IAAID,GACpB48B,EAAa9B,EAAU/N,SAC7B,IAAK6P,EACD,MAAM,IAAIC,WAAW,mCAEzB,IAAItP,EAAcuN,EAAU56B,QAAU,GAKtC,OAJAqtB,EAAcA,EAAY12B,OACN,KAAhB02B,IACAA,EAAcA,EAAYx2B,WAAW,KAAOw2B,EAAc,IAAIA,KAE3D,GAAGqP,IAAarP,GAC3B,CAmCO,SAASuP,GAAiB98B,EAAK+8B,GAClC,MAAMjC,EAAY,IAAI76B,IAAID,GAC1B,IAAIg9B,EAAQlC,EAAU56B,OAQtB,OAPI88B,EACAA,GAAS,IAAMD,EAGfC,EAAQD,EAEZjC,EAAU56B,OAAS88B,EACZlC,EAAUx9B,UACrB,CASO,SAAS2/B,GAAqB/2B,EAAMg3B,GAAmB,GAE1D,MAAMC,EAAaj3B,EAAK8Z,cACxB,OAAOkd,EACDC,EAAWld,UAAU,EAAGkd,EAAWvoC,OAAS,GAA5CuoC,QACAA,EAAWld,UAAU,EAAGkd,EAAWvoC,OAAS,GAAK,GAC3D,CAMO,SAASwoC,GAAa7G,GACzB,OAAQ,GAAyBoF,OAAOn3B,KAAK+xB,GAASj5B,SAAS,UAA9C8b,KAAKmd,EAC1B,CAcO,SAAS8G,GAAgBC,EAAeC,GAE3C,MAAMC,EAAwB,GAExBC,EAAsB,EACtBC,EAAgCF,EAAwBC,EAC1DH,EAAc1oC,OAAS8oC,IACvBJ,EAAgBA,EAAcvsC,MAAM,EAAG2sC,IAE3C,MAAMt8B,EAAMk8B,EACRK,GAASJ,EAAWjgC,WAAYkgC,EAAwBF,EAAc1oC,OAAQ,KAClF,OAAOwoC,GAAah8B,EACxB,CAQOL,eAAe,GAAMvG,EAAUojC,EAASv1B,GAC3C,OAAO,IAAIzO,SAAQ,CAACC,EAASC,KAEzB,IAAIoY,EACJ,MAAM2rB,EAAe,UACD5sC,IAAZihB,GACAvX,aAAauX,GAEjBpY,EAAOuO,EAAW,EAEhBy1B,EAAiB,UACH7sC,IAAZ2sC,GACAA,EAAQ3jC,oBAAoB,QAAS4jC,GAEzChkC,GAAS,EAEbqY,EAAUxX,WAAWojC,EAAgBtjC,QACrBvJ,IAAZ2sC,GACAA,EAAQtjC,iBAAiB,QAASujC,EACtC,GAER,CAQO,SAASF,GAASI,EAAeC,EAAcC,EAAY,KAE9D,OAAIhpC,OAAO8Y,UAAU4vB,SACVI,EAAcJ,SAASK,EAAcC,IAEhDA,EAAYA,GAAa,IACrBF,EAAcnpC,OAASopC,EAChBD,GAGPC,GAA8BD,EAAcnpC,OACxCopC,EAAeC,EAAUrpC,SACzBqpC,GAAaA,EAAUC,OAAOF,EAAeC,EAAUrpC,SAEpDqpC,EAAUltC,MAAM,EAAGitC,GAAgBD,GAElD,CA6BO,SAASI,GAAOC,EAAMC,GACzB,OAAOD,EAAKE,sBAAwBD,EAAKC,mBAC7C,CAMO,SAASvC,GAAsB/7B,GAClC,MAAM6sB,EAAY,IAAI5sB,IAAID,GAC1B,IAAIy7B,EACJ,IAeI,OAZIA,EAFqC,SAArC5O,EAAU2P,SAAS9lC,MAAM,KAAK,GAEhBm2B,EAAU2P,SAAS9lC,MAAM,KAAK,GAEvC6nC,GAAkB1R,GAITA,EAAUE,SAASr2B,MAAM,KAAK,GAI9B,GAEX+kC,CACX,CACA,MAAOrmC,GACH,MAAM,IAAI7D,MAAM,2DACpB,CACJ,CACO,SAASgtC,GAAkB1R,GAC9B,MAAM0P,EAAO1P,EAAU0P,KAKvB,MAAQ,oJAAoJllC,KAAKklC,IAC5JrjC,QAAQ2zB,EAAU2R,OAAS5D,GAAe1lC,SAAS23B,EAAU2R,KACtE,CAMO,SAASC,GAAiBC,GAC7B,QAAaztC,IAATytC,EACA,OAEJ,MAAMC,EAAW,GACjB,IAAK,MAAMl/B,KAAOi/B,EACd,GAAIzoC,OAAO8X,UAAU2I,eAAeC,KAAK+nB,EAAMj/B,GAAM,CACjD,MAAMxD,EAAQyiC,EAAKj/B,GACnBk/B,EAASltC,KAAK,GAAGk7B,mBAAmBltB,MAAQktB,mBAAmB1wB,KACnE,CAEJ,OAAO0iC,EAASrmC,KAAK,IACzB,CAMO,SAASsmC,GAAWF,GACvB,QAAaztC,IAATytC,EACA,OAEJ,MAAMt9B,EAAM,CACRy9B,WAAY,IAEhB,IAAK,MAAMp/B,KAAOi/B,EACd,GAAIzoC,OAAO8X,UAAU2I,eAAeC,KAAK+nB,EAAMj/B,GAAM,CACjD,MAAMxD,EAAQyiC,EAAKj/B,GACnB2B,EAAIy9B,WAAWptC,KAAK,CAChBgO,MACAxD,SAER,CAEJ,OAAOmF,CACX,CAMO,SAAS09B,GAAOJ,GACnB,QAAaztC,IAATytC,EACA,OAEJ,MAAMt9B,EAAM,CAAC,EACb,IAAK,MAAM29B,KAAWL,EAAKG,WACvBz9B,EAAI29B,EAAQt/B,KAAOs/B,EAAQ9iC,MAE/B,OAAOmF,CACX,CAMO,SAAS49B,GAAqBC,GACjC,QAA0BhuC,IAAtBguC,EAGJ,OAAQA,EAAkBpD,MACtB,IAAK,MACD,MAAO,CACH3/B,OAAQ,CACJqO,KAAM,YACN20B,2BAA4B,CACxBC,gBAAiBF,EAAkBE,iBAAmB,IACtDC,WAAYH,EAAkBG,YAAc,GAC5CC,gBAAiBJ,EAAkBI,gBACnCC,WAAYL,EAAkBM,iBAAmB,GACjDC,eAAgBP,EAAkBQ,aAAc,KAIhE,IAAK,OACD,MAAO,CACHvjC,OAAQ,CACJqO,KAAM,OACNm1B,sBAAuB,CACnBL,gBAAiBJ,EAAkBI,mBAInD,IAAK,QACD,MAAO,CACHnjC,OAAQ,CACJqO,KAAM,QACNo1B,mBAAoB,CAChBC,OAAQX,EAAkBW,UAI1C,IAAK,UACD,MAAO,CACH1jC,OAAQ,CACJqO,KAAM,YAGlB,QACI,MAAMhZ,MAAM,uCAExB,CACO,SAASsuC,GAA6BC,GACzC,IAAKA,EACD,OAEJ,GAAI,cAAeA,EAGf,OAEJ,MAAMC,EAAe,GACrB,IAAK,MAAMtgC,KAAOqgC,EAAyB,CACvC,MAAME,EAAMvgC,EAAI/I,MAAM,KAChBupC,EAAe,MACjBD,EAAI,GAAGjpC,WAAWkpC,KAClBD,EAAI,GAAKA,EAAI,GAAG/f,UAAUggB,EAAarrC,SAE3C,MAAMsrC,EAAO,CACTC,OAAQH,EAAI,GACZI,kBAAmBN,EAAwBrgC,IAEzC4gC,EAAcN,EAAaO,WAAWnvC,GAAWA,EAAOovC,WAAaP,EAAI,KAC3EK,GAAe,EACfN,EAAaM,GAAaG,MAAM/uC,KAAKyuC,GAGrCH,EAAatuC,KAAK,CACd8uC,SAAUP,EAAI,GACdQ,MAAO,CAACN,IAGpB,CACA,OAAOH,CACX,CAWO,SAASU,GAA0BC,GACtC,OAAOA,EAAoBA,EAAkBC,OAAS,IAAMD,EAAkBzkC,WAAQhL,CAC1F,CACO,SAAS2vC,GAAiB9uC,GAC7B,OAAIA,EAAK+uC,QACEC,mBAAmBhvC,EAAKykC,SAGxBzkC,EAAKykC,OAEpB,CACO,SAASwK,GAAsCC,GAClD,OAAO/qC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8qC,GAAmB,CAAEC,QAAS,CAC7DC,UAAWF,EAAiBC,QAAQC,UAAUvqC,KAAKwqC,IAC/C,MAAMC,EAAWnrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGirC,GAAkB,CAAErvC,KAAM8uC,GAAiBO,EAAgBrvC,QAC5G,OAAOsvC,CAAQ,MAG/B,CACO,SAASC,GAA2CL,GACvD,IAAIpwC,EACJ,OAAOqF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8qC,GAAmB,CAAEC,QAAS,CAC7DK,aAA+D,QAAhD1wC,EAAKowC,EAAiBC,QAAQK,oBAAiC,IAAP1wC,OAAgB,EAASA,EAAG+F,KAAK4qC,IACpG,MAAMC,EAAavrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqrC,GAAqB,CAAEzvC,KAAM8uC,GAAiBW,EAAmBzvC,QACpH,OAAO0vC,CAAU,IAErBN,UAAWF,EAAiBC,QAAQC,UAAUvqC,KAAKwqC,IAC/C,MAAMC,EAAWnrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGirC,GAAkB,CAAErvC,KAAM8uC,GAAiBO,EAAgBrvC,QAC5G,OAAOsvC,CAAQ,MAG/B,CACO,SAAUK,GAA0BC,GACvC,IAAIC,EAAY,GACZC,EAAa,GACbF,EAAqBC,YACrBA,EAAYD,EAAqBC,WACjCD,EAAqBE,aACrBA,EAAaF,EAAqBE,YACtC,IAAIC,EAAiB,EACjBC,EAAkB,EACtB,MAAOD,EAAiBF,EAAU/sC,QAAUktC,EAAkBF,EAAWhtC,OACjE+sC,EAAUE,GAAgBE,MAAQH,EAAWE,GAAiBC,YACxD,CACFA,MAAOJ,EAAUE,GAAgBE,MACjC/1B,IAAK21B,EAAUE,GAAgB71B,IAC/Bg2B,SAAS,KAEXH,SAGI,CACFE,MAAOH,EAAWE,GAAiBC,MACnC/1B,IAAK41B,EAAWE,GAAiB91B,IACjCg2B,SAAS,KAEXF,GAGV,KAAOD,EAAiBF,EAAU/sC,SAAUitC,OAClC,CACFE,MAAOJ,EAAUE,GAAgBE,MACjC/1B,IAAK21B,EAAUE,GAAgB71B,IAC/Bg2B,SAAS,GAGjB,KAAOF,EAAkBF,EAAWhtC,SAAUktC,OACpC,CACFC,MAAOH,EAAWE,GAAiBC,MACnC/1B,IAAK41B,EAAWE,GAAiB91B,IACjCg2B,SAAS,EAGrB,CAIO,SAASC,GAAWC,GACvB,MAAMxrC,EAAQwrC,EAASxrC,MAAM,KAC7B,IAAK,IAAIqG,EAAI,EAAGA,EAAIrG,EAAM9B,OAAQmI,IAC9BrG,EAAMqG,GAAK4vB,mBAAmBj2B,EAAMqG,IAExC,OAAOrG,EAAM4B,KAAK,IACtB,CAOO,SAAS6pC,GAAe5hC,GAC3B,GAAI,cAAeA,EACf,OAAOA,EAEX,MAAM,IAAI0W,UAAU,8BAA8B1W,IACtD,CC5tBO,IAAI6hC,IACX,SAAWA,GAIPA,EAAuBA,EAAuB,eAAiB,GAAK,cAIpEA,EAAuBA,EAAuB,SAAW,GAAK,OACjE,EATD,CASGA,KAA2BA,GAAyB,CAAC,IAExD,MAAMC,GAAwB,CAC1Br7B,kBAAmB,KACnBs7B,SAAU,EACVx7B,eAAgB,IAChBy7B,gBAAiBH,GAAuBI,YACxCC,cAAe,GACfC,oBAAgBzxC,GAEd0xC,GAAoB,IAAI,GAAW,8BAIlC,MAAMC,WAA2BxL,GAQpC,WAAA1mC,CAAYmyC,EAAYzxC,EAASge,EAAeizB,IAC5C/oC,MAAMupC,EAAYzxC,GAElBP,KAAKue,aAAe,CAChBmzB,gBAAiBnzB,EAAamzB,gBACxBnzB,EAAamzB,gBACbF,GAAsBE,gBAC5BD,SAAUlzB,EAAakzB,UAAYlzB,EAAakzB,UAAY,EACtDvnC,KAAKE,MAAMmU,EAAakzB,UACxBD,GAAsBC,SAC5BI,eAAgBtzB,EAAaszB,gBAAkBtzB,EAAaszB,gBAAkB,EACxEtzB,EAAaszB,eACbL,GAAsBK,eAC5B57B,eAAgBsI,EAAatI,gBAAkBsI,EAAatI,gBAAkB,EACxE/L,KAAKF,IAAIuU,EAAatI,eAAgBsI,EAAapI,kBAC/CoI,EAAapI,kBACbq7B,GAAsBr7B,mBAC1Bq7B,GAAsBv7B,eAC5BE,kBAAmBoI,EAAapI,mBAAqBoI,EAAapI,mBAAqB,EACjFoI,EAAapI,kBACbq7B,GAAsBr7B,kBAC5By7B,cAAerzB,EAAaqzB,cACtBrzB,EAAaqzB,cACbJ,GAAsBI,cAEpC,CAMA,iBAAM1wC,CAAYE,GACd,OAAOpB,KAAKiyC,mBAAmB7wC,GAAS,EAAO,EACnD,CAWA,wBAAM6wC,CAAmB7wC,EAAS8wC,EAAiBC,GAC/C,MAAMnS,EAAa5+B,EAAQO,QACrBywC,EAAiBF,IAClBlyC,KAAKue,aAAaqzB,iBACE,QAAnBxwC,EAAQiP,QAAuC,SAAnBjP,EAAQiP,QAAwC,YAAnBjP,EAAQiP,SACnE8hC,EAAU,IAAM,EAQpB,IAAIziC,EAPC0iC,IACDpS,EAAW7wB,IAAMs8B,GAAWzL,EAAW7wB,IAAKnP,KAAKue,aAAaqzB,gBAG9D5xC,KAAKue,aAAaszB,iBAClB7R,EAAW7wB,IAAMi8B,GAAgBpL,EAAW7wB,IAAK,GAAa+3B,WAAWK,QAASr9B,KAAKE,MAAMpK,KAAKue,aAAaszB,eAAiB,KAAMplC,aAG1I,IAGI,GAFA,GAAOhI,KAAK,2BAA2B0tC,KAAWC,EAAiB,UAAY,eAC/E1iC,QAAiB1P,KAAKwmC,YAAYtlC,YAAY8+B,IACzChgC,KAAKqyC,YAAYD,EAAgBD,EAASziC,GAC3C,OAAOA,EAEXwiC,EAAkBA,IAAqBE,GAAsC,MAApB1iC,EAASC,MACtE,CACA,MAAOnG,GAEH,GADA,GAAOjF,MAAM,uCAAuCiF,EAAIhB,kBAAkBgB,EAAI0N,SACzElX,KAAKqyC,YAAYD,EAAgBD,EAASziC,EAAUlG,GACrD,MAAMA,CAEd,CAEA,aADMxJ,KAAKsyC,MAAMF,EAAgBD,EAAS/wC,EAAQyH,aAC3C7I,KAAKiyC,mBAAmB7wC,EAAS8wC,IAAmBC,EAC/D,CASA,WAAAE,CAAYD,EAAgBD,EAASziC,EAAUlG,GAC3C,GAAI2oC,GAAWnyC,KAAKue,aAAakzB,SAG7B,OAFA,GAAOhtC,KAAK,2BAA2B0tC,iBAAuBnyC,KAAKue,aAC9DkzB,8BACE,EAIX,MAAMc,EAAkB,CACpB,YACA,kBACA,eACA,aACA,SACA,YACA,UACA,QACA,sBAEJ,GAAI/oC,EACA,IAAK,MAAMgpC,KAAkBD,EACzB,GAAI/oC,EAAIvI,KAAKwxC,cAAcpuC,SAASmuC,IAChChpC,EAAIhB,QAAQiqC,cAAcpuC,SAASmuC,IAClChpC,EAAI0N,MAAQ1N,EAAI0N,KAAKzK,WAAWgmC,gBAAkBD,EAEnD,OADA,GAAO/tC,KAAK,8BAA8B+tC,yBACnC,EAOnB,GAAI9iC,GAAYlG,EAAK,CACjB,MAAMwT,EAAatN,EAAWA,EAASC,OAASnG,EAAMA,EAAIwT,WAAa,EACvE,IAAKo1B,GAAiC,MAAfp1B,EAEnB,OADA,GAAOvY,KAAK,wDACL,EAGX,GAAmB,MAAfuY,GAAqC,MAAfA,EAEtB,OADA,GAAOvY,KAAK,2CAA2CuY,OAChD,CAEf,CACA,QAA6D,iBAAhD,OAARxT,QAAwB,IAARA,OAAiB,EAASA,EAAI0N,SAAoC,OAAR1N,QAAwB,IAARA,OAAiB,EAASA,EAAIhB,QAAQtC,WAAW,uCAC5I,GAAOzB,KAAK,oFACL,EAGf,CAQA,WAAM6tC,CAAMF,EAAgBD,EAAStpC,GACjC,IAAI6pC,EAAgB,EACpB,GAAIN,EACA,OAAQpyC,KAAKue,aAAamzB,iBACtB,KAAKH,GAAuBI,YACxBe,EAAgBxoC,KAAKF,KAAKE,KAAK8M,IAAI,EAAGm7B,EAAU,GAAK,GAAKnyC,KAAKue,aAAatI,eAAgBjW,KAAKue,aAAapI,mBAC9G,MACJ,KAAKo7B,GAAuBoB,MACxBD,EAAgB1yC,KAAKue,aAAatI,eAClC,WAIRy8B,EAAgC,IAAhBxoC,KAAKI,SAGzB,OADA,GAAO7F,KAAK,0BAA0BiuC,OAC/B,GAAMA,EAAe7pC,EAAaipC,GAC7C,EC5MG,MAAMc,GAKT,WAAA/yC,CAAY0e,GACRve,KAAKue,aAAeA,CACxB,CAOA,MAAA3c,CAAOowC,EAAYzxC,GACf,OAAO,IAAIwxC,GAAmBC,EAAYzxC,EAASP,KAAKue,aAC5D,ECrBG,MAAMs0B,ICKN,MAAMC,WAAyBvM,GAMlC,WAAArlC,CAAYE,GACR,OAAOpB,KAAKwmC,YAAYtlC,YAAYlB,KAAKgoB,YAAY5mB,GACzD,CAOA,WAAA4mB,CAAY5mB,GAGR,OAAOA,CACX,ECnBG,MAAM2xC,WAAkCD,GAQ3C,WAAAjzC,CAAYmyC,EAAYzxC,GACpBkI,MAAMupC,EAAYzxC,EACtB,ECXG,MAAMyyC,GAOT,MAAApxC,CAAO4kC,EAAaC,GAChB,MAAM,IAAI/lC,MAAM,oDACpB,ECLG,MAAMuyC,WAA4BD,GAOrC,MAAApxC,CAAOowC,EAAYzxC,GACf,OAAO,IAAIwyC,GAA0Bf,EAAYzxC,EACrD,EChBJ,IAAI2yC,GACG,SAAS,KAIZ,OAHKA,KACDA,GAAqBrwB,MAElBqwB,EACX,CCDO,MAAMC,GAA2B,uBAKjC,SAASC,KACZ,MAAO,CACHnyC,KAAMkyC,GACN,iBAAMjyC,CAAYE,EAASI,GACvB,OAAI,KAGmB,QAAnBJ,EAAQiP,QAAuC,SAAnBjP,EAAQiP,SACpCjP,EAAQ+N,IAAMi8B,GAAgBhqC,EAAQ+N,IAAK,GAAa+3B,WAAWC,wBAAwB,IAAIx8B,MAAOikB,UAAUniB,aAEpHrL,EAAQwO,QAAQjM,OAAO,GAAgB2kC,QAEvClnC,EAAQwO,QAAQjM,OAAO,GAAgBukC,iBAP5B1mC,EAAKJ,EASpB,EAER,CClBO,MAAMiyC,GAAyB,qBAI/B,IAAI,IACX,SAAW9B,GAIPA,EAAuBA,EAAuB,eAAiB,GAAK,cAIpEA,EAAuBA,EAAuB,SAAW,GAAK,OACjE,EATD,CASG,KAA2B,GAAyB,CAAC,IAExD,MAAM,GAAwB,CAC1Bp7B,kBAAmB,KACnBs7B,SAAU,EACVx7B,eAAgB,IAChBy7B,gBAAiB,GAAuBC,YACxCC,cAAe,GACfC,oBAAgBzxC,GAEdmyC,GAAkB,CACpB,YACA,kBACA,eACA,aACA,SACA,YACA,UACA,QACA,sBAEE,GAAoB,IAAI,GAAW,8BAIlC,SAASe,GAAmB/yC,EAAU,CAAC,GAC1C,IAAIR,EAAIgN,EAAIC,EAAIC,EAAI8V,EAAIC,EACxB,MAAM0uB,EAAqD,QAAlC3xC,EAAKQ,EAAQmxC,uBAAoC,IAAP3xC,EAAgBA,EAAK,GAAsB2xC,gBACxGD,EAAuC,QAA3B1kC,EAAKxM,EAAQkxC,gBAA6B,IAAP1kC,EAAgBA,EAAK,GAAsB0kC,SAC1Fx7B,EAAmD,QAAjCjJ,EAAKzM,EAAQ0V,sBAAmC,IAAPjJ,EAAgBA,EAAK,GAAsBiJ,eACtGE,EAAyD,QAApClJ,EAAK1M,EAAQ4V,yBAAsC,IAAPlJ,EAAgBA,EAAK,GAAsBkJ,kBAC5Gy7B,EAAiD,QAAhC7uB,EAAKxiB,EAAQqxC,qBAAkC,IAAP7uB,EAAgBA,EAAK,GAAsB6uB,cACpGC,EAAmD,QAAjC7uB,EAAKziB,EAAQsxC,sBAAmC,IAAP7uB,EAAgBA,EAAK,GAAsB6uB,eAC5G,SAASQ,GAAY,eAAED,EAAc,QAAED,EAAO,SAAEziC,EAAQ,MAAEnL,IACtD,IAAIxE,EAAIgN,EACR,GAAIolC,GAAWV,EAEX,OADA,GAAOhtC,KAAK,2BAA2B0tC,iBAAuBV,uBACvD,EAEX,GAAIltC,EAAO,CACP,IAAK,MAAMiuC,KAAkBD,GACzB,GAAIhuC,EAAMtD,KAAKwxC,cAAcpuC,SAASmuC,IAClCjuC,EAAMiE,QAAQiqC,cAAcpuC,SAASmuC,IACpCjuC,EAAM2S,MAAQ3S,EAAM2S,KAAKzK,WAAWgmC,gBAAkBD,EAEvD,OADA,GAAO/tC,KAAK,8BAA8B+tC,yBACnC,EAGf,GAAmE,iBAApD,OAAVjuC,QAA4B,IAAVA,OAAmB,EAASA,EAAM2S,QAC1C,OAAV3S,QAA4B,IAAVA,OAAmB,EAASA,EAAMiE,QAAQtC,WAAW,oCAExE,OADA,GAAOzB,KAAK,oFACL,CAEf,CAIA,GAAIiL,GAAYnL,EAAO,CACnB,MAAMyY,EAAmM,QAArLjQ,EAAoF,QAA9EhN,EAAkB,OAAb2P,QAAkC,IAAbA,OAAsB,EAASA,EAASC,cAA2B,IAAP5P,EAAgBA,EAAe,OAAVwE,QAA4B,IAAVA,OAAmB,EAASA,EAAMyY,kBAA+B,IAAPjQ,EAAgBA,EAAK,EACtO,IAAKqlC,GAAiC,MAAfp1B,EAEnB,OADA,GAAOvY,KAAK,wDACL,EAGX,GAAmB,MAAfuY,GAAqC,MAAfA,EAEtB,OADA,GAAOvY,KAAK,2CAA2CuY,OAChD,CAEf,CACA,OAAO,CACX,CACA,SAASu2B,EAAenB,EAAgBD,GACpC,IAAIO,EAAgB,EACpB,GAAIN,EACA,OAAQV,GACJ,KAAK,GAAuBC,YACxBe,EAAgBxoC,KAAKF,KAAKE,KAAK8M,IAAI,EAAGm7B,EAAU,GAAK,GAAKl8B,EAAgBE,GAC1E,MACJ,KAAK,GAAuBw8B,MACxBD,EAAgBz8B,EAChB,WAIRy8B,EAAgC,IAAhBxoC,KAAKI,SAGzB,OADA,GAAO7F,KAAK,0BAA0BiuC,OAC/BA,CACX,CACA,MAAO,CACHzxC,KAAMoyC,GACN,iBAAMnyC,CAAYE,EAASI,GAEnBqwC,IACAzwC,EAAQ+N,IAAMi8B,GAAgBhqC,EAAQ+N,IAAK,GAAa+3B,WAAWK,QAASnjC,OAAO8F,KAAKE,MAAMynC,EAAiB,QAEnH,MAAM2B,EAAapyC,EAAQ+N,IACrBskC,EAAe7B,EAAgBnG,GAAWrqC,EAAQ+N,IAAKyiC,QAAiBxxC,EAC9E,IAGIsP,EACAnL,EAJA2tC,GAAkB,EAClBC,EAAU,EACVuB,GAAa,EAGjB,MAAOA,EAAY,CACf,MAAMtB,EAAiBF,IAClBuB,IACA,CAAC,MAAO,OAAQ,WAAWpvC,SAASjD,EAAQiP,SAC7C8hC,EAAU,IAAM,EACpB/wC,EAAQ+N,IAAMijC,EAAiBoB,EAAaC,EAC5C/jC,OAAWtP,EACXmE,OAAQnE,EACR,IACI,GAAOqE,KAAK,2BAA2B0tC,KAAWC,EAAiB,UAAY,eAC/E1iC,QAAiBlO,EAAKJ,GACtB8wC,EAAkBA,IAAqBE,GAAsC,MAApB1iC,EAASC,MACtE,CACA,MAAO9E,IACH,IAAIsS,GAAYtS,IAMZ,MADA,GAAOtG,MAAM,uCAAuCyG,EAAgBH,OAC9DA,GALN,GAAOtG,MAAM,uCAAuCsG,GAAErC,kBAAkBqC,GAAEqM,QAC1E3S,EAAQsG,EAMhB,CACA6oC,EAAarB,EAAY,CAAED,iBAAgBD,UAASziC,WAAUnL,UAC1DmvC,SACM,GAAMH,EAAenB,EAAgBD,GAAU/wC,EAAQyH,YAAa,IAE9EspC,GACJ,CACA,GAAIziC,EACA,OAAOA,EAEX,MAAgB,OAAVnL,QAA4B,IAAVA,EAAmBA,EAAQ,IAAIwY,GAAU,0CACrE,EAER,CC9JO,MAAM42B,GAAuC,mCAI7C,SAASC,GAAiCnN,GAC7C,MAAO,CACHxlC,KAAM0yC,GACN,iBAAMzyC,CAAYE,EAASI,GACvB,OAAOA,EAAKJ,EAChB,EAER,CCCO,MAAMyyC,WAA6BtN,GAQtC,WAAA1mC,CAAYmyC,EAAYzxC,GACpBkI,MAAMupC,EAAYzxC,EACtB,CAMA,iBAAMW,CAAYE,GACd,OAAI,KAGiC,QAAjCA,EAAQiP,OAAOoiC,eAA4D,SAAjCrxC,EAAQiP,OAAOoiC,gBACzDrxC,EAAQ+N,IAAMi8B,GAAgBhqC,EAAQ+N,IAAK,GAAa+3B,WAAWC,wBAAwB,IAAIx8B,MAAOikB,UAAUniB,aAEpHrL,EAAQwO,QAAQoxB,OAAO,GAAgBsH,QAEvClnC,EAAQwO,QAAQoxB,OAAO,GAAgBkH,iBAP5BloC,KAAKwmC,YAAYtlC,YAAYE,EAS5C,ECrCG,MAAM0yC,GAOT,MAAAlyC,CAAOowC,EAAYzxC,GACf,OAAO,IAAIszC,GAAqB7B,EAAYzxC,EAChD,ECUG,SAASwzC,GAAezyC,GAC3B,IAAKA,GAAgC,kBAAbA,EACpB,OAAO,EAEX,MAAM0yC,EAAe1yC,EACrB,OAAQmJ,MAAMC,QAAQspC,EAAazR,YACC,kBAAzByR,EAAazzC,SAC2B,oBAAxCyzC,EAAaC,sBAC5B,CASO,MAAMC,GAOT,WAAAr0C,CAAY0iC,EAAWhiC,EAAU,CAAC,GAC9BP,KAAKuiC,UAAYA,EACjBviC,KAAKO,QAAUA,CACnB,CAOA,sBAAA0zC,GACI,MAAO,CACH9yC,WAAYnB,KAAKO,QAAQY,WACzBgzC,uBAAwBn0C,KAAKuiC,UAErC,EASG,SAAS6R,GAAYvwB,EAAYwwB,EAAkB,CAAC,GAClDxwB,IACDA,EAAa,IAAIovB,IAErB,MAAM3xC,EAAW,IAAI4yC,GAAS,GAAIG,GAElC,OADA/yC,EAASgzC,YAAczwB,EAChBviB,CACX,CACA,SAASizC,GAAyBjzC,GAC9B,MAAMkzC,EAAwB,CAC1BC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,IAEJ,GAAIzzC,EAASihC,UAAUx+B,OAAQ,CAC3B,MAAMixC,EAAiB1zC,EAASihC,UAAUxhC,QAAQ6hC,IACtC4R,EAAsB5gC,MAAMqhC,GAAiBA,EAAarS,OAEtE,GAAIoS,EAAejxC,OAAQ,CACvB,MAAMmxC,EAAcF,EAAephC,MAAMgvB,GAAYuS,GAAwBvS,KAE7E,MAAO,CACHwS,gBAAiB9S,GAAiC0S,GAClDK,WAAYH,EAEpB,CACJ,CAEJ,CACO,SAASI,GAAqBh0C,GACjC,IAAIvB,EACJ,MAAMgN,EAAKzL,EAASf,SAAWY,WAAYo0C,GAAaxoC,EAAIyoC,EAAc9vB,GAAO3Y,EAAI,CAAC,eACtF,IAAI5L,EAAaG,EAASm0C,gBACrBt0C,IACDA,EAAao0C,EAAWzS,GAAkByS,GAAY,KACtDj0C,EAASm0C,gBAAkBt0C,GAE/B,IAAIu0C,EAAep0C,EAASq0C,cAC5B,IAAKD,EAAc,CACf,MAAME,EAAiB,+BAA+B,KAChDlkC,EAAkB8jC,EAAYp3B,kBAAoBo3B,EAAYp3B,iBAAiB1M,gBAC/E,GAAG8jC,EAAYp3B,iBAAiB1M,mBAAmBkkC,IACnD,GAAGA,IACTF,EAAe/b,GAAqBv0B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGmwC,GAAc,CAAE/2B,eAAgB,CAC5FxQ,6BAA8B07B,GAC9Bx7B,iCAAkCy7B,GAClCliC,OAAQ,GAAOjD,MAChB2Z,iBAAkB,CACjB1M,mBACDooB,qBAAsB,CACrBtB,aAAY,GACZxC,kBAAmB,CACf/J,IAAK,CAGDG,WAAY,OAGrB2N,uBAAwB,CACvBhE,SAAQ,GACRC,kBAAmB,CACf/J,IAAK,CAGDG,WAAY,UAI5BspB,EAAa70C,aAAa,CAAEL,MAAO,UACnCk1C,EAAa70C,aAAa,CAAEI,KAAMmT,KAClCshC,EAAar1C,UAAUizC,GAAmBkC,EAAYj3B,cAAe,CAAE/d,MAAO,UAC9Ek1C,EAAar1C,UAAU+yC,MACvB,MAAMyC,EAAmBtB,GAAyBjzC,GAC9Cu0C,GACAH,EAAar1C,UAAUw1C,EAAiBT,gBAAiBS,EAAiBR,WAAa,CAAE50C,WAAY,cAAYL,GAErH,MAAMyjB,EAAaiyB,GAA0Bx0C,GACzCwmB,GAAkBjE,GAClB6xB,EAAar1C,UAAU+kB,GAAgC,CACnDvB,aACAU,OAAwC,QAA/BxkB,EAAKy1C,EAAYO,gBAA6B,IAAPh2C,EAAgBA,EAAKknC,GACrE5hB,mBAAoB,CAAEG,4BAA6BiZ,MACnD,CAAEj+B,MAAO,SAERqjB,aAAsBgvB,IAC3B6C,EAAar1C,UAAUuzC,GAAiC,CACpDhJ,YAAa/mB,EAAW+mB,YACxBC,WAAYhnB,EAAWgnB,aACvB,CAAErqC,MAAO,SAEjBc,EAASq0C,cAAgBD,CAC7B,CACA,OAAOtwC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGmwC,GAAc,CAAE32B,yBAAyB,EAAM1d,aAAYG,SAAUo0C,GAChH,CACO,SAASI,GAA0Bx0C,GAEtC,GAAIA,EAASgzC,YACT,OAAOhzC,EAASgzC,YAGpB,IAAIzwB,EAAa,IAAIovB,GACrB,IAAK,MAAMrQ,KAAWthC,EAASihC,UAC3B,GAAIza,GAAkB8a,EAAQ/e,YAG1BA,EAAa+e,EAAQ/e,gBAEpB,GAAI6wB,GAA6B9R,GAClC,OAAOA,EAGf,OAAO/e,CACX,CACA,SAAS6wB,GAA6B9R,GAClC,OAAIA,aAAmBiQ,IAGa,+BAA7BjQ,EAAQ/iC,YAAYoB,IAC/B,CACA,SAASwzC,GAAsB7R,GAC3B,OAAIA,aAAmBqQ,IAGa,wBAA7BrQ,EAAQ/iC,YAAYoB,IAC/B,CACA,SAAS0zC,GAA6B/R,GAClC,OAAO9a,GAAkB8a,EAAQ/e,WACrC,CACA,SAAS+wB,GAA8BhS,GACnC,OAAIA,aAAmBkR,IAGa,gCAA7BlR,EAAQ/iC,YAAYoB,IAC/B,CACA,SAAS4zC,GAA4BjS,GACjC,OAAIA,aAAmBgQ,IAGa,8BAA7BhQ,EAAQ/iC,YAAYoB,IAC/B,CACA,SAAS6zC,GAAgClS,GACrC,MAAoC,2BAA7BA,EAAQ/iC,YAAYoB,IAC/B,CACA,SAASk0C,GAAwBvS,GAC7B,MAAoC,0BAA7BA,EAAQ/iC,YAAYoB,IAC/B,CACA,SAAS8zC,GAAwBnS,GAC7B,MAAMoT,EAAgB,CAClB,gCACA,gBACA,YACA,cACA,qCACA,kBACA,yBAEEC,EAAiB,CACnB/0C,YAAagP,MAAO9O,IACT,CACHA,UACAwO,QAASxO,EAAQwO,QAAQjO,QACzBgO,OAAQ,OAIdsyB,EAA2B,CAC7B,GAAAh+B,CAAIi+B,EAAWC,GAEf,EACA,SAAAC,CAAUF,GACN,OAAO,CACX,GAEEgU,EAAiBtT,EAAQhhC,OAAOq0C,EAAgBhU,GAChDt/B,EAAauzC,EAAer2C,YAAYoB,KAE9C,OAAO+0C,EAAcpiC,MAAMuiC,GAChBxzC,EAAWuD,WAAWiwC,IAErC,CC1PO,MAAMC,GAAwB,CACjC/rB,eAAgB,wBAChB0G,QAAS,2BACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACbksB,qBAAsB,CAClBhsB,eAAgB,UAChB0G,QAAS,UACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,YAGnB4mB,YAAa,CACTjsB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,YAGnB6mB,cAAe,CACXlsB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,YAGnB8mB,KAAM,CACFnsB,eAAgB,OAChB0G,QAAS,OACTxD,cAAc,EACdyD,eAAgB,WAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,eAK3B+mB,sBAAuB,CACnBpsB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdy1C,sBAAuB,CACnBrsB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBAGnBinB,cAAe,CACXtsB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBAMlBknB,GAAU,CACnBvsB,eAAgB,UAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,UACXvF,gBAAiB,CACb5c,QAAS,CACL8c,eAAgB,UAChBoC,UAAU,EACVsE,QAAS,UACTrX,KAAM,CACFzY,KAAM,WAGd41C,eAAgB,CACZxsB,eAAgB,SAChBoC,UAAU,EACVsE,QAAS,SACTrX,KAAM,CACFzY,KAAM,YAGdshB,KAAM,CACF8H,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,YAGd61C,MAAO,CACHzsB,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,YAGd81C,gBAAiB,CACb1sB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uBAMlBsnB,GAAkB,CAC3B3sB,eAAgB,kBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kBACXvF,gBAAiB,CACb3kB,QAAS,CACL6kB,eAAgB,UAChBoC,UAAU,EACVsE,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAGdg2C,KAAM,CACFjsB,YAAa,CACTI,iBAAkB,GAEtBf,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,cAMbi2C,GAAU,CACnB7sB,eAAgB,UAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,UACXvF,gBAAiB,CACb5c,QAAS,CACL8c,eAAgB,UAChB0G,QAAS,UACTrX,KAAM,CACFzY,KAAM,WAGduE,QAAS,CACL6kB,eAAgB,UAChBoC,UAAU,EACVsE,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAGdk2C,YAAa,CACT9sB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,YAGd81C,gBAAiB,CACb1sB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uBAMlB0nB,GAAW,CACpB/sB,eAAgB,WAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,WACXvF,gBAAiB,CACbktB,eAAgB,CACZhtB,eAAgB,iBAChBoC,UAAU,EACVsE,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdq2C,eAAgB,CACZjtB,eAAgB,iBAChBoC,UAAU,EACVsE,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGds2C,eAAgB,CACZltB,eAAgB,iBAChBoC,UAAU,EACVsE,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdu2C,eAAgB,CACZntB,eAAgB,iBAChBoC,UAAU,EACVsE,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdw2C,gBAAiB,CACbzsB,YAAa,CACTI,iBAAkB,GAEtBf,eAAgB,kBAChBoC,UAAU,EACVsE,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMby2C,GAAgB,CACzBrtB,eAAgB,gBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gBACXvF,gBAAiB,CACb3kB,QAAS,CACL6kB,eAAgB,UAChBoC,UAAU,EACVsE,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAGd02C,cAAe,CACXttB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd22C,qBAAsB,CAClBvtB,eAAgB,uBAChB0G,QAAS,uBACTrX,KAAM,CACFzY,KAAM,WAGd42C,yBAA0B,CACtBxtB,eAAgB,2BAChB0G,QAAS,2BACTrX,KAAM,CACFzY,KAAM,cAMb62C,GAAe,CACxBztB,eAAgB,eAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,eACXvF,gBAAiB,CACb3hB,QAAS,CACL6hB,eAAgB,UAChB0G,QAAS,UACTrX,KAAM,CACFzY,KAAM,WAGdiW,KAAM,CACFmT,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,cAMb82C,GAAwB,CACjC1tB,eAAgB,wBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACb6tB,eAAgB,CACZ3tB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sBAMlBuoB,GAAiB,CAC1B5tB,eAAgB,iBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iBACXvF,gBAAiB,CACbxa,OAAQ,CACJ0a,eAAgB,SAChBoC,UAAU,EACVsE,QAAS,SACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,OAAQ,YAAa,iBAG7CqrB,WAAY,CACR7tB,eAAgB,eAChBoC,UAAU,EACVsE,QAAS,eACTrX,KAAM,CACFzY,KAAM,uBAMbk3C,GAAgC,CACzC9tB,eAAgB,gCAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gCACXvF,gBAAiB,CACbiuB,gBAAiB,CACb/tB,eAAgB,kBAChBoC,UAAU,EACVsE,QAAS,kBACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,WAGdkQ,OAAQ,CACJkZ,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdo3C,OAAQ,CACJhuB,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdq3C,YAAa,CACTjuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGds3C,eAAgB,CACZluB,eAAgB,iBAChBoC,UAAU,EACVsE,QAAS,aACTxD,cAAc,EACdyD,eAAgB,YAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBAK3B8oB,kBAAmB,CACfnuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,cAMbw3C,GAAgB,CACzBpuB,eAAgB,gBAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gBACXvF,gBAAiB,CACblpB,KAAM,CACFopB,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdy3C,QAAS,CACLruB,eAAgB,UAChB0G,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAGdsM,QAAS,CACL8c,eAAgB,UAChB0G,QAAS,UACTrX,KAAM,CACFzY,KAAM,WAGd03C,WAAY,CACRtuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBAGnBkpB,SAAU,CACNvuB,eAAgB,WAChB0G,QAAS,WACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,gBAM9B43C,GAAsB,CAC/BxuB,eAAgB,sBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sBACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd83C,KAAM,CACF1uB,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd+3C,YAAa,CACT3uB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,SAAU,cAGlCosB,WAAY,CACR5uB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,YACA,SACA,UACA,WACA,YAIZqsB,cAAe,CACX7uB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,WAGpCssB,aAAc,CACV9uB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,UAGrCusB,sBAAuB,CACnB/uB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YAGdo4C,aAAc,CACVhvB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,YAGdq4C,uBAAwB,CACpBjvB,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGds4C,+BAAgC,CAC5BlvB,eAAgB,8BAChB0G,QAAS,8BACTrX,KAAM,CACFzY,KAAM,YAGdu4C,UAAW,CACPnvB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,oBAGdw4C,uBAAwB,CACpBpvB,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdy4C,wCAAyC,CACrCrvB,eAAgB,wCAChB0G,QAAS,wCACTrX,KAAM,CACFzY,KAAM,eAMb04C,GAAU,CACnBtvB,eAAgB,UAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,UACXvF,gBAAiB,CACbyvB,SAAU,CACNvvB,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,WAGd44C,UAAW,CACPxvB,eAAgB,SAChBoC,UAAU,EACVsE,QAAS,SACTrX,KAAM,CACFzY,KAAM,cAMb64C,GAAoB,CAC7BzvB,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBACXvF,gBAAiB,CACb4vB,eAAgB,CACZ1vB,eAAgB,YAChBoC,UAAU,EACVsE,QAAS,YACTrX,KAAM,CACFzY,KAAM,WAGd+4C,eAAgB,CACZ3vB,eAAgB,YAChBoC,UAAU,EACVsE,QAAS,YACTrX,KAAM,CACFzY,KAAM,WAGdg5C,eAAgB,CACZ5vB,eAAgB,cAChBoC,UAAU,EACVsE,QAAS,cACTrX,KAAM,CACFzY,KAAM,WAGdi5C,gBAAiB,CACb7vB,eAAgB,eAChBoC,UAAU,EACVsE,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdk5C,cAAe,CACX9vB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdm5C,cAAe,CACX/vB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdmK,MAAO,CACHif,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,cAMbo5C,GAAoB,CAC7BhwB,eAAgB,oBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBACXvF,gBAAiB,CACbiuB,gBAAiB,CACb/tB,eAAgB,kBAChBoC,UAAU,EACVsE,QAAS,kBACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,WAGdq5C,MAAO,CACHjwB,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,WAGds5C,MAAO,CACHlwB,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTxD,cAAc,EACdyD,eAAgB,OAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBAK3B8oB,kBAAmB,CACfnuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,cAMbu5C,GAAiB,CAC1BnwB,eAAgB,iBAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iBACXvF,gBAAiB,CACblpB,KAAM,CACFopB,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdw5C,cAAe,CACXpwB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd4sC,KAAM,CACFxjB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gBAMlBgrB,GAAW,CACpBrwB,eAAgB,WAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,WACXvF,gBAAiB,CACb6jB,WAAY,CACR3jB,eAAgB,aAChBoC,UAAU,EACVsE,QAAS,SACTxD,cAAc,EACdyD,eAAgB,MAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iBAQ1BirB,GAAU,CACnBtwB,eAAgB,UAChB0G,QAAS,MACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,UACXvF,gBAAiB,CACbvb,IAAK,CACDyb,eAAgB,MAChBoC,UAAU,EACVsE,QAAS,MACTrX,KAAM,CACFzY,KAAM,WAGdmK,MAAO,CACHif,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,cAMb25C,GAAmB,CAC5BvwB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mBACXvF,gBAAiB,CACb0wB,GAAI,CACAxwB,eAAgB,KAChBoC,UAAU,EACVsE,QAAS,KACTrX,KAAM,CACFzY,KAAM,WAGd65C,aAAc,CACVzwB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBAMlBqrB,GAAe,CACxB1wB,eAAgB,eAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,eACXvF,gBAAiB,CACbyvB,SAAU,CACNvvB,eAAgB,QAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,WAGd44C,UAAW,CACPxvB,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGd+5C,YAAa,CACT3wB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,cAMbg6C,GAA+B,CACxC5wB,eAAgB,+BAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACbiuB,gBAAiB,CACb/tB,eAAgB,kBAChBoC,UAAU,EACVsE,QAAS,kBACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,WAGdw5C,cAAe,CACXpwB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,WAGdkQ,OAAQ,CACJkZ,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdo3C,OAAQ,CACJhuB,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdq3C,YAAa,CACTjuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGdmvC,QAAS,CACL/lB,eAAgB,UAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBAGnB8oB,kBAAmB,CACfnuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,cAMbi6C,GAAsB,CAC/B7wB,eAAgB,sBAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sBACXvF,gBAAiB,CACbkmB,UAAW,CACPhmB,eAAgB,YAChBoC,UAAU,EACVsE,QAAS,YACTC,eAAgB,OAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BAQ1ByrB,GAAmB,CAC5B9wB,eAAgB,mBAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mBACXvF,gBAAiB,CACblpB,KAAM,CACFopB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,aAGnBgpB,QAAS,CACLruB,eAAgB,UAChBoC,UAAU,EACVsE,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAGdm6C,SAAU,CACN/wB,eAAgB,WAChBoC,UAAU,EACVsE,QAAS,WACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,WAGdq6C,iBAAkB,CACdjxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YAGd03C,WAAY,CACRtuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2BAGnBkpB,SAAU,CACNvuB,eAAgB,WAChB0G,QAAS,WACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/Bs6C,SAAU,CACNlxB,eAAgB,WAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,aAGnB8rB,0BAA2B,CACvBnxB,eAAgB,4BAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/Bw6C,gBAAiB,CACbpxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,eAMby6C,GAAW,CACpBrxB,eAAgB,WAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,WACXvF,gBAAiB,CACb6lB,QAAS,CACL3lB,eAAgB,UAChB0G,QAAS,UACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,YAGdykC,QAAS,CACLrb,eAAgB,UAChB0G,QAAS,UACTuB,aAAa,EACb5Y,KAAM,CACFzY,KAAM,cAMb06C,GAAyB,CAClCtxB,eAAgB,yBAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACbyxB,UAAW,CACPvxB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd63C,aAAc,CACVzuB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd83C,KAAM,CACF1uB,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdqS,cAAe,CACX+W,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdiT,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGd46C,gBAAiB,CACbxxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGd66C,gBAAiB,CACbzxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGd+6C,mBAAoB,CAChB3xB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,WAGdg7C,aAAc,CACV5xB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGdk7C,SAAU,CACN9xB,eAAgB,WAChB0G,QAAS,WACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,WAAY,gBAGjDmsB,YAAa,CACT3uB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,SAAU,cAGlCosB,WAAY,CACR5uB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,YACA,SACA,UACA,WACA,YAIZqsB,cAAe,CACX7uB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,WAGpCuvB,OAAQ,CACJ/xB,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACRhyB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,UAAW,UAAW,YAGzDyvB,WAAY,CACRjyB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGds7C,aAAc,CACVlyB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdu7C,gBAAiB,CACbnyB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,oBAGdw7C,sBAAuB,CACnBpyB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdy7C,gBAAiB,CACbryB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,YAGd07C,gBAAiB,CACbtyB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,YAGd27C,oBAAqB,CACjBvyB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,WAGdu4C,UAAW,CACPnvB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,oBAGdw4C,uBAAwB,CACpBpvB,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGd47C,WAAY,CACRxyB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,UACA,UAIZiwB,mBAAoB,CAChBzyB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YAGd87C,cAAe,CACX1yB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,2BACA,4BACA,+BAIZmwB,0BAA2B,CACvB3yB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdi8C,oBAAqB,CACjB7yB,eAAgB,uBAChB0G,QAAS,uBACTrX,KAAM,CACFzY,KAAM,oBAGdk8C,SAAU,CACN9yB,eAAgB,WAChB0G,QAAS,WACTrX,KAAM,CACFzY,KAAM,WAGd44C,UAAW,CACPxvB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,oBAGdm8C,SAAU,CACN/yB,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,YAGdo8C,kBAAmB,CACfhzB,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,OAAQ,cAGhCywB,eAAgB,CACZjzB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,oBAGds8C,4BAA6B,CACzBlzB,eAAgB,8BAChB0G,QAAS,8BACTrX,KAAM,CACFzY,KAAM,oBAGdu8C,uBAAwB,CACpBnzB,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAAY,YAG/C4wB,UAAW,CACPpzB,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,eAMby8C,GAAoC,CAC7CrzB,eAAgB,oCAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oCACXvF,gBAAiB,CACbiuB,gBAAiB,CACb/tB,eAAgB,kBAChBoC,UAAU,EACVsE,QAAS,kBACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,WAGdw5C,cAAe,CACXpwB,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTU,gBAAgB,EAChB/X,KAAM,CACFzY,KAAM,WAGdkQ,OAAQ,CACJkZ,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdo3C,OAAQ,CACJhuB,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,WAGdq3C,YAAa,CACTjuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGds7B,UAAW,CACPlS,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,WAGdmvC,QAAS,CACL/lB,eAAgB,UAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BAGnB8oB,kBAAmB,CACfnuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,cAMb08C,GAA2B,CACpCtzB,eAAgB,2BAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2BACXvF,gBAAiB,CACbsmB,aAAc,CACVpmB,eAAgB,eAChB0G,QAAS,eACTC,eAAgB,aAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iBAK3B2gB,UAAW,CACPhmB,eAAgB,YAChBoC,UAAU,EACVsE,QAAS,YACTC,eAAgB,OAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BAQ1BkuB,GAAa,CACtBvzB,eAAgB,aAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,aACXvF,gBAAiB,CACblpB,KAAM,CACFopB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gBAMlBmuB,GAAkB,CAC3BxzB,eAAgB,kBAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kBACXvF,gBAAiB,CACb2zB,UAAW,CACPzzB,eAAgB,YAChB0G,QAAS,YACTC,eAAgB,YAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,aAKtB88C,YAAa,CACT1zB,eAAgB,cAChB0G,QAAS,cACTC,eAAgB,cAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,aAKtB+8C,OAAQ,CACJ3zB,eAAgB,SAChB0G,QAAS,SACTC,eAAgB,SAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,gBAQrBg9C,GAAY,CACrB5zB,eAAgB,YAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,YACXvF,gBAAiB,CACb+zB,gBAAiB,CACb7zB,eAAgB,kBAChB0G,QAAS,kBACTxD,cAAc,EACdyD,eAAgB,QAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,YAK3ByuB,kBAAmB,CACf9zB,eAAgB,oBAChB0G,QAAS,oBACTxD,cAAc,EACdyD,eAAgB,QAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,eAQ1B0uB,GAAQ,CACjB/zB,eAAgB,QAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,QACXvF,gBAAiB,CACblpB,KAAM,CACFopB,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdwC,KAAM,CACF4mB,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,cAMbo9C,GAAW,CACpBh0B,eAAgB,WAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,WACXvF,gBAAiB,CACb2mB,UAAW,CACPzmB,eAAgB,YAChB0G,QAAS,YACTC,eAAgB,YAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gBAK3BqhB,WAAY,CACR1mB,eAAgB,aAChB0G,QAAS,aACTC,eAAgB,aAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iBAK3B8oB,kBAAmB,CACfnuB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,cAMbq9C,GAAY,CACrBj0B,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,YACXvF,gBAAiB,CACb+mB,MAAO,CACH7mB,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,WAGdka,IAAK,CACDkP,eAAgB,MAChBoC,UAAU,EACVsE,QAAS,MACTrX,KAAM,CACFzY,KAAM,cAMbs9C,GAAa,CACtBl0B,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,aACXvF,gBAAiB,CACb+mB,MAAO,CACH7mB,eAAgB,QAChBoC,UAAU,EACVsE,QAAS,QACTrX,KAAM,CACFzY,KAAM,WAGdka,IAAK,CACDkP,eAAgB,MAChBoC,UAAU,EACVsE,QAAS,MACTrX,KAAM,CACFzY,KAAM,cAMbu9C,GAAe,CACxBn0B,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,eACXvF,gBAAiB,CACbs0B,UAAW,CACPp0B,eAAgB,YAChBoC,UAAU,EACVsE,QAAS,YACTrX,KAAM,CACFzY,KAAM,WAGdy9C,WAAY,CACRr0B,eAAgB,aAChBoC,UAAU,EACVsE,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGd09C,mBAAoB,CAChBt0B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uBAGnBkvB,oBAAqB,CACjBv0B,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BAMlBmvB,GAAqB,CAC9Bx0B,eAAgB,qBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBACXvF,gBAAiB,CACb9e,OAAQ,CACJgf,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mBAMlBovB,GAAc,CACvBz0B,eAAgB,cAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,cACXvF,gBAAiB,CACbzQ,KAAM,CACF2Q,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,OAAQ,QAAS,aAGtDwhB,2BAA4B,CACxBhkB,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BAGnBmf,sBAAuB,CACnBxkB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BAGnBof,mBAAoB,CAChBzkB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uBAGnBqvB,yBAA0B,CACtB10B,eAAgB,2BAChB0G,QAAS,2BACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAM9B+9C,GAA6B,CACtC30B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BACXvF,gBAAiB,CACbmkB,gBAAiB,CACbjkB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdstC,WAAY,CACRlkB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGdutC,gBAAiB,CACbnkB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdwtC,WAAY,CACRpkB,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,WAGd0tC,eAAgB,CACZtkB,eAAgB,iBAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,eAMbg+C,GAAwB,CACjC50B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACbqkB,gBAAiB,CACbnkB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbi+C,GAAqB,CAC9B70B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBACXvF,gBAAiB,CACb4kB,OAAQ,CACJ1kB,eAAgB,SAChBoC,UAAU,EACVsE,QAAS,SACTxD,cAAc,EACdyD,eAAgB,QAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBAQ1ByvB,GAAa,CACtB90B,eAAgB,aAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,YACNyuB,UAAW,aACXvF,gBAAiB,CACbzQ,KAAM,CACF2Q,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdA,KAAM,CACFopB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdm+C,UAAW,CACP/0B,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,WAGdo+C,MAAO,CACHh1B,eAAgB,QAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,cAMbq+C,GAA8B,CACvCj1B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbw+C,GAAuC,CAChDp1B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMby+C,GAA8B,CACvCr1B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0+C,GAAuC,CAChDt1B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb2+C,GAA8B,CACvCv1B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4+C,GAAuC,CAChDx1B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb6+C,GAAsC,CAC/Cz1B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8+C,GAA+C,CACxD11B,eAAgB,gDAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb++C,GAAqC,CAC9C31B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbg/C,GAA8C,CACvD51B,eAAgB,+CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbi/C,GAA+B,CACxC71B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdk/C,QAAS,CACL91B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,eACA,eACA,iBACA,eACA,iBAIZuzB,YAAa,CACT/1B,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,UACA,cACA,YACA,cACA,sBAIZwzB,+BAAgC,CAC5Bh2B,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbq/C,GAAwC,CACjDj2B,eAAgB,yCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbs/C,GAA4B,CACrCl2B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACbjW,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbu/C,GAAqC,CAC9Cn2B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbw/C,GAA4B,CACrCp2B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMby/C,GAAqC,CAC9Cr2B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0/C,GAAyB,CAClCt2B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb2/C,GAAkC,CAC3Cv2B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4/C,GAAgC,CACzCx2B,eAAgB,iCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gCACXvF,gBAAiB,CACbyuB,SAAU,CACNvuB,eAAgB,YAChB8H,uBAAwB,aACxBpB,QAAS,YACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/B83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdi4C,cAAe,CACX7uB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,WAGpCosB,WAAY,CACR5uB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,YACA,SACA,UACA,WACA,YAIZmsB,YAAa,CACT3uB,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,SAAU,cAGlC0yB,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGd6/C,iBAAkB,CACdz2B,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,UAGrCusB,sBAAuB,CACnB/uB,eAAgB,+BAChB0G,QAAS,+BACTrX,KAAM,CACFzY,KAAM,YAGdo4C,aAAc,CACVhvB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YAGdq4C,uBAAwB,CACpBjvB,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,WAGd8/C,4BAA6B,CACzB12B,eAAgB,sCAChB0G,QAAS,sCACTrX,KAAM,CACFzY,KAAM,YAGdy4C,wCAAyC,CACrCrvB,eAAgB,iDAChB0G,QAAS,iDACTrX,KAAM,CACFzY,KAAM,YAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb+/C,GAAyC,CAClD32B,eAAgB,0CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbggD,GAAyB,CAClC52B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbigD,GAAkC,CAC3C72B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbkgD,GAA8B,CACvC92B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmgD,GAAuC,CAChD/2B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbogD,GAAkC,CAC3Ch3B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACb22B,iBAAkB,CACdz2B,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,UAGrCksB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqgD,GAA2C,CACpDj3B,eAAgB,4CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbsgD,GAAkC,CAC3Cl3B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbugD,GAA2C,CACpDn3B,eAAgB,4CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbwgD,GAA0B,CACnCp3B,eAAgB,2BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbygD,GAAmC,CAC5Cr3B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0gD,GAAyB,CAClCt3B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb2gD,GAAkC,CAC3Cv3B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4gD,GAA8B,CACvCx3B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbjW,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,cAMb6gD,GAAuC,CAChDz3B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8gD,GAA8B,CACvC13B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMb+gD,GAAuC,CAChD33B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbghD,GAA+B,CACxC53B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdihD,QAAS,CACL73B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbkhD,GAAwC,CACjD93B,eAAgB,yCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmhD,GAA+B,CACxC/3B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbohD,GAAwC,CACjDh4B,eAAgB,yCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqhD,GAA6B,CACtCj4B,eAAgB,8BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdihD,QAAS,CACL73B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbshD,GAAsC,CAC/Cl4B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbuhD,GAA6B,CACtCn4B,eAAgB,8BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdwhD,UAAW,CACPp4B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbyhD,GAAsC,CAC/Cr4B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0hD,GAA8B,CACvCt4B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdihD,QAAS,CACL73B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMb2hD,GAAuC,CAChDv4B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4hD,GAAsC,CAC/Cx4B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbjW,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb6hD,GAA+C,CACxDz4B,eAAgB,gDAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8hD,GAA2C,CACpD14B,eAAgB,4CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2CACXvF,gBAAiB,CACbjW,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb+hD,GAAoD,CAC7D34B,eAAgB,qDAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oDACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbgiD,GAAiC,CAC1C54B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdk/C,QAAS,CACL91B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,eACA,eACA,iBACA,eACA,iBAIZuzB,YAAa,CACT/1B,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,UACA,cACA,YACA,cACA,yBAOXq2B,GAA0C,CACnD74B,eAAgB,2CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbkiD,GAAsB,CAC/B94B,eAAgB,uBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sBACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd26C,UAAW,CACPvxB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,oBAGd23C,SAAU,CACNvuB,eAAgB,YAChB8H,uBAAwB,aACxBpB,QAAS,YACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/BmiD,0BAA2B,CACvB/4B,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,WAGdoiD,uBAAwB,CACpBh5B,eAAgB,UAChB8H,uBAAwB,WACxBpB,QAAS,UACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/BqS,cAAe,CACX+W,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdiT,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdqiD,aAAc,CACVj5B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGd46C,gBAAiB,CACbxxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdg7C,aAAc,CACV5xB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd+6C,mBAAoB,CAChB3xB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,WAGd66C,gBAAiB,CACbzxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGdk7C,SAAU,CACN9xB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,WAAY,gBAGjD2vB,gBAAiB,CACbnyB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,oBAGdw7C,sBAAuB,CACnBpyB,eAAgB,+BAChB0G,QAAS,+BACTrX,KAAM,CACFzY,KAAM,WAGdm7C,OAAQ,CACJ/xB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGds7C,aAAc,CACVlyB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,WAGdq7C,WAAY,CACRjyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACRhyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,UAAW,UAAW,YAGzDqsB,cAAe,CACX7uB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,WAGpCosB,WAAY,CACR5uB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,YACA,SACA,UACA,WACA,YAIZmsB,YAAa,CACT3uB,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,SAAU,cAGlC0yB,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdq6C,iBAAkB,CACdjxB,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,YAGdsiD,aAAc,CACVl5B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGduiD,wBAAyB,CACrBn5B,eAAgB,kCAChB0G,QAAS,kCACTrX,KAAM,CACFzY,KAAM,WAGdwiD,kBAAmB,CACfp5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGd0iD,eAAgB,CACZt5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,cAGdk8C,SAAU,CACN9yB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdm8C,SAAU,CACN/yB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YAGd2iD,aAAc,CACVv5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,oBAGds8C,4BAA6B,CACzBlzB,eAAgB,sCAChB0G,QAAS,sCACTrX,KAAM,CACFzY,KAAM,oBAGdu8C,uBAAwB,CACpBnzB,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAAY,YAG/C4wB,UAAW,CACPpzB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,YAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGd4iD,aAAc,CACVx5B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,iBAMb6iD,GAA+B,CACxCz5B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8iD,GAA2B,CACpC15B,eAAgB,4BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2BACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd26C,UAAW,CACPvxB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,oBAGd23C,SAAU,CACNvuB,eAAgB,YAChB8H,uBAAwB,aACxBpB,QAAS,YACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/BmiD,0BAA2B,CACvB/4B,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,WAGdoiD,uBAAwB,CACpBh5B,eAAgB,UAChB8H,uBAAwB,WACxBpB,QAAS,UACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/Bk7C,SAAU,CACN9xB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,WAAY,gBAGjD2vB,gBAAiB,CACbnyB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,oBAGdw7C,sBAAuB,CACnBpyB,eAAgB,+BAChB0G,QAAS,+BACTrX,KAAM,CACFzY,KAAM,WAGdm7C,OAAQ,CACJ/xB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGds7C,aAAc,CACVlyB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,WAGdq7C,WAAY,CACRjyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACRhyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,UAAW,UAAW,YAGzDm3B,kBAAmB,CACf35B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YAGd27C,oBAAqB,CACjBvyB,eAAgB,iCAChB0G,QAAS,iCACTrX,KAAM,CACFzY,KAAM,WAGdi4C,cAAe,CACX7uB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,WAGpCosB,WAAY,CACR5uB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,YACA,SACA,UACA,WACA,YAIZmsB,YAAa,CACT3uB,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,SAAU,cAGlCvZ,cAAe,CACX+W,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdiT,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGd46C,gBAAiB,CACbxxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGd+6C,mBAAoB,CAChB3xB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,WAGd66C,gBAAiB,CACbzxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdg7C,aAAc,CACV5xB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdsiD,aAAc,CACVl5B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGduiD,wBAAyB,CACrBn5B,eAAgB,kCAChB0G,QAAS,kCACTrX,KAAM,CACFzY,KAAM,WAGdwiD,kBAAmB,CACfp5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGd47C,WAAY,CACRxyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGd67C,mBAAoB,CAChBzyB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,YAGd87C,cAAe,CACX1yB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,WAGdi8C,oBAAqB,CACjB7yB,eAAgB,+BAChB0G,QAAS,+BACTrX,KAAM,CACFzY,KAAM,oBAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdq6C,iBAAkB,CACdjxB,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,YAGdk8C,SAAU,CACN9yB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGd44C,UAAW,CACPxvB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,oBAGdm8C,SAAU,CACN/yB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YAGdo8C,kBAAmB,CACfhzB,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,OAAQ,cAGhC+2B,aAAc,CACVv5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,oBAGds8C,4BAA6B,CACzBlzB,eAAgB,sCAChB0G,QAAS,sCACTrX,KAAM,CACFzY,KAAM,oBAGdu8C,uBAAwB,CACpBnzB,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAAY,YAG/C4wB,UAAW,CACPpzB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,YAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbgjD,GAAoC,CAC7C55B,eAAgB,qCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbijD,GAAoB,CAC7B75B,eAAgB,qBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbkjD,GAA6B,CACtC95B,eAAgB,8BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmjD,GAAsB,CAC/B/5B,eAAgB,uBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbojD,GAA+B,CACxCh6B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqjD,GAAuB,CAChCj6B,eAAgB,wBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbsjD,GAAgC,CACzCl6B,eAAgB,iCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,gCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbujD,GAA4B,CACrCn6B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbwjD,GAAqC,CAC9Cp6B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbyjD,GAAmC,CAC5Cr6B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGd0jD,yBAA0B,CACtBt6B,eAAgB,sCAChB0G,QAAS,sCACTrX,KAAM,CACFzY,KAAM,oBAGdu8C,uBAAwB,CACpBnzB,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAAY,eAM9C+3B,GAA4C,CACrDv6B,eAAgB,6CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4jD,GAAsC,CAC/Cx6B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMb6jD,GAA+C,CACxDz6B,eAAgB,gDAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8jD,GAA0B,CACnC16B,eAAgB,2BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdw8C,UAAW,CACPpzB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,eAMb+jD,GAAmC,CAC5C36B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbgkD,GAAyB,CAClC56B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbikD,GAAkC,CAC3C76B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbkkD,GAA0B,CACnC96B,eAAgB,2BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdihD,QAAS,CACL73B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbmkD,GAAmC,CAC5C/6B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbokD,GAA0B,CACnCh7B,eAAgB,2BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbqkD,GAAmC,CAC5Cj7B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbskD,GAAwB,CACjCl7B,eAAgB,yBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdihD,QAAS,CACL73B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbukD,GAAiC,CAC1Cn7B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbwkD,GAAyB,CAClCp7B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdihD,QAAS,CACL73B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMbykD,GAAkC,CAC3Cr7B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0kD,GAAwB,CACjCt7B,eAAgB,yBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdwhD,UAAW,CACPp4B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,uBAMb2kD,GAAiC,CAC1Cv7B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4kD,GAA4B,CACrCx7B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACbixB,SAAU,CACN/wB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb6kD,GAAqC,CAC9Cz7B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8kD,GAA8B,CACvC17B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdm7C,OAAQ,CACJ/xB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACRhyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,UAAW,UAAW,YAGzD2yB,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb+kD,GAAuC,CAChD37B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbglD,GAAyB,CAClC57B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdm7C,OAAQ,CACJ/xB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACR7vB,aAAc,UACdD,YAAY,EACZlC,eAAgB,mBAChB3Q,KAAM,CACFzY,KAAM,WAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbklD,GAAkC,CAC3C97B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmlD,GAA8B,CACvC/7B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbolD,GAAuC,CAChDh8B,eAAgB,wCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,uCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqlD,GAAqB,CAC9Bj8B,eAAgB,sBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbslD,GAA8B,CACvCl8B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbulD,GAA4B,CACrCn8B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdk/C,QAAS,CACL91B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,eACA,eACA,iBACA,eACA,iBAIZuzB,YAAa,CACT/1B,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,UACA,cACA,YACA,cACA,yBAOX45B,GAAqC,CAC9Cp8B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbylD,GAAmB,CAC5Br8B,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mBACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd23C,SAAU,CACNvuB,eAAgB,YAChB8H,uBAAwB,aACxBpB,QAAS,YACTrX,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,aAG/BqS,cAAe,CACX+W,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,WAGdiT,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdqiD,aAAc,CACVj5B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGd46C,gBAAiB,CACbxxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdg7C,aAAc,CACV5xB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGd+6C,mBAAoB,CAChB3xB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,WAGd66C,gBAAiB,CACbzxB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGdk7C,SAAU,CACN9xB,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,WAAY,gBAGjD85B,mBAAoB,CAChBt8B,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,oBAGdw7C,sBAAuB,CACnBpyB,eAAgB,+BAChB0G,QAAS,+BACTrX,KAAM,CACFzY,KAAM,WAGdm7C,OAAQ,CACJ/xB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGds7C,aAAc,CACVlyB,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,WAGdq7C,WAAY,CACRjyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACRhyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,UAAW,UAAW,YAGzDqsB,cAAe,CACX7uB,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,WAGpCosB,WAAY,CACR5uB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,YACA,SACA,UACA,WACA,YAIZmsB,YAAa,CACT3uB,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,SAAU,cAGlC0yB,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdsiD,aAAc,CACVl5B,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGduiD,wBAAyB,CACrBn5B,eAAgB,kCAChB0G,QAAS,kCACTrX,KAAM,CACFzY,KAAM,WAGdwiD,kBAAmB,CACfp5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGd0iD,eAAgB,CACZt5B,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,cAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGd4iD,aAAc,CACVx5B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,iBAMb2lD,GAA4B,CACrCv8B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4lD,GAAqB,CAC9Bx8B,eAAgB,sBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb6lD,GAA8B,CACvCz8B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8lD,GAAqB,CAC9B18B,eAAgB,sBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qBACXvF,gBAAiB,CACbo1B,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb+lD,GAA8B,CACvC38B,eAAgB,+BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,8BACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbgmD,GAAwB,CACjC58B,eAAgB,yBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbimD,GAAiC,CAC1C78B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbkmD,GAA6B,CACtC98B,eAAgB,8BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmmD,GAAsC,CAC/C/8B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbomD,GAA4B,CACrCh9B,eAAgB,6BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqmD,GAAqC,CAC9Cj9B,eAAgB,sCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,qCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbsmD,GAAoC,CAC7Cl9B,eAAgB,qCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbumD,GAA6C,CACtDn9B,eAAgB,8CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbwmD,GAA+B,CACxCp9B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdymD,kBAAmB,CACfr9B,eAAgB,2BAChB0G,QAAS,2BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0mD,GAAwC,CACjDt9B,eAAgB,yCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb2mD,GAAmC,CAC5Cv9B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdymD,kBAAmB,CACfr9B,eAAgB,2BAChB0G,QAAS,2BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4mD,GAA4C,CACrDx9B,eAAgB,6CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,4CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb6mD,GAAwB,CACjCz9B,eAAgB,yBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8mD,GAAiC,CAC1C19B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb+mD,GAAsC,CAC/C39B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGdi7C,mBAAoB,CAChB7xB,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbgnD,GAA+C,CACxD59B,eAAgB,gDAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbinD,GAAiC,CAC1C79B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdm7C,OAAQ,CACJ/xB,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo7C,WAAY,CACRhyB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,UAAW,UAAW,YAGzD2yB,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbknD,GAA0C,CACnD99B,eAAgB,2CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmnD,GAA0B,CACnC/9B,eAAgB,2BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbonD,GAAmC,CAC5Ch+B,eAAgB,oCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,mCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqnD,GAA+B,CACxCj+B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdsnD,iBAAkB,CACdl+B,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,WAGduiD,wBAAyB,CACrBn5B,eAAgB,kCAChB0G,QAAS,kCACTrX,KAAM,CACFzY,KAAM,WAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbunD,GAAwC,CACjDn+B,eAAgB,yCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbwnD,GAAsC,CAC/Cp+B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdsnD,iBAAkB,CACdl+B,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,WAGduiD,wBAAyB,CACrBn5B,eAAgB,kCAChB0G,QAAS,kCACTrX,KAAM,CACFzY,KAAM,WAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbynD,GAA+C,CACxDr+B,eAAgB,gDAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb0nD,GAAwB,CACjCt+B,eAAgB,yBAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdm8C,SAAU,CACN/yB,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,eAMb2nD,GAAiC,CAC1Cv+B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb4nD,GAAyB,CAClCx+B,eAAgB,0BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,yBACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb6nD,GAAkC,CAC3Cz+B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb8nD,GAAiC,CAC1C1+B,eAAgB,kCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,iCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMb+nD,GAA0C,CACnD3+B,eAAgB,2CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,0CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbgoD,GAA6B,CACtC5+B,eAAgB,8BAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6BACXvF,gBAAiB,CACb4xB,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbioD,GAAsC,CAC/C7+B,eAAgB,uCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,sCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbkoD,GAAoC,CAC7C9+B,eAAgB,qCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,oCACXvF,gBAAiB,CACb4xB,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbmoD,GAA6C,CACtD/+B,eAAgB,8CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,6CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbooD,GAAkC,CAC3Ch/B,eAAgB,mCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,kCACXvF,gBAAiB,CACb4uB,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGd63C,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd86C,WAAY,CACR1xB,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,cAGdilD,gBAAiB,CACb77B,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,cAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdo6C,UAAW,CACPhxB,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdwiD,kBAAmB,CACfp5B,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAGdyiD,oBAAqB,CACjBr5B,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,WAGdg8C,gBAAiB,CACb5yB,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,WAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbqoD,GAA2C,CACpDj/B,eAAgB,4CAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,2CACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbsoD,GAA+B,CACxCl/B,eAAgB,gCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,+BACXvF,gBAAiB,CACb2uB,aAAc,CACVzuB,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,oBAGd83C,KAAM,CACF1uB,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,WAGdiT,YAAa,CACTmW,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdymD,kBAAmB,CACfr9B,eAAgB,2BAChB0G,QAAS,2BACTrX,KAAM,CACFzY,KAAM,WAGds+C,gBAAiB,CACbl1B,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,WAGdsW,UAAW,CACP8S,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,WAGdsM,QAAS,CACL8c,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,WAGdoU,KAAM,CACFgV,eAAgB,OAChB0G,QAAS,OACTrX,KAAM,CACFzY,KAAM,oBAGdu+C,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cAMbuoD,GAAwC,CACjDn/B,eAAgB,yCAChB3Q,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wCACXvF,gBAAiB,CACbq1B,UAAW,CACPn1B,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,cC7/PbiT,GAAc,CACvBygB,cAAe,CAAC,UAAW,eAC3BhK,OAAQ,CACJ6B,aAAc,kBACdD,YAAY,EACZlC,eAAgB,eAChB3Q,KAAM,CACFzY,KAAM,YAILwoD,GAAwB,CACjC90B,cAAe,wBACfhK,OAAQyrB,IAECsT,GAAS,CAClB/0B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,kBACdD,YAAY,EACZlC,eAAgB,SAChB3Q,KAAM,CACFzY,KAAM,YAILkO,GAAM,CACfwlB,cAAe,MACfhK,OAAQ,CACJN,eAAgB,MAChBoC,UAAU,EACVsE,QAAS,MACTrX,KAAM,CACFzY,KAAM,WAGd46B,cAAc,GAEL8tB,GAAU,CACnBh1B,cAAe,UACfhK,OAAQ,CACJ6B,aAAc,UACdD,YAAY,EACZlC,eAAgB,UAChB3Q,KAAM,CACFzY,KAAM,YAIL2oD,GAAO,CAChBj1B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,aACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL4oD,GAAmB,CAC5Bl1B,cAAe,CAAC,UAAW,oBAC3BhK,OAAQ,CACJK,YAAa,CACTI,iBAAkB,GAEtBf,eAAgB,UAChB0G,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAILsM,GAAU,CACnBonB,cAAe,UACfhK,OAAQ,CACJ6B,aAAc,aACdD,YAAY,EACZlC,eAAgB,eAChB3Q,KAAM,CACFzY,KAAM,YAILsW,GAAY,CACrBod,cAAe,CAAC,UAAW,aAC3BhK,OAAQ,CACJN,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,YAIL6oD,GAAU,CACnBn1B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,kBACdD,YAAY,EACZlC,eAAgB,SAChB3Q,KAAM,CACFzY,KAAM,YAIL8oD,GAAQ,CACjBp1B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL+oD,GAAQ,CACjBr1B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILkQ,GAAS,CAClBwjB,cAAe,CAAC,UAAW,UAC3BhK,OAAQ,CACJN,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,YAILo3C,GAAS,CAClB1jB,cAAe,CAAC,UAAW,UAC3BhK,OAAQ,CACJN,eAAgB,SAChB0G,QAAS,SACTrX,KAAM,CACFzY,KAAM,YAILq3C,GAAc,CACvB3jB,cAAe,CAAC,UAAW,eAC3BhK,OAAQ,CACJK,YAAa,CACTI,iBAAkB,GAEtBf,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YAILgpD,GAAU,CACnBt1B,cAAe,CAAC,UAAW,WAC3BhK,OAAQ,CACJN,eAAgB,UAChB0G,QAAS,UACTC,eAAgB,4BAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,WAAY,UAAW,cAKvD2P,iBAAkB,OAET0tB,GAAU,CACnBv1B,cAAe,UACfhK,OAAQgvB,IAECwQ,GAAQ,CACjBx1B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,oBACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILmpD,GAAW,CACpBz1B,cAAe,UACfhK,OAAQ,CACJ6B,aAAc,UACdD,YAAY,EACZlC,eAAgB,UAChB3Q,KAAM,CACFzY,KAAM,YAILqP,GAAO,CAChBqkB,cAAe,OACfhK,OAAQ,CACJN,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,YAILopD,GAAQ,CACjB11B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILqS,GAAgB,CACzBqhB,cAAe,gBACfhK,OAAQ,CACJN,eAAgB,iBAChBoC,UAAU,EACVsE,QAAS,iBACTrX,KAAM,CACFzY,KAAM,YAILqpD,GAAuB,CAChC31B,cAAe,uBACfhK,OAAQ,CACJN,eAAgB,eAChBoC,UAAU,EACVsE,QAAS,eACTrX,KAAM,CACFzY,KAAM,YAILspD,GAAQ,CACjB51B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILq5C,GAAQ,CACjB3lB,cAAe,CAAC,UAAW,SAC3BhK,OAAQ,CACJN,eAAgB,QAChB0G,QAAS,QACTrX,KAAM,CACFzY,KAAM,YAILupD,GAAW,CACpB71B,cAAe,UACfhK,OAAQ,CACJ6B,aAAc,YACdD,YAAY,EACZlC,eAAgB,UAChB3Q,KAAM,CACFzY,KAAM,YAIL23C,GAAW,CACpBjkB,cAAe,CAAC,UAAW,YAC3BhK,OAAQ,CACJN,eAAgB,YAChB0G,QAAS,YACToB,uBAAwB,aACxBzY,KAAM,CACFzY,KAAM,aACNmK,MAAO,CAAEsO,KAAM,CAAEzY,KAAM,cAItBwpD,GAAS,CAClB91B,cAAe,CAAC,UAAW,UAC3BhK,OAAQ,CACJN,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,WAI5BysB,GAAyB,CAClC3kB,cAAe,CACX,UACA,2BACA,0BAEJhK,OAAQ,CACJN,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAILs4C,GAAiC,CAC1C5kB,cAAe,CACX,UACA,2BACA,kCAEJhK,OAAQ,CACJN,eAAgB,sCAChB0G,QAAS,sCACTrX,KAAM,CACFzY,KAAM,aAILihD,GAAU,CACnBvtB,cAAe,CAAC,UAAW,wBAAyB,WACpDhK,OAAQ,CACJN,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,YAILypD,GAAkB,CAC3B/1B,cAAe,CAAC,UAAW,2BAA4B,mBACvDhK,OAAQ,CACJN,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,qBAIL0pD,GAAoB,CAC7Bh2B,cAAe,CAAC,UAAW,2BAA4B,qBACvDhK,OAAQ,CACJN,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,qBAIL2pD,GAAQ,CACjBj2B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,WACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL4pD,GAAQ,CACjBl2B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,MACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL6pD,GAAe,CACxBn2B,cAAe,CAAC,UAAW,gBAC3BhK,OAAQ,CACJN,eAAgB,eAChB0G,QAAS,oBACTxD,cAAc,EACdyD,eAAgB,mBAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,YACNyuB,UAAW,wBAMlBq7B,GAAQ,CACjBp2B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,WACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL+pD,GAAuB,CAChCr2B,cAAe,CAAC,UAAW,wBAC3BhK,OAAQ,CACJN,eAAgB,8BAChB0G,QAAS,8BACTrX,KAAM,CACFzY,KAAM,YAILgqD,GAA0B,CACnCt2B,cAAe,CAAC,UAAW,2BAC3BhK,OAAQ,CACJN,eAAgB,iCAChB0G,QAAS,iCACTrX,KAAM,CACFzY,KAAM,YAILiqD,GAAQ,CACjBv2B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,SACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILkqD,GAAsB,CAC/Bx2B,cAAe,sBACfhK,OAAQ,CACJN,eAAgB,6BAChBoC,UAAU,EACVsE,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAILmqD,GAAgB,CACzBz2B,cAAe,CAAC,UAAW,iBAC3BhK,OAAQ,CACJN,eAAgB,uBAChB0G,QAAS,uBACTrX,KAAM,CACFzY,KAAM,YAILoqD,GAAS,CAClB12B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILqqD,GAAS,CAClB32B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,UACdD,YAAY,EACZlC,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YAILsqD,GAAW,CACpB52B,cAAe,CAAC,UAAW,YAC3BhK,OAAQ,CACJN,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YAILuqD,GAAkB,CAC3B72B,cAAe,CAAC,UAAW,mBAC3BhK,OAAQ,CACJN,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,YAILwqD,GAAU,CACnB92B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,UACdD,YAAY,EACZlC,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YAILyqD,GAAW,CACpB/2B,cAAe,UACfhK,OAAQ,CACJN,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,YAIL0qD,GAAU,CACnBh3B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YAIL2qD,GAAU,CACnBj3B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YAIL4qD,GAAc,CACvBl3B,cAAe,CAAC,UAAW,eAC3BhK,OAAQ,CACJN,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,YAIL6qD,GAAU,CACnBn3B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,SACdD,YAAY,EACZlC,eAAgB,oBAChB3Q,KAAM,CACFzY,KAAM,YAIL8qD,GAAmB,CAC5Bp3B,cAAe,kBACfhK,OAAQ,CACJN,eAAgB,yBAChBoC,UAAU,EACVsE,QAAS,yBACTrX,KAAM,CACFzY,KAAM,YAIL+qD,GAAW,CACpBr3B,cAAe,CAAC,UAAW,WAC3BhK,OAAQ,CACJN,eAAgB,UAChB0G,QAAS,UACTC,eAAgB,uBAChBtX,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,OACA,UACA,WACA,YACA,mBACA,WACA,OACA,qBACA,YACA,2BAMpB2P,iBAAkB,OAETD,GAAY,CACrB5H,cAAe,YACfhK,OAAQ,CACJN,eAAgB,YAChBoC,UAAU,EACVsE,QAAS,YACTrX,KAAM,CACFzY,KAAM,YAILm6C,GAAW,CACpBzmB,cAAe,CAAC,UAAW,YAC3BhK,OAAQ,CACJN,eAAgB,WAChB0G,QAAS,WACTrX,KAAM,CACFzY,KAAM,YAILo6C,GAAY,CACrB1mB,cAAe,CAAC,UAAW,aAC3BhK,OAAQ,CACJN,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,YAILgrD,GAAQ,CACjBt3B,cAAe,CAAC,UAAW,SAC3BhK,OAAQ,CACJN,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YAILirD,GAAqB,CAC9Bv3B,cAAe,CAAC,UAAW,sBAC3BhK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,aAILkrD,GAAuB,CAChCx3B,cAAe,CAAC,UAAW,wBAC3BhK,OAAQ,CACJN,eAAgB,+BAChB0G,QAAS,+BACTrX,KAAM,CACFzY,KAAM,aAILmrD,GAAgB,CACzBz3B,cAAe,CAAC,UAAW,UAAW,iBACtChK,OAAQ,CACJN,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YAILyiD,GAAsB,CAC/B/uB,cAAe,CAAC,UAAW,UAAW,uBACtChK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAILorD,GAAsB,CAC/B13B,cAAe,CAAC,UAAW,UAAW,uBACtChK,OAAQ,CACJN,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,YAILqrD,GAAU,CACnB33B,cAAe,CAAC,UAAW,2BAA4B,WACvDhK,OAAQ,CACJN,eAAgB,WAChB0G,QAAS,WACTrX,KAAM,CACFzY,KAAM,YAILsrD,GAAc,CACvB53B,cAAe,CAAC,UAAW,2BAA4B,eACvDhK,OAAQ,CACJN,eAAgB,gBAChB0G,QAAS,gBACTrX,KAAM,CACFzY,KAAM,YAILurD,GAAS,CAClB73B,cAAe,CAAC,UAAW,2BAA4B,UACvDhK,OAAQ,CACJN,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,YAILwrD,GAAkB,CAC3B93B,cAAe,CAAC,UAAW,mBAC3BhK,OAAQ,CACJN,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAI1B6/B,GAAiB,CAC1B/3B,cAAe,CAAC,UAAW,kBAC3BhK,OAAQ,CACJN,eAAgB,aAChB0G,QAAS,aACTrX,KAAM,CACFzY,KAAM,YAIL0rD,GAAS,CAClBh4B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,SACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL2rD,GAAgB,CACzBj4B,cAAe,gBACfhK,OAAQ,CACJN,eAAgB,qBAChBoC,UAAU,EACVsE,QAAS,qBACTrX,KAAM,CACFzY,KAAM,YAIL44C,GAAY,CACrBllB,cAAe,CAAC,UAAW,aAC3BhK,OAAQ,CACJN,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YAIL4rD,GAAmB,CAC5Bl4B,cAAe,CAAC,UAAW,kBAAmB,oBAC9ChK,OAAQ,CACJN,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,YAIL6rD,GAAkB,CAC3Bn4B,cAAe,CAAC,UAAW,kBAAmB,mBAC9ChK,OAAQ,CACJN,eAAgB,yBAChB0G,QAAS,yBACTrX,KAAM,CACFzY,KAAM,YAIL0iD,GAAiB,CAC1BhvB,cAAe,CAAC,UAAW,kBAAmB,kBAC9ChK,OAAQ,CACJN,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,eAIL8rD,GAAsB,CAC/Bp4B,cAAe,CAAC,UAAW,kBAAmB,uBAC9ChK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAIL+rD,GAAsB,CAC/Br4B,cAAe,CAAC,UAAW,kBAAmB,uBAC9ChK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAILgsD,GAAyB,CAClCt4B,cAAe,CAAC,UAAW,kBAAmB,0BAC9ChK,OAAQ,CACJN,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAILisD,GAAS,CAClBv4B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,uBACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL0jD,GAA2B,CACpChwB,cAAe,CAAC,UAAW,4BAC3BhK,OAAQ,CACJN,eAAgB,sCAChB0G,QAAS,sCACTrX,KAAM,CACFzY,KAAM,qBAILu8C,GAAyB,CAClC7oB,cAAe,CAAC,UAAW,0BAC3BhK,OAAQ,CACJN,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAAY,aAItCsgC,GAAS,CAClBx4B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,YACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILw8C,GAAY,CACrB9oB,cAAe,YACfhK,OAAQ,CACJN,eAAgB,kBAChBoC,UAAU,EACVsE,QAAS,kBACTrX,KAAM,CACFzY,KAAM,aAILg8C,GAAkB,CAC3BtoB,cAAe,CAAC,UAAW,mBAC3BhK,OAAQ,CACJN,eAAgB,wBAChB0G,QAAS,wBACTrX,KAAM,CACFzY,KAAM,YAILmsD,GAAS,CAClBz4B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,WACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILosD,GAAO,CAChB14B,cAAe,CAAC,UAAW,QAC3BhK,OAAQ,CACJN,eAAgB,mBAChB0G,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,UACA,WAKHwwB,GAAoB,CAC7B1oB,cAAe,CAAC,UAAW,qBAC3BhK,OAAQ,CACJN,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,OAAQ,eAIvBygC,GAAwB,CACjC34B,cAAe,CACX,UACA,iCACA,yBAEJhK,OAAQ,CACJN,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,qBAILssD,GAA0B,CACnC54B,cAAe,CACX,UACA,iCACA,2BAEJhK,OAAQ,CACJN,eAAgB,kCAChB0G,QAAS,kCACTrX,KAAM,CACFzY,KAAM,qBAILusD,GAAgB,CACzB74B,cAAe,CAAC,UAAW,iCAAkC,iBAC7DhK,OAAQ,CACJN,eAAgB,uBAChB0G,QAAS,uBACTrX,KAAM,CACFzY,KAAM,YAILwsD,GAAoB,CAC7B94B,cAAe,CACX,UACA,iCACA,qBAEJhK,OAAQ,CACJN,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,YAILysD,GAAe,CACxB/4B,cAAe,CAAC,UAAW,iCAAkC,gBAC7DhK,OAAQ,CACJN,eAAgB,sBAChB0G,QAAS,sBACTrX,KAAM,CACFzY,KAAM,YAILq7C,GAAa,CACtB3nB,cAAe,aACfhK,OAAQ,CACJN,eAAgB,mBAChBoC,UAAU,EACVsE,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YAIL0sD,GAAiB,CAC1Bh5B,cAAe,CAAC,UAAW,kBAC3BhK,OAAQ,CACJN,eAAgB,YAChB0G,QAAS,YACTrX,KAAM,CACFzY,KAAM,YAIL2sD,GAAW,CACpBj5B,cAAe,CAAC,UAAW,YAC3BhK,OAAQ,CACJN,eAAgB,iBAChB0G,QAAS,iBACTrX,KAAM,CACFzY,KAAM,aAIL4sD,GAAa,CACtBl5B,cAAe,CAAC,UAAW,aAC3BhK,OAAQ,CACJN,eAAgB,kBAChB0G,QAAS,kBACTrX,KAAM,CACFzY,KAAM,aAIL6sD,GAAkB,CAC3Bn5B,cAAe,kBACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,qBAChB3Q,KAAM,CACFzY,KAAM,YAIL8sD,GAAmB,CAC5Bp5B,cAAe,CAAC,UAAW,oBAC3BhK,OAAQ,CACJN,eAAgB,0BAChB0G,QAAS,0BACTrX,KAAM,CACFzY,KAAM,eAIL+sD,GAA0B,CACnCr5B,cAAe,CAAC,UAAW,2BAC3BhK,OAAQ,CACJN,eAAgB,iCAChB0G,QAAS,iCACTrX,KAAM,CACFzY,KAAM,YAILgtD,GAAiB,CAC1Bt5B,cAAe,CAAC,UAAW,kBAC3BhK,OAAQ,CACJN,eAAgB,8BAChB0G,QAAS,8BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,UAAW,WAI1BqhC,GAAS,CAClBv5B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILktD,GAA0B,CACnCx5B,cAAe,0BACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,mBAChB3Q,KAAM,CACFzY,KAAM,YAILm7C,GAAS,CAClBznB,cAAe,SACfhK,OAAQ,CACJN,eAAgB,SAChBoC,UAAU,EACVsE,QAAS,SACTrX,KAAM,CACFzY,KAAM,YAILmtD,GAAS,CAClBz5B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILotD,GAAQ,CACjB15B,cAAe,OACfhK,OAAQ,CACJN,eAAgB,mBAChBoC,UAAU,EACVsE,QAAS,mBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CACX,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,UACA,WAKHyhC,GAAe,CACxB35B,cAAe,CAAC,UAAW,gBAC3BhK,OAAQ6zB,IAEC+P,GAAS,CAClB55B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILutD,GAAS,CAClB75B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL4sC,GAAO,CAChBlZ,cAAe,CAAC,UAAW,QAC3BhK,OAAQ+vB,IAEC+T,GAA0B,CACnC95B,cAAe,CAAC,UAAW,2BAC3BhK,OAAQ,CACJN,eAAgB,cAChB0G,QAAS,cACTrX,KAAM,CACFzY,KAAM,eAILytD,GAA4B,CACrC/5B,cAAe,CAAC,UAAW,6BAC3BhK,OAAQ,CACJN,eAAgB,qBAChB0G,QAAS,qBACTrX,KAAM,CACFzY,KAAM,eAILk7C,GAAW,CACpBxnB,cAAe,WACfhK,OAAQ,CACJ6B,aAAc,WACdD,YAAY,EACZlC,eAAgB,iBAChB3Q,KAAM,CACFzY,KAAM,YAILymD,GAAoB,CAC7B/yB,cAAe,oBACfhK,OAAQ,CACJN,eAAgB,2BAChBoC,UAAU,EACVsE,QAAS,2BACTrX,KAAM,CACFzY,KAAM,YAILi7C,GAAqB,CAC9BvnB,cAAe,CAAC,UAAW,sBAC3BhK,OAAQ,CACJ6B,aAAc,EACdnC,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,YAIL0tD,GAAe,CACxBh6B,cAAe,CAAC,UAAW,eAC3BhK,OAAQ,CACJ6B,aAAc,2BACdD,YAAY,EACZlC,eAAgB,eAChB3Q,KAAM,CACFzY,KAAM,YAIL2tD,GAAQ,CACjBj6B,cAAe,OACfhK,OAAQ,CACJN,eAAgB,OAChBoC,UAAU,EACVsE,QAAS,OACTrX,KAAM,CACFzY,KAAM,YAIL4tD,GAAU,CACnBl6B,cAAe,SACfhK,OAAQ,CACJ6B,aAAc,kBACdD,YAAY,EACZlC,eAAgB,SAChB3Q,KAAM,CACFzY,KAAM,YAIL6tD,GAAS,CAClBn6B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL8tD,GAAY,CACrBp6B,cAAe,YACfhK,OAAQ,CACJ6B,aAAc,SACdD,YAAY,EACZlC,eAAgB,kBAChB3Q,KAAM,CACFzY,KAAM,YAIL+tD,GAAoC,CAC7Cr6B,cAAe,CACX,UACA,iCACA,qCAEJhK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAILguD,GAA2B,CACpCt6B,cAAe,CACX,UACA,iCACA,4BAEJhK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAILiuD,GAA0B,CACnCv6B,cAAe,CACX,UACA,iCACA,2BAEJhK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAILkuD,GAAa,CACtBx6B,cAAe,YACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,kBAChB3Q,KAAM,CACFzY,KAAM,YAILmuD,GAAY,CACrBz6B,cAAe,YACfhK,OAAQ,CACJN,eAAgB,mBAChBoC,UAAU,EACVsE,QAAS,mBACTrX,KAAM,CACFzY,KAAM,YAILouD,GAAc,CACvB16B,cAAe,cACfhK,OAAQ,CACJN,eAAgB,oBAChBoC,UAAU,EACVsE,QAAS,oBACTrX,KAAM,CACFzY,KAAM,YAILquD,GAAqB,CAC9B36B,cAAe,CAAC,UAAW,sBAC3BhK,OAAQ,CACJN,eAAgB,4BAChB0G,QAAS,4BACTrX,KAAM,CACFzY,KAAM,eAILsuD,GAAS,CAClB56B,cAAe,QACfhK,OAAQ,CACJN,eAAgB,aAChBoC,UAAU,EACVsE,QAAS,aACTrX,KAAM,CACFzY,KAAM,YAILuuD,GAAS,CAClB76B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,WACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILwuD,GAAe,CACxB96B,cAAe,CAAC,UAAW,gBAC3BhK,OAAQ,CACJN,eAAgB,eAChB0G,QAAS,eACTrX,KAAM,CACFzY,KAAM,YAILyuD,GAAkB,CAC3B/6B,cAAe,CAAC,UAAW,mBAC3BhK,OAAQ,CACJN,eAAgB,6BAChB0G,QAAS,6BACTrX,KAAM,CACFzY,KAAM,YAIL0uD,GAAuB,CAChCh7B,cAAe,uBACfhK,OAAQ,CACJN,eAAgB,8BAChBoC,UAAU,EACVsE,QAAS,8BACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,MAAO,SAAU,gBAIhC+iC,GAAS,CAClBj7B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,kBACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL4uD,GAAY,CACrBl7B,cAAe,WACfhK,OAAQ,CACJ6B,aAAc,aACdD,YAAY,EACZlC,eAAgB,iBAChB3Q,KAAM,CACFzY,KAAM,YAIL6uD,GAAS,CAClBn7B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,cACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAIL8uD,GAAU,CACnBp7B,cAAe,CAAC,UAAW,iCAAkC,WAC7DhK,OAAQ,CACJN,eAAgB,8BAChB0G,QAAS,8BACTrX,KAAM,CACFzY,KAAM,YAIL+uD,GAAiB,CAC1Br7B,cAAe,CACX,UACA,iCACA,kBAEJhK,OAAQ,CACJN,eAAgB,gCAChB0G,QAAS,gCACTrX,KAAM,CACFzY,KAAM,YAILgvD,GAAe,CACxBt7B,cAAe,CAAC,UAAW,eAC3BhK,OAAQ,CACJN,eAAgB,oBAChB0G,QAAS,oBACTrX,KAAM,CACFzY,KAAM,YAILivD,GAAS,CAClBv7B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,OACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILkvD,GAAY,CACrBx7B,cAAe,WACfhK,OAAQ,CACJ6B,aAAc,YACdD,YAAY,EACZlC,eAAgB,iBAChB3Q,KAAM,CACFzY,KAAM,YAILmvD,GAA2B,CACpCz7B,cAAe,CAAC,UAAW,4BAC3BhK,OAAQ,CACJN,eAAgB,mCAChB0G,QAAS,mCACTrX,KAAM,CACFzY,KAAM,aAILovD,GAAS,CAClB17B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,QACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILqvD,GAAU,CACnB37B,cAAe,UACfhK,OAAQ,CACJN,eAAgB,UAChBoC,UAAU,EACVsE,QAAS,UACTrX,KAAM,CACFzY,KAAM,YAILsvD,GAAS,CAClB57B,cAAe,SACfhK,OAAQkzB,IAEC2S,GAAS,CAClB77B,cAAe,OACfhK,OAAQ,CACJ6B,aAAc,YACdD,YAAY,EACZlC,eAAgB,OAChB3Q,KAAM,CACFzY,KAAM,YAILwvD,GAAW,CACpB97B,cAAe,WACfhK,OAAQ,CACJ6B,aAAc,YACdnC,eAAgB,gBAChBoC,UAAU,EACVsE,QAAS,gBACTrX,KAAM,CACFzY,KAAM,OACN4rB,cAAe,CAAC,YAAa,cAAe,UC1jDjD,MAAM6jC,GAKT,WAAA7wD,CAAY8wD,GACR3wD,KAAK2wD,OAASA,CAClB,CAOA,aAAAC,CAAcnH,EAAuBlpD,GACjC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE4rB,wBAAuBlpD,WAAWswD,GAChF,CAMA,aAAAC,CAAcvwD,GACV,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWwwD,GACzD,CAOA,aAAAC,CAAczwD,GACV,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW0wD,GACzD,CAKA,qBAAAC,CAAsB3wD,GAClB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW4wD,GACzD,CAOA,oBAAAC,CAAqBlH,EAAS3pD,GAC1B,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqsB,UAAS3pD,WAAW8wD,GAClE,CAKA,cAAAC,CAAe/wD,GACX,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWgxD,GACzD,CASA,WAAAC,CAAYl+C,EAAeg3C,EAAsBh6C,EAAM/P,GACnD,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAeg3C,uBAAsBh6C,OAAM/P,WAAWkxD,GACpG,CAOA,WAAAC,CAAYnxD,GACR,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWoxD,GACzD,EAGJ,MAAMC,GAAgB,GAA4B,GAAqB,GACjEf,GAA6B,CAC/B91B,KAAM,IACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAYsiC,IAEVb,GAA6B,CAC/Bh2B,KAAM,IACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAYsiC,IAEVX,GAA6B,CAC/Bl2B,KAAM,IACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAYsiC,IAEVT,GAAqC,CACvCp2B,KAAM,IACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAYsiC,IAEVP,GAAoC,CACtCt2B,KAAM,IACNhE,WAAY,OACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAYsiC,IAEVL,GAA8B,CAChCx2B,KAAM,IACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAAiB,IACnCX,cAAe,CAAC,IAChB9C,iBAAkB,CAAC,GAAoB,IACvClO,OAAO,EACP6E,WAAYsiC,IAEVH,GAA2B,CAC7B12B,KAAM,IACNhE,WAAY,OACZR,UAAW,CACP,IAAK,CACDzM,WAAY,CACRpQ,KAAM,CAAEzY,KAAM,UACdopB,eAAgB,kBAEpB2M,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAYsiC,IAEVD,GAA2B,CAC7B52B,KAAM,IACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAYsiC,IC7ST,MAAMC,GAKT,WAAAhyD,CAAY8wD,GACR3wD,KAAK2wD,OAASA,CAClB,CAMA,MAAA/uD,CAAOrB,GACH,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWuxD,GACzD,CAMA,aAAAhB,CAAcvwD,GACV,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAMA,OAAOA,GACH,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWwxD,GACzD,CAKA,WAAAC,CAAYzxD,GACR,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW0xD,GACzD,CAMA,eAAAC,CAAgB3xD,GACZ,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW4xD,GACzD,CAMA,eAAAC,CAAgB7xD,GACZ,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW8xD,GACzD,CAKA,OAAAC,CAAQ/xD,GACJ,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWgyD,GACzD,CAMA,MAAAC,CAAOrH,EAAqB5qD,GACxB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEstB,sBAAqB5qD,WAAWkyD,GAC9E,CASA,WAAAjB,CAAYl+C,EAAeg3C,EAAsBh6C,EAAM/P,GACnD,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAeg3C,uBAAsBh6C,OAAM/P,WAAW,GACpG,CAMA,WAAAmxD,CAAYnxD,GACR,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAMA,YAAAmyD,CAAanyD,GACT,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWoyD,GACzD,CAOA,YAAAC,CAAa1Q,EAAS3hD,GAClB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqkB,UAAS3hD,WAAWsyD,GAClE,CAOA,UAAAC,CAAW5Q,EAAS3hD,GAChB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqkB,UAAS3hD,WAAWwyD,GAClE,CAMA,UAAAC,CAAWzyD,GACP,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW0yD,GACzD,CAUA,WAAAC,CAAYhR,EAASsJ,EAAiBjrD,GAClC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqkB,UAASsJ,kBAAiBjrD,WAAW4yD,GACnF,CAKA,mBAAAC,CAAoB7yD,GAChB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW8yD,GACzD,CASA,wBAAAC,CAAyB/2B,EAAWh8B,GAChC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEtB,YAAWh8B,WAAWgzD,GACpE,CAKA,cAAAjC,CAAe/wD,GACX,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,EAGJ,MAAM,GAAgB,GAA4B,GAAqB,GACjEuxD,GAAsB,CACxB/2B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA6B,CAC/ByL,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVyiC,GAAsB,CACxBh3B,KAAM,mBACNhE,WAAY,SACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV2iC,GAA2B,CAC7Bl3B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV6iC,GAA+B,CACjCp3B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,CACRpQ,KAAM,CACFzY,KAAM,WACNwuB,QAAS,CACL/V,KAAM,CAAEzY,KAAM,YAAayuB,UAAW,sBAG9CrF,eAAgB,oBAChB0G,QAAS,oBACTxD,cAAc,EACdyD,eAAgB,oBAEpBgG,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV+iC,GAA+B,CACjCt3B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAY,IAEVijC,GAAuB,CACzBx3B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVmjC,GAAsB,CACxB13B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA2B,CAC7ByL,KAAM,mBACNhE,WAAY,OACZR,UAAW,CACP,IAAK,CACDzM,WAAY,CACRpQ,KAAM,CAAEzY,KAAM,UACdopB,eAAgB,kBAEpB2M,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAY,IAEV,GAA2B,CAC7ByL,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVqjC,GAA4B,CAC9B53B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVujC,GAA4B,CAC9B93B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVyjC,GAA0B,CAC5Bh4B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV2jC,GAA0B,CAC5Bl4B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV6jC,GAA2B,CAC7Bp4B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV+jC,GAAmC,CACrCt4B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVikC,GAAwC,CAC1Cx4B,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA8B,CAChCyL,KAAM,mBACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAAiB,IACnCX,cAAe,CAAC,IAChB9C,iBAAkB,CAAC,GAAoB,IACvClO,OAAO,EACP6E,WAAY,ICnrBT,MAAMkkC,GAKT,WAAA3zD,CAAY8wD,GACR3wD,KAAK2wD,OAASA,CAClB,CAMA,QAAA8C,CAASlzD,GACL,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWmzD,GACzD,CAMA,aAAA5C,CAAcvwD,GACV,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAgBA,OAAOA,GACH,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAKA,QAAAozD,CAASpzD,GACL,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWqzD,GACzD,CAMA,SAAAC,CAAUjH,EAAersD,GACrB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE+uB,gBAAersD,WAAWuzD,GACxE,CAKA,cAAAC,CAAexzD,GACX,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWyzD,GACzD,CAKA,qBAAAC,CAAsB1zD,GAClB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW2zD,GACzD,CAKA,wBAAAC,CAAyB5zD,GACrB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW6zD,GACzD,CAMA,YAAAC,CAAa5W,EAAWl9C,GACpB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE4f,YAAWl9C,WAAW+zD,GACpE,CAMA,WAAAtC,CAAYzxD,GACR,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAMA,YAAAmyD,CAAanyD,GACT,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAOA,YAAAqyD,CAAa1Q,EAAS3hD,GAClB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqkB,UAAS3hD,WAAW,GAClE,CAOA,UAAAuyD,CAAW5Q,EAAS3hD,GAChB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqkB,UAAS3hD,WAAW,GAClE,CAUA,WAAA2yD,CAAYhR,EAASsJ,EAAiBjrD,GAClC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEqkB,UAASsJ,kBAAiBjrD,WAAW,GACnF,CAMA,UAAAyyD,CAAWzyD,GACP,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAKA,cAAAg0D,CAAeh0D,GACX,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWi0D,GACzD,CASA,gBAAAC,CAAiBnY,EAAY/7C,GACzB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEye,aAAY/7C,WAAWm0D,GACrE,CAUA,WAAAC,CAAYrY,EAAY/7C,GACpB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEye,aAAY/7C,WAAWq0D,GACrE,CAQA,gBAAAC,CAAiBzY,EAAQ77C,GACrB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEue,SAAQ77C,WAAWu0D,GACjE,CAUA,OAAAC,CAAQ1H,EAAM9sD,GACV,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEwvB,OAAM9sD,WAAWy0D,GAC/D,CAKA,cAAA1D,CAAe/wD,GACX,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW,GACzD,CAMA,KAAA4rC,CAAM5rC,GACF,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW00D,GACzD,CAKA,OAAAC,CAAQ30D,GACJ,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW40D,GACzD,CAKA,OAAAC,CAAQ70D,GACJ,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAW80D,GACzD,EAGJ,MAAM,GAAgB,GAA4B,GAAqB,GACjE3B,GAAwB,CAC1B34B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,CACRpQ,KAAM,CAAEzY,KAAM,UACdopB,eAAgB,kBAEpB2M,cAAe,IAEnB,IAAK,CACDlN,WAAY,CACRpQ,KAAM,CAAEzY,KAAM,UACdopB,eAAgB,kBAEpB2M,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA6B,CAC/ByL,KAAM,0BACNhE,WAAY,OACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAAsB,CACxByL,KAAM,0BACNhE,WAAY,SACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVskC,GAAwB,CAC1B74B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVwkC,GAAyB,CAC3B/4B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV0kC,GAA8B,CAChCj5B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAAiB,IACnCX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV4kC,GAAqC,CACvCn5B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV8kC,GAAwC,CAC1Cr5B,KAAM,0BACNhE,WAAY,SACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVglC,GAA4B,CAC9Bv5B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA2B,CAC7ByL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA4B,CAC9ByL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA4B,CAC9ByL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA0B,CAC5ByL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA2B,CAC7ByL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA0B,CAC5ByL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVklC,GAA8B,CAChCz5B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVolC,GAAgC,CAClC35B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,IAClBX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVslC,GAA2B,CAC7B75B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,IAClBX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVwlC,GAAgC,CAClC/5B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV0lC,GAAuB,CACzBj6B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnB,IAAK,CACDA,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV,GAA8B,CAChCyL,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAAiB,IACnCX,cAAe,CAAC,IAChB9C,iBAAkB,CAAC,GAAoB,IACvClO,OAAO,EACP6E,WAAY,IAEV2lC,GAAqB,CACvBl6B,KAAM,0BACNhE,WAAY,OACZR,UAAW,CACP,IAAK,CACDzM,WAAY,CACRpQ,KAAM,CAAEzY,KAAM,UACdopB,eAAgB,kBAEpB2M,cAAe,IAEnB,IAAK,CACDlN,WAAY,CACRpQ,KAAM,CAAEzY,KAAM,UACdopB,eAAgB,kBAEpB2M,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAY,IAEV6lC,GAAuB,CACzBp6B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV+lC,GAAuB,CACzBt6B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAY,ICv9BT,MAAMgmC,GAKT,WAAAz1D,CAAY8wD,GACR3wD,KAAK2wD,OAASA,CAClB,CAQA,MAAA/uD,CAAO0R,EAAeo0C,EAAmBnnD,GACrC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAeo0C,oBAAmBnnD,WAAW,GAC3F,CAOA,WAAAg1D,CAAYjiD,EAAehD,EAAM/P,GAC7B,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAehD,OAAM/P,WAAWi1D,GAC9E,CAMA,UAAAC,CAAWniD,EAAe/S,GACtB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAe/S,WAAWm1D,GACxE,CAYA,kBAAAC,CAAmBvG,EAAWC,EAAa/7C,EAAe24C,EAAO1rD,GAC7D,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEuxB,YAAWC,cAAa/7C,gBAAe24C,QAAO1rD,WAAWq1D,GACvG,CAMA,aAAAC,CAAct1D,GACV,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWu1D,GACzD,CAMA,iBAAAC,CAAkBx1D,GACd,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWy1D,GACzD,CAOA,MAAAC,CAAOvO,EAAmBnnD,GACtB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE6pB,oBAAmBnnD,WAAW21D,GAC5E,CAQA,oBAAAC,CAAqBxG,EAAsBpvD,GACvC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE8xB,uBAAsBpvD,WAAW61D,GAC/E,CAaA,eAAAC,CAAgB/Z,EAAY/7C,GACxB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEye,aAAY/7C,WAAW+1D,GACrE,EAGJ,MAAM,GAAgB,GAA4B,GAAqB,GACjE,GAAsB,CACxBv7B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,IAClBX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVkmC,GAA2B,CAC7Bz6B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,SACX/J,WAAY,IAEVomC,GAA0B,CAC5B36B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVsmC,GAAkC,CACpC76B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVwmC,GAA6B,CAC/B/6B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV0mC,GAAiC,CACnCj7B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV4mC,GAAsB,CACxBn7B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAAiB,IACnCX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV8mC,GAAoC,CACtCr7B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAAiB,IACnCX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVgnC,GAA+B,CACjCv7B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IC1bT,MAAMinC,GAKT,WAAA12D,CAAY8wD,GACR3wD,KAAK2wD,OAASA,CAClB,CAMA,MAAA/uD,CAAO0R,EAAe/S,GAClB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAe/S,WAAW,GACxE,CASA,WAAAi2D,CAAYljD,EAAehD,EAAM/P,GAC7B,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAehD,OAAM/P,WAAWk2D,GAC9E,CAUA,kBAAAC,CAAmBtH,EAAW97C,EAAe/S,GACzC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEuxB,YAAW97C,gBAAe/S,WAAWo2D,GACnF,CAMA,IAAAC,CAAKr2D,GACD,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEt9B,WAAWs2D,GACzD,EAGJ,MAAM,GAAgB,GAA4B,GAAqB,GACjE,GAAsB,CACxB97B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,IAClBX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVmnC,GAA2B,CAC7B17B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,SACX/J,WAAY,IAEVqnC,GAAkC,CACpC57B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVunC,GAAoB,CACtB97B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IC/MT,MAAMwnC,GAKT,WAAAj3D,CAAY8wD,GACR3wD,KAAK2wD,OAASA,CAClB,CAUA,MAAAoG,CAAOzjD,EAAehD,EAAM/P,GACxB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAehD,OAAM/P,WAAWy2D,GAC9E,CAcA,cAAAC,CAAe3jD,EAAegpC,EAAY/7C,GACtC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEvqB,gBAAegpC,aAAY/7C,WAAW22D,GACpF,CAUA,UAAAC,CAAW7G,EAASh9C,EAAehD,EAAM/P,GACrC,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEyyB,UAASh9C,gBAAehD,OAAM/P,WAAW62D,GACvF,CAWA,iBAAAC,CAAkB/G,EAASh9C,EAAe87C,EAAW7uD,GACjD,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAEyyB,UAASh9C,gBAAe87C,YAAW7uD,WAAW+2D,GAC5F,CAYA,eAAAC,CAAgBhH,EAAQhwD,GACpB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE0yB,SAAQhwD,WAAWi3D,GACjE,CAQA,YAAAC,CAAahH,EAAUlwD,GACnB,OAAOP,KAAK2wD,OAAO9yB,qBAAqB,CAAE4yB,WAAUlwD,WAAWm3D,GACnE,EAGJ,MAAM,GAAgB,GAA4B,GAAqB,GACjEV,GAAsB,CACxBj8B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CAAC,IAClBX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,SACX/J,WAAY,IAEV4nC,GAA8B,CAChCn8B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CAAC,IAClBX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEV8nC,GAA0B,CAC5Br8B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,SACX/J,WAAY,IAEVgoC,GAAiC,CACnCv8B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,IAEVkoC,GAA+B,CACjCz8B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDS,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvB1X,YAAa,GACb8c,gBAAiB,CAAC,GAA6B,IAC/CX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACPvW,YAAa,iCACbmlB,UAAW,MACX/J,WAAY,IAEVooC,GAA4B,CAC9B38B,KAAM,0BACNhE,WAAY,MACZR,UAAW,CACP,IAAK,CACDzM,WAAY,GACZkN,cAAe,IAEnBM,QAAS,CACLxN,WAAY,GACZkN,cAAe,KAGvBoF,gBAAiB,CACb,GACA,GACA,GACA,IAEJX,cAAe,CAAC,IAChB9C,iBAAkB,CACd,GACA,GACA,GACA,GACA,IAEJlO,OAAO,EACP6E,WAAY,ICjWT,MAAMqoC,WAAsB,GAO/B,WAAA93D,CAAYsP,EAAK5O,GACb,IAAIR,EAAIgN,EACR,QAAY3M,IAAR+O,EACA,MAAM,IAAIzO,MAAM,wBAGfH,IACDA,EAAU,CAAC,GAEf,MAAMq3D,EAAW,CACbv6B,mBAAoB,mCAElBuY,EAAiB,sCACjBlkC,EAAkBnR,EAAQ6d,kBAAoB7d,EAAQ6d,iBAAiB1M,gBACvE,GAAGnR,EAAQ6d,iBAAiB1M,mBAAmBkkC,IAC/C,GAAGA,IACHiiB,EAAsBzyD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGuyD,GAAWr3D,GAAU,CAAE6d,iBAAkB,CAC3G1M,mBACD6rB,SAA8F,QAAnFxwB,EAAiC,QAA3BhN,EAAKQ,EAAQg9B,gBAA6B,IAAPx9B,EAAgBA,EAAKQ,EAAQk6B,eAA4B,IAAP1tB,EAAgBA,EAAK,UAClItE,MAAMovD,GAEN73D,KAAKmP,IAAMA,EAEXnP,KAAKuN,QAAUhN,EAAQgN,SAAW,aAClCvN,KAAK83D,QAAU,IAAIpH,GAAY1wD,MAC/BA,KAAK+3D,UAAY,IAAIlG,GAAc7xD,MACnCA,KAAK+R,KAAO,IAAIyhD,GAASxzD,MACzBA,KAAKg4D,SAAW,IAAI1C,GAAat1D,MACjCA,KAAKi4D,WAAa,IAAI1B,GAAev2D,MACrCA,KAAKk4D,UAAY,IAAIpB,GAAc92D,KACvC,ECxCG,MAAMm4D,WAA6BR,GACtC,0BAAM95B,CAAqBrJ,EAAoB6B,GAC3C,MAAM+hC,EAAsBhzD,OAAOC,OAAO,CAAC,EAAGgxB,GAK9C,MAJiC,qBAA7B+hC,EAAoBr9B,MACS,4BAA7Bq9B,EAAoBr9B,OACpBq9B,EAAoBr9B,KAAO,IAExBtyB,MAAMo1B,qBAAqBrJ,EAAoB4jC,EAC1D,ECLG,MAAM,GAMT,WAAAv4D,CAAYsP,EAAK7N,GAEbtB,KAAKmP,IAAM66B,GAAc76B,GACzBnP,KAAK4qC,YAAcM,GAAsB/7B,GACzCnP,KAAKsB,SAAWA,EAChBtB,KAAKq4D,qBAAuB,IAAIF,GAAqBn4D,KAAKmP,IAAKmmC,GAAqBh0C,IACpFtB,KAAKs4D,QAAUhrB,GAAOzB,GAAa7rC,KAAKmP,MAAQ,GAAI,SACpDnP,KAAK6jB,WAAaiyB,GAA0Bx0C,GAE5C,MAAM+2D,EAAuBr4D,KAAKq4D,qBAClCA,EAAqBh7B,wBAAqBj9B,CAC9C,EClBG,MAAMqd,GAAgBrB,GAAoB,CAC7CC,YAAa,sBACbC,eAAgB,GAChBhX,UAAW,sBCAR,MAAMizD,GACT,WAAA14D,GAIIG,KAAKuiB,MAAO,EAIZviB,KAAKgD,KAAM,EAIXhD,KAAK4B,QAAS,EAId5B,KAAK82C,OAAQ,EAIb92C,KAAK2D,QAAS,EAId3D,KAAKw4D,eAAgB,EAIrBx4D,KAAKy4D,KAAM,EAIXz4D,KAAK04D,MAAO,EAIZ14D,KAAK24D,SAAU,EAIf34D,KAAKi0D,uBAAwB,EAI7Bj0D,KAAK44D,iBAAkB,CAC3B,CAOA,YAAOtjD,CAAM0lC,GACT,MAAM6d,EAAqB,IAAIN,GAC/B,IAAK,MAAMO,KAAQ9d,EACf,OAAQ8d,GACJ,IAAK,IACDD,EAAmBt2C,MAAO,EAC1B,MACJ,IAAK,IACDs2C,EAAmB71D,KAAM,EACzB,MACJ,IAAK,IACD61D,EAAmBj3D,QAAS,EAC5B,MACJ,IAAK,IACDi3D,EAAmB/hB,OAAQ,EAC3B,MACJ,IAAK,IACD+hB,EAAmBl1D,QAAS,EAC5B,MACJ,IAAK,IACDk1D,EAAmBL,eAAgB,EACnC,MACJ,IAAK,IACDK,EAAmBJ,KAAM,EACzB,MACJ,IAAK,IACDI,EAAmBH,MAAO,EAC1B,MACJ,IAAK,IACDG,EAAmBF,SAAU,EAC7B,MACJ,IAAK,IACDE,EAAmB5E,uBAAwB,EAC3C,MACJ,IAAK,IACD4E,EAAmBD,iBAAkB,EACrC,MACJ,QACI,MAAM,IAAI5sB,WAAW,uBAAuB8sB,KAGxD,OAAOD,CACX,CAOA,WAAOllD,CAAKolD,GACR,MAAMF,EAAqB,IAAIN,GAkC/B,OAjCIQ,EAAex2C,OACfs2C,EAAmBt2C,MAAO,GAE1Bw2C,EAAe/1D,MACf61D,EAAmB71D,KAAM,GAEzB+1D,EAAen3D,SACfi3D,EAAmBj3D,QAAS,GAE5Bm3D,EAAejiB,QACf+hB,EAAmB/hB,OAAQ,GAE3BiiB,EAAep1D,SACfk1D,EAAmBl1D,QAAS,GAE5Bo1D,EAAeP,gBACfK,EAAmBL,eAAgB,GAEnCO,EAAeN,MACfI,EAAmBJ,KAAM,GAEzBM,EAAeL,OACfG,EAAmBH,MAAO,GAE1BK,EAAeJ,UACfE,EAAmBF,SAAU,GAE7BI,EAAe9E,wBACf4E,EAAmB5E,uBAAwB,GAE3C8E,EAAeH,kBACfC,EAAmBD,iBAAkB,GAElCC,CACX,CAOA,QAAApsD,GACI,MAAMuuC,EAAc,GAkCpB,OAjCIh7C,KAAKuiB,MACLy4B,EAAYp6C,KAAK,KAEjBZ,KAAKgD,KACLg4C,EAAYp6C,KAAK,KAEjBZ,KAAK4B,QACLo5C,EAAYp6C,KAAK,KAEjBZ,KAAK82C,OACLkE,EAAYp6C,KAAK,KAEjBZ,KAAK2D,QACLq3C,EAAYp6C,KAAK,KAEjBZ,KAAKw4D,eACLxd,EAAYp6C,KAAK,KAEjBZ,KAAKy4D,KACLzd,EAAYp6C,KAAK,KAEjBZ,KAAK04D,MACL1d,EAAYp6C,KAAK,KAEjBZ,KAAK24D,SACL3d,EAAYp6C,KAAK,KAEjBZ,KAAKi0D,uBACLjZ,EAAYp6C,KAAK,KAEjBZ,KAAK44D,iBACL5d,EAAYp6C,KAAK,KAEdo6C,EAAYvzC,KAAK,GAC5B,ECvLG,MAAMuxD,GACT,WAAAn5D,GAIIG,KAAKuiB,MAAO,EAIZviB,KAAKgD,KAAM,EAIXhD,KAAK4B,QAAS,EAId5B,KAAK82C,OAAQ,EAIb92C,KAAK2D,QAAS,EAId3D,KAAKw4D,eAAgB,EAIrBx4D,KAAKi5D,MAAO,EAIZj5D,KAAKy4D,KAAM,EAIXz4D,KAAK04D,MAAO,EAIZ14D,KAAK24D,SAAU,EAIf34D,KAAKi0D,uBAAwB,EAI7Bj0D,KAAK44D,iBAAkB,EAIvB54D,KAAKk5D,cAAe,CACxB,CAOA,YAAO5jD,CAAM0lC,GACT,MAAMme,EAA0B,IAAIH,GACpC,IAAK,MAAMF,KAAQ9d,EACf,OAAQ8d,GACJ,IAAK,IACDK,EAAwB52C,MAAO,EAC/B,MACJ,IAAK,IACD42C,EAAwBn2D,KAAM,EAC9B,MACJ,IAAK,IACDm2D,EAAwBv3D,QAAS,EACjC,MACJ,IAAK,IACDu3D,EAAwBriB,OAAQ,EAChC,MACJ,IAAK,IACDqiB,EAAwBx1D,QAAS,EACjC,MACJ,IAAK,IACDw1D,EAAwBF,MAAO,EAC/B,MACJ,IAAK,IACDE,EAAwBV,KAAM,EAC9B,MACJ,IAAK,IACDU,EAAwBX,eAAgB,EACxC,MACJ,IAAK,IACDW,EAAwBT,MAAO,EAC/B,MACJ,IAAK,IACDS,EAAwBR,SAAU,EAClC,MACJ,IAAK,IACDQ,EAAwBlF,uBAAwB,EAChD,MACJ,IAAK,IACDkF,EAAwBP,iBAAkB,EAC1C,MACJ,IAAK,IACDO,EAAwBD,cAAe,EACvC,MACJ,QACI,MAAM,IAAIltB,WAAW,sBAAsB8sB,KAGvD,OAAOK,CACX,CAOA,WAAOxlD,CAAKolD,GACR,MAAMI,EAA0B,IAAIH,GAwCpC,OAvCID,EAAex2C,OACf42C,EAAwB52C,MAAO,GAE/Bw2C,EAAe/1D,MACfm2D,EAAwBn2D,KAAM,GAE9B+1D,EAAen3D,SACfu3D,EAAwBv3D,QAAS,GAEjCm3D,EAAejiB,QACfqiB,EAAwBriB,OAAQ,GAEhCiiB,EAAep1D,SACfw1D,EAAwBx1D,QAAS,GAEjCo1D,EAAeE,OACfE,EAAwBF,MAAO,GAE/BF,EAAeP,gBACfW,EAAwBX,eAAgB,GAExCO,EAAeN,MACfU,EAAwBV,KAAM,GAE9BM,EAAeL,OACfS,EAAwBT,MAAO,GAE/BK,EAAeJ,UACfQ,EAAwBR,SAAU,GAElCI,EAAe9E,wBACfkF,EAAwBlF,uBAAwB,GAEhD8E,EAAeH,kBACfO,EAAwBP,iBAAkB,GAE1CG,EAAeG,eACfC,EAAwBD,cAAe,GAEpCC,CACX,CASA,QAAA1sD,GACI,MAAMuuC,EAAc,GAwCpB,OAvCIh7C,KAAKuiB,MACLy4B,EAAYp6C,KAAK,KAEjBZ,KAAKgD,KACLg4C,EAAYp6C,KAAK,KAEjBZ,KAAK4B,QACLo5C,EAAYp6C,KAAK,KAEjBZ,KAAK82C,OACLkE,EAAYp6C,KAAK,KAEjBZ,KAAK2D,QACLq3C,EAAYp6C,KAAK,KAEjBZ,KAAKw4D,eACLxd,EAAYp6C,KAAK,KAEjBZ,KAAKi5D,MACLje,EAAYp6C,KAAK,KAEjBZ,KAAKy4D,KACLzd,EAAYp6C,KAAK,KAEjBZ,KAAK04D,MACL1d,EAAYp6C,KAAK,KAEjBZ,KAAK24D,SACL3d,EAAYp6C,KAAK,KAEjBZ,KAAKi0D,uBACLjZ,EAAYp6C,KAAK,KAEjBZ,KAAK44D,iBACL5d,EAAYp6C,KAAK,KAEjBZ,KAAKk5D,cACLle,EAAYp6C,KAAK,KAEdo6C,EAAYvzC,KAAK,GAC5B,ECxNG,MAAM2xD,ICON,SAASC,GAAgBC,GAC5B,OAAOA,EAAQn+C,IAAM,GAAGm+C,EAAQpoB,SAASooB,EAAQn+C,MAAQm+C,EAAQpoB,KACrE,CCJO,IAAIqoB,IACX,SAAWA,GAIPA,EAAY,SAAW,QAIvBA,EAAY,gBAAkB,YACjC,EATD,CASGA,KAAgBA,GAAc,CAAC,IAU3B,MAAMC,GAMT,WAAIF,GACA,GAAIt5D,KAAKy5D,aACL,MAAO,CACHt+C,IAAKnb,KAAKy5D,aAAat+C,IACvB+1B,MAAOlxC,KAAKy5D,aAAavoB,MAIrC,CACA,WAAArxC,CAAY0N,EAASmsD,EAAWC,EAAsBC,EAAUC,EAAej7C,EAAUg7B,EAAUC,EAAWyf,EAASQ,EAAYC,EAAU9d,EAAcD,EAAoBH,EAAiBC,EAAiB5nC,EAAa8lD,EAAmBC,EAA4BC,EAAejd,GACxRj9C,KAAKuN,QAAUA,EACfvN,KAAK05D,UAAYA,OACYt5D,IAAzBu5D,GAAsE,kBAAzBA,GAE7C35D,KAAKg7C,YAAc2e,EAAqB3e,YACxCh7C,KAAK45D,SAAWD,EAAqBC,SACrC55D,KAAK65D,cAAgBF,EAAqBE,cAC1C75D,KAAK4e,SAAW+6C,EAAqB/6C,SACrC5e,KAAK45C,SAAW+f,EAAqB/f,SACrC55C,KAAK65C,UAAY8f,EAAqB9f,UACtC75C,KAAKy5D,aAAeE,EAAqBL,QACzCt5D,KAAK85D,WAAaH,EAAqBG,WACvC95D,KAAKi9C,gBAAkB0c,EAAqB1c,gBAC5Cj9C,KAAK+5D,SAAWJ,EAAqBI,SACrC/5D,KAAKi8C,aAAe0d,EAAqB1d,aACzCj8C,KAAKg8C,mBAAqB2d,EAAqB3d,mBAC/Ch8C,KAAK67C,gBAAkB8d,EAAqB9d,gBAC5C77C,KAAK87C,gBAAkB6d,EAAqB7d,gBAC5C97C,KAAKkU,YAAcylD,EAAqBzlD,YACpCylD,EAAqBK,oBACrBh6D,KAAKm6D,UAAYR,EAAqBK,kBAAkBjgB,eACxD/5C,KAAKg6C,eAAiB2f,EAAqBK,kBAAkBhgB,eAC7Dh6C,KAAKi6C,eAAiB0f,EAAqBK,kBAAkB/f,eAC7Dj6C,KAAKk6C,gBAAkByf,EAAqBK,kBAAkB9f,gBAC9Dl6C,KAAKm6C,cAAgBwf,EAAqBK,kBAAkB7f,cAC5Dn6C,KAAKo6C,cAAgBuf,EAAqBK,kBAAkB5f,cAC5Dp6C,KAAKi6D,2BAA6BN,EAAqBM,2BACvDj6D,KAAKk6D,cAAgBP,EAAqBO,iBAI9Cl6D,KAAK45D,SAAWA,EAChB55D,KAAK65D,cAAgBA,EACrB75D,KAAK65C,UAAYA,EACjB75C,KAAKg7C,YAAc2e,EACnB35D,KAAK4e,SAAWA,EAChB5e,KAAK45C,SAAWA,EAChB55C,KAAKy5D,aAAeH,EACpBt5D,KAAKi9C,gBAAkBA,EACvBj9C,KAAK85D,WAAaA,EAClB95D,KAAK+5D,SAAWA,EAChB/5D,KAAKi8C,aAAeA,EACpBj8C,KAAKg8C,mBAAqBA,EAC1Bh8C,KAAK67C,gBAAkBA,EACvB77C,KAAK87C,gBAAkBA,EACvB97C,KAAKkU,YAAcA,EACf8lD,IACAh6D,KAAKm6D,UAAYH,EAAkBjgB,eACnC/5C,KAAKg6C,eAAiBggB,EAAkBhgB,eACxCh6C,KAAKi6C,eAAiB+f,EAAkB/f,eACxCj6C,KAAKk6C,gBAAkB8f,EAAkB9f,gBACzCl6C,KAAKm6C,cAAgB6f,EAAkB7f,cACvCn6C,KAAKo6C,cAAgB4f,EAAkB5f,cACvCp6C,KAAKi6D,2BAA6BA,EAClCj6D,KAAKk6D,cAAgBA,GAGjC,CAKA,QAAAztD,GACI,MAAM2tD,EAAS,CACX,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,QACA,QACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,OACA,OACA,OACA,OACA,OACA,QACA,QAEEC,EAAU,GAChB,IAAK,MAAMC,KAASF,EAChB,OAAQE,GACJ,IAAK,KACDt6D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKuN,SAClD,MACJ,IAAK,KACDvN,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK45D,UAClD,MACJ,IAAK,MACD55D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK65D,eAClD,MACJ,IAAK,MACD75D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK4e,UAClD,MACJ,IAAK,KACD5e,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK45C,SAAWxN,GAAqBpsC,KAAK45C,UAAU,QAASx5C,GAC1G,MACJ,IAAK,KACDJ,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK65C,UAAYzN,GAAqBpsC,KAAK65C,WAAW,QAASz5C,GAC5G,MACJ,IAAK,MACDJ,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKs5D,QAAUD,GAAgBr5D,KAAKs5D,cAAWl5D,GAC5F,MACJ,IAAK,KACDJ,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK85D,YAClD,MACJ,IAAK,MACD95D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKi9C,iBAClD,MACJ,IAAK,QACDj9C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKm6D,WAClD,MACJ,IAAK,QACDn6D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKg6C,gBAClD,MACJ,IAAK,MACDh6C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKi6C,eAAiB7N,GAAqBpsC,KAAKi6C,gBAAgB,QAAS75C,GACtH,MACJ,IAAK,MACDJ,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKk6C,gBAAkB9N,GAAqBpsC,KAAKk6C,iBAAiB,QAAS95C,GACxH,MACJ,IAAK,MACDJ,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKm6C,eAClD,MACJ,IAAK,MACDn6C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKo6C,eAClD,MACJ,IAAK,KACDp6C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK+5D,UAClD,MACJ,IAAK,KACD/5D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKg7C,aAClD,MACJ,IAAK,MACDh7C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK05D,WAClD,MACJ,IAAK,OACD15D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKi8C,cAClD,MACJ,IAAK,OACDj8C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKg8C,oBAClD,MACJ,IAAK,OACDh8C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK67C,iBAClD,MACJ,IAAK,OACD77C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAK87C,iBAClD,MACJ,IAAK,OACD97C,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKkU,aAClD,MACJ,IAAK,QACDlU,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKi6D,4BAClD,MACJ,IAAK,OACDj6D,KAAKu6D,wBAAwBF,EAASC,EAAOt6D,KAAKk6D,eAClD,MAGZ,OAAOG,EAAQ5yD,KAAK,IACxB,CAQA,uBAAA8yD,CAAwBF,EAASzrD,EAAKxD,GAC7BA,IAGLwD,EAAMktB,mBAAmBltB,GACzBxD,EAAQ0wB,mBAAmB1wB,GACvBwD,EAAI7K,OAAS,GAAKqH,EAAMrH,OAAS,GACjCs2D,EAAQz5D,KAAK,GAAGgO,KAAOxD,KAE/B,EC7NG,SAASovD,GAA+BC,EAAwBC,EAAwC9vB,GAC3G,MAAMr9B,EAAUktD,EAAuBltD,QAAUktD,EAAuBltD,QAAUm5B,GAC5Ei0B,EAAsBD,aAAkD7nB,GACxE6nB,OACAt6D,EACN,IAAIw6D,EAIJ,QAH4Bx6D,IAAxBu6D,QAAqDv6D,IAAhBwqC,IACrCgwB,EAA8B,IAAIxB,GAA4BxuB,EAAa8vB,SAEnDt6D,IAAxBu6D,QAAqEv6D,IAAhCw6D,EACrC,MAAMx0C,UAAU,kEAGpB,GAAI7Y,GAAW,aACX,YAA4BnN,IAAxBu6D,EACOE,GAAuCJ,EAAwBE,GAG/DG,GAA0CL,EAAwBG,GAMjF,GAAIrtD,GAAW,aACX,YAA4BnN,IAAxBu6D,EACOI,GAAuCN,EAAwBE,GAIlEptD,GAAW,aACJytD,GAA0CP,EAAwBG,GAGlEK,GAA0CR,EAAwBG,GAIrF,GAAIrtD,GAAW,aAAc,CACzB,QAA4BnN,IAAxBu6D,EACA,OAAOO,GAAuCT,EAAwBE,GAGtE,MAAM,IAAI3uB,WAAW,mGAE7B,CACA,MAAM,IAAIA,WAAW,qCACzB,CAiBA,SAASkvB,GAAuCT,EAAwBE,GAEpE,GADAF,EAAyBU,GAAyCV,IAC7DA,EAAuBX,cACtBW,EAAuBzf,cAAeyf,EAAuB5gB,WAC/D,MAAM,IAAI7N,WAAW,yGAEzB,IAKIovB,EALArB,EAAW,IACXU,EAAuBppB,WACvB0oB,EAAW,KAIXU,EAAuBzf,cAEnBogB,EADAX,EAAuBppB,SACDknB,GAAmBjjD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,WAGxEusD,GAAwB1jD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,YAI3G,MAAM4uD,EAAe,CACjBD,GAA4C,GAC5CX,EAAuB7gB,SACjBxN,GAAqBquB,EAAuB7gB,UAAU,GACtD,GACN6gB,EAAuB5gB,UACjBzN,GAAqBquB,EAAuB5gB,WAAW,GACvD,GACNyhB,GAAiBX,EAAoB/vB,YAAa6vB,EAAuBhgB,cAAeggB,EAAuBppB,UAC/GopB,EAAuBX,WACvBW,EAAuBnB,QAAUD,GAAgBoB,EAAuBnB,SAAW,GACnFmB,EAAuB77C,SAAW67C,EAAuB77C,SAAW,GACpE67C,EAAuBltD,QACvBktD,EAAuBxe,aAAewe,EAAuBxe,aAAe,GAC5Ewe,EAAuBze,mBAAqBye,EAAuBze,mBAAqB,GACxFye,EAAuB5e,gBAAkB4e,EAAuB5e,gBAAkB,GAClF4e,EAAuB3e,gBAAkB2e,EAAuB3e,gBAAkB,GAClF2e,EAAuBvmD,YAAcumD,EAAuBvmD,YAAc,IAC5EzM,KAAK,MACDiyD,EAAYiB,EAAoBY,kBAAkBF,GACxD,OAAO,IAAI7B,GAAmBiB,EAAuBltD,QAASmsD,EAAW0B,OAAqBh7D,OAAWA,EAAWq6D,EAAuB77C,SAAU67C,EAAuB7gB,SAAU6gB,EAAuB5gB,UAAW4gB,EAAuBnB,QAASmB,EAAuBX,WAAYC,EAAUU,EAAuBxe,aAAcwe,EAAuBze,mBAAoBye,EAAuB5e,gBAAiB4e,EAAuB3e,gBAAiB2e,EAAuBvmD,YAChe,CAiBA,SAAS6mD,GAAuCN,EAAwBE,GAEpE,GADAF,EAAyBU,GAAyCV,IAC7DA,EAAuBX,cACtBW,EAAuBzf,cAAeyf,EAAuB5gB,WAC/D,MAAM,IAAI7N,WAAW,yGAEzB,IAaIovB,EAbArB,EAAW,IACXyB,EAAYf,EAAuBgB,aACnChB,EAAuBppB,WACvB0oB,EAAW,IACPU,EAAuBgB,aACvB1B,EAAW,KAENU,EAAuBpf,YAC5B0e,EAAW,KACXyB,EAAYf,EAAuBpf,YAKvCof,EAAuBzf,cAEnBogB,EADAX,EAAuBppB,SACDknB,GAAmBjjD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,WAGxEusD,GAAwB1jD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,YAI3G,MAAM4uD,EAAe,CACjBD,GAA4C,GAC5CX,EAAuB7gB,SACjBxN,GAAqBquB,EAAuB7gB,UAAU,GACtD,GACN6gB,EAAuB5gB,UACjBzN,GAAqBquB,EAAuB5gB,WAAW,GACvD,GACNyhB,GAAiBX,EAAoB/vB,YAAa6vB,EAAuBhgB,cAAeggB,EAAuBppB,UAC/GopB,EAAuBX,WACvBW,EAAuBnB,QAAUD,GAAgBoB,EAAuBnB,SAAW,GACnFmB,EAAuB77C,SAAW67C,EAAuB77C,SAAW,GACpE67C,EAAuBltD,QACvBwsD,EACAyB,EACAf,EAAuBxe,aAAewe,EAAuBxe,aAAe,GAC5Ewe,EAAuBze,mBAAqBye,EAAuBze,mBAAqB,GACxFye,EAAuB5e,gBAAkB4e,EAAuB5e,gBAAkB,GAClF4e,EAAuB3e,gBAAkB2e,EAAuB3e,gBAAkB,GAClF2e,EAAuBvmD,YAAcumD,EAAuBvmD,YAAc,IAC5EzM,KAAK,MACDiyD,EAAYiB,EAAoBY,kBAAkBF,GACxD,OAAO,IAAI7B,GAAmBiB,EAAuBltD,QAASmsD,EAAW0B,OAAqBh7D,OAAWA,EAAWq6D,EAAuB77C,SAAU67C,EAAuB7gB,SAAU6gB,EAAuB5gB,UAAW4gB,EAAuBnB,QAASmB,EAAuBX,WAAYC,EAAUU,EAAuBxe,aAAcwe,EAAuBze,mBAAoBye,EAAuB5e,gBAAiB4e,EAAuB3e,gBAAiB2e,EAAuBvmD,YAChe,CAiBA,SAAS2mD,GAAuCJ,EAAwBE,GAEpE,GADAF,EAAyBU,GAAyCV,IAC7DA,EAAuBX,cACtBW,EAAuBzf,cAAeyf,EAAuB5gB,WAC/D,MAAM,IAAI7N,WAAW,yGAEzB,IAaIovB,EAbArB,EAAW,IACXyB,EAAYf,EAAuBgB,aACnChB,EAAuBppB,WACvB0oB,EAAW,IACPU,EAAuBgB,aACvB1B,EAAW,KAENU,EAAuBpf,YAC5B0e,EAAW,KACXyB,EAAYf,EAAuBpf,YAKvCof,EAAuBzf,cAEnBogB,EADAX,EAAuBppB,SACDknB,GAAmBjjD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,WAGxEusD,GAAwB1jD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,YAI3G,MAAM4uD,EAAe,CACjBD,GAA4C,GAC5CX,EAAuB7gB,SACjBxN,GAAqBquB,EAAuB7gB,UAAU,GACtD,GACN6gB,EAAuB5gB,UACjBzN,GAAqBquB,EAAuB5gB,WAAW,GACvD,GACNyhB,GAAiBX,EAAoB/vB,YAAa6vB,EAAuBhgB,cAAeggB,EAAuBppB,UAC/GopB,EAAuBX,WACvBW,EAAuBnB,QAAUD,GAAgBoB,EAAuBnB,SAAW,GACnFmB,EAAuB77C,SAAW67C,EAAuB77C,SAAW,GACpE67C,EAAuBltD,QACvBwsD,EACAyB,EACAf,EAAuBxd,gBACvBwd,EAAuBxe,aAAewe,EAAuBxe,aAAe,GAC5Ewe,EAAuBze,mBAAqBye,EAAuBze,mBAAqB,GACxFye,EAAuB5e,gBAAkB4e,EAAuB5e,gBAAkB,GAClF4e,EAAuB3e,gBAAkB2e,EAAuB3e,gBAAkB,GAClF2e,EAAuBvmD,YAAcumD,EAAuBvmD,YAAc,IAC5EzM,KAAK,MACDiyD,EAAYiB,EAAoBY,kBAAkBF,GACxD,OAAO,IAAI7B,GAAmBiB,EAAuBltD,QAASmsD,EAAW0B,OAAqBh7D,OAAWA,EAAWq6D,EAAuB77C,SAAU67C,EAAuB7gB,SAAU6gB,EAAuB5gB,UAAW4gB,EAAuBnB,QAASmB,EAAuBX,WAAYC,EAAUU,EAAuBxe,aAAcwe,EAAuBze,mBAAoBye,EAAuB5e,gBAAiB4e,EAAuB3e,gBAAiB2e,EAAuBvmD,iBAAa9T,OAAWA,OAAWA,EAAWq6D,EAAuBxd,gBACriB,CAeA,SAASge,GAA0CR,EAAwBG,GAGvE,GAFAH,EAAyBU,GAAyCV,IAE7DA,EAAuBzf,cAAgByf,EAAuB5gB,UAC/D,MAAM,IAAI7N,WAAW,2GAEzB,IAaIovB,EAbArB,EAAW,IACXyB,EAAYf,EAAuBgB,aACnChB,EAAuBppB,WACvB0oB,EAAW,IACPU,EAAuBgB,aACvB1B,EAAW,KAENU,EAAuBpf,YAC5B0e,EAAW,KACXyB,EAAYf,EAAuBpf,YAKvCof,EAAuBzf,cAEnBogB,EADAX,EAAuBppB,SACDknB,GAAmBjjD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,WAGxEusD,GAAwB1jD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,YAI3G,MAAM4uD,EAAe,CACjBD,GAA4C,GAC5CX,EAAuB7gB,SACjBxN,GAAqBquB,EAAuB7gB,UAAU,GACtD,GACN6gB,EAAuB5gB,UACjBzN,GAAqBquB,EAAuB5gB,WAAW,GACvD,GACNyhB,GAAiBV,EAA4BhwB,YAAa6vB,EAAuBhgB,cAAeggB,EAAuBppB,UACvHupB,EAA4BZ,kBAAkBjgB,eAC9C6gB,EAA4BZ,kBAAkBhgB,eAC9C4gB,EAA4BZ,kBAAkB/f,eACxC7N,GAAqBwuB,EAA4BZ,kBAAkB/f,gBAAgB,GACnF,GACN2gB,EAA4BZ,kBAAkB9f,gBACxC9N,GAAqBwuB,EAA4BZ,kBAAkB9f,iBAAiB,GACpF,GACN0gB,EAA4BZ,kBAAkB7f,cAC9CygB,EAA4BZ,kBAAkB5f,cAC9CqgB,EAAuBnB,QAAUD,GAAgBoB,EAAuBnB,SAAW,GACnFmB,EAAuB77C,SAAW67C,EAAuB77C,SAAW,GACpE67C,EAAuBltD,QACvBwsD,EACAyB,EACAf,EAAuBxe,aACvBwe,EAAuBze,mBACvBye,EAAuB5e,gBACvB4e,EAAuB3e,gBACvB2e,EAAuBvmD,aACzBzM,KAAK,MACDiyD,EAAYkB,EAA4BW,kBAAkBF,GAChE,OAAO,IAAI7B,GAAmBiB,EAAuBltD,QAASmsD,EAAW0B,OAAqBh7D,OAAWA,EAAWq6D,EAAuB77C,SAAU67C,EAAuB7gB,SAAU6gB,EAAuB5gB,UAAW4gB,EAAuBnB,QAASmB,EAAuBX,WAAYC,EAAUU,EAAuBxe,aAAcwe,EAAuBze,mBAAoBye,EAAuB5e,gBAAiB4e,EAAuB3e,gBAAiB2e,EAAuBvmD,YAAa0mD,EAA4BZ,kBACzgB,CAeA,SAASgB,GAA0CP,EAAwBG,GAGvE,GAFAH,EAAyBU,GAAyCV,IAE7DA,EAAuBzf,cAAgByf,EAAuB5gB,UAC/D,MAAM,IAAI7N,WAAW,2GAEzB,IAaIovB,EAbArB,EAAW,IACXyB,EAAYf,EAAuBgB,aACnChB,EAAuBppB,WACvB0oB,EAAW,IACPU,EAAuBgB,aACvB1B,EAAW,KAENU,EAAuBpf,YAC5B0e,EAAW,KACXyB,EAAYf,EAAuBpf,YAKvCof,EAAuBzf,cAEnBogB,EADAX,EAAuBppB,SACDknB,GAAmBjjD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,WAGxEusD,GAAwB1jD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,YAI3G,MAAM4uD,EAAe,CACjBD,GAA4C,GAC5CX,EAAuB7gB,SACjBxN,GAAqBquB,EAAuB7gB,UAAU,GACtD,GACN6gB,EAAuB5gB,UACjBzN,GAAqBquB,EAAuB5gB,WAAW,GACvD,GACNyhB,GAAiBV,EAA4BhwB,YAAa6vB,EAAuBhgB,cAAeggB,EAAuBppB,UACvHupB,EAA4BZ,kBAAkBjgB,eAC9C6gB,EAA4BZ,kBAAkBhgB,eAC9C4gB,EAA4BZ,kBAAkB/f,eACxC7N,GAAqBwuB,EAA4BZ,kBAAkB/f,gBAAgB,GACnF,GACN2gB,EAA4BZ,kBAAkB9f,gBACxC9N,GAAqBwuB,EAA4BZ,kBAAkB9f,iBAAiB,GACpF,GACN0gB,EAA4BZ,kBAAkB7f,cAC9CygB,EAA4BZ,kBAAkB5f,cAC9CqgB,EAAuBR,gCACvB75D,EACAq6D,EAAuBP,cACvBO,EAAuBnB,QAAUD,GAAgBoB,EAAuBnB,SAAW,GACnFmB,EAAuB77C,SAAW67C,EAAuB77C,SAAW,GACpE67C,EAAuBltD,QACvBwsD,EACAyB,EACAf,EAAuBxe,aACvBwe,EAAuBze,mBACvBye,EAAuB5e,gBACvB4e,EAAuB3e,gBACvB2e,EAAuBvmD,aACzBzM,KAAK,MACDiyD,EAAYkB,EAA4BW,kBAAkBF,GAChE,OAAO,IAAI7B,GAAmBiB,EAAuBltD,QAASmsD,EAAW0B,OAAqBh7D,OAAWA,EAAWq6D,EAAuB77C,SAAU67C,EAAuB7gB,SAAU6gB,EAAuB5gB,UAAW4gB,EAAuBnB,QAASmB,EAAuBX,WAAYC,EAAUU,EAAuBxe,aAAcwe,EAAuBze,mBAAoBye,EAAuB5e,gBAAiB4e,EAAuB3e,gBAAiB2e,EAAuBvmD,YAAa0mD,EAA4BZ,kBAAmBS,EAAuBR,2BAA4BQ,EAAuBP,cACtmB,CAeA,SAASY,GAA0CL,EAAwBG,GAGvE,GAFAH,EAAyBU,GAAyCV,IAE7DA,EAAuBzf,cAAgByf,EAAuB5gB,UAC/D,MAAM,IAAI7N,WAAW,2GAEzB,IAaIovB,EAbArB,EAAW,IACXyB,EAAYf,EAAuBgB,aACnChB,EAAuBppB,WACvB0oB,EAAW,IACPU,EAAuBgB,aACvB1B,EAAW,KAENU,EAAuBpf,YAC5B0e,EAAW,KACXyB,EAAYf,EAAuBpf,YAKvCof,EAAuBzf,cAEnBogB,EADAX,EAAuBppB,SACDknB,GAAmBjjD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,WAGxEusD,GAAwB1jD,MAAMmlD,EAAuBzf,YAAYvuC,YAAYA,YAI3G,MAAM4uD,EAAe,CACjBD,GAA4C,GAC5CX,EAAuB7gB,SACjBxN,GAAqBquB,EAAuB7gB,UAAU,GACtD,GACN6gB,EAAuB5gB,UACjBzN,GAAqBquB,EAAuB5gB,WAAW,GACvD,GACNyhB,GAAiBV,EAA4BhwB,YAAa6vB,EAAuBhgB,cAAeggB,EAAuBppB,UACvHupB,EAA4BZ,kBAAkBjgB,eAC9C6gB,EAA4BZ,kBAAkBhgB,eAC9C4gB,EAA4BZ,kBAAkB/f,eACxC7N,GAAqBwuB,EAA4BZ,kBAAkB/f,gBAAgB,GACnF,GACN2gB,EAA4BZ,kBAAkB9f,gBACxC9N,GAAqBwuB,EAA4BZ,kBAAkB9f,iBAAiB,GACpF,GACN0gB,EAA4BZ,kBAAkB7f,cAC9CygB,EAA4BZ,kBAAkB5f,cAC9CqgB,EAAuBR,gCACvB75D,EACAq6D,EAAuBP,cACvBO,EAAuBnB,QAAUD,GAAgBoB,EAAuBnB,SAAW,GACnFmB,EAAuB77C,SAAW67C,EAAuB77C,SAAW,GACpE67C,EAAuBltD,QACvBwsD,EACAyB,EACAf,EAAuBxd,gBACvBwd,EAAuBxe,aACvBwe,EAAuBze,mBACvBye,EAAuB5e,gBACvB4e,EAAuB3e,gBACvB2e,EAAuBvmD,aACzBzM,KAAK,MACDiyD,EAAYkB,EAA4BW,kBAAkBF,GAChE,OAAO,IAAI7B,GAAmBiB,EAAuBltD,QAASmsD,EAAW0B,OAAqBh7D,OAAWA,EAAWq6D,EAAuB77C,SAAU67C,EAAuB7gB,SAAU6gB,EAAuB5gB,UAAW4gB,EAAuBnB,QAASmB,EAAuBX,WAAYC,EAAUU,EAAuBxe,aAAcwe,EAAuBze,mBAAoBye,EAAuB5e,gBAAiB4e,EAAuB3e,gBAAiB2e,EAAuBvmD,YAAa0mD,EAA4BZ,kBAAmBS,EAAuBR,2BAA4BQ,EAAuBP,cAAeO,EAAuBxd,gBAC5oB,CACA,SAASqe,GAAiB1wB,EAAa6P,EAAepJ,GAGlD,MAAM7G,EAAW,CAAC,SAASI,KAAe6P,KAI1C,OAHIpJ,GACA7G,EAAS5pC,KAAK,IAAIywC,KAEf7G,EAAS/iC,KAAK,GACzB,CACA,SAAS0zD,GAAyCV,GAC9C,MAAMltD,EAAUktD,EAAuBltD,QAAUktD,EAAuBltD,QAAUm5B,GAClF,GAAI+zB,EAAuBgB,cAAgBluD,EAAU,aACjD,MAAMy+B,WAAW,oEAErB,QAAwC5rC,IAApCq6D,EAAuBppB,UAA0BopB,EAAuBgB,aACxE,MAAMzvB,WAAW,0DAErB,GAAIyuB,EAAuBpf,WAAa9tC,EAAU,aAC9C,MAAMy+B,WAAW,iEAErB,QAAwC5rC,IAApCq6D,EAAuBppB,UAA0BopB,EAAuBpf,UACxE,MAAMrP,WAAW,uDAErB,GAAIyuB,EAAuBzf,aACvByf,EAAuBzf,YAAYiZ,uBACnC1mD,EAAU,aACV,MAAMy+B,WAAW,mEAErB,GAAIyuB,EAAuBzf,aACvByf,EAAuBzf,YAAYwd,eACnCjrD,EAAU,aACV,MAAMy+B,WAAW,oEAErB,GAAIyuB,EAAuBzf,aACvByf,EAAuBzf,YAAY4d,iBACnCrrD,EAAU,aACV,MAAMy+B,WAAW,oEAErB,GAAIyuB,EAAuBzf,aACvByf,EAAuBzf,YAAYyd,KACnClrD,EAAU,aACV,MAAMy+B,WAAW,oEAErB,GAAIz+B,EAAU,cACVktD,EAAuBzf,cACtByf,EAAuBzf,YAAY0d,MAAQ+B,EAAuBzf,YAAY2d,SAC/E,MAAM3sB,WAAW,+EAErB,GAAIz+B,EAAU,cACVktD,EAAuBzf,aACvByf,EAAuBzf,YAAYke,aACnC,MAAMltB,WAAW,wEAErB,GAAIz+B,EAAU,eACTktD,EAAuBR,4BAA8BQ,EAAuBP,eAC7E,MAAMluB,WAAW,qGAErB,GAAIyuB,EAAuBxd,iBAAmB1vC,EAAU,aACpD,MAAMy+B,WAAW,6EAGrB,OADAyuB,EAAuBltD,QAAUA,EAC1BktD,CACX,CChiBO,MAAMiB,GAMT,WAAIxZ,GACA,OAAOliD,KAAK27D,QAChB,CAMA,OAAIxsD,GACA,OAAOnP,KAAK47D,IAChB,CAMA,WAAA/7D,CAAY8wD,EAAQzO,GAChB,MAAM2Z,EAAgBlL,EAAO0H,qBAC7Br4D,KAAK47D,KAAOjL,EAAOxhD,SACC/O,IAAhBuwD,EAAO1vD,MACPjB,KAAK87D,cAAe,EACpB97D,KAAK+7D,0BAA4BF,EAAc9D,YAG/C/3D,KAAK87D,cAAe,EACpB97D,KAAK+7D,0BAA4BF,EAAc9pD,MAE9CmwC,IACDA,EAAU,KAEdliD,KAAK27D,SAAWzZ,CACpB,CAaA,kBAAMwQ,CAAanH,EAAUhrD,EAAU,CAAC,GACpC,IAAIR,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,GAAI/iB,KAAK87D,gBAC4B,QAA7B/7D,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGusD,WAA2C,QAA7Bv/C,EAAKxM,EAAQy7D,kBAA+B,IAAPjvD,OAAgB,EAASA,EAAGu/C,WAAaljB,KAC7H,QAA7Bp8B,EAAKzM,EAAQy7D,kBAA+B,IAAPhvD,OAAgB,EAASA,EAAGu/C,eAA+C,QAA7Bt/C,EAAK1M,EAAQy7D,kBAA+B,IAAP/uD,OAAgB,EAASA,EAAGs/C,eAAiBnjB,KACzI,QAA7BrmB,EAAKxiB,EAAQy7D,kBAA+B,IAAPj5C,OAAgB,EAASA,EAAGk5C,gBACvE,MAAM,IAAIjwB,WAAW,2JAEzB,OAAOvuB,GAAcd,SAAS,+BAAgCpc,GAAS2P,MAAOwM,IAC1E,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAK+7D,0BAA0BrJ,aAAa,CACpE7pD,YAAatI,EAAQsI,YACrB0iD,WACA2Q,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JzQ,gBAAiBxrD,KAAK27D,SACtBl/C,eAAgBC,EAAeD,iBAChC,GAEX,CAWA,iBAAMy2C,CAAY1H,EAAiBjrD,EAAU,CAAC,GAC1C,IAAIR,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,GAAI/iB,KAAK87D,gBAC4B,QAA7B/7D,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGusD,WAA2C,QAA7Bv/C,EAAKxM,EAAQy7D,kBAA+B,IAAPjvD,OAAgB,EAASA,EAAGu/C,WAAaljB,KAC7H,QAA7Bp8B,EAAKzM,EAAQy7D,kBAA+B,IAAPhvD,OAAgB,EAASA,EAAGu/C,eAA+C,QAA7Bt/C,EAAK1M,EAAQy7D,kBAA+B,IAAP/uD,OAAgB,EAASA,EAAGs/C,eAAiBnjB,KACzI,QAA7BrmB,EAAKxiB,EAAQy7D,kBAA+B,IAAPj5C,OAAgB,EAASA,EAAGk5C,gBACvE,MAAM,IAAIjwB,WAAW,2JAEzB,OAAOvuB,GAAcd,SAAS,8BAA+Bpc,GAAS2P,MAAOwM,IACzE,IAAI3c,EACJ,MAAM2P,EAAW4hC,SAAqBtxC,KAAK+7D,0BAA0B7I,YAAYlzD,KAAK27D,SAAUnQ,EAAiB,CAC7G3iD,YAAatI,EAAQsI,YACrBqzD,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,kBAGnC,OADAzc,KAAK27D,SAAWnQ,EACT97C,CAAQ,GAEvB,CAWA,kBAAMkjD,CAAaryD,EAAU,CAAC,GAC1B,IAAIR,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,GAAI/iB,KAAK87D,gBAC4B,QAA7B/7D,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGusD,WAA2C,QAA7Bv/C,EAAKxM,EAAQy7D,kBAA+B,IAAPjvD,OAAgB,EAASA,EAAGu/C,WAAaljB,KAC7H,QAA7Bp8B,EAAKzM,EAAQy7D,kBAA+B,IAAPhvD,OAAgB,EAASA,EAAGu/C,eAA+C,QAA7Bt/C,EAAK1M,EAAQy7D,kBAA+B,IAAP/uD,OAAgB,EAASA,EAAGs/C,eAAiBnjB,KACzI,QAA7BrmB,EAAKxiB,EAAQy7D,kBAA+B,IAAPj5C,OAAgB,EAASA,EAAGk5C,gBACvE,MAAM,IAAIjwB,WAAW,2JAEzB,OAAOvuB,GAAcd,SAAS,+BAAgCpc,GAAS2P,MAAOwM,IAC1E,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAK+7D,0BAA0BnJ,aAAa5yD,KAAK27D,SAAU,CACnF9yD,YAAatI,EAAQsI,YACrBqzD,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,gBAAMq2C,CAAWvyD,EAAU,CAAC,GACxB,IAAIR,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,GAAI/iB,KAAK87D,gBAC4B,QAA7B/7D,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGusD,WAA2C,QAA7Bv/C,EAAKxM,EAAQy7D,kBAA+B,IAAPjvD,OAAgB,EAASA,EAAGu/C,WAAaljB,KAC7H,QAA7Bp8B,EAAKzM,EAAQy7D,kBAA+B,IAAPhvD,OAAgB,EAASA,EAAGu/C,eAA+C,QAA7Bt/C,EAAK1M,EAAQy7D,kBAA+B,IAAP/uD,OAAgB,EAASA,EAAGs/C,eAAiBnjB,KACzI,QAA7BrmB,EAAKxiB,EAAQy7D,kBAA+B,IAAPj5C,OAAgB,EAASA,EAAGk5C,gBACvE,MAAM,IAAIjwB,WAAW,2JAEzB,OAAOvuB,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,IAAI3c,EACJ,OAAOC,KAAK+7D,0BAA0BjJ,WAAW9yD,KAAK27D,SAAU,CAC5D9yD,YAAatI,EAAQsI,YACrBqzD,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,gBACjC,GAEV,CAYA,gBAAMu2C,CAAWnH,EAAatrD,EAAU,CAAC,GACrC,IAAIR,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,GAAI/iB,KAAK87D,gBAC4B,QAA7B/7D,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGusD,WAA2C,QAA7Bv/C,EAAKxM,EAAQy7D,kBAA+B,IAAPjvD,OAAgB,EAASA,EAAGu/C,WAAaljB,KAC7H,QAA7Bp8B,EAAKzM,EAAQy7D,kBAA+B,IAAPhvD,OAAgB,EAASA,EAAGu/C,eAA+C,QAA7Bt/C,EAAK1M,EAAQy7D,kBAA+B,IAAP/uD,OAAgB,EAASA,EAAGs/C,eAAiBnjB,KACzI,QAA7BrmB,EAAKxiB,EAAQy7D,kBAA+B,IAAPj5C,OAAgB,EAASA,EAAGk5C,gBACvE,MAAM,IAAIjwB,WAAW,2JAEzB,OAAOvuB,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,IAAI3c,EACJ,MAAMwc,EAAmB,CACrB1T,YAAatI,EAAQsI,YACrBgjD,cACAqQ,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,gBAEnC,OAAO60B,SAAqBtxC,KAAK+7D,0BAA0B/I,WAAWz2C,GAAkB,GAEhG,ECxLG,MAAM4/C,GAAuB,ECG7B,MAAMC,GAOT,gBAAI7Y,GACA,OAAOvjD,KAAKqhC,iBAAiBkiB,YACjC,CAOA,gBAAItH,GACA,OAAOj8C,KAAKqhC,iBAAiB4a,YACjC,CAQA,sBAAID,GACA,OAAOh8C,KAAKqhC,iBAAiB2a,kBACjC,CAOA,mBAAIH,GACA,OAAO77C,KAAKqhC,iBAAiBwa,eACjC,CAOA,mBAAIC,GACA,OAAO97C,KAAKqhC,iBAAiBya,eACjC,CAOA,sBAAII,GACA,OAAOl8C,KAAKqhC,iBAAiB6a,kBACjC,CAOA,YAAIC,GACA,OAAOn8C,KAAKqhC,iBAAiB8a,QACjC,CAOA,iBAAI7oC,GACA,OAAOtT,KAAKqhC,iBAAiB/tB,aACjC,CAaA,cAAIyoC,GACA,OAAO/7C,KAAKqhC,iBAAiB0a,UACjC,CAQA,gBAAIuH,GACA,OAAOtjD,KAAKqhC,iBAAiBiiB,YACjC,CAOA,eAAIpvC,GACA,OAAOlU,KAAKqhC,iBAAiBntB,WACjC,CAQA,mBAAIsoC,GAEJ,CAOA,UAAIJ,GACA,OAAOp8C,KAAKqhC,iBAAiB+a,MACjC,CASA,gBAAIG,GACA,OAAOv8C,KAAKqhC,iBAAiBkb,YACjC,CAQA,cAAID,GACA,OAAOt8C,KAAKqhC,iBAAiBib,UACjC,CAQA,cAAID,GACA,OAAOr8C,KAAKqhC,iBAAiBgb,UACjC,CAQA,yBAAII,GACA,OAAOz8C,KAAKqhC,iBAAiBob,qBACjC,CAQA,iBAAIvD,GACA,OAAOl5C,KAAKqhC,iBAAiB6X,aACjC,CAOA,cAAID,GACA,OAAOj5C,KAAKqhC,iBAAiB4X,UACjC,CAOA,eAAID,GACA,OAAOh5C,KAAKqhC,iBAAiB2X,WACjC,CAOA,QAAI3jC,GACA,OAAOrV,KAAKqhC,iBAAiBhsB,IACjC,CAOA,2BAAImuC,GACA,OAAOxjD,KAAKqhC,iBAAiBmiB,uBACjC,CAOA,QAAIzK,GACA,OAAO/4C,KAAKqhC,iBAAiB0X,IACjC,CAMA,aAAIyG,GACA,OAAOx/C,KAAKqhC,iBAAiBme,SACjC,CAUA,qBAAIiE,GACA,OAAOzjD,KAAKqhC,iBAAiBoiB,iBACjC,CAUA,kBAAIE,GACA,OAAO3jD,KAAKqhC,iBAAiBsiB,cACjC,CAQA,gBAAI7K,GACA,OAAO94C,KAAKqhC,iBAAiByX,YACjC,CAOA,YAAIF,GACA,OAAO54C,KAAKqhC,iBAAiBuX,QACjC,CAOA,aAAIrhC,GACA,OAAOvX,KAAKqhC,iBAAiB9pB,SACjC,CAOA,mBAAIgoC,GACA,OAAOv/C,KAAKqhC,iBAAiBke,eACjC,CAOA,WAAIhyC,GACA,OAAOvN,KAAKqhC,iBAAiB9zB,OACjC,CAOA,uBAAIm2C,GACA,OAAO1jD,KAAKqhC,iBAAiBqiB,mBACjC,CAOA,gBAAIG,GACA,OAAO7jD,KAAKqhC,iBAAiBwiB,YACjC,CAOA,YAAI/iC,GACA,MAAMpgB,MAAM,+CAChB,CAOA,sBAAIwpB,GAEJ,CAIA,aAAImyC,GACA,OAAOr8D,KAAKqhC,iBAAiBg7B,SACjC,CAOA,WAAAx8D,CAAYwhC,EAAkBoF,EAAW,CAAC,GACtCzmC,KAAKqhC,iBAAmBA,CAC5B,EChWG,IAAIi7B,GAyBAC,GAgEAC,GAjBJ,SAASC,GAAapP,GACzB,QAAajtD,IAATitD,EAGJ,OAAOA,CACX,CACO,SAASqP,GAAqBC,EAAKrE,GACtC,GAAIqE,IAAQrE,EACR,MAAM,IAAItsB,WAAW,6DAErB2wB,IAAQA,EAAItQ,sBACZsQ,EAAItQ,oBAAsB5iB,GAElC,CCpFO,SAASmzB,GAAuBltD,GACnC,MAAMohC,GAAaphC,EAAS2sD,UAAUxyC,WAAWinB,WAAa,IAAIhrC,KAAKyD,IAAM,CACzEc,OAAQd,EAAE2nC,MACV2rB,MAAOtzD,EAAE4R,IAAM5R,EAAE2nC,UAEfH,GAAcrhC,EAAS2sD,UAAUxyC,WAAWknB,YAAc,IAAIjrC,KAAKyD,IAAM,CAC3Ec,OAAQd,EAAE2nC,MACV2rB,MAAOtzD,EAAE4R,IAAM5R,EAAE2nC,UAErB,OAAO9rC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,GAAW,CAAEohC,YAChDC,aAAYsrB,UAAWj3D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,EAAS2sD,WAAY,CAAExyC,WAAY,CAClFinB,YACAC,iBAEhB,EDdA,SAAWurB,GAIPA,EAAc,OAAS,MAIvBA,EAAc,QAAU,OAIxBA,EAAc,QAAU,OAKxBA,EAAc,WAAa,SAC9B,EAlBD,CAkBGA,KAAkBA,GAAgB,CAAC,IAOtC,SAAWC,GAIPA,EAAoB,MAAQ,KAI5BA,EAAoB,MAAQ,KAI5BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,MAI7BA,EAAoB,OAAS,KAChC,CA7CD,CA6CGA,KAAwBA,GAAsB,CAAC,IAmBlD,SAAWC,GAIPA,EAAoB,sBAAwB,qCAI5CA,EAAoB,0BAA4B,yCACnD,CATD,CASGA,KAAwBA,GAAsB,CAAC,IEnG5Bz0D,EAAmB,YCDlC,MAAM+0D,WAA2Bp8D,MACpC,WAAAb,CAAY2I,GACRC,MAAMD,GACNxI,KAAKiB,KAAO,qBACZmE,OAAO6X,eAAejd,KAAM88D,GAAmB5/C,UACnD,EAMG,MAAM6/C,WAA6Br8D,MACtC,WAAAb,CAAY2I,GACRC,MAAMD,GACNxI,KAAKiB,KAAO,uBACZmE,OAAO6X,eAAejd,KAAM+8D,GAAqB7/C,UACrD,EAgEG,MAAM8/C,GAkET,WAAAn9D,CAAYo9D,GAERj9D,KAAKk9D,uBAAwB,EAC7Bl9D,KAAKm9D,SAAU,EACfn9D,KAAKo9D,sBAAwB,GAC7Bp9D,KAAKi9D,UAAYA,EACjBj9D,KAAKq9D,QAAU,IAAIt0D,SAAQ,CAACC,EAASC,KACjCjJ,KAAKgJ,QAAUA,EACfhJ,KAAKiJ,OAASA,CAAM,IAKxBjJ,KAAKq9D,QAAQz4C,OAAM,QAGvB,CAKA,kBAAM04C,CAAaC,EAAc,CAAC,GAC1Bv9D,KAAKm9D,UACLn9D,KAAKm9D,SAAU,GAEnB,OAAQn9D,KAAKw9D,cAAgBx9D,KAAKy9D,eACxBz9D,KAAK09D,KAAKH,SACVv9D,KAAKsyC,OAEnB,CASA,cAAMqrB,CAASp9D,EAAU,CAAC,GACjBP,KAAKy9D,WACNz9D,KAAKi9D,gBAAkBj9D,KAAKi9D,UAAUW,OAAO,CACzC/0D,YAAatI,EAAQsI,YACrBg1D,aAAc79D,KAAK69D,aAAa/wD,KAAK9M,SAG7CA,KAAK89D,qBACT,CASA,YAAAD,CAAaE,GACT,IAAK,MAAM9hD,KAAYjc,KAAKo9D,sBACxBnhD,EAAS8hD,EAEjB,CAIA,gBAAMC,CAAWz9D,EAAU,CAAC,GACxBP,KAAKi9D,gBAAkBj9D,KAAKi9D,UAAUv6C,OAAOniB,EACjD,CASA,IAAAm9D,CAAKn9D,EAAU,CAAC,GACZ,IAAKP,KAAKi+D,gBAAiB,CACvBj+D,KAAKi+D,gBAAkBj+D,KAAK29D,SAASp9D,GACrC,MAAM29D,EAAuB,KACzBl+D,KAAKi+D,qBAAkB79D,CAAS,EAEpCJ,KAAKi+D,gBAAgBv5C,KAAKw5C,EAAsBA,GAAsBt5C,MAAM5kB,KAAKiJ,OACrF,CACA,OAAOjJ,KAAKi+D,eAChB,CACA,mBAAAH,GACI,GAAI99D,KAAKi9D,UAAUc,MAAMx5D,QACrBvE,KAAKm9D,SAAU,GACVn9D,KAAKk9D,uBAEN,MADAl9D,KAAKiJ,OAAOjJ,KAAKi9D,UAAUc,MAAMx5D,OAC3BvE,KAAKi9D,UAAUc,MAAMx5D,MAGnC,GAAIvE,KAAKi9D,UAAUc,MAAMI,cACrBn+D,KAAKm9D,SAAU,GACVn9D,KAAKk9D,uBAAuB,CAC7B,MAAM34D,EAAQ,IAAIw4D,GAAqB,0BAEvC,MADA/8D,KAAKiJ,OAAO1E,GACNA,CACV,CAEAvE,KAAKy9D,UAAYz9D,KAAKgJ,SAMtBhJ,KAAKgJ,QAAQhJ,KAAKo+D,YAE1B,CAIA,mBAAMC,CAAcd,EAAc,CAAC,GAO/B,OANIv9D,KAAKm9D,SACLn9D,KAAKs9D,aAAaC,GAAa34C,MAAM5kB,KAAKiJ,QAI9CjJ,KAAK89D,sBACE99D,KAAKq9D,OAChB,CAOA,UAAA/8C,CAAWrE,GAEP,OADAjc,KAAKo9D,sBAAsBx8D,KAAKqb,GACzB,KACHjc,KAAKo9D,sBAAwBp9D,KAAKo9D,sBAAsBr8D,QAAQu9D,GAAMA,IAAMriD,GAAS,CAE7F,CAIA,MAAAwhD,GACI,MAAMM,EAAQ/9D,KAAKi9D,UAAUc,MAC7B,OAAO11D,QAAQ01D,EAAMQ,aAAeR,EAAMI,aAAeJ,EAAMx5D,MACnE,CAIA,WAAAi6D,GACSx+D,KAAKm9D,UACNn9D,KAAKm9D,SAAU,EACXn9D,KAAKiJ,QACLjJ,KAAKiJ,OAAO,IAAI6zD,GAAmB,mCAG/C,CAIA,SAAAU,GACI,OAAOx9D,KAAKm9D,OAChB,CAUA,eAAAsB,CAAgBl+D,EAAU,CAAC,GACvB,GAAKP,KAAK0+D,eAGL,GAAIn+D,EAAQsI,YACb,MAAM,IAAInI,MAAM,8CAHhBV,KAAK0+D,cAAgB1+D,KAAKg+D,WAAWz9D,GAKzC,OAAOP,KAAK0+D,aAChB,CAiDA,iBAAAC,GACI,OAAO3+D,KAAKi9D,UAAUc,KAC1B,CAOA,SAAAK,GACI,MAAML,EAAQ/9D,KAAKi9D,UAAUc,MAC7B,OAAOA,EAAMl8D,MACjB,CAKA,QAAA4K,GACI,OAAOzM,KAAKi9D,UAAUxwD,UAC1B,EChYG,MAAMmyD,WAAmC5B,GAC5C,WAAAn9D,CAAYU,GACR,MAAM,WAAEs+D,EAAU,WAAEviB,EAAU,aAAEwiB,EAAe,KAAK,WAAEx+C,EAAU,WAAEy+C,EAAU,wBAAEC,GAA6Bz+D,EAC3G,IAAIw9D,EACAgB,IACAhB,EAAQ7yD,KAAKoK,MAAMypD,GAAYhB,OAEnC,MAAMd,EAAYgC,GAAsC75D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG04D,GAAQ,CAAEc,aAC9FviB,aACA0iB,6BACJv2D,MAAMw0D,GACoB,oBAAf38C,GACPtgB,KAAKsgB,WAAWA,GAEpBtgB,KAAK8+D,aAAeA,CACxB,CACA,KAAAxsB,GACI,OAAO,EAAMtyC,KAAK8+D,aACtB,EAQJ,MAAMp8C,GAASxS,eAAsB3P,EAAU,CAAC,GAC5C,MAAMw9D,EAAQ/9D,KAAK+9D,OACb,OAAE3hB,GAAW2hB,EACnB,OAAIA,EAAMQ,YACCU,GAAsClB,GAE5C3hB,SAKC2hB,EAAMc,WAAWhK,iBAAiBzY,EAAQ,CAC5CvzC,YAAatI,EAAQsI,cAEzBk1D,EAAMI,aAAc,EACbc,GAAsClB,KARzCA,EAAMI,aAAc,EACbc,GAAsClB,GAQrD,EAOMH,GAAS1tD,eAAsB3P,EAAU,CAAC,GAC5C,MAAMw9D,EAAQ/9D,KAAK+9D,OACb,WAAEc,EAAU,WAAEviB,EAAU,wBAAE0iB,GAA4BjB,EAC5D,GAAKA,EAAMmB,WAUN,IAAKnB,EAAMQ,YACZ,IACI,MAAM18D,QAAek8D,EAAMc,WAAW/N,cAAc,CAAEjoD,YAAatI,EAAQsI,eACrE,WAAEwzC,EAAU,aAAEE,GAAiB16C,EAC/Bs9D,EAAmBpB,EAAMxhB,aAC3BA,IACAwhB,EAAMxhB,aAAeA,GAEN,YAAfF,GACAE,IAAiB4iB,GACe,oBAAzB5+D,EAAQs9D,aAEft9D,EAAQs9D,aAAaE,GAED,YAAf1hB,GACL0hB,EAAMl8D,OAASA,EACfk8D,EAAMQ,aAAc,GAEA,WAAfliB,IACL0hB,EAAMx5D,MAAQ,IAAI7D,MAAM,kCAAkCmB,EAAO46C,uBAAyB,cAC1FshB,EAAMQ,aAAc,EAE5B,CACA,MAAO/0D,GACHu0D,EAAMx5D,MAAQiF,EACdu0D,EAAMQ,aAAc,CACxB,MApCkB,CAClBR,EAAMmB,WAAY,EAClB,MAAMr9D,QAAeg9D,EAAWpK,iBAAiBnY,EAAY0iB,GAE7DjB,EAAM3hB,OAASv6C,EAAOu6C,OACI,YAAtBv6C,EAAOw6C,aACP0hB,EAAMl8D,OAASA,EACfk8D,EAAMQ,aAAc,EAE5B,CA6BA,OAAOU,GAAsClB,EACjD,EAOM,GAAW,WACb,OAAO7yD,KAAKC,UAAU,CAAE4yD,MAAO/9D,KAAK+9D,QAAS,CAACnvD,EAAKxD,KAE/C,GAAY,eAARwD,EAGJ,OAAOxD,CAAK,GAEpB,EAKA,SAAS6zD,GAAsClB,GAC3C,MAAO,CACHA,MAAO34D,OAAOC,OAAO,CAAC,EAAG04D,GACzBr7C,UACAjW,SAAQ,GACRmxD,UAER,CCvHO,SAASwB,GAAcC,GAC1B,GAAIA,EAAOh1D,OAAS,EAChB,MAAM,IAAI2hC,WAAW,0CAEzB,GAAIqzB,EAAOxC,OAASwC,EAAOxC,OAAS,EAChC,MAAM,IAAI7wB,WAAW,qGAEzB,OAAOqzB,EAAOxC,MACR,SAASwC,EAAOh1D,UAAUg1D,EAAOh1D,OAASg1D,EAAOxC,MAAQ,IACzD,SAASwC,EAAOh1D,SAC1B,C,ICXIi1D,G,aACJ,SAAWA,GACPA,EAAYA,EAAY,QAAU,GAAK,OACvCA,EAAYA,EAAY,SAAW,GAAK,OAC3C,EAHD,CAGGA,KAAgBA,GAAc,CAAC,IAM3B,MAAMC,GAKT,WAAA1/D,CAAY2/D,EAAc,GAsBtB,GAlBAx/D,KAAKy/D,QAAU,EAIfz/D,KAAK0/D,UAAY,EAIjB1/D,KAAKqK,OAAS,EAIdrK,KAAK2/D,WAAa,GAKlB3/D,KAAK+9D,MAAQuB,GAAYM,KACrBJ,EAAc,EACd,MAAM,IAAIxzB,WAAW,qCAEzBhsC,KAAKw/D,YAAcA,EACnBx/D,KAAK6/D,QAAU,IAAI,GAAAC,YACvB,CAMA,YAAAC,CAAa9C,GACTj9D,KAAK2/D,WAAW/+D,MAAKsP,UACjB,IACIlQ,KAAKy/D,gBACCxC,IACNj9D,KAAKy/D,UACLz/D,KAAK0/D,YACL1/D,KAAKggE,iBACT,CACA,MAAOz7D,GACHvE,KAAK6/D,QAAQI,KAAK,QAAS17D,EAC/B,IAER,CAKA,QAAM,GACF,OAA+B,IAA3BvE,KAAK2/D,WAAW57D,OACTgF,QAAQC,WAEnBhJ,KAAKggE,kBACE,IAAIj3D,SAAQ,CAACC,EAASC,KACzBjJ,KAAK6/D,QAAQK,GAAG,SAAUl3D,GAC1BhJ,KAAK6/D,QAAQK,GAAG,SAAU37D,IACtBvE,KAAK+9D,MAAQuB,GAAY5+D,MACzBuI,EAAO1E,EAAM,GACf,IAEV,CAKA,aAAA47D,GACI,OAAIngE,KAAKqK,OAASrK,KAAK2/D,WAAW57D,OACvB/D,KAAK2/D,WAAW3/D,KAAKqK,UAEzB,IACX,CAMA,eAAA21D,GACI,GAAIhgE,KAAK+9D,QAAUuB,GAAY5+D,MAG/B,GAAIV,KAAK0/D,WAAa1/D,KAAK2/D,WAAW57D,OAClC/D,KAAK6/D,QAAQI,KAAK,eAGtB,MAAOjgE,KAAKy/D,QAAUz/D,KAAKw/D,YAAa,CACpC,MAAMvC,EAAYj9D,KAAKmgE,gBACvB,IAAIlD,EAIA,OAHAA,GAKR,CACJ,EClHG,MAAMmD,ICiBNlwD,eAAemwD,GAAatuD,GAC/B,MAAMuuD,EAAa,IAAIC,WACvB,OAAO,IAAIx3D,SAAQ,CAACC,EAASC,KACzBq3D,EAAWE,UAAaC,IACpBz3D,EAAQy3D,EAAGhgC,OAAO5+B,OAAO,EAE7By+D,EAAWI,QAAUz3D,EACrBq3D,EAAWK,WAAW5uD,EAAK,GAEnC,CACO,SAAS6uD,KAEhB,CAIO,SAASC,KAEhB,CACO,MAAMC,GAAS,WAEtB,EACaC,GAAqB,WAElC,ECjBO,MAAMC,WAAmB,GAI5B,QAAI//D,GACA,OAAOjB,KAAK4b,KAChB,CAIA,iBAAI6+B,GACA,OAAOz6C,KAAKihE,cAChB,CACA,WAAAphE,CAAYqhE,EAAuBC,EAAqCC,EAGxE7gE,GAEI,IAAIe,EACA6N,EACJ,GAHA5O,EAAUA,GAAW,CAAC,EAGlBwzC,GAAeotB,GAEfhyD,EAAM+xD,EACN5/D,EAAW6/D,OAEV,GAAK,IAAUA,aAA+CtuB,IAC/DsuB,aAA+CluB,IAC/CnrB,GAAkBq5C,GAElBhyD,EAAM+xD,EACN3gE,EAAU6gE,EACV9/D,EAAW8yC,GAAY+sB,EAAqC5gE,QAE3D,GAAK4gE,GACyC,kBAAxCA,EASN,KAAIA,GAC0C,kBAAxCA,IACPC,GAC6B,kBAAtBA,EA8BP,MAAM,IAAI1gE,MAAM,yEA9BuB,CAEvC,MAAM+5C,EAAgB0mB,EAChB9vB,EAAW+vB,EACXC,EAAiB52B,GAA6By2B,GACpD,GAA4B,sBAAxBG,EAAer2B,KAA8B,CAC7C,IAAI,GASA,MAAM,IAAItqC,MAAM,sEATR,CACR,MAAMi6D,EAAsB,IAAI9nB,GAA2BwuB,EAAez2B,YAAay2B,EAAex2B,YACtG17B,EAAMg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IAC5G9wC,EAAQ4d,eACT5d,EAAQ4d,aAAevE,GAAwBynD,EAAej3B,WAElE9oC,EAAW8yC,GAAYumB,EAAqBp6D,EAChD,CAIJ,KACK,IAA4B,kBAAxB8gE,EAAer2B,KAQpB,MAAM,IAAItqC,MAAM,4FAPhByO,EACIg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IACvG,IACAgwB,EAAep2B,WACvB3pC,EAAW8yC,GAAY,IAAInB,GAAuB1yC,EAItD,CACJ,CAGA,MAxCI4O,EAAM+xD,EACFE,GAAkD,kBAAtBA,IAC5B7gE,EAAU6gE,GAEd9/D,EAAW8yC,GAAY,IAAInB,GAAuB1yC,GAqCtDkI,MAAM0G,EAAK7N,KACR+vC,SAAUrxC,KAAK4b,MAAO6+B,cAAez6C,KAAKihE,gBACzCjhE,KAAKshE,mCACTthE,KAAKuhE,YAAcvhE,KAAKq4D,qBAAqBtmD,KAC7C/R,KAAKwhE,UAAYh2B,GAAgBxrC,KAAKmP,IAAK,GAAa+3B,WAAWG,UACnErnC,KAAKyhE,WAAaj2B,GAAgBxrC,KAAKmP,IAAK,GAAa+3B,WAAWI,UACxE,CAQA,YAAAo6B,CAAatmB,GACT,OAAO,IAAI4lB,GAAW51B,GAAgBprC,KAAKmP,IAAK,GAAa+3B,WAAWG,SAA8B,IAApB+T,EAASr3C,YAAe3D,EAAYg7C,GAAWp7C,KAAKsB,SAC1I,CAQA,WAAAqgE,CAAYtmB,GACR,OAAO,IAAI2lB,GAAW51B,GAAgBprC,KAAKmP,IAAK,GAAa+3B,WAAWI,UAAgC,IAArB+T,EAAUt3C,YAAe3D,EAAYi7C,GAAYr7C,KAAKsB,SAC7I,CAKA,mBAAAsgE,GACI,OAAO,IAAIC,GAAiB7hE,KAAKmP,IAAKnP,KAAKsB,SAC/C,CAKA,kBAAAwgE,GACI,OAAO,IAAIC,GAAgB/hE,KAAKmP,IAAKnP,KAAKsB,SAC9C,CAKA,iBAAA0gE,GACI,OAAO,IAAIC,GAAejiE,KAAKmP,IAAKnP,KAAKsB,SAC7C,CA4DA,cAAMmyD,CAASppD,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GAIzC,OAHAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5Cz7D,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,sBAAuBpc,GAAS2P,MAAOwM,IACjE,IAAI3c,EACJ,MAAMwQ,EAAM+gC,SAAqBtxC,KAAKuhE,YAAY9N,SAAS,CACvD5qD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JljC,eAAgB,CACZxY,mBAAoB,QAASngB,EAAYG,EAAQ+f,YAErD2rC,MAAkB,IAAX5hD,GAAiBwyD,EAAoBuC,GAAc,CAAE/0D,SAAQwyD,eAApCz8D,EAChC8rD,mBAAoB3rD,EAAQ2rD,mBAC5BC,qBAAsB5rD,EAAQ6hE,qBAC9BhnB,SAAU76C,EAAQ66C,SAClBinB,QAAS9hE,EAAQ2hE,oBACjBzlD,eAAgBC,EAAeD,kBAE7B6lD,EAAal9D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGkL,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,UAAWkG,qCAAsChyD,EAAI6yC,0BAA2Bof,kCAAmCxzB,GAA6Bz+B,EAAI8yC,0BAE9N,IAAK,GACD,OAAOif,EAWX,SAJiCliE,IAA7BG,EAAQkiE,kBAAkCliE,EAAQkiE,iBAAmB,KAErEliE,EAAQkiE,iBAAmBz7B,SAEL5mC,IAAtBmQ,EAAI+C,cACJ,MAAM,IAAI04B,WAAW,sEAEzB,IAAKz7B,EAAIwoC,KACL,MAAM,IAAI/M,WAAW,4DAEzB,OAAO,IAAImwB,GAAqBmG,GAAYpyD,MAAOghC,IAC/C,IAAInxC,EACJ,MAAM2iE,EAAyB,CAC3BP,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B,CACtB5P,QAAS/rD,EAAQy7D,WAAW1P,SAAW/7C,EAAIwoC,KAC3C2R,gBAAiBnqD,EAAQy7D,WAAWtR,gBACpC6B,YAAahsD,EAAQy7D,WAAWzP,YAChC5B,kBAAmBpqD,EAAQy7D,WAAWrR,kBACtC6B,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,eAE9EhQ,MAAOmT,GAAc,CACjBvC,MAAOxyD,EAASkG,EAAI+C,cAAgB49B,EACpC7mC,OAAQ6mC,IAEZgb,mBAAoB3rD,EAAQ2rD,mBAC5BC,qBAAsB5rD,EAAQ6hE,qBAC9BhnB,SAAU76C,EAAQ66C,SAClBinB,QAAS9hE,EAAQ2hE,qBAQrB,aAAcliE,KAAKuhE,YAAY9N,SAASruD,OAAOC,OAAO,CAAEwD,YAAatI,EAAQsI,aAAe65D,KAA0Bx4C,kBAAkB,GACzI7f,EAAQkG,EAAI+C,cAAe,CAC1BmvD,iBAAkBliE,EAAQkiE,iBAC1BniD,WAAY/f,EAAQ+f,YACtB,GAEV,CAUA,YAAMqiD,CAAOpiE,EAAU,CAAC,GACpB,OAAOkd,GAAcd,SAAS,oBAAqBpc,GAAS2P,MAAOwM,IAC/D,IAQI,OAPAggD,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,eACjDt4D,KAAK8wD,cAAc,CACrBjoD,YAAatI,EAAQsI,YACrBq5D,oBAAqB3hE,EAAQ2hE,oBAC7BlG,WAAYz7D,EAAQy7D,WACpBv/C,eAAgBC,EAAeD,kBAE5B,CACX,CACA,MAAO5R,IACH,GAAqB,MAAjBA,GAAEmS,WAEF,OAAO,EAEN,GAAqB,MAAjBnS,GAAEmS,aACNnS,GAAEqzB,QAAQshB,YAAc3V,IACrBh/B,GAAEqzB,QAAQshB,YAAc1V,IAE5B,OAAO,EAEX,MAAMj/B,EACV,IAER,CAaA,mBAAMimD,CAAcvwD,EAAU,CAAC,GAG3B,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,2BAA4Bpc,GAAS2P,MAAOwM,IACtE,IAAI3c,EACJ,MAAMwQ,EAAM+gC,SAAqBtxC,KAAKuhE,YAAYzQ,cAAc,CAC5DjoD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBzlD,eAAgBC,EAAeD,kBAEnC,OAAOrX,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGkL,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,UAAWkG,qCAAsChyD,EAAI6yC,0BAA2Bof,kCAAmCxzB,GAA6Bz+B,EAAI8yC,yBAA0B,GAEpP,CAUA,YAAM,CAAO9iD,EAAU,CAAC,GAEpB,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,oBAAqBpc,GAAS2P,MAAOwM,IAC/D,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKuhE,YAAY59D,OAAO,CAChDkF,YAAatI,EAAQsI,YACrB4jD,gBAAiBlsD,EAAQksD,gBACzB0V,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,oBAAMmmD,CAAeriE,EAAU,CAAC,GAC5B,OAAOkd,GAAcd,SAAS,4BAA6Bpc,GAAS2P,MAAOwM,IACvE,IAAI3c,EAAIgN,EACR,IACI,MAAMwD,EAAM+gC,SAAqBtxC,KAAK2D,OAAO+Y,IAC7C,OAAOtX,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAAQtyD,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,WACnF,CACA,MAAOxxD,IACH,GAA6E,kBAAnD,QAApB9K,EAAK8K,GAAEqzB,eAA4B,IAAPn+B,OAAgB,EAASA,EAAGy/C,WAC1D,OAAOp6C,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAA+B,QAArB91D,EAAKlC,GAAE6E,gBAA6B,IAAP3C,OAAgB,EAASA,EAAG6c,eAAgB,CAAEyyC,UAAWxxD,GAAE6E,WAEtJ,MAAM7E,EACV,IAER,CASA,cAAM8oD,CAASpzD,EAAU,CAAC,GACtB,OAAOkd,GAAcd,SAAS,sBAAuBpc,GAAS2P,MAAOwM,GAC1D40B,SAAqBtxC,KAAKuhE,YAAY5N,SAAS,CAClD9qD,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,mBAG3C,CAgBA,oBAAMqmD,CAAeC,EAAiBxiE,EAAU,CAAC,GAG7C,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,4BAA6Bpc,GAAS2P,MAAOwM,IACvE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKuhE,YAAYxN,eAAe,CACxDlrD,YAAatI,EAAQsI,YACrBm6D,gBAAiBD,EACjBZ,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAE3Jx/C,eAAgBC,EAAeD,iBAChC,GAEX,CAYA,iBAAMu1C,CAAYpZ,EAAUr4C,EAAU,CAAC,GAGnC,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,yBAA0Bpc,GAAS2P,MAAOwM,IACpE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKuhE,YAAYvP,YAAY,CACrDnpD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BpjB,WACAsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,aAAM24C,CAAQvnB,EAAMttC,EAAU,CAAC,GAC3B,OAAOkd,GAAcd,SAAS,qBAAsBpc,GAAS2P,MAAOwM,IAChE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKuhE,YAAYnM,QAAQ,CACjDvsD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,eAC/BoxB,KAAME,GAAWF,KAClB,GAEX,CAMA,aAAMqnB,CAAQ30D,EAAU,CAAC,GACrB,OAAOkd,GAAcd,SAAS,qBAAsBpc,GAAS2P,MAAOwM,IAChE,IAAI3c,EACJ,MAAM2P,EAAW4hC,SAAqBtxC,KAAKuhE,YAAYrM,QAAQ,CAC3DrsD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,kBAE7BwmD,EAAkB79D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,GAAW,CAAE2sD,UAAW3sD,EAAS2sD,UAAWxuB,KAAMI,GAAO,CAAED,WAAYt+B,EAASs+B,cAAiB,CAAC,IAC1J,OAAOi1B,CAAe,GAE9B,CAOA,kBAAAC,CAAmBC,GACf,OAAO,IAAIzH,GAAgB17D,KAAMmjE,EACrC,CAOA,oBAAM5O,CAAeh0D,EAAU,CAAC,GAG5B,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,4BAA6Bpc,GAAS2P,MAAOwM,IACvE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKuhE,YAAYhN,eAAe,CACxD1rD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BpjB,SAAUr4C,EAAQq4C,SAClBsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,CAyEA,sBAAM2mD,CAAiB9mB,EAAY/7C,EAAU,CAAC,GAC1C,MAAMowD,EAAS,CACXkE,iBAAkB,IAAI3wD,IAASlE,KAAK60D,oBAAoB3wD,GACxD4sD,cAAe,IAAI5sD,IAASlE,KAAK8wD,iBAAiB5sD,GAClDuwD,iBAAkB,IAAIvwD,IAASlE,KAAKy0D,oBAAoBvwD,IAEtDm/D,EAAS,IAAIzE,GAA2B,CAC1CC,WAAYlO,EACZrU,aACAwiB,aAAcv+D,EAAQu+D,aACtBx+C,WAAY/f,EAAQ+f,WACpBy+C,WAAYx+D,EAAQw+D,WACpBC,wBAAyBz+D,IAK7B,aADM8iE,EAAO3F,OACN2F,CACX,CASA,sBAAMxO,CAAiBzY,EAAQ77C,EAAU,CAAC,GACtC,OAAOkd,GAAcd,SAAS,8BAA+Bpc,GAAS2P,MAAOwM,GAClE40B,SAAqBtxC,KAAKuhE,YAAY1M,iBAAiBzY,EAAQ,CAClEvzC,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/Bv/C,eAAgBC,EAAeD,mBAG3C,CASA,qBAAM6mD,CAAgBhnB,EAAY/7C,EAAU,CAAC,GAGzC,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5Cz7D,EAAQgjE,iBAAmBhjE,EAAQgjE,kBAAoB,CAAC,EACjD9lD,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,IAAI3c,EAAIgN,EAAIC,EAAIC,EAAI8V,EAAIC,EAAIC,EAC5B,OAAOquB,SAAqBtxC,KAAKuhE,YAAY5M,YAAYrY,EAAY,CACjEzzC,YAAatI,EAAQsI,YACrB+vC,SAAUr4C,EAAQq4C,SAClBupB,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JuH,+BAAgC,CAC5BhW,cAAmD,QAAnCzgD,EAAKxM,EAAQgjE,wBAAqC,IAAPx2D,OAAgB,EAASA,EAAGu/C,QACvFgB,sBAA2D,QAAnCtgD,EAAKzM,EAAQgjE,wBAAqC,IAAPv2D,OAAgB,EAASA,EAAG09C,gBAC/F+C,kBAAuD,QAAnCxgD,EAAK1M,EAAQgjE,wBAAqC,IAAPt2D,OAAgB,EAASA,EAAGs/C,YAC3FgB,wBAA6D,QAAnCxqC,EAAKxiB,EAAQgjE,wBAAqC,IAAPxgD,OAAgB,EAASA,EAAG4nC,mBAErGoD,iBAAkBxtD,EAAQwtD,iBAC1BC,wBAAyBpe,GAA0BrvC,EAAQkjE,qBAC3DpW,KAAMoP,GAAal8D,EAAQ8sD,MAC3BM,eAAgB/f,GAAiBrtC,EAAQstC,MACzC8W,yBAAgE,QAArC3hC,EAAKziB,EAAQmjE,0BAAuC,IAAP1gD,OAAgB,EAASA,EAAG2gD,WACpGnmB,uBAA8D,QAArCv6B,EAAK1iB,EAAQmjE,0BAAuC,IAAPzgD,OAAgB,EAASA,EAAG2gD,WAClGnmB,UAAWl9C,EAAQk9C,UACnBR,gBAAiB18C,EAAQ08C,gBACzBgR,eAAgB1tD,EAAQ0tD,eACxBxxC,eAAgBC,EAAeD,iBAChC,GAEX,CAYA,mBAAMonD,CAAcxW,EAAM9sD,EAAU,CAAC,GACjC,OAAOkd,GAAcd,SAAS,2BAA4Bpc,GAAS2P,MAAOwM,IACtE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKuhE,YAAYxM,QAAQ0H,GAAapP,GAAO,CACrExkD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3J5e,kBAAmB98C,EAAQ88C,kBAC3B5gC,eAAgBC,EAAeD,iBAChC,GAEX,CACA,sBAAMqnD,CAAiBC,EAAQC,EAAQC,EAAQC,EAAS,CAAC,GACrD,IAAInkE,EACJ,IAAIouB,EACA9jB,EAAS,EACTwyD,EAAQ,EACRt8D,EAAU2jE,EACVH,aAAkBj5B,QAClB3c,EAAS41C,EACT15D,EAAS25D,GAAU,EACnBnH,EAA0B,kBAAXoH,EAAsBA,EAAS,IAG9C55D,EAA2B,kBAAX05D,EAAsBA,EAAS,EAC/ClH,EAA0B,kBAAXmH,EAAsBA,EAAS,EAC9CzjE,EAAU0jE,GAAU,CAAC,GAEzB,IAAIE,EAAyC,QAA5BpkE,EAAKQ,EAAQ4jE,iBAA8B,IAAPpkE,EAAgBA,EAAK,EAC1E,GAAIokE,EAAY,EACZ,MAAM,IAAIn4B,WAAW,iCAKzB,GAHkB,IAAdm4B,IACAA,EAAYp9B,IAEZ18B,EAAS,EACT,MAAM,IAAI2hC,WAAW,8BAEzB,GAAI6wB,GAASA,GAAS,EAClB,MAAM,IAAI7wB,WAAW,uCAKzB,OAHKzrC,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEnBv+C,GAAcd,SAAS,8BAA+Bpc,GAAS2P,MAAOwM,IAEzE,IAAKmgD,EAAO,CACR,MAAMntD,QAAiB1P,KAAK8wD,cAAc1rD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAU,CAAEkc,eAAgBC,EAAeD,kBAErH,GADAogD,EAAQntD,EAAS4D,cAAgBjJ,EAC7BwyD,EAAQ,EACR,MAAM,IAAI7wB,WAAW,UAAU3hC,wCAA6CqF,EAAS4D,gBAE7F,CAEA,IAAK6a,EACD,IACIA,EAAS2c,OAAOs5B,MAAMvH,EAC1B,CACA,MAAOt4D,GACH,MAAM,IAAI7D,MAAM,0CAA0Cm8D,sJAA0Jt4D,EAAMiE,UAC9N,CAEJ,GAAI2lB,EAAOpqB,OAAS84D,EAChB,MAAM,IAAI7wB,WAAW,mFAAmF6wB,KAE5G,IAAIwH,EAAmB,EACvB,MAAMC,EAAQ,IAAI/E,GAAMh/D,EAAQi/D,aAChC,IAAK,IAAI+E,EAAMl6D,EAAQk6D,EAAMl6D,EAASwyD,EAAO0H,GAAYJ,EACrDG,EAAMvE,cAAa7vD,UAEf,IAAIs0D,EAAWn6D,EAASwyD,EACpB0H,EAAMJ,EAAYK,IAClBA,EAAWD,EAAMJ,GAErB,MAAMz0D,QAAiB1P,KAAKyzD,SAAS8Q,EAAKC,EAAWD,EAAK,CACtD17D,YAAatI,EAAQsI,YACrBmzD,WAAYz7D,EAAQy7D,WACpByG,iBAAkBliE,EAAQkkE,yBAC1BvC,oBAAqB3hE,EAAQ2hE,oBAC7BzlD,eAAgBC,EAAeD,iBAE7BzK,EAAStC,EAASwa,yBAClB02C,GAAe5uD,EAAQmc,EAAQo2C,EAAMl6D,EAAQm6D,EAAWn6D,GAI9Dg6D,GAAoBG,EAAWD,EAC3BhkE,EAAQ+f,YACR/f,EAAQ+f,WAAW,CAAEN,YAAaqkD,GACtC,IAIR,aADMC,EAAMI,KACLv2C,CAAM,GAErB,CAiBA,oBAAMw2C,CAAeC,EAAUv6D,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GACzD,OAAOkd,GAAcd,SAAS,4BAA6Bpc,GAAS2P,MAAOwM,IACvE,MAAMhN,QAAiB1P,KAAKyzD,SAASppD,EAAQwyD,EAAOz3D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAU,CAAEkc,eAAgBC,EAAeD,kBAM/H,OALI/M,EAASwa,0BACH22C,GAAsBnxD,EAASwa,mBAAoB06C,GAG7Dl1D,EAASm1D,wBAAqBzkE,EACvBsP,CAAQ,GAEvB,CACA,+BAAA4xD,GACI,IAAI7mB,EACApJ,EACJ,IAQI,MAAMrV,EAAY,IAAI5sB,IAAIpP,KAAKmP,KAC/B,GAAqC,SAAjC6sB,EAAU0P,KAAK7lC,MAAM,KAAK,GAAe,CAGzC,MAAMi/D,EAAiB9oC,EAAUE,SAASjoB,MAAM,oBAChDwmC,EAAgBqqB,EAAe,GAC/BzzB,EAAWyzB,EAAe,EAC9B,MACK,GAAIp3B,GAAkB1R,GAAY,CAInC,MAAM8oC,EAAiB9oC,EAAUE,SAASjoB,MAAM,4BAChDwmC,EAAgBqqB,EAAe,GAC/BzzB,EAAWyzB,EAAe,EAC9B,KACK,CAGD,MAAMA,EAAiB9oC,EAAUE,SAASjoB,MAAM,oBAChDwmC,EAAgBqqB,EAAe,GAC/BzzB,EAAWyzB,EAAe,EAC9B,CAOA,GALArqB,EAAgBxK,mBAAmBwK,GACnCpJ,EAAWpB,mBAAmBoB,GAG9BA,EAAWA,EAASprC,QAAQ,MAAO,MAC9Bw0C,EACD,MAAM,IAAI/5C,MAAM,sCAEpB,MAAO,CAAE2wC,WAAUoJ,gBACvB,CACA,MAAOl2C,GACH,MAAM,IAAI7D,MAAM,0EACpB,CACJ,CAcA,sBAAM+zD,CAAiBnY,EAAY/7C,EAAU,CAAC,GAC1C,OAAOkd,GAAcd,SAAS,8BAA+Bpc,GAAS2P,MAAOwM,IACzE,IAAI3c,EAAIgN,EAAIC,EAGZ,OAFAzM,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5Cz7D,EAAQgjE,iBAAmBhjE,EAAQgjE,kBAAoB,CAAC,EACjDjyB,SAAqBtxC,KAAKuhE,YAAY9M,iBAAiBnY,EAAY,CACtEzzC,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BpjB,SAAUr4C,EAAQq4C,SAClBsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JuH,+BAAgC,CAC5BhW,cAAejtD,EAAQgjE,iBAAiBjX,QACxCgB,sBAAuB/sD,EAAQgjE,iBAAiB7Y,gBAChD+C,kBAAmBltD,EAAQgjE,iBAAiBhX,YAC5CgB,wBAAyBhtD,EAAQgjE,iBAAiB5Y,kBAClD+C,aAAcntD,EAAQgjE,iBAAiBtH,eAE3CtX,yBAAgE,QAArC53C,EAAKxM,EAAQmjE,0BAAuC,IAAP32D,OAAgB,EAASA,EAAG42D,WACpGnmB,uBAA8D,QAArCxwC,EAAKzM,EAAQmjE,0BAAuC,IAAP12D,OAAgB,EAASA,EAAG42D,WAClGnmB,UAAWl9C,EAAQk9C,UACnBJ,kBAAmB98C,EAAQ88C,kBAC3BgQ,KAAMoP,GAAal8D,EAAQ8sD,MAC3BM,eAAgB/f,GAAiBrtC,EAAQstC,MACzC+f,SAAUrtD,EAAQqtD,SAClBnxC,eAAgBC,EAAeD,iBAChC,GAEX,CAYA,cAAAsoD,CAAexkE,GACX,OAAO,IAAIwI,SAASC,IAChB,KAAMhJ,KAAK6jB,sBAAsBgvB,IAC7B,MAAM,IAAI7G,WAAW,yFAEzB,MAAMg5B,EAAMxK,GAA+Bp1D,OAAOC,OAAO,CAAEo1C,cAAez6C,KAAKihE,eAAgB5vB,SAAUrxC,KAAK4b,MAAO6/C,aAAcz7D,KAAKwhE,UAAWnmB,UAAWr7C,KAAKyhE,YAAclhE,GAAUP,KAAK6jB,YAAYpX,WAC5MzD,EAAQijC,GAAiBjsC,KAAKmP,IAAK61D,GAAK,GAEhD,CAMA,8BAAM7Q,CAAyB5zD,EAAU,CAAC,GACtC,OAAOkd,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,GAC1E40B,SAAqBtxC,KAAKuhE,YAAYpN,yBAAyB,CAClE13C,eAAgBC,EAAeD,mBAG3C,CAMA,2BAAMw3C,CAAsByP,EAAoBnjE,EAAU,CAAC,GACvD,OAAOkd,GAAcd,SAAS,mCAAoCpc,GAAS2P,MAAOwM,GACvE40B,SAAqBtxC,KAAKuhE,YAAYtN,sBAAsB,CAC/DtP,yBAA0B+e,EAAmBC,WAC7CnmB,uBAAwBkmB,EAAmBE,WAC3CnnD,eAAgBC,EAAeD,mBAG3C,CAMA,kBAAM43C,CAAa4Q,EAAkB1kE,EAAU,CAAC,GAC5C,OAAOkd,GAAcd,SAAS,0BAA2Bpc,GAAS2P,MAAOwM,GAC9D40B,SAAqBtxC,KAAKuhE,YAAYlN,aAAa4Q,EAAkB,CACxExoD,eAAgBC,EAAeD,mBAG3C,EAKG,MAAMolD,WAAyBb,GAClC,WAAAnhE,CAAYqhE,EAAuBC,EAAqCC,EAGxE7gE,GAGI,IAAIe,EACA6N,EAEJ,GADA5O,EAAUA,GAAW,CAAC,EAClBwzC,GAAeotB,GAEfhyD,EAAM+xD,EACN5/D,EAAW6/D,OAEV,GAAK,IAAUA,aAA+CtuB,IAC/DsuB,aAA+CluB,IAC/CnrB,GAAkBq5C,GAElBhyD,EAAM+xD,EACN3gE,EAAU6gE,EACV9/D,EAAW8yC,GAAY+sB,EAAqC5gE,QAE3D,GAAK4gE,GACyC,kBAAxCA,EAMN,KAAIA,GAC0C,kBAAxCA,IACPC,GAC6B,kBAAtBA,EA8BP,MAAM,IAAI1gE,MAAM,yEA9BuB,CAEvC,MAAM+5C,EAAgB0mB,EAChB9vB,EAAW+vB,EACXC,EAAiB52B,GAA6By2B,GACpD,GAA4B,sBAAxBG,EAAer2B,KAA8B,CAC7C,IAAI,GASA,MAAM,IAAItqC,MAAM,sEATR,CACR,MAAMi6D,EAAsB,IAAI9nB,GAA2BwuB,EAAez2B,YAAay2B,EAAex2B,YACtG17B,EAAMg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IAC5G9wC,EAAQ4d,eACT5d,EAAQ4d,aAAevE,GAAwBynD,EAAej3B,WAElE9oC,EAAW8yC,GAAYumB,EAAqBp6D,EAChD,CAIJ,KACK,IAA4B,kBAAxB8gE,EAAer2B,KAQpB,MAAM,IAAItqC,MAAM,4FAPhByO,EACIg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IACvG,IACAgwB,EAAep2B,WACvB3pC,EAAW8yC,GAAY,IAAInB,GAAuB1yC,EAItD,CACJ,CAGA,MAtCI4O,EAAM+xD,EAEN5/D,EAAW8yC,GAAY,IAAInB,GAAuB1yC,GAqCtDkI,MAAM0G,EAAK7N,GACXtB,KAAKklE,kBAAoBllE,KAAKq4D,qBAAqBJ,UACvD,CASA,YAAAyJ,CAAatmB,GACT,OAAO,IAAIymB,GAAiBz2B,GAAgBprC,KAAKmP,IAAK,GAAa+3B,WAAWG,SAA8B,IAApB+T,EAASr3C,YAAe3D,EAAYg7C,GAAWp7C,KAAKsB,SAChJ,CAeA,YAAMM,CAAOrB,EAAU,CAAC,GAGpB,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,0BAA2Bpc,GAAS2P,MAAOwM,IACrE,IAAI3c,EAAIgN,EAAIC,EACZ,OAAOskC,SAAqBtxC,KAAKklE,kBAAkBtjE,OAAO,EAAG,CACzDiH,YAAatI,EAAQsI,YACrBm6D,gBAAiBziE,EAAQwiE,gBACzBZ,sBAAuB5hE,EAAQy7D,WAC/BpjB,SAAUr4C,EAAQq4C,SAClBsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzB0H,yBAAgE,QAArC53C,EAAKxM,EAAQmjE,0BAAuC,IAAP32D,OAAgB,EAASA,EAAG42D,WACpGnmB,uBAA8D,QAArCxwC,EAAKzM,EAAQmjE,0BAAuC,IAAP12D,OAAgB,EAASA,EAAG42D,WAClGnmB,UAAWl9C,EAAQk9C,UACnBkQ,eAAgB/f,GAAiBrtC,EAAQstC,MACzCpxB,eAAgBC,EAAeD,iBAChC,GAEX,CAQA,uBAAM0oD,CAAkB5kE,EAAU,CAAC,GAC/B,MAAMy7D,EAAa,CAAEzP,YAAaljB,IAClC,OAAO5rB,GAAcd,SAAS,qCAAsCpc,GAAS2P,MAAOwM,IAChF,IAAI3c,EAAIgN,EACR,IACI,MAAMwD,EAAM+gC,SAAqBtxC,KAAK4B,OAAOwD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqX,GAAiB,CAAEs/C,iBAChG,OAAO52D,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAAQtyD,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,WACnF,CACA,MAAOxxD,IACH,GAA6E,uBAAnD,QAApB9K,EAAK8K,GAAEqzB,eAA4B,IAAPn+B,OAAgB,EAASA,EAAGy/C,WAC1D,OAAOp6C,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAA+B,QAArB91D,EAAKlC,GAAE6E,gBAA6B,IAAP3C,OAAgB,EAASA,EAAG6c,eAAgB,CAAEyyC,UAAWxxD,GAAE6E,WAEtJ,MAAM7E,EACV,IAER,CAMA,UAAM+rD,CAAKr2D,EAAU,CAAC,GAElB,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,wBAAyBpc,GAAS2P,MAAOwM,IACnE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKklE,kBAAkBtO,KAAK,CACpD/tD,YAAatI,EAAQsI,YACrBu8D,+BAAgC7kE,EAAQy7D,WACxCmG,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,iBAChC,GAEX,CAyBA,iBAAM+5C,CAAYlmD,EAAMgD,EAAe/S,EAAU,CAAC,GAG9C,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,+BAAgCpc,GAAS2P,MAAOwM,IAC1E,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKklE,kBAAkB1O,YAAYljD,EAAehD,EAAM,CAChFzH,YAAatI,EAAQsI,YACrBu8D,+BAAgC7kE,EAAQy7D,WACxCmG,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JljC,eAAgB,CACZhZ,iBAAkBxf,EAAQ+f,YAE9BmuC,wBAAyBluD,EAAQkuD,wBACjCC,0BAA2BnuD,EAAQmuD,0BACnC2T,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,CAeA,wBAAM4oD,CAAmBC,EAAWC,EAAc1I,EAAOt8D,EAAU,CAAC,GAIhE,OAHAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5Cz7D,EAAQgjE,iBAAmBhjE,EAAQgjE,kBAAoB,CAAC,EACxD7G,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,IACjF,IAAI3c,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,OAAOuuB,SAAqBtxC,KAAKklE,kBAAkBxO,mBAAmB4O,EAAW,EAAG,CAChFz8D,YAAatI,EAAQsI,YACrBwmD,YAAa+P,GAAc,CAAE/0D,OAAQk7D,EAAc1I,UACnD9O,iBAAkBxtD,EAAQwtD,iBAC1BuB,mBAAoB/uD,EAAQ+uD,mBAC5B6S,sBAAuB5hE,EAAQy7D,WAC/BoJ,+BAAgC7kE,EAAQy7D,WACxCE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JuH,+BAAgC,CAC5BhW,cAAmD,QAAnCzgD,EAAKxM,EAAQgjE,wBAAqC,IAAPx2D,OAAgB,EAASA,EAAGu/C,QACvFgB,sBAA2D,QAAnCtgD,EAAKzM,EAAQgjE,wBAAqC,IAAPv2D,OAAgB,EAASA,EAAG09C,gBAC/F+C,kBAAuD,QAAnCxgD,EAAK1M,EAAQgjE,wBAAqC,IAAPt2D,OAAgB,EAASA,EAAGs/C,YAC3FgB,wBAA6D,QAAnCxqC,EAAKxiB,EAAQgjE,wBAAqC,IAAPxgD,OAAgB,EAASA,EAAG4nC,mBAErGqD,wBAAyBpe,GAA0BrvC,EAAQkjE,qBAC3DpB,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,EAKG,MAAMslD,WAAwBf,GACjC,WAAAnhE,CAAYqhE,EAAuBC,EAAqCC,EAGxE7gE,GAGI,IAAIe,EACA6N,EAEJ,GADA5O,EAAUA,GAAW,CAAC,EAClBwzC,GAAeotB,GAEfhyD,EAAM+xD,EACN5/D,EAAW6/D,OAEV,GAAK,IAAUA,aAA+CtuB,IAC/DsuB,aAA+CluB,IAC/CnrB,GAAkBq5C,GAElBhyD,EAAM+xD,EACN3gE,EAAU6gE,EACV9/D,EAAW8yC,GAAY+sB,EAAqC5gE,QAE3D,GAAK4gE,GACyC,kBAAxCA,EASN,KAAIA,GAC0C,kBAAxCA,IACPC,GAC6B,kBAAtBA,EA8BP,MAAM,IAAI1gE,MAAM,yEA9BuB,CAEvC,MAAM+5C,EAAgB0mB,EAChB9vB,EAAW+vB,EACXC,EAAiB52B,GAA6By2B,GACpD,GAA4B,sBAAxBG,EAAer2B,KAA8B,CAC7C,IAAI,GASA,MAAM,IAAItqC,MAAM,sEATR,CACR,MAAMi6D,EAAsB,IAAI9nB,GAA2BwuB,EAAez2B,YAAay2B,EAAex2B,YACtG17B,EAAMg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IAC5G9wC,EAAQ4d,eACT5d,EAAQ4d,aAAevE,GAAwBynD,EAAej3B,WAElE9oC,EAAW8yC,GAAYumB,EAAqBp6D,EAChD,CAIJ,KACK,IAA4B,kBAAxB8gE,EAAer2B,KAQpB,MAAM,IAAItqC,MAAM,4FAPhByO,EACIg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IACvG,IACAgwB,EAAep2B,WACvB3pC,EAAW8yC,GAAY,IAAInB,GAAuB1yC,EAItD,CACJ,CAGA,MAxCI4O,EAAM+xD,EACFE,GAAkD,kBAAtBA,IAC5B7gE,EAAU6gE,GAEd9/D,EAAW8yC,GAAY,IAAInB,GAAuB1yC,GAqCtDkI,MAAM0G,EAAK7N,GACXtB,KAAKwlE,iBAAmBxlE,KAAKq4D,qBAAqBH,UAClDl4D,KAAKylE,aAAezlE,KAAKq4D,qBAAqBtmD,IAClD,CASA,YAAA2vD,CAAatmB,GACT,OAAO,IAAI2mB,GAAgB32B,GAAgBprC,KAAKmP,IAAK,GAAa+3B,WAAWG,SAA8B,IAApB+T,EAASr3C,YAAe3D,EAAYg7C,GAAWp7C,KAAKsB,SAC/I,CA+BA,WAAM6qC,CAAMA,EAAO5rC,EAAU,CAAC,GAE1B,GADAm8D,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,UAClD,GACD,MAAM,IAAI53D,MAAM,0DAEpB,OAAO+c,GAAcd,SAAS,wBAAyBpc,GAAS2P,MAAOwM,IACnE,IAAI3c,EACJ,MAAM2P,EAAW4hC,SAAqBtxC,KAAKylE,aAAat5B,MAAM,CAC1DtjC,YAAatI,EAAQsI,YACrBylD,aAAc,CACV7P,UAAW,MACXC,WAAYvS,EACZwS,mBAAoBxQ,GAAqB5tC,EAAQmlE,wBACjD9mB,oBAAqBzQ,GAAqB5tC,EAAQolE,0BAEtDxD,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBzlD,eAAgBC,EAAeD,kBAEnC,OAAO,IAAI2/C,GAAkB1sD,EAAU,CACnC7G,YAAatI,EAAQsI,YACrByX,WAAY/f,EAAQ+f,WACpBslD,QAASrlE,EAAQqlE,SACnB,GAEV,CA4BA,YAAM7O,CAAOzmD,EAAMgD,EAAe/S,EAAU,CAAC,GAGzC,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,yBAA0Bpc,GAAS2P,MAAOwM,IACpE,IAAI3c,EAAIgN,EAAIC,EACZ,OAAOskC,SAAqBtxC,KAAKwlE,iBAAiBzO,OAAOzjD,EAAehD,EAAM,CAC1EzH,YAAatI,EAAQsI,YACrBm6D,gBAAiBziE,EAAQwiE,gBACzBZ,sBAAuB5hE,EAAQy7D,WAC/BpjB,SAAUr4C,EAAQq4C,SAClBsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JljC,eAAgB,CACZhZ,iBAAkBxf,EAAQ+f,YAE9B+hD,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzB0H,yBAAgE,QAArC53C,EAAKxM,EAAQmjE,0BAAuC,IAAP32D,OAAgB,EAASA,EAAG42D,WACpGnmB,uBAA8D,QAArCxwC,EAAKzM,EAAQmjE,0BAAuC,IAAP12D,OAAgB,EAASA,EAAG42D,WAClGnmB,UAAWl9C,EAAQk9C,UACnB4P,KAAMoP,GAAal8D,EAAQ8sD,MAC3BM,eAAgB/f,GAAiBrtC,EAAQstC,MACzCpxB,eAAgBC,EAAeD,iBAChC,GAEX,CAmBA,uBAAMopD,CAAkBP,EAAW/kE,EAAU,CAAC,GAG1C,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,IAAI3c,EAAIgN,EAAIC,EAAIC,EAAI8V,EAAIC,EACxB,OAAOsuB,SAAqBtxC,KAAKwlE,iBAAiBvO,eAAe,EAAGqO,EAAWlgE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAU,CAAEyiE,gBAAiBziE,EAAQwiE,gBAAiBZ,sBAAuB5hE,EAAQy7D,WAAYE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAAkBuH,+BAAgC,CACrZhW,cAAmD,QAAnCzgD,EAAKxM,EAAQgjE,wBAAqC,IAAPx2D,OAAgB,EAASA,EAAGu/C,QACvFgB,sBAA2D,QAAnCtgD,EAAKzM,EAAQgjE,wBAAqC,IAAPv2D,OAAgB,EAASA,EAAG09C,gBAC/F+C,kBAAuD,QAAnCxgD,EAAK1M,EAAQgjE,wBAAqC,IAAPt2D,OAAgB,EAASA,EAAGs/C,YAC3FgB,wBAA6D,QAAnCxqC,EAAKxiB,EAAQgjE,wBAAqC,IAAPxgD,OAAgB,EAASA,EAAG4nC,kBACjG+C,aAAkD,QAAnC1qC,EAAKziB,EAAQgjE,wBAAqC,IAAPvgD,OAAgB,EAASA,EAAGi5C,eACvFoG,QAAS9hE,EAAQ2hE,oBAAqBlU,wBAAyBpe,GAA0BrvC,EAAQkjE,qBAAsBpW,KAAMoP,GAAal8D,EAAQ8sD,MAAOM,eAAgB/f,GAAiBrtC,EAAQstC,MAAOogB,eAAgB1tD,EAAQ0tD,eAAgBxxC,eAAgBC,EAAeD,kBAAmB,GAElT,CAYA,gBAAM06C,CAAW7G,EAAShgD,EAAMgD,EAAe/S,EAAU,CAAC,GAEtD,OADAm8D,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,GACjE40B,SAAqBtxC,KAAKwlE,iBAAiBrO,WAAW7G,EAASh9C,EAAehD,EAAM,CACvFzH,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BjjC,eAAgB,CACZhZ,iBAAkBxf,EAAQ+f,YAE9BmuC,wBAAyBluD,EAAQkuD,wBACjCC,0BAA2BnuD,EAAQmuD,0BACnC2T,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,mBAG3C,CAsBA,uBAAM46C,CAAkB/G,EAASgV,EAAWj7D,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GAEtE,OADAm8D,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,GACxE40B,SAAqBtxC,KAAKwlE,iBAAiBnO,kBAAkB/G,EAAS,EAAGgV,EAAW,CACvFz8D,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BjO,iBAAkBxtD,EAAQwtD,iBAC1BuB,mBAAoB/uD,EAAQ+uD,mBAC5BD,YAAwB,IAAXhlD,GAAiBwyD,EAAoBuC,GAAc,CAAE/0D,SAAQwyD,eAApCz8D,EACtCiiE,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzB+Q,wBAAyBpe,GAA0BrvC,EAAQkjE,qBAC3DhnD,eAAgBC,EAAeD,mBAG3C,CAaA,qBAAM86C,CAAgBhH,EAAQhwD,EAAU,CAAC,GAGrC,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,IAC7E,IAAI3c,EAAIgN,EAAIC,EACZ,OAAOskC,SAAqBtxC,KAAKwlE,iBAAiBjO,gBAAgB,CAAEvZ,OAAQuS,GAAU,CAClF1nD,YAAatI,EAAQsI,YACrBm6D,gBAAiBziE,EAAQwiE,gBACzBZ,sBAAuB5hE,EAAQy7D,WAC/BpjB,SAAUr4C,EAAQq4C,SAClBsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzB0H,yBAAgE,QAArC53C,EAAKxM,EAAQmjE,0BAAuC,IAAP32D,OAAgB,EAASA,EAAG42D,WACpGnmB,uBAA8D,QAArCxwC,EAAKzM,EAAQmjE,0BAAuC,IAAP12D,OAAgB,EAASA,EAAG42D,WAClGnmB,UAAWl9C,EAAQk9C,UACnB4P,KAAMoP,GAAal8D,EAAQ8sD,MAC3BM,eAAgB/f,GAAiBrtC,EAAQstC,MACzCpxB,eAAgBC,EAAeD,iBAChC,GAEX,CAWA,kBAAMg7C,CAAahH,EAAUlwD,EAAU,CAAC,GACpC,OAAOkd,GAAcd,SAAS,+BAAgCpc,GAAS2P,MAAOwM,IAC1E,IAAI3c,EACJ,MAAMwQ,EAAM+gC,SAAqBtxC,KAAKwlE,iBAAiB/N,aAAahH,EAAU,CAC1E5nD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,kBAQnC,OANKlM,EAAI2tC,kBACL3tC,EAAI2tC,gBAAkB,IAErB3tC,EAAI4tC,oBACL5tC,EAAI4tC,kBAAoB,IAErB5tC,CAAG,GAElB,CAiBA,gBAAMu1D,CAAWC,EAAMxlE,EAAU,CAAC,GAC9B,OAAOkd,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,GAAI,GAAQ,CACR,IAAIyR,EAWJ,OATIA,EADA43C,aAAgBj7B,OACPi7B,EAEJA,aAAgB/2C,YACZ8b,OAAOn3B,KAAKoyD,GAIZj7B,OAAOn3B,KAAKoyD,EAAK53C,OAAQ43C,EAAKC,WAAYD,EAAKjzD,YAErD9S,KAAKimE,wBAAuB,CAAC57D,EAAQ5G,IAAS0qB,EAAOjuB,MAAMmK,EAAQA,EAAS5G,IAAO0qB,EAAOrb,WAAY4J,EACjH,CACK,CACD,MAAMwpD,EAAc,IAAIzzD,KAAK,CAACszD,IAC9B,OAAO/lE,KAAKimE,wBAAuB,CAAC57D,EAAQ5G,IAASyiE,EAAYhmE,MAAMmK,EAAQA,EAAS5G,IAAOyiE,EAAYziE,KAAMiZ,EACrH,IAER,CAoBA,uBAAMypD,CAAkBC,EAAa7lE,EAAU,CAAC,GAC5C,OAAOkd,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,MAAMwpD,EAAc,IAAIzzD,KAAK,CAAC2zD,IAC9B,OAAOpmE,KAAKimE,wBAAuB,CAAC57D,EAAQ5G,IAASyiE,EAAYhmE,MAAMmK,EAAQA,EAAS5G,IAAOyiE,EAAYziE,KAAMiZ,EAAe,GAExI,CAgBA,4BAAMupD,CAAuBI,EAAa5iE,EAAMlD,EAAU,CAAC,GACvD,IAAIR,EAAIgN,EACR,IAAIo3D,EAAyC,QAA5BpkE,EAAKQ,EAAQ4jE,iBAA8B,IAAPpkE,EAAgBA,EAAK,EAC1E,GAAIokE,EAAY,GAAKA,EAAYv9B,GAC7B,MAAM,IAAIoF,WAAW,wCAAwCpF,MAEjE,MAAM0/B,EAAyD,QAApCv5D,EAAKxM,EAAQ+lE,yBAAsC,IAAPv5D,EAAgBA,EAAK45B,GAC5F,GAAI2/B,EAAoB,GAAKA,EAAoB3/B,GAC7C,MAAM,IAAIqF,WAAW,gDAAgDrF,MAEzE,GAAkB,IAAdw9B,EAAiB,CACjB,GAAI1gE,EAAOmjC,GAAmCC,GAC1C,MAAM,IAAImF,WAAW,GAAGvoC,8CAExBA,EAAO6iE,IACPnC,EAAYj6D,KAAKC,KAAK1G,EAAOojC,IACzBs9B,EAAYp9B,KACZo9B,EAAYp9B,IAGxB,CAOA,OANKxmC,EAAQwiE,kBACTxiE,EAAQwiE,gBAAkB,CAAC,GAE1BxiE,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEnBv+C,GAAcd,SAAS,yCAA0Cpc,GAAS2P,MAAOwM,IACpF,GAAIjZ,GAAQ6iE,EACR,OAAOh1B,SAAqBtxC,KAAK+2D,OAAOsP,EAAY,EAAG5iE,GAAOA,EAAMiZ,IAExE,MAAM6pD,EAAYr8D,KAAKE,OAAO3G,EAAO,GAAK0gE,GAAa,EACvD,GAAIoC,EAAY1/B,GACZ,MAAM,IAAImF,WACN,8FAAmCnF,MAE3C,MAAM2/B,EAAY,GACZ/5B,EAAgB,IACtB,IAAI43B,EAAmB,EACvB,MAAMC,EAAQ,IAAI/E,GAAMh/D,EAAQi/D,aAChC,IAAK,IAAItzD,EAAI,EAAGA,EAAIq6D,EAAWr6D,IAC3Bo4D,EAAMvE,cAAa7vD,UACf,MAAMu2D,EAAUj6B,GAAgBC,EAAevgC,GACzCglC,EAAQizB,EAAYj4D,EACpBiP,EAAMjP,IAAMq6D,EAAY,EAAI9iE,EAAOytC,EAAQizB,EAC3C7wD,EAAgB6H,EAAM+1B,EAC5Bs1B,EAAU5lE,KAAK6lE,SACTzmE,KAAKm3D,WAAWsP,EAASJ,EAAYn1B,EAAO59B,GAAgBA,EAAe,CAC7EzK,YAAatI,EAAQsI,YACrBmzD,WAAYz7D,EAAQy7D,WACpB/e,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAInC4nD,GAAoB/wD,EAChB/S,EAAQ+f,YACR/f,EAAQ+f,WAAW,CACfN,YAAaqkD,GAErB,IAIR,aADMC,EAAMI,KACL1kE,KAAKu3D,gBAAgBiP,EAAW9pD,EAAe,GAE9D,CAcA,gBAAMgqD,CAAW9B,EAAUrkE,EAAU,CAAC,GAClC,OAAOkd,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,MAAMjZ,SAAcq9D,GAAO8D,IAAWnhE,KACtC,OAAOzD,KAAKimE,wBAAuB,CAAC57D,EAAQwyD,IACjC,IAAMkE,GAAmB6D,EAAU,CACtC+B,WAAW,EACXxrD,IAAK0hD,EAAQxyD,EAASwyD,EAAQ,EAAI+J,IAClC11B,MAAO7mC,KAEZ5G,EAAM2B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAU,CAAEkc,eAAgBC,EAAeD,iBAAkB,GAE9G,CAiBA,kBAAMoqD,CAAa70D,EAAQ80D,EAAahgC,GAAiCigC,EAAiB,EAAGxmE,EAAU,CAAC,GAOpG,OANKA,EAAQwiE,kBACTxiE,EAAQwiE,gBAAkB,CAAC,GAE1BxiE,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEnBv+C,GAAcd,SAAS,+BAAgCpc,GAAS2P,MAAOwM,IAC1E,IAAIsqD,EAAW,EACf,MAAMv6B,EAAgB,IACtB,IAAI43B,EAAmB,EACvB,MAAMmC,EAAY,GACZS,EAAY,IAAI7G,GAAgBpuD,EAAQ80D,EAAYC,GAAgB72D,MAAOI,EAAMvM,KACnF,MAAM0iE,EAAUj6B,GAAgBC,EAAeu6B,GAC/CR,EAAU5lE,KAAK6lE,GACfO,UACMhnE,KAAKm3D,WAAWsP,EAASn2D,EAAMvM,EAAQ,CACzCi4D,WAAYz7D,EAAQy7D,WACpB/e,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAGnC4nD,GAAoBtgE,EAChBxD,EAAQ+f,YACR/f,EAAQ+f,WAAW,CAAEN,YAAaqkD,GACtC,GAMJn6D,KAAKC,KAAM48D,EAAiB,EAAK,IAEjC,aADME,EAAUvC,KACTpzB,SAAqBtxC,KAAKu3D,gBAAgBiP,EAAWphE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAU,CAAEkc,eAAgBC,EAAeD,kBAAmB,GAElK,EAKG,MAAMwlD,WAAuBjB,GAChC,WAAAnhE,CAAYqhE,EAAuBC,EAAqCC,EAGxE7gE,GAGI,IAAIe,EACA6N,EAEJ,GADA5O,EAAUA,GAAW,CAAC,EAClBwzC,GAAeotB,GAEfhyD,EAAM+xD,EACN5/D,EAAW6/D,OAEV,GAAK,IAAUA,aAA+CtuB,IAC/DsuB,aAA+CluB,IAC/CnrB,GAAkBq5C,GAElBhyD,EAAM+xD,EACN3gE,EAAU6gE,EACV9/D,EAAW8yC,GAAY+sB,EAAqC5gE,QAE3D,GAAK4gE,GACyC,kBAAxCA,EAMN,KAAIA,GAC0C,kBAAxCA,IACPC,GAC6B,kBAAtBA,EA8BP,MAAM,IAAI1gE,MAAM,yEA9BuB,CAEvC,MAAM+5C,EAAgB0mB,EAChB9vB,EAAW+vB,EACXC,EAAiB52B,GAA6By2B,GACpD,GAA4B,sBAAxBG,EAAer2B,KAA8B,CAC7C,IAAI,GASA,MAAM,IAAItqC,MAAM,sEATR,CACR,MAAMi6D,EAAsB,IAAI9nB,GAA2BwuB,EAAez2B,YAAay2B,EAAex2B,YACtG17B,EAAMg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IAC5G9wC,EAAQ4d,eACT5d,EAAQ4d,aAAevE,GAAwBynD,EAAej3B,WAElE9oC,EAAW8yC,GAAYumB,EAAqBp6D,EAChD,CAIJ,KACK,IAA4B,kBAAxB8gE,EAAer2B,KAQpB,MAAM,IAAItqC,MAAM,4FAPhByO,EACIg8B,GAAgBA,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IAAiB3e,mBAAmBuV,IACvG,IACAgwB,EAAep2B,WACvB3pC,EAAW8yC,GAAY,IAAInB,GAAuB1yC,EAItD,CACJ,CAGA,MArCI4O,EAAM+xD,EACN5/D,EAAW8yC,GAAY,IAAInB,GAAuB1yC,GAqCtDkI,MAAM0G,EAAK7N,GACXtB,KAAKknE,gBAAkBlnE,KAAKq4D,qBAAqBL,QACrD,CASA,YAAA0J,CAAatmB,GACT,OAAO,IAAI6mB,GAAe72B,GAAgBprC,KAAKmP,IAAK,GAAa+3B,WAAWG,SAA8B,IAApB+T,EAASr3C,YAAe3D,EAAYg7C,GAAWp7C,KAAKsB,SAC9I,CAUA,YAAMM,CAAO6B,EAAMlD,EAAU,CAAC,GAG1B,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,wBAAyBpc,GAAS2P,MAAOwM,IACnE,IAAI3c,EAAIgN,EAAIC,EACZ,OAAOskC,SAAqBtxC,KAAKknE,gBAAgBtlE,OAAO,EAAG6B,EAAM,CAC7DoF,YAAatI,EAAQsI,YACrBm6D,gBAAiBziE,EAAQwiE,gBACzB7mB,mBAAoB37C,EAAQ27C,mBAC5BimB,sBAAuB5hE,EAAQy7D,WAC/BpjB,SAAUr4C,EAAQq4C,SAClBsjB,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JoG,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzB0H,yBAAgE,QAArC53C,EAAKxM,EAAQmjE,0BAAuC,IAAP32D,OAAgB,EAASA,EAAG42D,WACpGnmB,uBAA8D,QAArCxwC,EAAKzM,EAAQmjE,0BAAuC,IAAP12D,OAAgB,EAASA,EAAG42D,WAClGnmB,UAAWl9C,EAAQk9C,UACnB4P,KAAMoP,GAAal8D,EAAQ8sD,MAC3BM,eAAgB/f,GAAiBrtC,EAAQstC,MACzCpxB,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,uBAAM0oD,CAAkB1hE,EAAMlD,EAAU,CAAC,GACrC,OAAOkd,GAAcd,SAAS,mCAAoCpc,GAAS2P,MAAOwM,IAC9E,IAAI3c,EAAIgN,EACR,IACI,MAAMivD,EAAa,CAAEzP,YAAaljB,IAC5B94B,EAAM+gC,SAAqBtxC,KAAK4B,OAAO6B,EAAM2B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAU,CAAEy7D,aAAYv/C,eAAgBC,EAAeD,mBAC1I,OAAOrX,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAAQtyD,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,WACnF,CACA,MAAOxxD,IACH,GAA6E,uBAAnD,QAApB9K,EAAK8K,GAAEqzB,eAA4B,IAAPn+B,OAAgB,EAASA,EAAGy/C,WAC1D,OAAOp6C,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAA+B,QAArB91D,EAAKlC,GAAE6E,gBAA6B,IAAP3C,OAAgB,EAASA,EAAG6c,eAAgB,CAAEyyC,UAAWxxD,GAAE6E,WAEtJ,MAAM7E,EACV,IAER,CAWA,iBAAM0qD,CAAYjlD,EAAMjG,EAAQwyD,EAAOt8D,EAAU,CAAC,GAG9C,OAFAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5CU,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgB3R,YAAYsH,EAAOvsD,EAAM,CACtEzH,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JljC,eAAgB,CACZhZ,iBAAkBxf,EAAQ+f,YAE9B2rC,MAAOmT,GAAc,CAAE/0D,SAAQwyD,UAC/BsK,+BAAgC5mE,EAAQy7D,WACxCvN,wBAAyBluD,EAAQkuD,wBACjCC,0BAA2BnuD,EAAQmuD,0BACnC2T,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,CAYA,wBAAMk5C,CAAmB2P,EAAWC,EAAc6B,EAAYvK,EAAOt8D,EAAU,CAAC,GAI5E,OAHAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAC5Cz7D,EAAQgjE,iBAAmBhjE,EAAQgjE,kBAAoB,CAAC,EACxD7G,GAAqBn8D,EAAQ2hE,oBAAqBliE,KAAKs4D,SAChD76C,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,IAAI3c,EAAIgN,EAAIC,EAAIC,EAAI8V,EACpB,OAAOuuB,SAAqBtxC,KAAKknE,gBAAgBvR,mBAAmB2P,EAAWlG,GAAc,CAAE/0D,OAAQk7D,EAAc1I,UAAU,EAAGuC,GAAc,CAAE/0D,OAAQ+8D,EAAYvK,UAAU,CAC5Kh0D,YAAatI,EAAQsI,YACrBklD,iBAAkBxtD,EAAQwtD,iBAC1BuB,mBAAoB/uD,EAAQ+uD,mBAC5B6S,sBAAuB5hE,EAAQy7D,WAC/BmL,+BAAgC5mE,EAAQy7D,WACxCE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JuH,+BAAgC,CAC5BhW,cAAmD,QAAnCzgD,EAAKxM,EAAQgjE,wBAAqC,IAAPx2D,OAAgB,EAASA,EAAGu/C,QACvFgB,sBAA2D,QAAnCtgD,EAAKzM,EAAQgjE,wBAAqC,IAAPv2D,OAAgB,EAASA,EAAG09C,gBAC/F+C,kBAAuD,QAAnCxgD,EAAK1M,EAAQgjE,wBAAqC,IAAPt2D,OAAgB,EAASA,EAAGs/C,YAC3FgB,wBAA6D,QAAnCxqC,EAAKxiB,EAAQgjE,wBAAqC,IAAPxgD,OAAgB,EAASA,EAAG4nC,mBAErG0X,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzB+Q,wBAAyBpe,GAA0BrvC,EAAQkjE,qBAC3DhnD,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,gBAAMg5C,CAAWprD,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GAE3C,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,4BAA6Bpc,GAAS2P,MAAOwM,IACvE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgBzR,WAAW,EAAG,CAC3D5sD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JhQ,MAAOmT,GAAc,CAAE/0D,SAAQwyD,UAC/BsK,+BAAgC5mE,EAAQy7D,WACxCqG,QAAS9hE,EAAQ2hE,oBACjBjlB,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,mBAAMo5C,CAAcxrD,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GAE9C,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,+BAAgCpc,GAAS2P,MAAOwM,IAC1E,IAAI3c,EACJ,MAAM2P,EAAW4hC,SAAqBtxC,KAAKknE,gBAAgBrR,cAAc,CACrEhtD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JhQ,MAAOmT,GAAc,CAAE/0D,SAAQwyD,UAC/BpgD,eAAgBC,EAAeD,kBAEnC,OAAOmgD,GAAuBltD,EAAS,GAE/C,CAaA,2BAAM23D,CAAsBh9D,EAAS,EAAGwyD,EAAOxkB,EAAQ93C,EAAU,CAAC,GAC9D,OAAOkd,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,IACjF,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgBrR,cAAc,CAC3DhtD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JhQ,MAAOmT,GAAc,CAAE/0D,SAAQwyD,UAC/BxkB,OAAQA,EACRC,YAAa/3C,EAAQ+3C,YACrB77B,eAAgBC,EAAeD,iBAChC,GAEX,CAeA,yBAAA6qD,GACI,OAAO/gD,GAAiBvmB,KAAMunE,WAAW,UAAsCl9D,EAAS,EAAGwyD,EAAOxkB,EAAQ93C,EAAU,CAAC,GACjH,IAAIinE,EACJ,GAAMnvB,QAAqBj4C,IAAXi4C,EACZ,GACImvB,QAAyCnhD,GAAQrmB,KAAKqnE,sBAAsBh9D,EAAQwyD,EAAOxkB,EAAQ93C,IACnG83C,EAASmvB,EAAiChvB,8BAC9BnyB,SAAcA,GAAQmhD,UAC7BnvB,EAEjB,GACJ,CAQA,kBAAAovB,GACI,OAAOlhD,GAAiBvmB,KAAMunE,WAAW,UAA+Bl9D,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GAClG,IAAIR,EAAI2nE,EAAK36D,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAAmGr1B,EAA/F/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAKsnE,0BAA0Bj9D,EAAQwyD,EAAOxkB,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CACrKD,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAM4jC,EAAuB7jC,QACvBqZ,SAAeqB,GAAiBC,GAAcipB,GAA0BC,KAClF,CACJ,CACA,MAAO82B,GAASD,EAAM,CAAEnjE,MAAOojE,EAAS,CACxC,QACI,IACS16D,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAI2kD,EAAK,MAAMA,EAAInjE,KAAO,CACxC,CACJ,GACJ,CAwEA,cAAAsjE,CAAex9D,EAAS,EAAGwyD,EAAOt8D,EAAU,CAAC,GACzCA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAE5C,MAAM8L,EAAO9nE,KAAKynE,mBAAmBp9D,EAAQwyD,EAAOt8D,GACpD,MAAO,CAIH,IAAAiB,GACI,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAKsnE,0BAA0Bj9D,EAAQwyD,EAAOmL,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe/3C,IAGlJ,CAWA,uBAAMw1D,CAAkB1rD,EAAQwyD,EAAOoL,EAAc1nE,EAAU,CAAC,GAE5D,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,mCAAoCpc,GAAS2P,MAAOwM,IAC9E,IAAI3c,EACJ,MAAM8B,EAASyvC,SAAqBtxC,KAAKknE,gBAAgBnR,kBAAkB,CACvEltD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JxM,aAAcwY,EACdhc,MAAOmT,GAAc,CAAE/0D,SAAQwyD,UAC/BpgD,eAAgBC,EAAeD,kBAEnC,OAAOmgD,GAAuB/6D,EAAO,GAE7C,CAeA,+BAAMqmE,CAA0B79D,EAAQwyD,EAAOsL,EAAmB9vB,EAAQ93C,EAAU,CAAC,GACjF,OAAOkd,GAAcd,SAAS,0CAA2Cpc,GAAS2P,MAAOwM,IACrF,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgBnR,kBAAkB,CAC/DltD,YAAyB,OAAZtI,QAAgC,IAAZA,OAAqB,EAASA,EAAQsI,YACvEs5D,sBAAmC,OAAZ5hE,QAAgC,IAAZA,OAAqB,EAASA,EAAQy7D,WACjFE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAe,OAAZ9E,QAAgC,IAAZA,OAAqB,EAASA,EAAQy7D,YAAa,CAAExP,OAAwF,QAA/EzsD,EAAiB,OAAZQ,QAAgC,IAAZA,OAAqB,EAASA,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC/PxM,aAAc0Y,EACdlc,MAAOmT,GAAc,CACjB/0D,OAAQA,EACRwyD,MAAOA,IAEXxkB,OAAQA,EACRC,YAAyB,OAAZ/3C,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+3C,YACvE77B,eAAgBC,EAAeD,iBAChC,GAEX,CAiBA,6BAAA2rD,CAA8B/9D,EAAQwyD,EAAOsL,EAAmB9vB,EAAQ93C,GACpE,OAAOgmB,GAAiBvmB,KAAMunE,WAAW,YACrC,IAAIC,EACJ,GAAMnvB,QAAqBj4C,IAAXi4C,EACZ,GACImvB,QAAyCnhD,GAAQrmB,KAAKkoE,0BAA0B79D,EAAQwyD,EAAOsL,EAAmB9vB,EAAQ93C,IAC1H83C,EAASmvB,EAAiChvB,8BAC9BnyB,SAAcA,GAAQmhD,UAC7BnvB,EAEjB,GACJ,CASA,sBAAAgwB,CAAuBh+D,EAAQwyD,EAAOsL,EAAmB5nE,GACrD,OAAOgmB,GAAiBvmB,KAAMunE,WAAW,YACrC,IAAIxnE,EAAIuoE,EAAKv7D,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAA0Hr1B,EAAtH/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAKooE,8BAA8B/9D,EAAQwyD,EAAOsL,EAAmB9vB,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CAC5LD,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAM4jC,EAAuB7jC,QACvBqZ,SAAeqB,GAAiBC,GAAcipB,GAA0BC,KAClF,CACJ,CACA,MAAO03B,GAASD,EAAM,CAAE/jE,MAAOgkE,EAAS,CACxC,QACI,IACSt7D,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAIulD,EAAK,MAAMA,EAAI/jE,KAAO,CACxC,CACJ,GACJ,CAyEA,kBAAAikE,CAAmBn+D,EAAQwyD,EAAOoL,EAAc1nE,EAAU,CAAC,GACvDA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EAE5C,MAAM8L,EAAO9nE,KAAKqoE,uBAAuBh+D,EAAQwyD,EAAOoL,EAAc7iE,OAAOC,OAAO,CAAC,EAAG9E,IACxF,MAAO,CAIH,IAAAiB,GACI,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAKooE,8BAA8B/9D,EAAQwyD,EAAOoL,EAAcD,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe/3C,IAGpK,CAWA,sCAAMkoE,CAAiCp+D,EAAQwyD,EAAOnN,EAAiBnvD,EAAU,CAAC,GAE9E,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,kDAAmDpc,GAAS2P,MAAOwM,IAC7F,IAAI3c,EACJ,MAAM2P,EAAW4hC,SAAqBtxC,KAAKknE,gBAAgBnR,kBAAkB,CACzEltD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3JvM,kBACAzD,MAAOmT,GAAc,CAAE/0D,SAAQwyD,UAC/BpgD,eAAgBC,EAAeD,kBAEnC,OAAOmgD,GAAuBltD,EAAS,GAE/C,CASA,YAAMumD,CAAOxyD,EAAMlD,EAAU,CAAC,GAE1B,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,wBAAyBpc,GAAS2P,MAAOwM,IACnE,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgBjR,OAAOxyD,EAAM,CAC1DoF,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jhf,gBAAiB18C,EAAQ08C,gBACzBxgC,eAAgBC,EAAeD,iBAChC,GAEX,CAUA,0BAAM05C,CAAqBxG,EAAsB+Y,EAAgBnoE,EAAU,CAAC,GAExE,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,IACjF,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgB/Q,qBAAqBxG,EAAsB,CACxF9mD,YAAatI,EAAQsI,YACrBqzC,mBAAoBwsB,EACpBvG,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,iBAChC,GAEX,CAcA,0BAAMksD,CAAqBrsB,EAAY/7C,EAAU,CAAC,GAC9C,OAAOkd,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,IACjF,IAAI3c,EACJ,OAAOuxC,SAAqBtxC,KAAKknE,gBAAgB7Q,gBAAgB/Z,EAAY,CACzEzzC,YAAatI,EAAQsI,YACrBqzD,yBAA0B92D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,EAAQy7D,YAAa,CAAExP,OAAsC,QAA7BzsD,EAAKQ,EAAQy7D,kBAA+B,IAAPj8D,OAAgB,EAASA,EAAGk8D,gBAC3Jx/C,eAAgBC,EAAeD,iBAChC,GAEX,ECv9EGvM,eAAe04D,GAAcC,GAChC,MAAM92D,QAAc82D,EAAc/nD,SAClC,OAAOu/C,GAAatuD,EACxB,CACO,SAAS+2D,GAAezgD,GAC3B,OAAO,IAAI5V,KAAK,CAAC4V,IAAM5kB,IAC3B,CCFA,MAAMslE,GAAwB,KACxBC,GAAkB,IAClBC,IAAa,EAIZ,MAAMC,GACT,WAAArpE,CAAYgpE,EAAeM,GACvB,IAAKN,IAAkBA,EAAc30D,YAEjC,MAAM,IAAI83B,WAAW,qEAEzB,IAAKm9B,GAAoC,IAArBA,EAAY1lE,KAE5B,MAAM,IAAIuoC,WAAW,4DAEzBhsC,KAAK6oE,cAAgBA,EACrB7oE,KAAKmpE,YAAcA,EACnBnpE,KAAKopE,sBAAwBppE,KAAK6oE,cAAc30D,YAAYrO,MAAM,KAAK,GACvE7F,KAAKqpE,kBAAoB,KAAKrpE,KAAKopE,wBAAwB7/B,KAC3DvpC,KAAKspE,oBAAsB,KAAKtpE,KAAKopE,yBACzC,CAEA,wBAAMG,GAGF,GAAIvpE,KAAK6oE,cAAcxM,UAAU1sD,SAAW63B,GAAkBC,cAC1D,MAAM,IAAI/mC,MAAM,qDAAqDV,KAAK6oE,cAAcxM,UAAU1sD,YAEtG,MAAM65D,QAA2BZ,GAAc5oE,KAAK6oE,eAC9CY,EAAeD,EAChB3jE,MAAM7F,KAAKspE,qBAAqB,GAChCzjE,MAAM7F,KAAKqpE,mBACXnpE,MAAM,GACLwpE,EAAmBD,EAAa1lE,OAKtC,GAAI2lE,IAAqB1pE,KAAKmpE,YAAY1lE,MAA6B,IAArBimE,EAC9C,MAAM,IAAIhpE,MAAM,4EAEpB,MAAMipE,EAA2B,IAAIl/D,MAAMi/D,GAC3C,IAAIE,EAA6B,EAC7BC,EAA0B,EAE9B,IAAK,IAAIhjE,EAAQ,EAAGA,EAAQ6iE,EAAkB7iE,IAAS,CACnD,MAAMijE,EAAcL,EAAa5iE,GAC3BkjE,EAA0B,CAAC,EACjCA,EAAwBn6D,QAAUwwB,GAAkB,MACpD,MAAM4pC,EAAgBF,EAAYjkE,MAAM,GAAG0jC,MAC3C,IAAI0gC,GAA0B,EAC1BC,GAAwB,EACxBC,GAAgB,EAChBC,EAAYnB,GAChB,IAAK,MAAMoB,KAAgBL,EACvB,GAAKC,EAeL,GAA4B,KAAxBI,EAAarkE,OAQjB,GAAKkkE,EAeIH,EAAwBhpD,aACzBgpD,EAAwBhpD,WAAa,IAEzCgpD,EAAwBhpD,YAAcspD,MAlBd,CACxB,IAAqD,IAAjDA,EAAavjE,QAAQiiE,IAErB,MAAM,IAAIroE,MAAM,uCAAuC2pE,qCAAgDtB,QAG3G,MAAMuB,EAASD,EAAaxkE,MAAMkjE,IAClCgB,EAAwBn6D,QAAQ7M,IAAIunE,EAAO,GAAIA,EAAO,IAClDA,EAAO,KAAO,GAAgBphC,kBAC9B6gC,EAAwBvqB,UAAY8qB,EAAO,GAC3CH,GAAgB,EAExB,MAlBSD,IACDA,GAAwB,QAX5B,GALIG,EAAankE,WAAW,GAAgB8hC,cACxCoiC,EAAY/9D,SAASg+D,EAAaxkE,MAAMkjE,IAAuB,KAI/DsB,EAAankE,WAAWsjC,IAAmB,CAC3CygC,GAA0B,EAC1B,MAAMK,EAASD,EAAaxkE,MAAMmjE,IAClCe,EAAwBp6D,OAAStD,SAASi+D,EAAO,IACjDP,EAAwBQ,cAAgBD,EAAOpqE,MAAM,GAAGuH,KAAKuhE,GACjE,CAoCJoB,IAAcnB,IACdr0D,OAAO41D,UAAUJ,IACjBA,GAAa,GACbA,EAAYpqE,KAAKmpE,YAAY1lE,WACWrD,IAAxCupE,EAAyBS,IACzBL,EAAwBU,SAAWzqE,KAAKmpE,YAAYlmE,IAAImnE,GACxDT,EAAyBS,GAAaL,GAGtC,GAAOxlE,MAAM,gBAAgBsC,wEAA4EujE,KAEzGD,EACAN,IAGAD,GAER,CACA,MAAO,CACHH,aAAcE,EACdC,2BAA4BA,EAC5BC,wBAAyBA,EAEjC,ECpIJ,IAAIa,GCCOC,IDAX,SAAWD,GACPA,EAAgBA,EAAgB,UAAY,GAAK,SACjDA,EAAgBA,EAAgB,YAAc,GAAK,UACtD,EAHD,CAGGA,KAAoBA,GAAkB,CAAC,IAInC,MAAME,GAOT,iBAAaC,CAAKj8D,GACd,OAAO,IAAI7F,SAASC,SACO5I,IAAnBJ,KAAKiP,KAAKL,IAAsB5O,KAAKiP,KAAKL,KAAS87D,GAAgBI,UACnE9qE,KAAKiP,KAAKL,GAAO87D,GAAgBK,OACjC/hE,KAGAhJ,KAAKgrE,cAAcp8D,GAAK,KACpB5O,KAAKiP,KAAKL,GAAO87D,GAAgBK,OACjC/hE,GAAS,GAEjB,GAER,CAMA,mBAAaiiE,CAAOr8D,GAChB,OAAO,IAAI7F,SAASC,IACZhJ,KAAKiP,KAAKL,KAAS87D,GAAgBK,QACnC/qE,KAAKkrE,gBAAgBt8D,UAElB5O,KAAKiP,KAAKL,GACjB5F,GAAS,GAEjB,CACA,oBAAOgiE,CAAcp8D,EAAKu8D,QACM/qE,IAAxBJ,KAAKorE,UAAUx8D,GACf5O,KAAKorE,UAAUx8D,GAAO,CAACu8D,GAGvBnrE,KAAKorE,UAAUx8D,GAAKhO,KAAKuqE,EAEjC,CACA,sBAAOD,CAAgBt8D,GACnB,QAA4BxO,IAAxBJ,KAAKorE,UAAUx8D,IAAsB5O,KAAKorE,UAAUx8D,GAAK7K,OAAS,EAAG,CACrE,MAAMonE,EAAUnrE,KAAKorE,UAAUx8D,GAAK6Y,QACpC4jD,cAAa,KACTF,EAAQrlD,KAAK9lB,KAAK,GAE1B,CACJ,EAEJ4qE,GAAM37D,KAAO,CAAC,EACd27D,GAAMQ,UAAY,CAAC,EE1CZ,MAAME,GACT,WAAAzrE,GACIG,KAAKskE,MAAQ,QACbtkE,KAAKurE,aAAe,IAAIC,EAC5B,CAMA,uBAAAC,GACI,OAAOzrE,KAAKurE,aAAaG,yBAC7B,CAIA,kBAAAC,GACI,OAAO3rE,KAAKurE,aAAaI,oBAC7B,CAIA,cAAAC,GACI,OAAO5rE,KAAKurE,aAAaK,gBAC7B,CACA,2BAAMC,CAAsBC,EAAYC,SAC9BnB,GAAMC,KAAK7qE,KAAKskE,OACtB,IACItkE,KAAKurE,aAAaS,iBAAiBF,SAC7BC,IACN/rE,KAAKurE,aAAaU,kBAAkBH,EACxC,CACA,cACUlB,GAAMK,OAAOjrE,KAAKskE,MAC5B,CACJ,CACA,YAAA4H,CAAaC,GAIT,GAHKnsE,KAAKmsE,YACNnsE,KAAKmsE,UAAYA,GAEjBnsE,KAAKmsE,YAAcA,EACnB,MAAM,IAAIngC,WAAW,yFAAyFhsC,KAAKmsE,wBAE3H,CACA,gBAAMC,CAAWC,EAAiBC,EAAqB/rE,GACnD,IAAI4O,EACA0U,EACJ,GAA+B,kBAApBwoD,IACL,IAAUC,aAA+Bz5B,IACvCy5B,aAA+Br5B,IAC/BnrB,GAAkBwkD,IAEtBn9D,EAAMk9D,EACNxoD,EAAayoD,MAEZ,MAAID,aAA2BrL,IAOhC,MAAM,IAAIh1B,WAAW,iFALrB78B,EAAMk9D,EAAgBl9D,IACtB0U,EAAawoD,EAAgBxoD,WAC7BtjB,EAAU+rE,CAId,CAIA,OAHK/rE,IACDA,EAAU,CAAC,GAERkd,GAAcd,SAAS,mCAAoCpc,GAAS2P,MAAOwM,IAC9E1c,KAAKksE,aAAa,gBACZlsE,KAAK6rE,sBAAsB,CAC7B18D,IAAKA,EACL0U,WAAYA,IACb3T,gBACO,IAAI8wD,GAAW7xD,EAAKnP,KAAKurE,aAAagB,eAAe1oD,IAAalgB,OAAO+Y,EAAe,GAChG,GAEV,CACA,uBAAM8vD,CAAkBH,EAAiBI,EAAkBC,EAAensE,GACtE,IAAI4O,EACA0U,EACAwpC,EACJ,GAA+B,kBAApBgf,IACL,IAAUI,aAA4B55B,IACpC45B,aAA4Bx5B,IAC5BnrB,GAAkB2kD,IAEtBt9D,EAAMk9D,EACNxoD,EAAa4oD,EACbpf,EAAOqf,MAEN,MAAIL,aAA2BrL,IAQhC,MAAM,IAAIh1B,WAAW,iFANrB78B,EAAMk9D,EAAgBl9D,IACtB0U,EAAawoD,EAAgBxoD,WAC7BwpC,EAAOof,EACPlsE,EAAUmsE,CAId,CAIA,OAHKnsE,IACDA,EAAU,CAAC,GAERkd,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E1c,KAAKksE,aAAa,uBACZlsE,KAAK6rE,sBAAsB,CAC7B18D,IAAKA,EACL0U,WAAYA,IACb3T,gBACO,IAAI8wD,GAAW7xD,EAAKnP,KAAKurE,aAAagB,eAAe1oD,IAAaggD,cAAcxW,EAAM3wC,EAAe,GAC7G,GAEV,EAMJ,MAAM8uD,GACF,WAAA3rE,GACIG,KAAK2sE,eAAiB,EACtB3sE,KAAKsQ,KAAO,GACZ,MAAMs8D,EAAW,IAEjB5sE,KAAKmT,SAAW,SAASy5D,IAIzB5sE,KAAK6sE,iBAAmB,KAAK7sE,KAAKmT,WAAWo2B,KAAmB,GAAgBlB,iCAAiCkB,KAAmB,GAAgBnB,oCAEpJpoC,KAAKsqD,qBAAuB,6BAA6BtqD,KAAKmT,WAE9DnT,KAAK8sE,mBAAqB,KAAK9sE,KAAKmT,aACpCnT,KAAKmpE,YAAc,IAAIpnE,GAC3B,CAQA,cAAAwqE,CAAe1oD,GACX,MAAM6xB,EAAe1xC,IACrB0xC,EAAar1C,UAAUk4B,GAAoB,CACvCC,aAAY,GACZxC,kBAAmB,CACf/J,IAAK,CACDG,WAAY,QAGpB,CAAE5rB,MAAO,cAEbk1C,EAAar1C,UAAU0sE,MAEvBr3B,EAAar1C,UAAU2sE,GAA2BhtE,MAAO,CAAES,WAAY,SACnEqnB,GAAkBjE,GAClB6xB,EAAar1C,UAAU+kB,GAAgC,CACnDvB,aACAU,OAAQ0iB,GACR5hB,mBAAoB,CAAEG,4BAA6BiZ,MACnD,CAAEj+B,MAAO,SAERqjB,aAAsBgvB,IAC3B6C,EAAar1C,UAAUuzC,GAAiC,CACpDhJ,YAAa/mB,EAAW+mB,YACxBC,WAAYhnB,EAAWgnB,aACvB,CAAErqC,MAAO,SAEjB,MAAMc,EAAW,IAAI4yC,GAAS,IAI9B,OAFA5yC,EAASgzC,YAAczwB,EACvBviB,EAASq0C,cAAgBD,EAClBp0C,CACX,CACA,sBAAA2rE,CAAuB7rE,GAEnBpB,KAAKsQ,MAAQ,CACTtQ,KAAK6sE,iBACL,GAAG,GAAgB7kC,eAAehoC,KAAK2sE,iBACvC,GACA,GAAGvrE,EAAQiP,OAAO5D,cAAcq/B,GAAmB1qC,EAAQ+N,QAAQq6B,KAAmBD,MACxF9hC,KAAK8hC,IACP,IAAK,MAAOtoC,EAAMmK,KAAUhK,EAAQwO,QAChC5P,KAAKsQ,MAAQ,GAAGrP,MAASmK,IAAQm+B,KAErCvpC,KAAKsQ,MAAQi5B,EAGjB,CACA,gBAAAyiC,CAAiBF,GACb,GAAI9rE,KAAK2sE,gBAAkBrjC,GACvB,MAAM,IAAI0C,WAAW,iBAAiB1C,qCAG1C,MAAMvO,EAAO6Q,GAAWkgC,EAAW38D,KACnC,IAAK4rB,GAAiB,KAATA,EACT,MAAM,IAAIiR,WAAW,iCAAiC8/B,EAAW38D,OAEzE,CACA,iBAAA88D,CAAkBH,GACd9rE,KAAKmpE,YAAYpmE,IAAI/C,KAAK2sE,eAAgBb,GAC1C9rE,KAAK2sE,gBACT,CAEA,kBAAAhB,GACI,MAAO,GAAG3rE,KAAKsQ,OAAOtQ,KAAK8sE,qBAAqBvjC,IACpD,CACA,uBAAAmiC,GACI,OAAO1rE,KAAKsqD,oBAChB,CACA,cAAAshB,GACI,OAAO5rE,KAAKmpE,WAChB,EAEJ,SAAS6D,GAA2BzB,GAChC,MAAO,CACHtqE,KAAM,6BACN,iBAAMC,CAAYE,GAEd,OADAmqE,EAAa0B,uBAAuB7rE,GAC7B,CACHA,UACAuO,OAAQ,IACRC,QAAS,KAEjB,EAER,CACA,SAASm9D,KACL,MAAO,CACH9rE,KAAM,0BACN,iBAAMC,CAAYE,EAASI,GACvB,IAAI0rE,EAAgB,GACpB,IAAK,MAAOjsE,KAASG,EAAQwO,QACrB09B,GAAOrsC,EAAM,GAAgBkoC,gBAC7B+jC,EAAgBjsE,GAMxB,MAHsB,KAAlBisE,GACA9rE,EAAQwO,QAAQjM,OAAOupE,GAEpB1rE,EAAKJ,EAChB,EAER,CC1PO,MAAM+rE,GACT,WAAAttE,CAAYsP,EAAKi+D,EAGjB7sE,GACI,IAAIe,EAEAA,EADAyyC,GAAeq5B,GACJA,EAOAh5B,GALLg5B,GAEiB,IAAIn6B,GAGkB1yC,GAEjD,MAAM83D,EAAuB,IAAIF,GAAqBhpD,EAAKmmC,GAAqBh0C,IAC1Ey5B,EAAO6Q,GAAWz8B,GAGpBnP,KAAKqtE,0BAFLtyC,GAAiB,MAATA,EAEyBs9B,EAAqBN,UAGrBM,EAAqBP,OAE9D,CAKA,WAAAwV,GACI,OAAO,IAAIhC,EACf,CACA,iBAAMiC,CAAYC,EAAmBlB,EAGrC/rE,GACI,MAAM+jE,EAAQ,IAAIgH,GAClB,IAAK,MAAMe,KAAmBmB,EACK,kBAApBnB,QACD/H,EAAM8H,WAAWC,EAAiBC,EAAqB/rE,SAGvD+jE,EAAM8H,WAAWC,EAAiBC,GAGhD,OAAOtsE,KAAKwxD,YAAY8S,EAC5B,CACA,wBAAMmJ,CAAmBD,EAAmBf,EAAkBC,EAG9DnsE,GACI,MAAM+jE,EAAQ,IAAIgH,GAClB,IAAK,MAAMe,KAAmBmB,EACK,kBAApBnB,QACD/H,EAAMkI,kBAAkBH,EAAiBI,EAAkBC,EAAensE,SAG1E+jE,EAAMkI,kBAAkBH,EAAiBI,EAAkBC,GAGzE,OAAO1sE,KAAKwxD,YAAY8S,EAC5B,CAoCA,iBAAM9S,CAAY+Z,EAAchrE,EAAU,CAAC,GACvC,IAAKgrE,GAAuD,IAAvCA,EAAaK,iBAAiBnoE,KAC/C,MAAM,IAAIuoC,WAAW,0DAEzB,OAAOvuB,GAAcd,SAAS,8BAA+Bpc,GAAS2P,MAAOwM,IACzE,MAAMgxD,EAAmBnC,EAAaI,qBAEhCgC,EAAmBr8B,SAAqBtxC,KAAKqtE,0BAA0B7b,YAAYsX,GAAe4E,GAAmBnC,EAAaE,0BAA2BiC,EAAkBtoE,OAAOC,OAAO,CAAC,EAAGqX,KAEjMkxD,EAAsB,IAAI1E,GAAoByE,EAAkBpC,EAAaK,kBAC7EiC,QAAwBD,EAAoBrE,qBAC5Ch5D,EAAM,CACR8rD,UAAWsR,EAAiBtR,UAC5BnoD,YAAay5D,EAAiBz5D,YAC9BsrC,UAAWmuB,EAAiBnuB,UAC5BjoC,UAAWo2D,EAAiBp2D,UAC5BgoC,gBAAiBouB,EAAiBpuB,gBAClChyC,QAASogE,EAAiBpgE,QAC1Bk8D,aAAcoE,EAAgBpE,aAC9BG,2BAA4BiE,EAAgBjE,2BAC5CC,wBAAyBgE,EAAgBhE,yBAE7C,OAAOt5D,CAAG,GAElB,ECxHG,MAAMu9D,WAAwB,GAIjC,iBAAIrzB,GACA,OAAOz6C,KAAKihE,cAChB,CACA,WAAAphE,CAAYqhE,EAAuBC,EAGnC5gE,GACI,IAAIe,EACA6N,EAEJ,GADA5O,EAAUA,GAAW,CAAC,EAClBwzC,GAAeotB,GAEfhyD,EAAM+xD,EACN5/D,EAAW6/D,OAEV,GAAK,IAAUA,aAA+CtuB,IAC/DsuB,aAA+CluB,IAC/CnrB,GAAkBq5C,GAElBhyD,EAAM+xD,EACN5/D,EAAW8yC,GAAY+sB,EAAqC5gE,QAE3D,GAAK4gE,GACyC,kBAAxCA,EAMN,KAAIA,GAC0C,kBAAxCA,EA6BP,MAAM,IAAIzgE,MAAM,2DA7ByC,CAEzD,MAAM+5C,EAAgB0mB,EAChBE,EAAiB52B,GAA6By2B,GACpD,GAA4B,sBAAxBG,EAAer2B,KAA8B,CAC7C,IAAI,GASA,MAAM,IAAItqC,MAAM,sEATR,CACR,MAAMi6D,EAAsB,IAAI9nB,GAA2BwuB,EAAez2B,YAAay2B,EAAex2B,YACtG17B,EAAMg8B,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IACxDl6C,EAAQ4d,eACT5d,EAAQ4d,aAAevE,GAAwBynD,EAAej3B,WAElE9oC,EAAW8yC,GAAYumB,EAAqBp6D,EAChD,CAIJ,KACK,IAA4B,kBAAxB8gE,EAAer2B,KAQpB,MAAM,IAAItqC,MAAM,4FAPhByO,EACIg8B,GAAgBk2B,EAAelyD,IAAK2sB,mBAAmB2e,IACnD,IACA4mB,EAAep2B,WACvB3pC,EAAW8yC,GAAY,IAAInB,GAAuB1yC,EAItD,CACJ,CAGA,MAlCI4O,EAAM+xD,EACN5/D,EAAW8yC,GAAY,IAAInB,GAAuB1yC,GAkCtDkI,MAAM0G,EAAK7N,GACXtB,KAAKihE,eAAiBjhE,KAAK+tE,0BAC3B/tE,KAAKguE,iBAAmBhuE,KAAKq4D,qBAAqBN,SACtD,CAkBA,YAAMn2D,CAAOrB,EAAU,CAAC,GACpB,OAAOkd,GAAcd,SAAS,yBAA0Bpc,GAAS2P,MAAOwM,GAC7D40B,SAAqBtxC,KAAKguE,iBAAiBpsE,OAAO8a,KAEjE,CASA,uBAAMyoD,CAAkB5kE,EAAU,CAAC,GAC/B,OAAOkd,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,IAAI3c,EAAIgN,EACR,IACI,MAAMwD,QAAYvQ,KAAK4B,OAAO8a,GAC9B,OAAOtX,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAAQtyD,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,WACnF,CACA,MAAOxxD,IACH,GAA6E,4BAAnD,QAApB9K,EAAK8K,GAAEqzB,eAA4B,IAAPn+B,OAAgB,EAASA,EAAGy/C,WAC1D,OAAOp6C,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAA+B,QAArB91D,EAAKlC,GAAE6E,gBAA6B,IAAP3C,OAAgB,EAASA,EAAG6c,eAAgB,CAAEyyC,UAAWxxD,GAAE6E,WAGlJ,MAAM7E,EAEd,IAER,CAUA,YAAM83D,CAAOpiE,EAAU,CAAC,GACpB,OAAOkd,GAAcd,SAAS,yBAA0Bpc,GAAS2P,MAAOwM,IACpE,IAKI,aAJM1c,KAAK8wD,cAAc,CACrBjoD,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,kBAE5B,CACX,CACA,MAAO5R,IACH,GAAqB,MAAjBA,GAAEmS,WACF,OAAO,EAEX,MAAMnS,EACV,IAER,CAOA,aAAAojE,CAAc58B,GACV,OAAO,IAAI2vB,GAAW71B,GAAgBnrC,KAAKmP,IAAKiiC,GAAWC,IAAYrxC,KAAKsB,SAChF,CAMA,mBAAAsgE,CAAoBvwB,GAChB,OAAO,IAAIwwB,GAAiB12B,GAAgBnrC,KAAKmP,IAAKiiC,GAAWC,IAAYrxC,KAAKsB,SACtF,CAgBA,kBAAAwgE,CAAmBzwB,GACf,OAAO,IAAI0wB,GAAgB52B,GAAgBnrC,KAAKmP,IAAKiiC,GAAWC,IAAYrxC,KAAKsB,SACrF,CAMA,iBAAA0gE,CAAkB3wB,GACd,OAAO,IAAI4wB,GAAe92B,GAAgBnrC,KAAKmP,IAAKiiC,GAAWC,IAAYrxC,KAAKsB,SACpF,CAaA,mBAAMwvD,CAAcvwD,EAAU,CAAC,GAI3B,OAHKA,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEnBv+C,GAAcd,SAAS,gCAAiCpc,GAAS2P,MAAOwM,GACpE40B,SAAqBtxC,KAAKguE,iBAAiBld,cAAc1rD,OAAOC,OAAOD,OAAOC,OAAO,CAAEwD,YAAatI,EAAQsI,aAAetI,EAAQy7D,YAAa,CAAEv/C,eAAgBC,EAAeD,oBAEhM,CAQA,YAAM,CAAOlc,EAAU,CAAC,GAIpB,OAHKA,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEnBv+C,GAAcd,SAAS,yBAA0Bpc,GAAS2P,MAAOwM,GAC7D40B,SAAqBtxC,KAAKguE,iBAAiBrqE,OAAO,CACrDkF,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B37D,EAAQy7D,WAClCv/C,eAAgBC,EAAeD,mBAG3C,CAQA,oBAAMmmD,CAAeriE,EAAU,CAAC,GAC5B,OAAOkd,GAAcd,SAAS,iCAAkCpc,GAAS2P,MAAOwM,IAC5E,IAAI3c,EAAIgN,EACR,IACI,MAAMwD,QAAYvQ,KAAK2D,OAAO+Y,GAC9B,OAAOtX,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAAQtyD,GAAM,CAAE8rD,UAAW9rD,EAAI8rD,WACnF,CACA,MAAOxxD,IACH,GAA6E,uBAAnD,QAApB9K,EAAK8K,GAAEqzB,eAA4B,IAAPn+B,OAAgB,EAASA,EAAGy/C,WAC1D,OAAOp6C,OAAOC,OAAOD,OAAOC,OAAO,CAAEw9D,WAAW,GAA+B,QAArB91D,EAAKlC,GAAE6E,gBAA6B,IAAP3C,OAAgB,EAASA,EAAG6c,eAAgB,CAAEyyC,UAAWxxD,GAAE6E,WAEtJ,MAAM7E,EACV,IAER,CAaA,iBAAMmnD,CAAYpZ,EAAUr4C,EAAU,CAAC,GAInC,GAHKA,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEtBz7D,EAAQy7D,WAAWrR,kBACnB,MAAM,IAAI3e,WAAW,qGAEzB,OAAOvuB,GAAcd,SAAS,8BAA+Bpc,GAAS2P,MAAOwM,GAClE40B,SAAqBtxC,KAAKguE,iBAAiBhc,YAAY,CAC1DnpD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/BpjB,WACAsjB,yBAA0B37D,EAAQy7D,WAClCv/C,eAAgBC,EAAeD,mBAG3C,CAYA,qBAAMy1C,CAAgB3xD,EAAU,CAAC,GAI7B,OAHKA,EAAQy7D,aACTz7D,EAAQy7D,WAAa,CAAC,GAEnBv+C,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,IAC7E,MAAMhN,EAAW4hC,SAAqBtxC,KAAKguE,iBAAiB9b,gBAAgB,CACxErpD,YAAatI,EAAQsI,YACrBs5D,sBAAuB5hE,EAAQy7D,WAC/Bv/C,eAAgBC,EAAeD,kBAE7BlM,EAAM,CACR8rD,UAAW3sD,EAAS2sD,UACpBvb,iBAAkBpxC,EAASoxC,iBAC3BzrC,KAAM3F,EAAS2F,KACf0jC,KAAMrpC,EAASqpC,KACfyG,UAAW9vC,EAAS8vC,UACpB1G,aAAcppC,EAASopC,aACvBvhC,UAAW7H,EAAS6H,UACpBgoC,gBAAiB7vC,EAAS6vC,gBAC1B2uB,kBAAmB,GACnB3gE,QAASmC,EAASnC,SAEtB,IAAK,MAAMusD,KAAcpqD,EAAU,CAC/B,IAAIorC,EACAgf,EAAWhf,eACXA,EAAe,CACXE,YAAa8e,EAAWhf,aAAaE,aAErC8e,EAAWhf,aAAajB,YACxBiB,EAAajB,UAAY,IAAIlvC,KAAKmvD,EAAWhf,aAAajB,YAE1DigB,EAAWhf,aAAalB,WACxBkB,EAAalB,SAAW,IAAIjvC,KAAKmvD,EAAWhf,aAAalB,YAGjErpC,EAAI29D,kBAAkBttE,KAAK,CACvBk6C,eACAD,GAAIif,EAAWjf,IAEvB,CACA,OAAOtqC,CAAG,GAElB,CAkBA,qBAAM6hD,CAAgB3H,EAAQK,EAAcvqD,EAAU,CAAC,GAEnD,OADAA,EAAQy7D,WAAaz7D,EAAQy7D,YAAc,CAAC,EACrCv+C,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,IAC7E,MAAMyxD,EAAM,GACZ,IAAK,MAAMrU,KAAchP,GAAgB,GACrCqjB,EAAIvtE,KAAK,CACLk6C,aAAc,CACVjB,UAAWigB,EAAWhf,aAAajB,UAC7BzN,GAAqB0tB,EAAWhf,aAAajB,WAC7C,GACNmB,YAAa8e,EAAWhf,aAAaE,YACrCpB,SAAUkgB,EAAWhf,aAAalB,SAC5BxN,GAAqB0tB,EAAWhf,aAAalB,UAC7C,IAEViB,GAAIif,EAAWjf,KAGvB,OAAOvJ,SAAqBtxC,KAAKguE,iBAAiB5b,gBAAgB,CAC9DvpD,YAAatI,EAAQsI,YACrB4hD,SACAK,aAAcqjB,EACdhM,sBAAuB5hE,EAAQy7D,WAC/BE,yBAA0B37D,EAAQy7D,WAClCv/C,eAAgBC,EAAeD,iBAChC,GAEX,CAOA,kBAAAymD,CAAmBC,GACf,OAAO,IAAIzH,GAAgB17D,KAAMmjE,EACrC,CAuBA,qBAAMiL,CAAgB/8B,EAAU/gC,EAAMgD,EAAe/S,EAAU,CAAC,GAC5D,OAAOkd,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,IAC7E,MAAM2xD,EAAkBruE,KAAK8hE,mBAAmBzwB,GAC1C3hC,QAAiB2+D,EAAgBtX,OAAOzmD,EAAMgD,EAAeoJ,GACnE,MAAO,CACH2xD,kBACA3+D,WACH,GAET,CAYA,gBAAM08D,CAAW/6B,EAAU9wC,EAAU,CAAC,GAClC,OAAOkd,GAAcd,SAAS,6BAA8Bpc,GAAS2P,MAAOwM,IACxE,IAAImiD,EAAa7+D,KAAKiuE,cAAc58B,GAIpC,OAHI9wC,EAAQ86C,YACRwjB,EAAaA,EAAW8C,YAAYphE,EAAQ86C,YAEzCwjB,EAAWl7D,OAAO+Y,EAAe,GAEhD,CAWA,yBAAM02C,CAAoB/a,EAAQ93C,EAAU,CAAC,GACzC,OAAOkd,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,IACjF,MAAMhN,EAAW4hC,SAAqBtxC,KAAKguE,iBAAiB5a,oBAAoBhuD,OAAOC,OAAOD,OAAOC,OAAO,CAAEgzC,UAAU93C,GAAU,CAAEkc,eAAgBC,EAAeD,mBAC7JwmD,EAAkB79D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,GAAW,CAAE2sD,UAAWj3D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,EAAS2sD,WAAY,CAAExyC,WAAYqmB,GAAsCxgC,EAAS2sD,UAAUxyC,cAAgBumB,QAAShrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,EAAS0gC,SAAU,CAAEC,UAAW3gC,EAAS0gC,QAAQC,UAAUvqC,KAAKwoE,IACzT,MAAM/9B,EAAWnrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGipE,GAAmB,CAAErtE,KAAM8uC,GAAiBu+B,EAAiBrtE,MAAO4sC,KAAMI,GAAOqgC,EAAiB/yB,UAAWinB,kCAAmCxzB,GAA6Bs/B,EAAiB9yB,6BAC/O,OAAOjL,CAAQ,QAE3B,OAAO0yB,CAAe,GAE9B,CAYA,8BAAM3P,CAAyB/2B,EAAW8b,EAAQ93C,EAAU,CAAC,GACzD,OAAOkd,GAAcd,SAAS,2CAA4Cpc,GAAS2P,MAAOwM,IACtF,IAAI3c,EACJ,MAAM2P,EAAW4hC,SAAqBtxC,KAAKguE,iBAAiB1a,yBAAyB/2B,EAAWn3B,OAAOC,OAAOD,OAAOC,OAAO,CAAEgzC,UAAU93C,GAAU,CAAEkc,eAAgBC,EAAeD,mBAC7KwmD,EAAkB79D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,GAAW,CAAE2sD,UAAWj3D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,EAAS2sD,WAAY,CAAExyC,WAAY2mB,GAA2C9gC,EAAS2sD,UAAUxyC,cAAgBumB,QAAShrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,EAAS0gC,SAAU,CAAEC,UAAW3gC,EAAS0gC,QAAQC,UAAUvqC,KAAKwoE,IAC9T,MAAM/9B,EAAWnrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGipE,GAAmB,CAAErtE,KAAM8uC,GAAiBu+B,EAAiBrtE,MAAO4sC,KAAMI,GAAOqgC,EAAiB/yB,UAAWinB,kCAAmCxzB,GAA6Bs/B,EAAiB9yB,6BAC/O,OAAOjL,CAAQ,IACfE,aAAuD,QAAxC1wC,EAAK2P,EAAS0gC,QAAQK,oBAAiC,IAAP1wC,OAAgB,EAASA,EAAG+F,KAAK4qC,IAChG,MAAMC,EAAavrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqrC,GAAqB,CAAEzvC,KAAM8uC,GAAiBW,EAAmBzvC,QACpH,OAAO0vC,CAAU,QAE7B,OAAOsyB,CAAe,GAE9B,CAaA,YAAAsL,CAAaC,GACT,OAAOjoD,GAAiBvmB,KAAMunE,WAAW,UAAyBlvB,EAAQ93C,EAAU,CAAC,GACjF,IAAIkuE,EACJ,GAAMp2B,QAAqBj4C,IAAXi4C,EACZ,GACIo2B,QAAqCpoD,GAAQrmB,KAAKozD,oBAAoB/a,EAAQ93C,IAC9E83C,EAASo2B,EAA6Bj2B,8BAC1BnyB,SAAcA,GAAQooD,UAC7Bp2B,EAEjB,GACJ,CAMA,SAAAq2B,GACI,OAAOnoD,GAAiBvmB,KAAMunE,WAAW,UAAsBhnE,EAAU,CAAC,GACtE,IAAIR,EAAI2nE,EAAK36D,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAAuEr1B,EAAnE/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAKuuE,aAAal2B,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CACzID,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAMwhE,EAA+BzhE,QAC/BqZ,SAAeqB,GAAiBC,GAAc8mD,EAA6Br+B,QAAQC,YAC7F,CACJ,CACA,MAAOs3B,GAASD,EAAM,CAAEnjE,MAAOojE,EAAS,CACxC,QACI,IACS16D,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAI2kD,EAAK,MAAMA,EAAInjE,KAAO,CACxC,CACJ,GACJ,CAuEA,aAAAoqE,CAAcpuE,EAAU,CAAC,GACrB,MAAM0pD,EAAU,GACZ1pD,EAAQquE,aACR3kB,EAAQrpD,KAAK,QAEbL,EAAQsuE,gBACR5kB,EAAQrpD,KAAK,WAEbL,EAAQuuE,iBACR7kB,EAAQrpD,KAAK,YAEbL,EAAQwuE,kBACR9kB,EAAQrpD,KAAK,aAEbL,EAAQyuE,iBACR/kB,EAAQrpD,KAAK,YAEbL,EAAQ0uE,wBACRhlB,EAAQrpD,KAAK,oBAEbL,EAAQ2uE,aACRjlB,EAAQrpD,KAAK,QAEbL,EAAQ4uE,4BACRllB,EAAQrpD,KAAK,uBAEbL,EAAQ6uE,2BACRnlB,EAAQrpD,KAAK,sBAEbL,EAAQ8uE,kBACRplB,EAAQrpD,KAAK,aAEM,KAAnBL,EAAQ4Q,SACR5Q,EAAQ4Q,YAAS/Q,GAErB,MAAMsc,EAAiBtX,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAW0pD,EAAQlmD,OAAS,EAAI,CAAEkmD,QAASA,GAAY,CAAC,GAEzG6d,EAAO9nE,KAAK0uE,UAAUhyD,GAC5B,MAAO,CAIH,IAAAlb,GACI,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAKuuE,aAAavG,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe57B,IAGtH,CAcA,qBAAA4yD,CAAsBC,EAAaf,GAC/B,OAAOjoD,GAAiBvmB,KAAMunE,WAAW,UAAkChrC,EAAW8b,EAAQ93C,EAAU,CAAC,GACrG,IAAIivE,EACJ,GAAMn3B,QAAqBj4C,IAAXi4C,EACZ,GACIm3B,QAA0CnpD,GAAQrmB,KAAKszD,yBAAyB/2B,EAAW8b,EAAQ93C,IACnG83C,EAASm3B,EAAkCh3B,8BAC/BnyB,SAAcA,GAAQmpD,UAC7Bn3B,EAEjB,GACJ,CAOA,oBAAAo3B,CAAqBF,GACjB,OAAOhpD,GAAiBvmB,KAAMunE,WAAW,UAAiChrC,EAAWh8B,EAAU,CAAC,GAC5F,IAAIR,EAAIuoE,EAAKv7D,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAA2Fr1B,EAAvF/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAKsvE,sBAAsB/yC,EAAW8b,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CAC7JD,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAMuiE,EAAoCxiE,EACpCojC,EAAUo/B,EAAkCp/B,QAClD,GAAIA,EAAQK,aACR,IAAK,MAAMt/B,KAAUi/B,EAAQK,yBACbpqB,GAAQjhB,OAAOC,OAAO,CAAE2lC,KAAM,UAAY75B,IAG9D,IAAK,MAAMY,KAAQq+B,EAAQC,sBACXhqB,GAAQjhB,OAAOC,OAAO,CAAE2lC,KAAM,QAAUj5B,GAE5D,CACJ,CACA,MAAOw2D,GAASD,EAAM,CAAE/jE,MAAOgkE,EAAS,CACxC,QACI,IACSt7D,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAIulD,EAAK,MAAMA,EAAI/jE,KAAO,CACxC,CACJ,GACJ,CA+EA,oBAAAmrE,CAAqBnzC,EAAWh8B,EAAU,CAAC,GACvC,GAAkB,KAAdg8B,EACA,MAAM,IAAIyP,WAAW,mDAEzB,MAAMie,EAAU,GACZ1pD,EAAQquE,aACR3kB,EAAQrpD,KAAK,QAEbL,EAAQsuE,gBACR5kB,EAAQrpD,KAAK,WAEbL,EAAQuuE,iBACR7kB,EAAQrpD,KAAK,YAEbL,EAAQwuE,kBACR9kB,EAAQrpD,KAAK,aAEbL,EAAQyuE,iBACR/kB,EAAQrpD,KAAK,YAEbL,EAAQ0uE,wBACRhlB,EAAQrpD,KAAK,oBAEbL,EAAQ2uE,aACRjlB,EAAQrpD,KAAK,QAEbL,EAAQ4uE,4BACRllB,EAAQrpD,KAAK,uBAEbL,EAAQ6uE,2BACRnlB,EAAQrpD,KAAK,sBAEbL,EAAQ8uE,kBACRplB,EAAQrpD,KAAK,aAEM,KAAnBL,EAAQ4Q,SACR5Q,EAAQ4Q,YAAS/Q,GAErB,MAAMsc,EAAiBtX,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAW0pD,EAAQlmD,OAAS,EAAI,CAAEkmD,QAASA,GAAY,CAAC,GAEzG6d,EAAO9nE,KAAKyvE,qBAAqBlzC,EAAW7f,GAClD,MAAO,CAIH,UAAMlb,GACF,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAKsvE,sBAAsB/yC,EAAWyrC,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe57B,IAG1I,CAkBA,4BAAMizD,CAAuBC,EAAwBv3B,EAAQ93C,EAAU,CAAC,GACpE,OAAOkd,GAAcd,SAAS,yCAA0Cpc,GAAS2P,MAAOwM,IACpF,MAAMhN,EAAW4hC,SAAqBtxC,KAAKguE,iBAAiBtc,YAAY,CACpE7oD,YAAatI,EAAQsI,YACrByxC,MAAOs1B,EACPv3B,SACAC,YAAa/3C,EAAQ+3C,YACrB77B,eAAgBC,EAAeD,kBAE7BwmD,EAAkB79D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,GAAW,CAAE2sD,UAAW3sD,EAAS2sD,UAAW9hB,MAAO7qC,EAAS6qC,MAAMz0C,KAAKiM,IACvH,IAAIhS,EACJ,IAAI8vE,EAAW,GAIf,OAHqF,KAA3D,QAApB9vE,EAAKgS,EAAK87B,YAAyB,IAAP9tC,OAAgB,EAASA,EAAGiuC,WAAWjqC,UACrE8rE,EAAW99D,EAAK87B,KAAKG,WAAW,GAAG5iC,OAEhChG,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG0M,GAAO,CAAE87B,KAAMI,GAAOl8B,EAAK87B,MAAOgiC,YAAW,MAE5F,OAAO5M,CAAe,GAE9B,CAiBA,uBAAA6M,CAAwBC,EAA0BvB,GAC9C,OAAOjoD,GAAiBvmB,KAAMunE,WAAW,UAAoCqI,EAAwBv3B,EAAQ93C,EAAU,CAAC,GACpH,IAAImP,EACJ,GAAM2oC,QAAqBj4C,IAAXi4C,EACZ,GACI3oC,QAAiB2W,GAAQrmB,KAAK2vE,uBAAuBC,EAAwBv3B,EAAQ93C,IACrFmP,EAAS6qC,MAAQ7qC,EAAS6qC,OAAS,GACnClC,EAAS3oC,EAAS8oC,8BACNnyB,GAAQ3W,SACf2oC,EAEjB,GACJ,CAUA,oBAAA23B,CAAqBD,GACjB,OAAOxpD,GAAiBvmB,KAAMunE,WAAW,UAAiCqI,EAAwBrvE,EAAU,CAAC,GACzG,IAAIR,EAAIkwE,EAAKljE,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAA0Gr1B,EAAtG/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAK8vE,wBAAwBF,EAAwBv3B,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CAC5KD,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAMmjC,EAAUpjC,QACVqZ,SAAeqB,GAAiBC,GAAcyoB,EAAQmK,QAChE,CACJ,CACA,MAAO21B,GAASD,EAAM,CAAE1rE,MAAO2rE,EAAS,CACxC,QACI,IACSjjE,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAIktD,EAAK,MAAMA,EAAI1rE,KAAO,CACxC,CACJ,GACJ,CA8EA,eAAA4rE,CAAgBP,EAAwBrvE,EAAU,CAAC,GAE/C,MAAM6vE,EAAqBhrE,OAAOC,OAAO,CAAC,EAAG9E,GACvCunE,EAAO9nE,KAAKgwE,qBAAqBJ,EAAwBQ,GAC/D,MAAO,CAIH,IAAA5uE,GACI,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAK8vE,wBAAwBF,EAAwB5H,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe83B,IAGzJ,CACA,uBAAArC,GACI,IAAItzB,EACJ,IAMI,MAAMze,EAAY,IAAI5sB,IAAIpP,KAAKmP,KAoB/B,GAfIsrC,EAJqC,SAArCze,EAAU2P,SAAS9lC,MAAM,KAAK,GAIdm2B,EAAUE,SAASr2B,MAAM,KAAK,GAEzC6nC,GAAkB1R,GAIPA,EAAUE,SAASr2B,MAAM,KAAK,GAK9Bm2B,EAAUE,SAASr2B,MAAM,KAAK,GAGlD40C,EAAgBxK,mBAAmBwK,IAC9BA,EACD,MAAM,IAAI/5C,MAAM,sCAEpB,OAAO+5C,CACX,CACA,MAAOl2C,GACH,MAAM,IAAI7D,MAAM,6DACpB,CACJ,CAYA,cAAAqkE,CAAexkE,GACX,OAAO,IAAIwI,SAASC,IAChB,KAAMhJ,KAAK6jB,sBAAsBgvB,IAC7B,MAAM,IAAI7G,WAAW,yFAEzB,MAAMg5B,EAAMxK,GAA+Bp1D,OAAOC,OAAO,CAAEo1C,cAAez6C,KAAKihE,gBAAkB1gE,GAAUP,KAAK6jB,YAAYpX,WAC5HzD,EAAQijC,GAAiBjsC,KAAKmP,IAAK61D,GAAK,GAEhD,CAQA,kBAAAqL,GACI,OAAO,IAAIlD,GAAgBntE,KAAKmP,IAAKnP,KAAKsB,SAC9C,EC1mCG,MAAMgvE,GACT,WAAAzwE,GAIIG,KAAKuiB,MAAO,EAIZviB,KAAK82C,OAAQ,EAIb92C,KAAK2D,QAAS,EAId3D,KAAKw4D,eAAgB,EAIrBx4D,KAAKi5D,MAAO,EAIZj5D,KAAKgD,KAAM,EAIXhD,KAAK4B,QAAS,EAId5B,KAAK49D,QAAS,EAId59D,KAAK4E,SAAU,EAIf5E,KAAKy4D,KAAM,EAIXz4D,KAAKe,QAAS,EAIdf,KAAKi0D,uBAAwB,EAI7Bj0D,KAAK44D,iBAAkB,CAC3B,CAMA,YAAOtjD,CAAM0lC,GACT,MAAMu1B,EAAwB,IAAID,GAClC,IAAK,MAAMhS,KAAKtjB,EACZ,OAAQsjB,GACJ,IAAK,IACDiS,EAAsBhuD,MAAO,EAC7B,MACJ,IAAK,IACDguD,EAAsBz5B,OAAQ,EAC9B,MACJ,IAAK,IACDy5B,EAAsB5sE,QAAS,EAC/B,MACJ,IAAK,IACD4sE,EAAsB/X,eAAgB,EACtC,MACJ,IAAK,IACD+X,EAAsBtX,MAAO,EAC7B,MACJ,IAAK,IACDsX,EAAsBvtE,KAAM,EAC5B,MACJ,IAAK,IACDutE,EAAsB3uE,QAAS,EAC/B,MACJ,IAAK,IACD2uE,EAAsB3S,QAAS,EAC/B,MACJ,IAAK,IACD2S,EAAsB3rE,SAAU,EAChC,MACJ,IAAK,IACD2rE,EAAsB9X,KAAM,EAC5B,MACJ,IAAK,IACD8X,EAAsBxvE,QAAS,EAC/B,MACJ,IAAK,IACDwvE,EAAsBtc,uBAAwB,EAC9C,MACJ,IAAK,IACDsc,EAAsB3X,iBAAkB,EACxC,MACJ,QACI,MAAM,IAAI5sB,WAAW,iCAAiCsyB,KAGlE,OAAOiS,CACX,CAOA,WAAO58D,CAAKolD,GACR,MAAMwX,EAAwB,IAAID,GAwClC,OAvCIvX,EAAex2C,OACfguD,EAAsBhuD,MAAO,GAE7Bw2C,EAAejiB,QACfy5B,EAAsBz5B,OAAQ,GAE9BiiB,EAAep1D,SACf4sE,EAAsB5sE,QAAS,GAE/Bo1D,EAAeP,gBACf+X,EAAsB/X,eAAgB,GAEtCO,EAAeh4D,SACfwvE,EAAsBxvE,QAAS,GAE/Bg4D,EAAeN,MACf8X,EAAsB9X,KAAM,GAE5BM,EAAeE,OACfsX,EAAsBtX,MAAO,GAE7BF,EAAe/1D,MACfutE,EAAsBvtE,KAAM,GAE5B+1D,EAAen3D,SACf2uE,EAAsB3uE,QAAS,GAE/Bm3D,EAAe6E,SACf2S,EAAsB3S,QAAS,GAE/B7E,EAAen0D,UACf2rE,EAAsB3rE,SAAU,GAEhCm0D,EAAe9E,wBACfsc,EAAsBtc,uBAAwB,GAE9C8E,EAAeH,kBACf2X,EAAsB3X,iBAAkB,GAErC2X,CACX,CAWA,QAAA9jE,GAII,MAAMuuC,EAAc,GAwCpB,OAvCIh7C,KAAKuiB,MACLy4B,EAAYp6C,KAAK,KAEjBZ,KAAK82C,OACLkE,EAAYp6C,KAAK,KAEjBZ,KAAK2D,QACLq3C,EAAYp6C,KAAK,KAEjBZ,KAAKw4D,eACLxd,EAAYp6C,KAAK,KAEjBZ,KAAKe,QACLi6C,EAAYp6C,KAAK,KAEjBZ,KAAKy4D,KACLzd,EAAYp6C,KAAK,KAEjBZ,KAAKi5D,MACLje,EAAYp6C,KAAK,KAEjBZ,KAAKgD,KACLg4C,EAAYp6C,KAAK,KAEjBZ,KAAK4B,QACLo5C,EAAYp6C,KAAK,KAEjBZ,KAAK49D,QACL5iB,EAAYp6C,KAAK,KAEjBZ,KAAK4E,SACLo2C,EAAYp6C,KAAK,KAEjBZ,KAAKi0D,uBACLjZ,EAAYp6C,KAAK,KAEjBZ,KAAK44D,iBACL5d,EAAYp6C,KAAK,KAEdo6C,EAAYvzC,KAAK,GAC5B,ECrNG,MAAM+oE,GACT,WAAA3wE,GAIIG,KAAK83D,SAAU,EAIf93D,KAAK+3D,WAAY,EAIjB/3D,KAAKgsB,QAAS,CAClB,CAOA,YAAO1W,CAAMukD,GACT,MAAM4W,EAA0B,IAAID,GACpC,IAAK,MAAMlS,KAAKzE,EACZ,OAAQyE,GACJ,IAAK,IACDmS,EAAwB3Y,SAAU,EAClC,MACJ,IAAK,IACD2Y,EAAwB1Y,WAAY,EACpC,MACJ,IAAK,IACD0Y,EAAwBzkD,QAAS,EACjC,MACJ,QACI,MAAM,IAAIggB,WAAW,0BAA0BsyB,KAG3D,OAAOmS,CACX,CAOA,QAAAhkE,GACI,MAAMotD,EAAgB,GAUtB,OATI75D,KAAK83D,SACL+B,EAAcj5D,KAAK,KAEnBZ,KAAK+3D,WACL8B,EAAcj5D,KAAK,KAEnBZ,KAAKgsB,QACL6tC,EAAcj5D,KAAK,KAEhBi5D,EAAcpyD,KAAK,GAC9B,EC1DG,MAAMipE,GACT,WAAA7wE,GAIIG,KAAK+R,MAAO,EAIZ/R,KAAK2wE,MAAO,EAIZ3wE,KAAK4wE,OAAQ,EAIb5wE,KAAK6wE,OAAQ,CACjB,CAOA,YAAOv7D,CAAMskD,GACT,MAAMkX,EAAqB,IAAIJ,GAC/B,IAAK,MAAMpS,KAAK1E,EACZ,OAAQ0E,GACJ,IAAK,IACDwS,EAAmB/+D,MAAO,EAC1B,MACJ,IAAK,IACD++D,EAAmBH,MAAO,EAC1B,MACJ,IAAK,IACDG,EAAmBF,OAAQ,EAC3B,MACJ,IAAK,IACDE,EAAmBD,OAAQ,EAC3B,MACJ,QACI,MAAM,IAAI7kC,WAAW,8BAA8BsyB,KAG/D,OAAOwS,CACX,CAKA,QAAArkE,GACI,MAAMmtD,EAAW,GAajB,OAZI55D,KAAK+R,MACL6nD,EAASh5D,KAAK,KAEdZ,KAAK6wE,OACLjX,EAASh5D,KAAK,KAEdZ,KAAK4wE,OACLhX,EAASh5D,KAAK,KAEdZ,KAAK2wE,MACL/W,EAASh5D,KAAK,KAEXg5D,EAASnyD,KAAK,GACzB,ECzDG,SAASspE,GAAkCC,EAA2BrW,GACzE,MAAMptD,EAAUyjE,EAA0BzjE,QACpCyjE,EAA0BzjE,QAC1Bm5B,GACN,GAAIsqC,EAA0Bh2B,aAC1Bg2B,EAA0Bh2B,YAAYiZ,uBACtC1mD,EAAU,aACV,MAAMy+B,WAAW,mEAErB,GAAIglC,EAA0Bh2B,aAC1Bg2B,EAA0Bh2B,YAAYwd,eACtCjrD,EAAU,aACV,MAAMy+B,WAAW,mEAErB,GAAIglC,EAA0Bh2B,aAC1Bg2B,EAA0Bh2B,YAAY4d,iBACtCrrD,EAAU,aACV,MAAMy+B,WAAW,mEAErB,GAAIglC,EAA0Bh2B,aAC1Bg2B,EAA0Bh2B,YAAYyd,KACtClrD,EAAU,aACV,MAAMy+B,WAAW,mEAErB,GAAIglC,EAA0Bh2B,aAC1Bg2B,EAA0Bh2B,YAAYj6C,QACtCwM,EAAU,aACV,MAAMy+B,WAAW,mEAErB,GAAIglC,EAA0B/zB,iBAAmB1vC,EAAU,aACvD,MAAMy+B,WAAW,6EAErB,MAAMilC,EAAoBX,GAAsBh7D,MAAM07D,EAA0Bh2B,YAAYvuC,YACtFykE,EAAiBR,GAAmBp7D,MAAM07D,EAA0BpX,UAAUntD,WAC9E0kE,EAAsBX,GAAwBl7D,MAAM07D,EAA0BnX,eAAeptD,WACnG,IAAI4uD,EAEAA,EADA9tD,GAAW,aACI,CACXotD,EAAoB/vB,YACpBqmC,EACAC,EACAC,EACAH,EAA0Bp3B,SACpBxN,GAAqB4kC,EAA0Bp3B,UAAU,GACzD,GACNxN,GAAqB4kC,EAA0Bn3B,WAAW,GAC1Dm3B,EAA0B1X,QAAUD,GAAgB2X,EAA0B1X,SAAW,GACzF0X,EAA0BpyD,SAAWoyD,EAA0BpyD,SAAW,GAC1ErR,EACAyjE,EAA0B/zB,gBAAkB+zB,EAA0B/zB,gBAAkB,GACxF,IACFx1C,KAAK,MAGQ,CACXkzD,EAAoB/vB,YACpBqmC,EACAC,EACAC,EACAH,EAA0Bp3B,SACpBxN,GAAqB4kC,EAA0Bp3B,UAAU,GACzD,GACNxN,GAAqB4kC,EAA0Bn3B,WAAW,GAC1Dm3B,EAA0B1X,QAAUD,GAAgB2X,EAA0B1X,SAAW,GACzF0X,EAA0BpyD,SAAWoyD,EAA0BpyD,SAAW,GAC1ErR,EACA,IACF9F,KAAK,MAEX,MAAMiyD,EAAYiB,EAAoBY,kBAAkBF,GACxD,OAAO,IAAI7B,GAAmBjsD,EAASmsD,EAAWuX,EAAkBxkE,WAAYykE,EAAgBC,EAAqBH,EAA0BpyD,SAAUoyD,EAA0Bp3B,SAAUo3B,EAA0Bn3B,UAAWm3B,EAA0B1X,aAASl5D,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,EAAW4wE,EAA0B/zB,gBACjZ,CCrEO,MAAMm0B,WAA0B,GAanC,2BAAOC,CAAqBlnC,EAG5B5pC,GACIA,EAAUA,GAAW,CAAC,EACtB,MAAM8gE,EAAiB52B,GAA6BN,GACpD,GAA4B,sBAAxBk3B,EAAer2B,KAA8B,CAC7C,GAAI,GAAQ,CACR,MAAM2vB,EAAsB,IAAI9nB,GAA2BwuB,EAAez2B,YAAay2B,EAAex2B,YACjGtqC,EAAQ4d,eACT5d,EAAQ4d,aAAevE,GAAwBynD,EAAej3B,WAElE,MAAM9oC,EAAW8yC,GAAYumB,EAAqBp6D,GAClD,OAAO,IAAI6wE,GAAkB/P,EAAelyD,IAAK7N,EACrD,CAEI,MAAM,IAAIZ,MAAM,qEAExB,CACK,GAA4B,kBAAxB2gE,EAAer2B,KAA0B,CAC9C,MAAM1pC,EAAW8yC,GAAY,IAAInB,GAAuB1yC,GACxD,OAAO,IAAI6wE,GAAkB/P,EAAelyD,IAAM,IAAMkyD,EAAep2B,WAAY3pC,EACvF,CAEI,MAAM,IAAIZ,MAAM,2FAExB,CACA,WAAAb,CAAYsP,EAAKi+D,EAGjB7sE,GACI,IAAIe,EAEAA,EADAyyC,GAAeq5B,GACJA,EAEL,IAAUA,aAAgCv6B,IAChDu6B,aAAgCn6B,IAChCnrB,GAAkBslD,GACPh5B,GAAYg5B,EAAsB7sE,GAIlC6zC,GAAY,IAAInB,GAAuB1yC,GAEtDkI,MAAM0G,EAAK7N,GACXtB,KAAKsxE,eAAiBtxE,KAAKq4D,qBAAqBP,OACpD,CAaA,kBAAAyZ,CAAmB92B,GACf,OAAO,IAAIqzB,GAAgB3iC,GAAgBnrC,KAAKmP,IAAK2sB,mBAAmB2e,IAAiBz6C,KAAKsB,SAClG,CAQA,qBAAMkwE,CAAgB/2B,EAAel6C,EAAU,CAAC,GAC5C,OAAOkd,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,MAAM+0D,EAAkBzxE,KAAKuxE,mBAAmB92B,GAC1Ci3B,QAAgCD,EAAgB7vE,OAAO8a,GAC7D,MAAO,CACH+0D,kBACAC,0BACH,GAET,CAQA,qBAAMC,CAAgBl3B,EAAel6C,EAAU,CAAC,GAC5C,OAAOkd,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,MAAM+0D,EAAkBzxE,KAAKuxE,mBAAmB92B,GAChD,OAAOg3B,EAAgB9tE,OAAO+Y,EAAe,GAErD,CAUA,uBAAMk1D,CAAkB5mB,EAAsBC,EAAyB1qD,EAAU,CAAC,GAC9E,OAAOkd,GAAcd,SAAS,sCAAuCpc,GAAS2P,MAAOwM,IACjF,MAAM+0D,EAAkBzxE,KAAKuxE,mBAAmBhxE,EAAQsxE,0BAA4B7mB,GAE9EgjB,EAAmByD,EAAgB,wBAAwB1Z,UAC3D+Z,EAA4BxgC,SAAqB08B,EAAiB1b,QAAQ,CAC5EtH,uBACAC,0BACAxuC,eAAgBC,EAAeD,kBAEnC,MAAO,CAAEg1D,kBAAiBK,4BAA2B,GAE7D,CAUA,qBAAMC,CAAgB5mB,EAAqB0mB,EAA0BtxE,EAAU,CAAC,GAC5E,OAAOkd,GAAcd,SAAS,oCAAqCpc,GAAS2P,MAAOwM,IAC/E,IAAI3c,EACJ,MAAM0xE,EAAkBzxE,KAAKuxE,mBAAmBM,GAE1C7D,EAAmByD,EAAgB,wBAAwB1Z,UAC3Dia,EAA0B1gC,SAAqB08B,EAAiBxb,OAAOrH,EAAqB/lD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqX,GAAiB,CAAE0uC,cAAkD,QAAlCrrD,EAAKQ,EAAQ0xE,uBAAoC,IAAPlyE,OAAgB,EAASA,EAAGmiD,YAC3O,MAAO,CAAEuvB,kBAAiBO,0BAAyB,GAE3D,CASA,mBAAMlhB,CAAcvwD,EAAU,CAAC,GAC3B,OAAOkd,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,GACtE40B,SAAqBtxC,KAAKsxE,eAAexgB,cAAc,CAC1DjoD,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,mBAG3C,CAUA,mBAAMm0C,CAAcjY,EAAYp4C,EAAU,CAAC,GACvC,OAAOkd,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,GACtE40B,SAAqBtxC,KAAKsxE,eAAe1gB,cAAcjY,EAAY,CACtE9vC,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,mBAG3C,CAUA,mBAAMu0C,CAAczwD,EAAU,CAAC,GAC3B,OAAOkd,GAAcd,SAAS,kCAAmCpc,GAAS2P,MAAOwM,GACtE40B,SAAqBtxC,KAAKsxE,eAAetgB,cAAc,CAC1DnoD,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,mBAG3C,CAWA,oBAAM60C,CAAe/wD,EAAU,CAAC,GAC5B,OAAOkd,GAAcd,SAAS,mCAAoCpc,GAAS2P,MAAOwM,GACvE40B,SAAqBtxC,KAAKsxE,eAAehgB,eAAe,CAC3DzoD,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,mBAG3C,CAeA,2BAAMy0C,CAAsB7Y,EAAQ93C,EAAU,CAAC,GAC3C,OAAOkd,GAAcd,SAAS,0CAA2Cpc,GAAS2P,MAAOwM,GAC9E40B,SAAqBtxC,KAAKsxE,eAAepgB,sBAAsB9rD,OAAOC,OAAOD,OAAOC,OAAO,CAAEwD,YAAatI,EAAQsI,YAAawvC,UAAU93C,GAAU,CAAE0pD,QAAoC,kBAApB1pD,EAAQ0pD,QAAuB,CAAC1pD,EAAQ0pD,SAAW1pD,EAAQ0pD,QAASxtC,eAAgBC,EAAeD,oBAEvR,CAmBA,4BAAMkzD,CAAuBC,EAAwBv3B,EAAQ93C,EAAU,CAAC,GACpE,OAAOkd,GAAcd,SAAS,2CAA4Cpc,GAAS2P,MAAOwM,IACtF,MAAMhN,EAAW4hC,SAAqBtxC,KAAKsxE,eAAe5f,YAAY,CAClE7oD,YAAatI,EAAQsI,YACrByxC,MAAOs1B,EACPv3B,SACAC,YAAa/3C,EAAQ+3C,YACrB77B,eAAgBC,EAAeD,kBAE7BwmD,EAAkB79D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqK,GAAW,CAAE2sD,UAAW3sD,EAAS2sD,UAAW9hB,MAAO7qC,EAAS6qC,MAAMz0C,KAAKiM,IACvH,IAAIhS,EACJ,IAAI8vE,EAAW,GAIf,OAHqF,KAA3D,QAApB9vE,EAAKgS,EAAK87B,YAAyB,IAAP9tC,OAAgB,EAASA,EAAGiuC,WAAWjqC,UACrE8rE,EAAW99D,EAAK87B,KAAKG,WAAW,GAAG5iC,OAEhChG,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG0M,GAAO,CAAE87B,KAAMI,GAAOl8B,EAAK87B,MAAOgiC,YAAW,MAE5F,OAAO5M,CAAe,GAE9B,CAiBA,uBAAA6M,CAAwBC,EAA0BvB,GAC9C,OAAOjoD,GAAiBvmB,KAAMunE,WAAW,UAAoCqI,EAAwBv3B,EAAQ93C,EAAU,CAAC,GACpH,IAAImP,EACJ,GAAM2oC,QAAqBj4C,IAAXi4C,EACZ,GACI3oC,QAAiB2W,GAAQrmB,KAAK2vE,uBAAuBC,EAAwBv3B,EAAQ93C,IACrFmP,EAAS6qC,MAAQ7qC,EAAS6qC,OAAS,GACnClC,EAAS3oC,EAAS8oC,8BACNnyB,GAAQ3W,SACf2oC,EAEjB,GACJ,CAUA,oBAAA23B,CAAqBD,GACjB,OAAOxpD,GAAiBvmB,KAAMunE,WAAW,UAAiCqI,EAAwBrvE,EAAU,CAAC,GACzG,IAAIR,EAAI2nE,EAAK36D,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAA0Gr1B,EAAtG/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAK8vE,wBAAwBF,EAAwBv3B,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CAC5KD,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAMmjC,EAAUpjC,QACVqZ,SAAeqB,GAAiBC,GAAcyoB,EAAQmK,QAChE,CACJ,CACA,MAAOotB,GAASD,EAAM,CAAEnjE,MAAOojE,EAAS,CACxC,QACI,IACS16D,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAI2kD,EAAK,MAAMA,EAAInjE,KAAO,CACxC,CACJ,GACJ,CAgFA,eAAA4rE,CAAgBP,EAAwBrvE,EAAU,CAAC,GAE/C,MAAM6vE,EAAqBhrE,OAAOC,OAAO,CAAC,EAAG9E,GACvCunE,EAAO9nE,KAAKgwE,qBAAqBJ,EAAwBQ,GAC/D,MAAO,CAIH,IAAA5uE,GACI,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAK8vE,wBAAwBF,EAAwB5H,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe83B,IAGzJ,CAaA,YAAA7B,CAAaC,GACT,OAAOjoD,GAAiBvmB,KAAMunE,WAAW,UAAyBlvB,EAAQ93C,EAAU,CAAC,GACjF,IAAI2xE,EACJ,GAAM75B,QAAqBj4C,IAAXi4C,EACZ,GACI65B,QAAsC7rD,GAAQrmB,KAAKkxD,sBAAsB7Y,EAAQ93C,IACjF2xE,EAA8B35B,eAC1B25B,EAA8B35B,gBAAkB,GACpDF,EAAS65B,EAA8B15B,8BAC3BnyB,SAAcA,GAAQ6rD,UAC7B75B,EAEjB,GACJ,CAMA,SAAAq2B,GACI,OAAOnoD,GAAiBvmB,KAAMunE,WAAW,UAAsBhnE,EAAU,CAAC,GACtE,IAAIR,EAAIuoE,EAAKv7D,EAAIC,EACjB,IAAIqrC,EACJ,IACI,IAAK,IAAuEr1B,EAAnE/V,GAAK,EAAM8V,EAAK4E,GAAc3nB,KAAKuuE,aAAal2B,EAAQ93C,IAAeyiB,QAAWqD,GAAQtD,EAAGvhB,QAASzB,EAAKijB,EAAGV,MAAOviB,EAAIkN,GAAK,EAAM,CACzID,EAAKgW,EAAG5X,MACR6B,GAAK,EACL,MAAMmjC,EAAUpjC,QACVqZ,SAAeqB,GAAiBC,GAAcyoB,EAAQmI,iBAChE,CACJ,CACA,MAAOgwB,GAASD,EAAM,CAAE/jE,MAAOgkE,EAAS,CACxC,QACI,IACSt7D,GAAOlN,KAAOgN,EAAKgW,EAAG6kD,gBAAevhD,GAAQtZ,EAAG+Y,KAAK/C,IAC9D,CACA,QAAU,GAAIulD,EAAK,MAAMA,EAAI/jE,KAAO,CACxC,CACJ,GACJ,CA2EA,cAAA4tE,CAAe5xE,EAAU,CAAC,GACC,KAAnBA,EAAQ4Q,SACR5Q,EAAQ4Q,YAAS/Q,GAErB,MAAM6pD,EAAU,GACZ1pD,EAAQsuE,gBACR5kB,EAAQrpD,KAAK,WAEbL,EAAQuuE,iBACR7kB,EAAQrpD,KAAK,YAEbL,EAAQ6xE,eACRnoB,EAAQrpD,KAAK,UAGjB,MAAMwvE,EAAqBhrE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9E,GAAW0pD,EAAQlmD,OAAS,EAAI,CAAEkmD,WAAY,CAAC,GACpG6d,EAAO9nE,KAAK0uE,UAAU0B,GAC5B,MAAO,CAIH,IAAA5uE,GACI,OAAOsmE,EAAKtmE,MAChB,EAIA,CAACoQ,OAAO+U,iBACJ,OAAO3mB,IACX,EAIA+nE,OAAQ,CAACC,EAAW,CAAC,IACVhoE,KAAKuuE,aAAavG,EAASxvB,kBAAmBpzC,OAAOC,OAAO,CAAEizC,YAAa0vB,EAAS1vB,aAAe83B,IAGtH,CAYA,0BAAMhf,CAAqBxX,EAAUC,EAAWt5C,EAAU,CAAC,GACvD,OAAOkd,GAAcd,SAAS,yCAA0Cpc,GAAS2P,MAAOwM,IACpF,MAAMhN,EAAW4hC,SAAqBtxC,KAAKsxE,eAAelgB,qBAAqB,CAC3ExX,SAAUxN,GAAqBwN,GAAU,GACzCC,UAAWzN,GAAqByN,GAAW,IAC5C,CACChxC,YAAatI,EAAQsI,YACrB4T,eAAgBC,EAAeD,kBAE7Bu9C,EAAoB,CACtBjgB,eAAgBrqC,EAASqqC,eACzBC,eAAgBtqC,EAASsqC,eACzBC,eAAgB,IAAItvC,KAAK+E,EAASuqC,gBAClCC,gBAAiB,IAAIvvC,KAAK+E,EAASwqC,iBACnCC,cAAezqC,EAASyqC,cACxBC,cAAe1qC,EAAS0qC,cACxBhvC,MAAOsE,EAAStE,OAEdmF,EAAMnL,OAAOC,OAAO,CAAEg3D,UAAW3sD,EAAS2sD,UAAW9kD,UAAW7H,EAAS6H,UAAWgoC,gBAAiB7vC,EAAS6vC,gBAAiBhyC,QAASmC,EAASnC,QAAS8H,KAAM3F,EAAS2F,KAAMmqC,UAAW9vC,EAAS8vC,WAAawa,GACtN,OAAOzpD,CAAG,GAElB,CAQA,kBAAA8/D,GACI,OAAO,IAAIlD,GAAgBntE,KAAKmP,IAAKnP,KAAKsB,SAC9C,CAeA,qBAAA+wE,CAAsBx4B,EAAWmB,EAAcs1B,GAAsBh7D,MAAM,KAAMukD,EAAgB,MAAOt5D,EAAU,CAAC,GAC/G,KAAMP,KAAK6jB,sBAAsBgvB,IAC7B,MAAM7G,WAAW,iGAErB,QAAkB5rC,IAAdy5C,EAAyB,CACzB,MAAMrkC,EAAM,IAAI7K,KAChBkvC,EAAY,IAAIlvC,KAAK6K,EAAIoZ,UAAY,KACzC,CACA,MAAMo2C,EAAM+L,GAAkC3rE,OAAOC,OAAO,CAAE21C,cAC1DnB,YACAggB,gBAAeD,SAAU8W,GAAmBp7D,MAAM,KAAK7I,YAAclM,GAAUP,KAAK6jB,YAAYpX,WACpG,OAAOw/B,GAAiBjsC,KAAKmP,IAAK61D,EACtC,GR7qBJ,SAAW2F,GACPA,EAA6B,UAAY,QAC5C,EAFD,CAEGA,KAAiCA,GAA+B,CAAC,G,qCSF7D,SAAS2H,EAAQhkE,EAAGrE,GACnBsoE,EAAejkE,KACfA,EAAI,QAER,IAAIkkE,EAAYC,EAAankE,GAO7B,OANAA,EAAY,MAARrE,EAAcqE,EAAIpE,KAAKF,IAAIC,EAAKC,KAAKD,IAAI,EAAGwjB,WAAWnf,KAEvDkkE,IACAlkE,EAAIjC,SAASjI,OAAOkK,EAAIrE,GAAM,IAAM,KAGpCC,KAAKwoE,IAAIpkE,EAAIrE,GAAO,KACb,GAOPqE,EAJQ,MAARrE,GAIKqE,EAAI,EAAKA,EAAIrE,EAAOA,EAAMqE,EAAIrE,GAAOwjB,WAAWrpB,OAAO6F,IAKvDqE,EAAIrE,EAAOwjB,WAAWrpB,OAAO6F,IAE/BqE,EACX,CAKO,SAASqkE,EAAQC,GACpB,OAAO1oE,KAAKF,IAAI,EAAGE,KAAKD,IAAI,EAAG2oE,GACnC,CAMO,SAASL,EAAejkE,GAC3B,MAAoB,kBAANA,IAAsC,IAApBA,EAAExH,QAAQ,MAAiC,IAAlB2mB,WAAWnf,EACxE,CAKO,SAASmkE,EAAankE,GACzB,MAAoB,kBAANA,IAAsC,IAApBA,EAAExH,QAAQ,IAC9C,CAKO,SAAS+rE,EAAW3rD,GAKvB,OAJAA,EAAIuG,WAAWvG,IACXrS,MAAMqS,IAAMA,EAAI,GAAKA,EAAI,KACzBA,EAAI,GAEDA,CACX,CAKO,SAAS4rD,EAAoBxkE,GAChC,OAAIA,GAAK,EACE,GAAGD,OAAmB,IAAZuG,OAAOtG,GAAU,KAE/BA,CACX,CAKO,SAAS,EAAKgwD,GACjB,OAAoB,IAAbA,EAAEv6D,OAAe,IAAMu6D,EAAIl6D,OAAOk6D,EAC7C,CCxEO,SAASyU,EAASxrD,EAAGX,EAAGO,GAC3B,MAAO,CACHI,EAAqB,IAAlB+qD,EAAQ/qD,EAAG,KACdX,EAAqB,IAAlB0rD,EAAQ1rD,EAAG,KACdO,EAAqB,IAAlBmrD,EAAQnrD,EAAG,KAEtB,CAMO,SAAS6rD,EAASzrD,EAAGX,EAAGO,GAC3BI,EAAI+qD,EAAQ/qD,EAAG,KACfX,EAAI0rD,EAAQ1rD,EAAG,KACfO,EAAImrD,EAAQnrD,EAAG,KACf,IAAIld,EAAMC,KAAKD,IAAIsd,EAAGX,EAAGO,GACrBnd,EAAME,KAAKF,IAAIud,EAAGX,EAAGO,GACrB8rD,EAAI,EACJttD,EAAI,EACJutD,GAAKjpE,EAAMD,GAAO,EACtB,GAAIC,IAAQD,EACR2b,EAAI,EACJstD,EAAI,MAEH,CACD,IAAIrrD,EAAI3d,EAAMD,EAEd,OADA2b,EAAIutD,EAAI,GAAMtrD,GAAK,EAAI3d,EAAMD,GAAO4d,GAAK3d,EAAMD,GACvCC,GACJ,KAAKsd,EACD0rD,GAAKrsD,EAAIO,GAAKS,GAAKhB,EAAIO,EAAI,EAAI,GAC/B,MACJ,KAAKP,EACDqsD,GAAK9rD,EAAII,GAAKK,EAAI,EAClB,MACJ,KAAKT,EACD8rD,GAAK1rD,EAAIX,GAAKgB,EAAI,EAClB,MACJ,QACI,MAERqrD,GAAK,CACT,CACA,MAAO,CAAEA,EAAGA,EAAGttD,EAAGA,EAAGutD,EAAGA,EAC5B,CACA,SAASC,EAAQ3kE,EAAGsY,EAAGlB,GAOnB,OANIA,EAAI,IACJA,GAAK,GAELA,EAAI,IACJA,GAAK,GAELA,EAAI,EAAI,EACDpX,EAAe,EAAIoX,GAAdkB,EAAItY,GAEhBoX,EAAI,GACGkB,EAEPlB,EAAI,EAAI,EACDpX,GAAKsY,EAAItY,IAAM,EAAI,EAAIoX,GAAK,EAEhCpX,CACX,CAOO,SAAS4kE,EAASH,EAAGttD,EAAGutD,GAC3B,IAAI3rD,EACAX,EACAO,EAIJ,GAHA8rD,EAAIX,EAAQW,EAAG,KACfttD,EAAI2sD,EAAQ3sD,EAAG,KACfutD,EAAIZ,EAAQY,EAAG,KACL,IAANvtD,EAEAiB,EAAIssD,EACJ/rD,EAAI+rD,EACJ3rD,EAAI2rD,MAEH,CACD,IAAIpsD,EAAIosD,EAAI,GAAMA,GAAK,EAAIvtD,GAAKutD,EAAIvtD,EAAIutD,EAAIvtD,EACxCnX,EAAI,EAAI0kE,EAAIpsD,EAChBS,EAAI4rD,EAAQ3kE,EAAGsY,EAAGmsD,EAAI,EAAI,GAC1BrsD,EAAIusD,EAAQ3kE,EAAGsY,EAAGmsD,GAClB9rD,EAAIgsD,EAAQ3kE,EAAGsY,EAAGmsD,EAAI,EAAI,EAC9B,CACA,MAAO,CAAE1rD,EAAO,IAAJA,EAASX,EAAO,IAAJA,EAASO,EAAO,IAAJA,EACxC,CAOO,SAASksD,EAAS9rD,EAAGX,EAAGO,GAC3BI,EAAI+qD,EAAQ/qD,EAAG,KACfX,EAAI0rD,EAAQ1rD,EAAG,KACfO,EAAImrD,EAAQnrD,EAAG,KACf,IAAIld,EAAMC,KAAKD,IAAIsd,EAAGX,EAAGO,GACrBnd,EAAME,KAAKF,IAAIud,EAAGX,EAAGO,GACrB8rD,EAAI,EACJ3sD,EAAIrc,EACJ2d,EAAI3d,EAAMD,EACV2b,EAAY,IAAR1b,EAAY,EAAI2d,EAAI3d,EAC5B,GAAIA,IAAQD,EACRipE,EAAI,MAEH,CACD,OAAQhpE,GACJ,KAAKsd,EACD0rD,GAAKrsD,EAAIO,GAAKS,GAAKhB,EAAIO,EAAI,EAAI,GAC/B,MACJ,KAAKP,EACDqsD,GAAK9rD,EAAII,GAAKK,EAAI,EAClB,MACJ,KAAKT,EACD8rD,GAAK1rD,EAAIX,GAAKgB,EAAI,EAClB,MACJ,QACI,MAERqrD,GAAK,CACT,CACA,MAAO,CAAEA,EAAGA,EAAGttD,EAAGA,EAAGW,EAAGA,EAC5B,CAOO,SAASgtD,EAASL,EAAGttD,EAAGW,GAC3B2sD,EAAsB,EAAlBX,EAAQW,EAAG,KACfttD,EAAI2sD,EAAQ3sD,EAAG,KACfW,EAAIgsD,EAAQhsD,EAAG,KACf,IAAIpa,EAAIhC,KAAKE,MAAM6oE,GACfhsD,EAAIgsD,EAAI/mE,EACRsC,EAAI8X,GAAK,EAAIX,GACbmB,EAAIR,GAAK,EAAIW,EAAItB,GACjBC,EAAIU,GAAK,GAAK,EAAIW,GAAKtB,GACvB4tD,EAAMrnE,EAAI,EACVqb,EAAI,CAACjB,EAAGQ,EAAGtY,EAAGA,EAAGoX,EAAGU,GAAGitD,GACvB3sD,EAAI,CAAChB,EAAGU,EAAGA,EAAGQ,EAAGtY,EAAGA,GAAG+kE,GACvBpsD,EAAI,CAAC3Y,EAAGA,EAAGoX,EAAGU,EAAGA,EAAGQ,GAAGysD,GAC3B,MAAO,CAAEhsD,EAAO,IAAJA,EAASX,EAAO,IAAJA,EAASO,EAAO,IAAJA,EACxC,CAOO,SAASqsD,EAASjsD,EAAGX,EAAGO,EAAGssD,GAC9B,IAAIC,EAAM,CACN,EAAKxpE,KAAKypE,MAAMpsD,GAAG9a,SAAS,KAC5B,EAAKvC,KAAKypE,MAAM/sD,GAAGna,SAAS,KAC5B,EAAKvC,KAAKypE,MAAMxsD,GAAG1a,SAAS,MAGhC,OAAIgnE,GACAC,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,KAChCglD,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,KAChCglD,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,IACzBglD,EAAI,GAAGhlD,OAAO,GAAKglD,EAAI,GAAGhlD,OAAO,GAAKglD,EAAI,GAAGhlD,OAAO,GAExDglD,EAAIjsE,KAAK,GACpB,CAQO,SAASmsE,EAAUrsD,EAAGX,EAAGO,EAAGD,EAAG2sD,GAClC,IAAIH,EAAM,CACN,EAAKxpE,KAAKypE,MAAMpsD,GAAG9a,SAAS,KAC5B,EAAKvC,KAAKypE,MAAM/sD,GAAGna,SAAS,KAC5B,EAAKvC,KAAKypE,MAAMxsD,GAAG1a,SAAS,KAC5B,EAAKqnE,EAAoB5sD,KAG7B,OAAI2sD,GACAH,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,KAChCglD,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,KAChCglD,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,KAChCglD,EAAI,GAAGxtE,WAAWwtE,EAAI,GAAGhlD,OAAO,IACzBglD,EAAI,GAAGhlD,OAAO,GAAKglD,EAAI,GAAGhlD,OAAO,GAAKglD,EAAI,GAAGhlD,OAAO,GAAKglD,EAAI,GAAGhlD,OAAO,GAE3EglD,EAAIjsE,KAAK,GACpB,CAeO,SAASqsE,EAAoBlsD,GAChC,OAAO1d,KAAKypE,MAAsB,IAAhBlmD,WAAW7F,IAAUnb,SAAS,GACpD,CAEO,SAASsnE,EAAoBd,GAChC,OAAOe,EAAgBf,GAAK,GAChC,CAEO,SAASe,EAAgBpB,GAC5B,OAAOvmE,SAASumE,EAAK,GACzB,CACO,SAASqB,EAAoBC,GAChC,MAAO,CACH3sD,EAAG2sD,GAAS,GACZttD,GAAY,MAARstD,IAAmB,EACvB/sD,EAAW,IAAR+sD,EAEX,C,gCCtOO,IAAIC,EAAQ,CACfC,UAAW,UACXC,aAAc,UACdC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,MAAO,UACPC,OAAQ,UACRC,MAAO,UACPC,eAAgB,UAChBC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,UAAW,UACXC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,MAAO,UACPC,eAAgB,UAChBC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,SAAU,UACVC,SAAU,UACVC,cAAe,UACfC,SAAU,UACVC,UAAW,UACXC,SAAU,UACVC,UAAW,UACXC,YAAa,UACbC,eAAgB,UAChBC,WAAY,UACZC,WAAY,UACZC,QAAS,UACTC,WAAY,UACZC,aAAc,UACdC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,SAAU,UACVC,YAAa,UACbC,QAAS,UACTC,QAAS,UACTC,WAAY,UACZC,UAAW,UACXC,YAAa,UACbC,YAAa,UACbC,QAAS,UACTC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,KAAM,UACNC,MAAO,UACPC,YAAa,UACbC,KAAM,UACNC,SAAU,UACVC,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRC,MAAO,UACPC,MAAO,UACPC,cAAe,UACfC,SAAU,UACVC,UAAW,UACXC,aAAc,UACdC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,qBAAsB,UACtBC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,UAAW,UACXC,YAAa,UACbC,cAAe,UACfC,aAAc,UACdC,eAAgB,UAChBC,eAAgB,UAChBC,eAAgB,UAChBC,YAAa,UACbC,KAAM,UACNC,UAAW,UACXC,MAAO,UACPC,QAAS,UACTC,OAAQ,UACRC,iBAAkB,UAClBC,WAAY,UACZC,aAAc,UACdC,aAAc,UACdC,eAAgB,UAChBC,gBAAiB,UACjBC,kBAAmB,UACnBC,gBAAiB,UACjBC,gBAAiB,UACjBC,aAAc,UACdC,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,YAAa,UACbC,KAAM,UACNC,QAAS,UACTC,MAAO,UACPC,UAAW,UACXC,OAAQ,UACRC,UAAW,UACXC,OAAQ,UACRC,cAAe,UACfC,UAAW,UACXC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,WAAY,UACZC,OAAQ,UACRC,cAAe,UACfC,IAAK,UACLC,UAAW,UACXC,UAAW,UACXC,YAAa,UACbC,OAAQ,UACRC,WAAY,UACZC,SAAU,UACVC,SAAU,UACVC,OAAQ,UACRC,OAAQ,UACRC,QAAS,UACTC,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,KAAM,UACNC,YAAa,UACbC,UAAW,UACXC,IAAK,UACLC,KAAM,UACNC,QAAS,UACTC,OAAQ,UACRC,UAAW,UACXC,OAAQ,UACRC,MAAO,UACPC,MAAO,UACPC,WAAY,UACZC,OAAQ,UACRC,YAAa,WClIV,SAASC,EAAWtJ,GACvB,IAAIuJ,EAAM,CAAEl2D,EAAG,EAAGX,EAAG,EAAGO,EAAG,GACvBD,EAAI,EACJvB,EAAI,KACJW,EAAI,KACJ4sD,EAAI,KACJwK,GAAK,EACLryE,GAAS,EA6Bb,MA5BqB,kBAAV6oE,IACPA,EAAQyJ,EAAoBzJ,IAEX,kBAAVA,IACH0J,EAAe1J,EAAM3sD,IAAMq2D,EAAe1J,EAAMttD,IAAMg3D,EAAe1J,EAAM/sD,IAC3Es2D,EAAM1K,EAASmB,EAAM3sD,EAAG2sD,EAAMttD,EAAGstD,EAAM/sD,GACvCu2D,GAAK,EACLryE,EAAwC,MAA/BjH,OAAO8vE,EAAM3sD,GAAGnhB,QAAQ,GAAa,OAAS,OAElDw3E,EAAe1J,EAAMjB,IAAM2K,EAAe1J,EAAMvuD,IAAMi4D,EAAe1J,EAAM5tD,IAChFX,EAAImtD,EAAoBoB,EAAMvuD,GAC9BW,EAAIwsD,EAAoBoB,EAAM5tD,GAC9Bm3D,EAAMnK,EAASY,EAAMjB,EAAGttD,EAAGW,GAC3Bo3D,GAAK,EACLryE,EAAS,OAEJuyE,EAAe1J,EAAMjB,IAAM2K,EAAe1J,EAAMvuD,IAAMi4D,EAAe1J,EAAMhB,KAChFvtD,EAAImtD,EAAoBoB,EAAMvuD,GAC9ButD,EAAIJ,EAAoBoB,EAAMhB,GAC9BuK,EAAMrK,EAASc,EAAMjB,EAAGttD,EAAGutD,GAC3BwK,GAAK,EACLryE,EAAS,OAETjG,OAAO8X,UAAU2I,eAAeC,KAAKouD,EAAO,OAC5ChtD,EAAIgtD,EAAMhtD,IAGlBA,EAAI2rD,EAAW3rD,GACR,CACHw2D,GAAIA,EACJryE,OAAQ6oE,EAAM7oE,QAAUA,EACxBkc,EAAGrd,KAAKF,IAAI,IAAKE,KAAKD,IAAIwzE,EAAIl2D,EAAG,IACjCX,EAAG1c,KAAKF,IAAI,IAAKE,KAAKD,IAAIwzE,EAAI72D,EAAG,IACjCO,EAAGjd,KAAKF,IAAI,IAAKE,KAAKD,IAAIwzE,EAAIt2D,EAAG,IACjCD,EAAGA,EAEX,CAEA,IAAI22D,EAAc,gBAEdC,EAAa,uBAEbC,EAAW,MAAM1vE,OAAOyvE,EAAY,SAASzvE,OAAOwvE,EAAa,KAIjEG,EAAoB,cAAc3vE,OAAO0vE,EAAU,cAAc1vE,OAAO0vE,EAAU,cAAc1vE,OAAO0vE,EAAU,aACjHE,EAAoB,cAAc5vE,OAAO0vE,EAAU,cAAc1vE,OAAO0vE,EAAU,cAAc1vE,OAAO0vE,EAAU,cAAc1vE,OAAO0vE,EAAU,aAChJG,EAAW,CACXH,SAAU,IAAI53E,OAAO43E,GACrBN,IAAK,IAAIt3E,OAAO,MAAQ63E,GACxBG,KAAM,IAAIh4E,OAAO,OAAS83E,GAC1BG,IAAK,IAAIj4E,OAAO,MAAQ63E,GACxBK,KAAM,IAAIl4E,OAAO,OAAS83E,GAC1BK,IAAK,IAAIn4E,OAAO,MAAQ63E,GACxBO,KAAM,IAAIp4E,OAAO,OAAS83E,GAC1BO,KAAM,uDACNC,KAAM,uDACNC,KAAM,uEACNC,KAAM,wEAMH,SAAShB,EAAoBzJ,GAEhC,GADAA,EAAQA,EAAMluE,OAAOuI,cACA,IAAjB2lE,EAAMnwE,OACN,OAAO,EAEX,IAAI66E,GAAQ,EACZ,GAAIzK,EAAMD,GACNA,EAAQC,EAAMD,GACd0K,GAAQ,OAEP,GAAc,gBAAV1K,EACL,MAAO,CAAE3sD,EAAG,EAAGX,EAAG,EAAGO,EAAG,EAAGD,EAAG,EAAG7b,OAAQ,QAM7C,IAAI4I,EAAQiqE,EAAST,IAAIoB,KAAK3K,GAC9B,OAAIjgE,EACO,CAAEsT,EAAGtT,EAAM,GAAI2S,EAAG3S,EAAM,GAAIkT,EAAGlT,EAAM,KAEhDA,EAAQiqE,EAASC,KAAKU,KAAK3K,GACvBjgE,EACO,CAAEsT,EAAGtT,EAAM,GAAI2S,EAAG3S,EAAM,GAAIkT,EAAGlT,EAAM,GAAIiT,EAAGjT,EAAM,KAE7DA,EAAQiqE,EAASE,IAAIS,KAAK3K,GACtBjgE,EACO,CAAEg/D,EAAGh/D,EAAM,GAAI0R,EAAG1R,EAAM,GAAIi/D,EAAGj/D,EAAM,KAEhDA,EAAQiqE,EAASG,KAAKQ,KAAK3K,GACvBjgE,EACO,CAAEg/D,EAAGh/D,EAAM,GAAI0R,EAAG1R,EAAM,GAAIi/D,EAAGj/D,EAAM,GAAIiT,EAAGjT,EAAM,KAE7DA,EAAQiqE,EAASI,IAAIO,KAAK3K,GACtBjgE,EACO,CAAEg/D,EAAGh/D,EAAM,GAAI0R,EAAG1R,EAAM,GAAIqS,EAAGrS,EAAM,KAEhDA,EAAQiqE,EAASK,KAAKM,KAAK3K,GACvBjgE,EACO,CAAEg/D,EAAGh/D,EAAM,GAAI0R,EAAG1R,EAAM,GAAIqS,EAAGrS,EAAM,GAAIiT,EAAGjT,EAAM,KAE7DA,EAAQiqE,EAASS,KAAKE,KAAK3K,GACvBjgE,EACO,CACHsT,EAAGysD,EAAgB//D,EAAM,IACzB2S,EAAGotD,EAAgB//D,EAAM,IACzBkT,EAAG6sD,EAAgB//D,EAAM,IACzBiT,EAAG6sD,EAAoB9/D,EAAM,IAC7B5I,OAAQuzE,EAAQ,OAAS,SAGjC3qE,EAAQiqE,EAASO,KAAKI,KAAK3K,GACvBjgE,EACO,CACHsT,EAAGysD,EAAgB//D,EAAM,IACzB2S,EAAGotD,EAAgB//D,EAAM,IACzBkT,EAAG6sD,EAAgB//D,EAAM,IACzB5I,OAAQuzE,EAAQ,OAAS,QAGjC3qE,EAAQiqE,EAASQ,KAAKG,KAAK3K,GACvBjgE,EACO,CACHsT,EAAGysD,EAAgB//D,EAAM,GAAKA,EAAM,IACpC2S,EAAGotD,EAAgB//D,EAAM,GAAKA,EAAM,IACpCkT,EAAG6sD,EAAgB//D,EAAM,GAAKA,EAAM,IACpCiT,EAAG6sD,EAAoB9/D,EAAM,GAAKA,EAAM,IACxC5I,OAAQuzE,EAAQ,OAAS,SAGjC3qE,EAAQiqE,EAASM,KAAKK,KAAK3K,KACvBjgE,GACO,CACHsT,EAAGysD,EAAgB//D,EAAM,GAAKA,EAAM,IACpC2S,EAAGotD,EAAgB//D,EAAM,GAAKA,EAAM,IACpCkT,EAAG6sD,EAAgB//D,EAAM,GAAKA,EAAM,IACpC5I,OAAQuzE,EAAQ,OAAS,eAIrC,CAKO,SAAShB,EAAe1J,GAC3B,OAAO7rE,QAAQ61E,EAASH,SAASc,KAAKz6E,OAAO8vE,IACjD,CClLA,IAAI4K,EAA2B,WAC3B,SAASA,EAAU5K,EAAOn8C,GAGtB,IAAIh4B,EAEJ,QAJc,IAAVm0E,IAAoBA,EAAQ,SACnB,IAATn8C,IAAmBA,EAAO,CAAC,GAG3Bm8C,aAAiB4K,EAEjB,OAAO5K,EAEU,kBAAVA,IACPA,EAAQD,EAAoBC,IAEhCl0E,KAAK++E,cAAgB7K,EACrB,IAAIuJ,EAAMD,EAAWtJ,GACrBl0E,KAAK++E,cAAgB7K,EACrBl0E,KAAKunB,EAAIk2D,EAAIl2D,EACbvnB,KAAK4mB,EAAI62D,EAAI72D,EACb5mB,KAAKmnB,EAAIs2D,EAAIt2D,EACbnnB,KAAKknB,EAAIu2D,EAAIv2D,EACblnB,KAAKg/E,OAAS90E,KAAKypE,MAAM,IAAM3zE,KAAKknB,GAAK,IACzClnB,KAAKqL,OAAgC,QAAtBtL,EAAKg4B,EAAK1sB,cAA2B,IAAPtL,EAAgBA,EAAK09E,EAAIpyE,OACtErL,KAAKi/E,aAAelnD,EAAKknD,aAKrBj/E,KAAKunB,EAAI,IACTvnB,KAAKunB,EAAIrd,KAAKypE,MAAM3zE,KAAKunB,IAEzBvnB,KAAK4mB,EAAI,IACT5mB,KAAK4mB,EAAI1c,KAAKypE,MAAM3zE,KAAK4mB,IAEzB5mB,KAAKmnB,EAAI,IACTnnB,KAAKmnB,EAAIjd,KAAKypE,MAAM3zE,KAAKmnB,IAE7BnnB,KAAKk/E,QAAUzB,EAAIC,EACvB,CA0cA,OAzcAoB,EAAU5hE,UAAUiiE,OAAS,WACzB,OAAOn/E,KAAKo/E,gBAAkB,GAClC,EACAN,EAAU5hE,UAAUmiE,QAAU,WAC1B,OAAQr/E,KAAKm/E,QACjB,EAIAL,EAAU5hE,UAAUkiE,cAAgB,WAEhC,IAAI3B,EAAMz9E,KAAKs/E,QACf,OAAgB,IAAR7B,EAAIl2D,EAAkB,IAARk2D,EAAI72D,EAAkB,IAAR62D,EAAIt2D,GAAW,GACvD,EAIA23D,EAAU5hE,UAAUqiE,aAAe,WAE/B,IACIC,EACAC,EACAC,EAHAjC,EAAMz9E,KAAKs/E,QAIXK,EAAQlC,EAAIl2D,EAAI,IAChBq4D,EAAQnC,EAAI72D,EAAI,IAChBi5D,EAAQpC,EAAIt2D,EAAI,IAsBpB,OApBIq4D,EADAG,GAAS,OACLA,EAAQ,MAIRz1E,KAAK8M,KAAK2oE,EAAQ,MAAS,MAAO,KAGtCF,EADAG,GAAS,OACLA,EAAQ,MAIR11E,KAAK8M,KAAK4oE,EAAQ,MAAS,MAAO,KAGtCF,EADAG,GAAS,OACLA,EAAQ,MAIR31E,KAAK8M,KAAK6oE,EAAQ,MAAS,MAAO,KAEnC,MAASL,EAAI,MAASC,EAAI,MAASC,CAC9C,EAIAZ,EAAU5hE,UAAU4iE,SAAW,WAC3B,OAAO9/E,KAAKknB,CAChB,EAMA43D,EAAU5hE,UAAU6iE,SAAW,SAAUC,GAGrC,OAFAhgF,KAAKknB,EAAI2rD,EAAWmN,GACpBhgF,KAAKg/E,OAAS90E,KAAKypE,MAAM,IAAM3zE,KAAKknB,GAAK,IAClClnB,IACX,EAIA8+E,EAAU5hE,UAAU+iE,aAAe,WAC/B,IAAIt6D,EAAI3lB,KAAKkgF,QAAQv6D,EACrB,OAAa,IAANA,CACX,EAIAm5D,EAAU5hE,UAAUijE,MAAQ,WACxB,IAAI7B,EAAMjL,EAASrzE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,GACxC,MAAO,CAAE8rD,EAAW,IAARqL,EAAIrL,EAASttD,EAAG24D,EAAI34D,EAAGW,EAAGg4D,EAAIh4D,EAAGY,EAAGlnB,KAAKknB,EACzD,EAKA43D,EAAU5hE,UAAUkjE,YAAc,WAC9B,IAAI9B,EAAMjL,EAASrzE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,GACpC8rD,EAAI/oE,KAAKypE,MAAc,IAAR2K,EAAIrL,GACnBttD,EAAIzb,KAAKypE,MAAc,IAAR2K,EAAI34D,GACnBW,EAAIpc,KAAKypE,MAAc,IAAR2K,EAAIh4D,GACvB,OAAkB,IAAXtmB,KAAKknB,EAAU,OAAO7Y,OAAO4kE,EAAG,MAAM5kE,OAAOsX,EAAG,OAAOtX,OAAOiY,EAAG,MAAQ,QAAQjY,OAAO4kE,EAAG,MAAM5kE,OAAOsX,EAAG,OAAOtX,OAAOiY,EAAG,OAAOjY,OAAOrO,KAAKg/E,OAAQ,IAClK,EAIAF,EAAU5hE,UAAUgjE,MAAQ,WACxB,IAAI9B,EAAMpL,EAAShzE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,GACxC,MAAO,CAAE8rD,EAAW,IAARmL,EAAInL,EAASttD,EAAGy4D,EAAIz4D,EAAGutD,EAAGkL,EAAIlL,EAAGhsD,EAAGlnB,KAAKknB,EACzD,EAKA43D,EAAU5hE,UAAUmjE,YAAc,WAC9B,IAAIjC,EAAMpL,EAAShzE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,GACpC8rD,EAAI/oE,KAAKypE,MAAc,IAARyK,EAAInL,GACnBttD,EAAIzb,KAAKypE,MAAc,IAARyK,EAAIz4D,GACnButD,EAAIhpE,KAAKypE,MAAc,IAARyK,EAAIlL,GACvB,OAAkB,IAAXlzE,KAAKknB,EAAU,OAAO7Y,OAAO4kE,EAAG,MAAM5kE,OAAOsX,EAAG,OAAOtX,OAAO6kE,EAAG,MAAQ,QAAQ7kE,OAAO4kE,EAAG,MAAM5kE,OAAOsX,EAAG,OAAOtX,OAAO6kE,EAAG,OAAO7kE,OAAOrO,KAAKg/E,OAAQ,IAClK,EAKAF,EAAU5hE,UAAUojE,MAAQ,SAAU7M,GAElC,YADmB,IAAfA,IAAyBA,GAAa,GACnCD,EAASxzE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,EAAGssD,EAC5C,EAKAqL,EAAU5hE,UAAUqjE,YAAc,SAAU9M,GAExC,YADmB,IAAfA,IAAyBA,GAAa,GACnC,IAAMzzE,KAAKsgF,MAAM7M,EAC5B,EAKAqL,EAAU5hE,UAAUsjE,OAAS,SAAU3M,GAEnC,YADmB,IAAfA,IAAyBA,GAAa,GACnCD,EAAU5zE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,EAAGnnB,KAAKknB,EAAG2sD,EACrD,EAKAiL,EAAU5hE,UAAUujE,aAAe,SAAU5M,GAEzC,YADmB,IAAfA,IAAyBA,GAAa,GACnC,IAAM7zE,KAAKwgF,OAAO3M,EAC7B,EAKAiL,EAAU5hE,UAAUwjE,iBAAmB,SAAUC,GAE7C,YADuB,IAAnBA,IAA6BA,GAAiB,GAChC,IAAX3gF,KAAKknB,EAAUlnB,KAAKugF,YAAYI,GAAkB3gF,KAAKygF,aAAaE,EAC/E,EAIA7B,EAAU5hE,UAAUoiE,MAAQ,WACxB,MAAO,CACH/3D,EAAGrd,KAAKypE,MAAM3zE,KAAKunB,GACnBX,EAAG1c,KAAKypE,MAAM3zE,KAAK4mB,GACnBO,EAAGjd,KAAKypE,MAAM3zE,KAAKmnB,GACnBD,EAAGlnB,KAAKknB,EAEhB,EAKA43D,EAAU5hE,UAAU0jE,YAAc,WAC9B,IAAIr5D,EAAIrd,KAAKypE,MAAM3zE,KAAKunB,GACpBX,EAAI1c,KAAKypE,MAAM3zE,KAAK4mB,GACpBO,EAAIjd,KAAKypE,MAAM3zE,KAAKmnB,GACxB,OAAkB,IAAXnnB,KAAKknB,EAAU,OAAO7Y,OAAOkZ,EAAG,MAAMlZ,OAAOuY,EAAG,MAAMvY,OAAO8Y,EAAG,KAAO,QAAQ9Y,OAAOkZ,EAAG,MAAMlZ,OAAOuY,EAAG,MAAMvY,OAAO8Y,EAAG,MAAM9Y,OAAOrO,KAAKg/E,OAAQ,IAC9J,EAIAF,EAAU5hE,UAAU2jE,gBAAkB,WAClC,IAAIC,EAAM,SAAUv3E,GAAK,MAAO,GAAG8E,OAAOnE,KAAKypE,MAAwB,IAAlBrB,EAAQ/oE,EAAG,MAAa,IAAM,EACnF,MAAO,CACHge,EAAGu5D,EAAI9gF,KAAKunB,GACZX,EAAGk6D,EAAI9gF,KAAK4mB,GACZO,EAAG25D,EAAI9gF,KAAKmnB,GACZD,EAAGlnB,KAAKknB,EAEhB,EAIA43D,EAAU5hE,UAAU6jE,sBAAwB,WACxC,IAAIC,EAAM,SAAUz3E,GAAK,OAAOW,KAAKypE,MAAwB,IAAlBrB,EAAQ/oE,EAAG,KAAa,EACnE,OAAkB,IAAXvJ,KAAKknB,EACN,OAAO7Y,OAAO2yE,EAAIhhF,KAAKunB,GAAI,OAAOlZ,OAAO2yE,EAAIhhF,KAAK4mB,GAAI,OAAOvY,OAAO2yE,EAAIhhF,KAAKmnB,GAAI,MACjF,QAAQ9Y,OAAO2yE,EAAIhhF,KAAKunB,GAAI,OAAOlZ,OAAO2yE,EAAIhhF,KAAK4mB,GAAI,OAAOvY,OAAO2yE,EAAIhhF,KAAKmnB,GAAI,OAAO9Y,OAAOrO,KAAKg/E,OAAQ,IACvH,EAIAF,EAAU5hE,UAAU+jE,OAAS,WACzB,GAAe,IAAXjhF,KAAKknB,EACL,MAAO,cAEX,GAAIlnB,KAAKknB,EAAI,EACT,OAAO,EAGX,IADA,IAAIwsD,EAAM,IAAMF,EAASxzE,KAAKunB,EAAGvnB,KAAK4mB,EAAG5mB,KAAKmnB,GAAG,GACxC+5D,EAAK,EAAGnhF,EAAKqF,OAAO2T,QAAQo7D,GAAQ+M,EAAKnhF,EAAGgE,OAAQm9E,IAAM,CAC/D,IAAIn0E,EAAKhN,EAAGmhF,GAAKtyE,EAAM7B,EAAG,GAAI3B,EAAQ2B,EAAG,GACzC,GAAI2mE,IAAQtoE,EACR,OAAOwD,CAEf,CACA,OAAO,CACX,EACAkwE,EAAU5hE,UAAUzQ,SAAW,SAAUpB,GACrC,IAAI81E,EAAY94E,QAAQgD,GACxBA,EAAoB,OAAXA,QAA8B,IAAXA,EAAoBA,EAASrL,KAAKqL,OAC9D,IAAI+1E,GAAkB,EAClBC,EAAWrhF,KAAKknB,EAAI,GAAKlnB,KAAKknB,GAAK,EACnCo6D,GAAoBH,GAAaE,IAAah2E,EAAOnF,WAAW,QAAqB,SAAXmF,GAC9E,OAAIi2E,EAGe,SAAXj2E,GAAgC,IAAXrL,KAAKknB,EACnBlnB,KAAKihF,SAETjhF,KAAK4gF,eAED,QAAXv1E,IACA+1E,EAAkBphF,KAAK4gF,eAEZ,SAAXv1E,IACA+1E,EAAkBphF,KAAK+gF,yBAEZ,QAAX11E,GAA+B,SAAXA,IACpB+1E,EAAkBphF,KAAKugF,eAEZ,SAAXl1E,IACA+1E,EAAkBphF,KAAKugF,aAAY,IAExB,SAAXl1E,IACA+1E,EAAkBphF,KAAKygF,cAAa,IAEzB,SAAXp1E,IACA+1E,EAAkBphF,KAAKygF,gBAEZ,SAAXp1E,IACA+1E,EAAkBphF,KAAKihF,UAEZ,QAAX51E,IACA+1E,EAAkBphF,KAAKqgF,eAEZ,QAAXh1E,IACA+1E,EAAkBphF,KAAKogF,eAEpBgB,GAAmBphF,KAAKugF,cACnC,EACAzB,EAAU5hE,UAAUqkE,SAAW,WAC3B,OAAQr3E,KAAKypE,MAAM3zE,KAAKunB,IAAM,KAAOrd,KAAKypE,MAAM3zE,KAAK4mB,IAAM,GAAK1c,KAAKypE,MAAM3zE,KAAKmnB,EACpF,EACA23D,EAAU5hE,UAAUvb,MAAQ,WACxB,OAAO,IAAIm9E,EAAU9+E,KAAKyM,WAC9B,EAKAqyE,EAAU5hE,UAAUskE,QAAU,SAAUC,QACrB,IAAXA,IAAqBA,EAAS,IAClC,IAAIrD,EAAMp+E,KAAKkgF,QAGf,OAFA9B,EAAIlL,GAAKuO,EAAS,IAClBrD,EAAIlL,EAAIP,EAAQyL,EAAIlL,GACb,IAAI4L,EAAUV,EACzB,EAKAU,EAAU5hE,UAAUwkE,SAAW,SAAUD,QACtB,IAAXA,IAAqBA,EAAS,IAClC,IAAIhE,EAAMz9E,KAAKs/E,QAIf,OAHA7B,EAAIl2D,EAAIrd,KAAKD,IAAI,EAAGC,KAAKF,IAAI,IAAKyzE,EAAIl2D,EAAIrd,KAAKypE,OAAc8N,EAAS,IAAjB,OACrDhE,EAAI72D,EAAI1c,KAAKD,IAAI,EAAGC,KAAKF,IAAI,IAAKyzE,EAAI72D,EAAI1c,KAAKypE,OAAc8N,EAAS,IAAjB,OACrDhE,EAAIt2D,EAAIjd,KAAKD,IAAI,EAAGC,KAAKF,IAAI,IAAKyzE,EAAIt2D,EAAIjd,KAAKypE,OAAc8N,EAAS,IAAjB,OAC9C,IAAI3C,EAAUrB,EACzB,EAMAqB,EAAU5hE,UAAUykE,OAAS,SAAUF,QACpB,IAAXA,IAAqBA,EAAS,IAClC,IAAIrD,EAAMp+E,KAAKkgF,QAGf,OAFA9B,EAAIlL,GAAKuO,EAAS,IAClBrD,EAAIlL,EAAIP,EAAQyL,EAAIlL,GACb,IAAI4L,EAAUV,EACzB,EAMAU,EAAU5hE,UAAU0kE,KAAO,SAAUH,GAEjC,YADe,IAAXA,IAAqBA,EAAS,IAC3BzhF,KAAK6hF,IAAI,QAASJ,EAC7B,EAMA3C,EAAU5hE,UAAU4kE,MAAQ,SAAUL,GAElC,YADe,IAAXA,IAAqBA,EAAS,IAC3BzhF,KAAK6hF,IAAI,QAASJ,EAC7B,EAMA3C,EAAU5hE,UAAU6kE,WAAa,SAAUN,QACxB,IAAXA,IAAqBA,EAAS,IAClC,IAAIrD,EAAMp+E,KAAKkgF,QAGf,OAFA9B,EAAIz4D,GAAK87D,EAAS,IAClBrD,EAAIz4D,EAAIgtD,EAAQyL,EAAIz4D,GACb,IAAIm5D,EAAUV,EACzB,EAKAU,EAAU5hE,UAAU8kE,SAAW,SAAUP,QACtB,IAAXA,IAAqBA,EAAS,IAClC,IAAIrD,EAAMp+E,KAAKkgF,QAGf,OAFA9B,EAAIz4D,GAAK87D,EAAS,IAClBrD,EAAIz4D,EAAIgtD,EAAQyL,EAAIz4D,GACb,IAAIm5D,EAAUV,EACzB,EAKAU,EAAU5hE,UAAU+kE,UAAY,WAC5B,OAAOjiF,KAAK+hF,WAAW,IAC3B,EAKAjD,EAAU5hE,UAAUglE,KAAO,SAAUT,GACjC,IAAIrD,EAAMp+E,KAAKkgF,QACXiC,GAAO/D,EAAInL,EAAIwO,GAAU,IAE7B,OADArD,EAAInL,EAAIkP,EAAM,EAAI,IAAMA,EAAMA,EACvB,IAAIrD,EAAUV,EACzB,EAKAU,EAAU5hE,UAAU2kE,IAAM,SAAU3N,EAAOuN,QACxB,IAAXA,IAAqBA,EAAS,IAClC,IAAIW,EAAOpiF,KAAKs/E,QACZ+C,EAAO,IAAIvD,EAAU5K,GAAOoL,QAC5B9wE,EAAIizE,EAAS,IACbtD,EAAO,CACP52D,GAAI86D,EAAK96D,EAAI66D,EAAK76D,GAAK/Y,EAAI4zE,EAAK76D,EAChCX,GAAIy7D,EAAKz7D,EAAIw7D,EAAKx7D,GAAKpY,EAAI4zE,EAAKx7D,EAChCO,GAAIk7D,EAAKl7D,EAAIi7D,EAAKj7D,GAAK3Y,EAAI4zE,EAAKj7D,EAChCD,GAAIm7D,EAAKn7D,EAAIk7D,EAAKl7D,GAAK1Y,EAAI4zE,EAAKl7D,GAEpC,OAAO,IAAI43D,EAAUX,EACzB,EACAW,EAAU5hE,UAAUolE,UAAY,SAAUC,EAASC,QAC/B,IAAZD,IAAsBA,EAAU,QACrB,IAAXC,IAAqBA,EAAS,IAClC,IAAIpE,EAAMp+E,KAAKkgF,QACX7sE,EAAO,IAAMmvE,EACbC,EAAM,CAACziF,MACX,IAAKo+E,EAAInL,GAAKmL,EAAInL,GAAM5/D,EAAOkvE,GAAY,GAAK,KAAO,MAAOA,GAC1DnE,EAAInL,GAAKmL,EAAInL,EAAI5/D,GAAQ,IACzBovE,EAAI7hF,KAAK,IAAIk+E,EAAUV,IAE3B,OAAOqE,CACX,EAIA3D,EAAU5hE,UAAUwlE,WAAa,WAC7B,IAAItE,EAAMp+E,KAAKkgF,QAEf,OADA9B,EAAInL,GAAKmL,EAAInL,EAAI,KAAO,IACjB,IAAI6L,EAAUV,EACzB,EACAU,EAAU5hE,UAAUylE,cAAgB,SAAUJ,QAC1B,IAAZA,IAAsBA,EAAU,GACpC,IAAIjE,EAAMt+E,KAAKmgF,QACXlN,EAAIqL,EAAIrL,EACRttD,EAAI24D,EAAI34D,EACRW,EAAIg4D,EAAIh4D,EACR/V,EAAM,GACNqyE,EAAe,EAAIL,EACvB,MAAOA,IACHhyE,EAAI3P,KAAK,IAAIk+E,EAAU,CAAE7L,EAAGA,EAAGttD,EAAGA,EAAGW,EAAGA,KACxCA,GAAKA,EAAIs8D,GAAgB,EAE7B,OAAOryE,CACX,EACAuuE,EAAU5hE,UAAU2lE,gBAAkB,WAClC,IAAIzE,EAAMp+E,KAAKkgF,QACXjN,EAAImL,EAAInL,EACZ,MAAO,CACHjzE,KACA,IAAI8+E,EAAU,CAAE7L,GAAIA,EAAI,IAAM,IAAKttD,EAAGy4D,EAAIz4D,EAAGutD,EAAGkL,EAAIlL,IACpD,IAAI4L,EAAU,CAAE7L,GAAIA,EAAI,KAAO,IAAKttD,EAAGy4D,EAAIz4D,EAAGutD,EAAGkL,EAAIlL,IAE7D,EAIA4L,EAAU5hE,UAAU4lE,aAAe,SAAUC,GACzC,IAAIC,EAAKhjF,KAAKs/E,QACV2D,EAAK,IAAInE,EAAUiE,GAAYzD,QAC/BU,EAAQgD,EAAG97D,EAAI+7D,EAAG/7D,GAAK,EAAI87D,EAAG97D,GAClC,OAAO,IAAI43D,EAAU,CACjBv3D,GAAIy7D,EAAGz7D,EAAIy7D,EAAG97D,EAAI+7D,EAAG17D,EAAI07D,EAAG/7D,GAAK,EAAI87D,EAAG97D,IAAM84D,EAC9Cp5D,GAAIo8D,EAAGp8D,EAAIo8D,EAAG97D,EAAI+7D,EAAGr8D,EAAIq8D,EAAG/7D,GAAK,EAAI87D,EAAG97D,IAAM84D,EAC9C74D,GAAI67D,EAAG77D,EAAI67D,EAAG97D,EAAI+7D,EAAG97D,EAAI87D,EAAG/7D,GAAK,EAAI87D,EAAG97D,IAAM84D,EAC9C94D,EAAG84D,GAEX,EAIAlB,EAAU5hE,UAAUgmE,MAAQ,WACxB,OAAOljF,KAAKmjF,OAAO,EACvB,EAIArE,EAAU5hE,UAAUkmE,OAAS,WACzB,OAAOpjF,KAAKmjF,OAAO,EACvB,EAKArE,EAAU5hE,UAAUimE,OAAS,SAAU70E,GAKnC,IAJA,IAAI8vE,EAAMp+E,KAAKkgF,QACXjN,EAAImL,EAAInL,EACRpxE,EAAS,CAAC7B,MACVqjF,EAAY,IAAM/0E,EACbpC,EAAI,EAAGA,EAAIoC,EAAGpC,IACnBrK,EAAOjB,KAAK,IAAIk+E,EAAU,CAAE7L,GAAIA,EAAI/mE,EAAIm3E,GAAa,IAAK19D,EAAGy4D,EAAIz4D,EAAGutD,EAAGkL,EAAIlL,KAE/E,OAAOrxE,CACX,EAIAi9E,EAAU5hE,UAAUomE,OAAS,SAAUpP,GACnC,OAAOl0E,KAAK4gF,gBAAkB,IAAI9B,EAAU5K,GAAO0M,aACvD,EACO9B,CACX,CAhf8B,E,qECJ9B,MAAMjyE,EAA+B,qBAAXD,QAA0BA,OAAOC,YAAcD,OAAOC,WAAWC,KAAKF,QAChG,OACEC,cCCF,IAAI02E,EACJ,MAAMC,EAAQ,IAAI53E,WAAW,IACd,SAAS63E,IAEtB,IAAKF,IAEHA,EAAoC,qBAAX32E,QAA0BA,OAAO22E,iBAAmB32E,OAAO22E,gBAAgBz2E,KAAKF,SAEpG22E,GACH,MAAM,IAAI7iF,MAAM,4GAIpB,OAAO6iF,EAAgBC,EACzB,CCXA,MAAME,EAAY,GAElB,IAAK,IAAIx3E,EAAI,EAAGA,EAAI,MAAOA,EACzBw3E,EAAU9iF,MAAMsL,EAAI,KAAOO,SAAS,IAAIvM,MAAM,IAGzC,SAASyjF,EAAgBj7D,EAAKre,EAAS,GAG5C,OAAOq5E,EAAUh7D,EAAIre,EAAS,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAM,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAM,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAM,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAMq5E,EAAUh7D,EAAIre,EAAS,IAAM,IAAMq5E,EAAUh7D,EAAIre,EAAS,KAAOq5E,EAAUh7D,EAAIre,EAAS,KAAOq5E,EAAUh7D,EAAIre,EAAS,KAAOq5E,EAAUh7D,EAAIre,EAAS,KAAOq5E,EAAUh7D,EAAIre,EAAS,KAAOq5E,EAAUh7D,EAAIre,EAAS,IAChf,CCZA,SAASu5E,EAAGrjF,EAASsjF,EAAKx5E,GACxB,GAAI,EAAOwC,aAAeg3E,IAAQtjF,EAChC,OAAO,EAAOsM,aAGhBtM,EAAUA,GAAW,CAAC,EACtB,MAAMujF,EAAOvjF,EAAQ+J,SAAW/J,EAAQkjF,KAAOA,KAK/C,GAHAK,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBD,EAAK,CACPx5E,EAASA,GAAU,EAEnB,IAAK,IAAI6B,EAAI,EAAGA,EAAI,KAAMA,EACxB23E,EAAIx5E,EAAS6B,GAAK43E,EAAK53E,GAGzB,OAAO23E,CACT,CAEA,OAAOF,EAAgBG,EACzB,CAEA,O,qCC3BA,IAAIC,EAAmB/jF,MAAQA,KAAK+jF,iBAAoB,SAAUxQ,GAC9D,OAAQA,GAAOA,EAAIyQ,WAAczQ,EAAM,CAAE,QAAWA,EACxD,EACAnuE,OAAO28B,eAAekiD,EAAS,aAAc,CAAE74E,OAAO,IACtD64E,EAAQC,sBAAmB,EAC3B,MAAMC,EAAcJ,EAAgB,EAAQ,QACtCK,EAAS,EAAQ,OAOjBF,EAAmB,KACrB,MAAMG,EAAO,CACTxpC,IAAI,EAAIupC,EAAOR,MACf3iF,MAAM,EAAIkjF,EAAY7sD,YAE1B,OAAO+sD,CAAI,EAEfJ,EAAQC,iBAAmBA,C;;;;;ACfAD,EAAQ,QAAwB,EAO3D,IAAIK,EAAuB,EAAQ,OACnCl/E,OAAO28B,eAAekiD,EAAS,KAA/B,CAA0DM,YAAY,EAAMthF,IAAK,WAAc,OAAOqhF,EAAqBE,qBAAuB,IAClJ,IAAIC,EAAqB,EAAQ,M;;;;;;GCRjCr/E,OAAO28B,eAAekiD,EAAS,aAAc,CAAE74E,OAAO,IACtD64E,EAAQS,kBAAe,EAEvBT,EAAQS,aAAe,CACnB,QAAS,gCACT,QAAS,mCACT,QAAS,0CACT,QAAS,8CACT,QAAS,sDACT,QAAS,qDACT,QAAS,oDACT,QAAS,mDACT,QAAS,6DACT,QAAS,gCACT,QAAS,oCACT,QAAS,0DACT,QAAS,2CACT,QAAS,2CACT,QAAS,gEACT,QAAS,yEACT,QAAS,gEACT,QAAS,gEACT,QAAS,iEACT,QAAS,gEACT,QAAS,sEACT,QAAS,6DACT,QAAS,gCACT,QAAS,mEACT,QAAS,mEACT,QAAS,oCACT,QAAS,8CACT,QAAS,4FACT,QAAS,sDACT,QAAS,uDACT,QAAS,mEACT,QAAS,kCACT,QAAS,sDACT,QAAS,mDACT,QAAS,kGACT,QAAS,iDACT,QAAS,+DACT,QAAS,qDACT,QAAS,kDACT,QAAS,0FACT,QAAS,iDACT,QAAS,qDACT,QAAS,8CACT,QAAS,mDACT,QAAS,sCACT,QAAS,wCACT,QAAS,sCACT,QAAS,wEACT,QAAS,sEACT,QAAS,sCACT,QAAS,0BACT,QAAS,wDACT,QAAS,qDACT,QAAS,oCACT,QAAS,+CACT,QAAS,gEACT,QAAS,uCACT,QAAS,+EACT,QAAS,+EACT,QAAS,mCACT,QAAS,+CACT,QAAS,2DACT,QAAS,yCACT,QAAS,yCACT,QAAS,mCACT,QAAS,mCACT,QAAS,qDACT,QAAS,0CACT,QAAS,uCACT,QAAS,YACT,QAAS,sDACT,QAAS,2CACT,QAAS,sCACT,QAAS,oCACT,QAAS,oCACT,QAAS,iCACT,QAAS,+DACT,QAAS,2CACT,QAAS,wDACT,QAAS,6CACT,QAAS,uEACT,QAAS,6CACT,QAAS,sDACT,QAAS,wCACT,QAAS,sCACT,QAAS,0CACT,QAAS,kDACT,QAAS,0BACT,QAAS,gCACT,QAAS,0BACT,QAAS,gCACT,QAAS,6EACT,QAAS,8CACT,QAAS,gCACT,QAAS,4DACT,QAAS,oDACT,QAAS,2CACT,QAAS,+CACT,QAAS,yCACT,QAAS,kGACT,QAAS,wEACT,QAAS,8CACT,QAAS,wDACT,QAAS,yDACT,QAAS,gDACT,QAAS,iCACT,QAAS,wCACT,QAAS,wEACT,QAAS,mEACT,QAAS,8DACT,QAAS,mDACT,QAAS,gBACT,QAAS,qBACT,QAAS,gBACT,QAAS,qBACT,QAAS,qBACT,QAAS,4BACT,QAAS,gCACT,QAAS,wCACT,QAAS,qEACT,QAAS,mDACT,QAAS,uCACT,QAAS,4DACT,QAAS,6BACT,QAAS,+DACT,QAAS,kEACT,QAAS,oDACT,QAAS,oDACT,QAAS,0CACT,QAAS,sCACT,QAAS,0BACT,QAAS,8BACT,QAAS,6DACT,QAAS,mDACT,QAAS,mDACT,QAAS,yBACT,QAAS,0DACT,QAAS,8CACT,QAAS,+CACT,QAAS,oCACT,QAAS,0DACT,QAAS,0CACT,QAAS,mCACT,QAAS,4CACT,QAAS,mEACT,QAAS,4BACT,QAAS,gCACT,QAAS,+CACT,QAAS,qCACT,QAAS,4DACT,QAAS,oDACT,QAAS,kCACT,QAAS,kCACT,QAAS,uBACT,QAAS,6BACT,QAAS,wEACT,QAAS,wBACT,QAAS,yBACT,QAAS,2BACT,QAAS,6BACT,QAAS,yCACT,QAAS,6DACT,QAAS,wDACT,QAAS,wDACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,iFACT,QAAS,qCACT,QAAS,gDACT,QAAS,mCACT,QAAS,4CACT,QAAS,yCACT,QAAS,8CACT,QAAS,+CACT,QAAS,gDACT,QAAS,gCACT,QAAS,6CACT,QAAS,4BACT,QAAS,0BACT,QAAS,gDACT,QAAS,0CACT,QAAS,uBACT,QAAS,gDACT,QAAS,iCACT,QAAS,sCACT,QAAS,+CACT,QAAS,mCACT,QAAS,sEACT,QAAS,2CACT,QAAS,0CACT,QAAS,0BACT,QAAS,wDACT,QAAS,6BACT,QAAS,eACT,QAAS,kCACT,QAAS,sBACT,QAAS,yBACT,QAAS,6CACT,QAAS,qBACT,QAAS,yBACT,QAAS,4BACT,QAAS,4BACT,QAAS,iDACT,QAAS,+BACT,QAAS,2BACT,QAAS,cACT,QAAS,yCACT,QAAS,+BACT,QAAS,2CACT,QAAS,yCACT,QAAS,0CACT,QAAS,oDACT,QAAS,kEACT,QAAS,iCACT,QAAS,gDACT,QAAS,iCACT,QAAS,uCACT,QAAS,qCACT,QAAS,+DACT,QAAS,yDACT,QAAS,wEACT,QAAS,iCACT,QAAS,iCACT,QAAS,yBACT,QAAS,sCACT,QAAS,mCACT,QAAS,kCACT,QAAS,+BACT,QAAS,6CACT,QAAS,4BACT,QAAS,0CACT,QAAS,kCACT,QAAS,0BACT,QAAS,sBACT,QAAS,2BACT,QAAS,8CACT,QAAS,iCACT,QAAS,kDACT,QAAS,6CACT,QAAS,2CACT,QAAS,2DACT,QAAS,yCACT,QAAS,8BACT,QAAS,8BACT,QAAS,yDACT,QAAS,wDACT,QAAS,4DACT,QAAS,qDACT,QAAS,oCACT,QAAS,8DACT,QAAS,qCACT,QAAS,sCACT,QAAS,yBACT,QAAS,+BACT,QAAS,8CACT,QAAS,yCACT,QAAS,yCACT,QAAS,0BACT,QAAS,4CACT,QAAS,yCACT,QAAS,6BACT,QAAS,oCACT,QAAS,kDACT,QAAS,qDACT,QAAS,sDACT,QAAS,6CACT,QAAS,0CACT,QAAS,4CACT,QAAS,6BACT,QAAS,yBACT,QAAS,2CACT,QAAS,uCACT,QAAS,yCACT,QAAS,yCACT,QAAS,2DACT,QAAS,sDACT,QAAS,8CACT,QAAS,uCACT,QAAS,kCACT,QAAS,sCACT,QAAS,sCACT,QAAS,kCACT,QAAS,2DACT,QAAS,oCACT,QAAS,+DACT,QAAS,kCACT,QAAS,kCACT,QAAS,wDACT,QAAS,yCACT,QAAS,6CACT,QAAS,6CACT,QAAS,6CACT,QAAS,qCACT,QAAS,qDACT,QAAS,0EACT,QAAS,qDACT,QAAS,sCACT,QAAS,mDACT,QAAS,sEACT,QAAS,0CACT,QAAS,2DACT,QAAS,uCACT,QAAS,qCACT,QAAS,gDACT,QAAS,0DACT,QAAS,sDACT,QAAS,0DACT,QAAS,yDACT,QAAS,2DACT,QAAS,wBACT,QAAS,kCACT,QAAS,mCACT,QAAS,0CACT,QAAS,oDACT,QAAS,uCACT,QAAS,kDACT,QAAS,mDACT,QAAS,+CACT,QAAS,0EACT,QAAS,uDACT,QAAS,+CACT,QAAS,+CACT,QAAS,oBACT,QAAS,oFACT,QAAS,2CACT,QAAS,wCACT,QAAS,4CACT,QAAS,kDACT,QAAS,qCACT,QAAS,sCACT,QAAS,qCACT,QAAS,iDACT,QAAS,sDACT,QAAS,qDACT,QAAS,yDACT,QAAS,gDACT,QAAS,kDACT,QAAS,iDACT,QAAS,8CACT,QAAS,4CACT,QAAS,yDACT,QAAS,6BACT,QAAS,+DACT,QAAS,gEACT,QAAS,gEACT,QAAS,yBACT,QAAS,sCACT,QAAS,8EACT,QAAS,iEACT,QAAS,kFACT,QAAS,+BACT,QAAS,6CACT,QAAS,0EACT,QAAS,6BACT,QAAS,qCACT,QAAS,6DACT,QAAS,6DACT,QAAS,sDACT,QAAS,4DACT,QAAS,kDACT,QAAS,4EACT,QAAS,2CACT,QAAS,6CACT,QAAS,mDACT,QAAS,mDACT,QAAS,gEACT,QAAS,kCACT,QAAS,0DACT,QAAS,yDACT,QAAS,gDACT,QAAS,8CACT,QAAS,8CACT,QAAS,iEACT,QAAS,kEACT,QAAS,mCACT,QAAS,oDACT,QAAS,gCACT,QAAS,yCACT,QAAS,qBACT,QAAS,qBACT,QAAS,2BACT,QAAS,kCACT,QAAS,kCACT,QAAS,sCACT,QAAS,+CACT,QAAS,oDACT,QAAS,uCACT,QAAS,eACT,QAAS,iCACT,QAAS,WACT,QAAS,2BACT,QAAS,mDACT,QAAS,oEACT,QAAS,+BACT,QAAS,mCACT,QAAS,uCACT,QAAS,6BACT,QAAS,aACT,QAAS,cACT,QAAS,6CACT,QAAS,iCACT,QAAS,6BACT,QAAS,+BACT,QAAS,2BACT,QAAS,kCACT,QAAS,qCACT,QAAS,8CACT,QAAS,2CACT,QAAS,2CACT,QAAS,wBACT,QAAS,sEACT,QAAS,qEACT,QAAS,iDACT,QAAS,iDACT,QAAS,8BACT,QAAS,iCACT,QAAS,4BACT,QAAS,6CACT,QAAS,iCACT,QAAS,wCACT,QAAS,WACT,QAAS,sBACT,QAAS,6BACT,QAAS,0BACT,QAAS,6DACT,QAAS,0DACT,QAAS,yBACT,QAAS,iCACT,QAAS,gCACT,QAAS,qBACT,QAAS,2BACT,QAAS,uBACT,QAAS,kCACT,QAAS,oCACT,QAAS,2BACT,QAAS,iCACT,QAAS,uBACT,QAAS,6BACT,QAAS,uBACT,QAAS,mBACT,QAAS,gBACT,QAAS,8BACT,QAAS,iCACT,QAAS,uCACT,QAAS,kBACT,QAAS,iBACT,QAAS,8CACT,QAAS,wBACT,QAAS,iCACT,QAAS,oCACT,QAAS,SACT,QAAS,wCACT,QAAS,wCACT,QAAS,uBACT,QAAS,uBACT,QAAS,oBACT,QAAS,gDACT,QAAS,8DACT,QAAS,YACT,QAAS,yEACT,QAAS,2CACT,QAAS,mBACT,QAAS,mDACT,QAAS,iCACT,QAAS,2CACT,QAAS,4DACT,QAAS,+BACT,QAAS,2FACT,QAAS,6DACT,QAAS,uDACT,QAAS,gCACT,QAAS,oCACT,QAAS,4CACT,QAAS,0CACT,QAAS,oCACT,QAAS,YACT,QAAS,8DACT,QAAS,0CACT,QAAS,oCACT,QAAS,6DACT,QAAS,oBACT,QAAS,qCACT,QAAS,gBACT,QAAS,mCACT,QAAS,qBACT,QAAS,oBACT,QAAS,0EACT,QAAS,gDACT,QAAS,4DACT,QAAS,8BACT,QAAS,aACT,QAAS,gBACT,QAAS,8BACT,QAAS,cACT,QAAS,cACT,QAAS,+BACT,QAAS,4BACT,QAAS,gBACT,QAAS,sCACT,QAAS,aACT,QAAS,kCACT,QAAS,8DACT,QAAS,8CACT,QAAS,+BACT,QAAS,yCACT,QAAS,gCACT,QAAS,0DACT,QAAS,oDACT,QAAS,kCACT,QAAS,gCACT,QAAS,4BACT,QAAS,8BACT,QAAS,cACT,QAAS,mDACT,QAAS,mDACT,QAAS,gBACT,QAAS,6DACT,QAAS,qDACT,QAAS,qDACT,QAAS,mCACT,QAAS,2DACT,QAAS,yBACT,QAAS,yCACT,QAAS,wBACT,QAAS,4DACT,QAAS,4DACT,QAAS,8BACT,QAAS,4DACT,QAAS,qCACT,QAAS,cACT,QAAS,8EACT,QAAS,0CACT,QAAS,aACT,QAAS,4FACT,QAAS,4BACT,QAAS,qDACT,QAAS,yCACT,QAAS,wEACT,QAAS,gCACT,QAAS,6CACT,QAAS,6CACT,QAAS,gDACT,QAAS,gEACT,QAAS,yEACT,QAAS,cACT,QAAS,gCACT,QAAS,cACT,QAAS,6BACT,QAAS,6BACT,QAAS,uCACT,QAAS,mFACT,QAAS,kFACT,QAAS,qFACT,QAAS,uCACT,QAAS,gEACT,QAAS,0DACT,QAAS,uDACT,QAAS,uDACT,QAAS,8DACT,QAAS,6CACT,QAAS,2DACT,QAAS,gDACT,QAAS,4CACT,QAAS,sCACT,QAAS,+CACT,QAAS,wCACT,QAAS,gDACT,QAAS,sCACT,QAAS,+CACT,QAAS,yCACT,QAAS,4DACT,QAAS,8EACT,QAAS,2DACT,QAAS,4DACT,QAAS,8DACT,QAAS,yCACT,QAAS,kCACT,QAAS,4CACT,QAAS,kCACT,QAAS,8CACT,QAAS,4BACT,QAAS,kCACT,QAAS,oDACT,QAAS,mDACT,QAAS,6BACT,QAAS,yCACT,QAAS,2DACT,QAAS,8CACT,QAAS,uDACT,QAAS,4BACT,QAAS,4BACT,QAAS,kEACT,QAAS,6CACT,QAAS,0DACT,QAAS,wCACT,QAAS,oDACT,QAAS,wCACT,QAAS,+CACT,QAAS,2CACT,QAAS,8DACT,QAAS,qDACT,QAAS,sEACT,QAAS,mCACT,QAAS,mCACT,QAAS,8BACT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WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YACxC,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC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OAAO,SAAS,SAAS,QAAQ,UAAU,QAAQ,SAAS,SAAS,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,SAAS,OAAO,OAAO,MAAM,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,OAAO,OAAO,QAAQ,UAAU,YAAY,OAAO,YAAY,UAAU,OAAO,UAAU,UAAU,OAAO,WAAW,UAAU,SAAS,WAAW,QAAQ,MAAM,OAAO,UAAU,QAAQ,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,OAAO,OAAO,OAAO,QAAQ,UAAU,QAAQ,QAAQ,YAAY,UAAU,QAAQ,SAAS,OAAO,QAAQ,QAAQ,SAAS,OAAO,UAAU,UAAU,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAS,UAAU,MAAM,UAAU,UAAU,UAAU,UAAU,OAAO,OAAO,OAAO,QAAQ,UAAU,QAAQ,QAAQ,OAAO,OAAO,SAAS,OAAO,UAAU,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,YAAY,UAAU,QAAQ,QAAQ,OAAO,MAAM,SAAS,QAAQ,UAAU,SAAS,QAAQ,QAAQ,SAAS,SAAS,OAAO,QAAQ,QAAQ,OAAO,MAAM,QAAQ,QAAQ,OAAO,aAAa,OAAO,SAAS,SAAS,MAAM,QAAQ,QAAQ,MAAM,OAAO,QAAQ,QAAQ,MAAM,QAAQ,MAAM,OAAO,OAAO,UAAU,UAAU,OAAO,WAAW,UAAU,SAAS,WAAW,SAAS,SAAS,OAAO,QAAQ,OAAO,QAAQ,UAAU,QAAQ,OAAO,QAAQ,SAAS,OAAO,OAAO,UAAU,SAAS,SAAS,aAAa,SAAS,QAAQ,QAAQ,OAAO,OAAO,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,WAAW,QAAQ,SAAS,QAAQ,YAAY,UAAU,OAAO,UAAU,OAAO,OAAO,QAAQ,QAAQ,QAAQ,MAAM,SAAS,SAAS,OAAO,QAAQ,MAAM,QAAQ,UAAU,OAAO,SAAS,UAAU,QAAQ,QAAQ,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,OAAO,SAAS,SAAS,QAAQ,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,MAAM,QAAQ,SAAS,QAAQ,SAAS,QAAQ,SAAS,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,UAAU,MAAM,SAAS,QAAQ,UAAU,QAAQ,OAAO,MAAM,SAAS,WAAW,OAAO,SAAS,QAAQ,UAAU,OAAO,UAAU,OAAO,QAAQ,MAAM,QAAQ,QAAQ,OAAO,cAAc,QAAQ,SAAS,QAAQ,SAAS,UAAU,QAAQ,OAAO,QAAQ,SAAS,SAAS,MAAM,SAAS,OAAO,OAAO,SAAS,QAAQ,MAAM,QAAQ,QAAQ,SAAS,MAAM,SAAS,OAAO,QAAQ,SAAS,SAAS,SAAS,QAAQ,QAAQ,OAAO,QAAQ,MAAM,MAAM,MAAM,QAAQ,SAAS,OAAO,OAAO,QAAQ,SAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QAAQ,MAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,QAAQ,SAAS,UAAU,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS,QAAQ,OAAO,SAAS,QAAQ,SAAS,UAAU,WAAW,SAAS,QAAQ,QAAQ,UAAU,OAAO,SAAS,OAAO,OAAO,QAAQ,MAAM,MAAM,OAAO,QAAQ,UAAU,OAAO,OAAO,QAAQ,MAAM,SAAS,QAAQ,OAAO,SAAS,QAAQ,SAAS,UAAU,SAAS,OAAO,UAE1zIC,EAAQ,CAAC,OAAO,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,OAAO,SAAS,SAAS,QAAQ,OAAO,QAAQ,OAAO,MAAM,QAAQ,OAAO,UAAU,SAAS,OAAO,UAAU,SAAS,UAAU,WAAW,SAAS,MAAM,OAAO,QAAQ,OAAO,WAAW,MAAM,OAAO,MAAM,SAAS,QAAQ,UAAU,OAAO,MAAM,OAAO,SAAS,MAAM,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,SAAS,OAAO,MAAM,QAAQ,QAAQ,OAAO,OAAO,SAAS,QAAQ,OAAO,QAAQ,MAAM,QAAQ,OAAO,QAAQ,MAAM,OAAO,OAAO,OAAO,SAAS,SAAS,UAAU,SAAS,SAAS,SAAS,UAAU,QAAQ,SAAS,UAAU,SAAS,SAAS,UAAU,SAAS,SAAS,OAAO,OAAO,UAAU,SAAS,UAAU,QAAQ,UAAU,OAAO,SAAS,SAAS,SAAS,QAAQ,OAAO,SAAS,QAAQ,SAAS,MAAM,WAAW,UAAU,YAAY,QAAQ,QAAQ,SAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QAAQ,UAAU,SAAS,QAAQ,QAAQ,SAAS,SAAS,UAAU,UAAU,SAAS,UAAU,OAAO,UAAU,QAAQ,UAAU,QAAQ,OAAO,SAAS,UAAU,WAAW,SAAS,OAAO,OAAO,QAAQ,OAAO,SAAS,WAAW,SAAS,WAAW,OAAO,WAAW,UAAU,QAAQ,QAAQ,QAAQ,UAAU,OAAO,SAAS,QAAQ,UAAU,UAAU,SAAS,UAAU,OAAO,SAAS,QAAQ,SAAS,QAAQ,SAAS,QAAQ,MAAM,UAAU,OAAO,WAAW,SAAS,UAAU,UAAU,MAAM,UAAU,QAAQ,SAAS,OAAO,SAAS,SAAS,OAAO,OAAO,UAAU,SAAS,SAAS,YAAY,OAAO,UAAU,MAAM,OAAO,SAAS,QAAQ,MAAM,MAAM,QAAQ,UAAU,SAAS,QAAQ,SAAS,MAAM,QAAQ,SAAS,WAAW,OAAO,QAAQ,WAAW,UAAU,OAAO,UAAU,QAAQ,OAAO,MAAM,QAAQ,UAAU,QAAQ,OAAO,SAAS,SAAS,MAAM,SAAS,QAAQ,OAAO,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,SAAS,OAAO,SAAS,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,UAAU,QAAQ,SAAS,WAAW,OAAO,SAAS,QAAQ,SAAS,QAAQ,SAAS,QAAQ,MAAM,SAAS,UAAU,SAAS,MAAM,WAAW,QAAQ,SAAS,SAAS,MAAM,OAAO,SAAS,SAAS,QAAQ,OAAO,OAAO,UAAU,KAAK,QAAQ,SAAS,UAAU,OAAO,OAAO,OAAO,OAAO,SAAS,QAAQ,UAAU,MAAM,OAAO,OAAO,MAAM,QAAQ,QAAQ,SAAS,UAAU,UAAU,UAAU,SAAS,UAAU,UAAU,SAAS,UAAU,YAAY,SAAS,WAAW,QAAQ,QAAQ,OAAO,SAAS,QAAQ,SAAS,QAAQ,UAAU,UAAU,UAAU,QAAQ,OAAO,SAAS,SAAS,UAAU,OAAO,UAAU,UAAU,UAAU,MAAM,QAAQ,UAAU,OAAO,WAAW,QAAQ,OAAO,QAAQ,SAAS,SAAS,MAAM,SAAS,OAAO,OAAO,QAAQ,MAAM,SAAS,OAAO,OAAO,QAAQ,QAAQ,QAAQ,OAAO,SAAS,MAAM,MAAM,SAAS,UAAU,QAAQ,WAAW,MAAM,QAAQ,MAAM,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,SAAS,QAAQ,OAAO,MAAM,MAAM,OAAO,OAAO,SA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c6+c,EAAcsvF,EAASD,EAAaluiB,GACtD,IAAK,WACD,aAAc8id,EAAaqrF,EAASD,EAAaluiB,GACrD,IAAK,UACD,aAAcq+c,EAAY8vF,EAASD,EAAaluiB,GACpD,IAAK,QACD,aAAcgld,EAAUmpF,EAASD,EAAaluiB,GAClD,IAAK,MACD,aAAckld,EAAQipF,EAASD,EAAaluiB,GAChD,IAAK,OACD,aAAcmld,EAASgpF,EAASD,EAAaluiB,GACjD,IAAK,SACD,aAAcold,EAAW+oF,EAASD,EAAaluiB,GACnD,IAAK,SACD,aAAc4id,EAAWurF,EAASD,EAAaluiB,GACnD,IAAK,UACD,aAAc2hd,EAAYwsF,EAASD,EAAaluiB,GACpD,IAAK,SACD,aAAcqmd,EAAW8nF,EAASD,EAAaluiB,GACnD,IAAK,MACD,aAAc+id,EAAQorF,EAASD,EAAaluiB,GAChD,IAAK,SACD,aAAcsmd,EAAW6nF,EAASD,EAAaluiB,GACnD,IAAK,SACD,aAAcumd,EAAW4nF,EAASD,EAAaluiB,GACnD,IAAK,SACD,aAAcwmd,EAAW2nF,EAASD,EAAaluiB,GACnD,IAAK,kBACD,aAAck+c,EAAoBiwF,EAASD,EAAaluiB,GAC5D,IAAK,OACD,aAAc+tiB,EAASI,EAASD,EAAaluiB,GACjD,IAAK,QACD,aAAcg/c,EAAUmvF,EAASD,EAAaluiB,GAClD,IAAK,YACD,aAAc4md,EAAcunF,EAASD,EAAaluiB,GACtD,IAAK,QACD,aAAc88c,EAAUqxF,EAASD,EAAaluiB,GAClD,IAAK,aACD,aAAc2md,EAAewnF,EAASD,EAAaluiB,GACvD,IAAK,UACD,aAAc8md,EAAYqnF,EAASD,EAAaluiB,GACpD,IAAK,OACD,aAAc+md,EAASonF,EAASD,EAAaluiB,GACjD,QACI,IAAK,GAAiBmuiB,EAAQ,IAC1B,MAAM,IAAIsC,GAA6B9sgB,GAC3C,aAAcsqgB,EAASE,EAASD,EAAaluiB,GAEzD,CAKA,MAAM2yD,EAAQ,CACVk/e,SAAU,aACVP,UAAW,IAAI36iB,IACfm7iB,UAAW,IAAIn7iB,IACf66iB,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ICuEhC,IAAIE,GAAa,CACfzqJ,EACAS,EACAkc,GACA6zG,GACAlzG,GACAS,GACA,MACAS,GACAC,GACA,MACA,MACA6E,GACAO,GACAuG,GACAC,GACAiU,GACA3F,GACA+F,GACA/O,GACAC,GACAC,GACAwP,GACAuC,GACAC,GACAjB,GACA2G,GACAC,GACAM,GACAC,GACAC,GACAC,GACAC,GACAya,GACAqB,GACAE,GACAuC,GACAO,GACAQ,GACAsI,GACAC,GACAC,GACAyB,GACAwK,GACAC,GACA,KACAiF,GACA3B,GACA,MACA0D,GACAM,GACAwG,GACAC,GACAC,GACAC,GACAK,GACAuO,GACAY,GACAU,GACAlzE,GACA80E,GACAjrD,GACAE,GACAD,GACAytD,GACAU,GACAM,GACAj5E,GACAquE,GACAd,GACAe,GACAoZ,GACAW,GACAC,GACA0F,GACAsB,GACAO,GACAW,GACAwB,GACAC,GACAyB,GACAgiB,GACA,GACAoU,GACA0D,GACAC,GACAl7F,GACAw7F,GACAqC,GACAgB,GACAQ,GACAC,GACAj+G,GACAktH,GACA8D,GACAqJ,GACA0B,GACA4D,GACA0D,GACA+E,GACAgF,GACAC,GACA6B,GACAC,GACAgB,IC5KF,MAAM,GAAQ,mBACRE,GAAiB,GACjBC,GAAgB,IAChBC,GAAmB,EACnB5nsB,GAAa,CACjB2N,MAAO,CACL54B,KAAM9E,OACN0iB,QAASg1sB,IAEXlhI,SAAU,CACR1xlB,KAAM9E,OACN0iB,QAASi1sB,IAEXx+lB,SAAU,CACRr0H,KAAMrR,QACNivB,SAAS,GAEXw2F,UAAW,CACTp0G,KAAMrR,QACNivB,SAAS,IAGPk1sB,GAAmB,CAACllpB,EAAIjhF,IACrBjB,OAAO2T,QAAQ4rB,IAAYjF,QAAO,CAAC+ssB,GAAMxruB,EAAMmrT,MACpD,IAAIrsT,EAAIgN,EACR,MAAM,KAAE2M,EAAM4d,QAAS9K,GAAiB4/R,EAClCsgb,EAAUplpB,EAAG2zD,aAAa,mBAAmBh6I,KACnD,IAAImK,EAAkE,OAAzD2B,EAAiC,OAA3BhN,EAAKsG,EAASqmuB,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swB,SAASl+vB,GACdxO,KAAK4swB,KAAOp+vB,CAChB,CACA,WAAAkpvB,CAAY9xuB,GAIR,YAHUxlB,IAANwlB,IACAA,EAAI5lB,KAAK8swB,OAEN9swB,KAAKokP,KAAKx+N,EAAG5lB,KAAK2swB,MAAO3swB,KAAKuuf,QAASvuf,KAAKurD,SACvD,CACA,IAAA4htB,GACIntwB,KAAK+9D,MAAQuusB,GACbtswB,KAAKgtwB,WAAahtwB,KAAKotwB,WAAaptwB,KAAK8swB,MACzC9swB,KAAKqtwB,eACLrtwB,KAAKqnL,KAAK,SACd,CACA,OAAA5kJ,GACIziC,KAAK+9D,MAAQwusB,GACbvswB,KAAK8swB,MAAQ9swB,KAAKurD,SAAWvrD,KAAK8swB,MAClC9swB,KAAKgtwB,WAAahtwB,KAAKotwB,WAAaptwB,KAAK8swB,MACzC9swB,KAAKqtwB,eACLrtwB,KAAKqnL,KAAK,YACd,CACA,IAAA60T,CAAKt2d,GACD5lB,KAAKwnF,QACLxnF,KAAK8swB,MAAQlnvB,EACb5lB,KAAK49D,SACL59D,KAAKqnL,KAAK,SACd,CACA,KAAAl4D,GACInvH,KAAKwnF,QACLxnF,KAAK8swB,MAAQ,EACb9swB,KAAK49D,SACL59D,KAAKqnL,KAAK,UACd,CACA,MAAA+wf,GACIp4qB,KAAKwnF,QACLxnF,KAAK8swB,MAAQ9swB,KAAKurD,SAClBvrD,KAAK49D,SACL59D,KAAKqnL,KAAK,WACd,CACA,MAAAzpH,GACI59D,KAAK0yqB,YAAY1yqB,KAAK03vB,YAAY13vB,KAAK8swB,QACvC9swB,KAAKqnL,KAAK,WACd,CACA,YAAAgmlB,GACI,IAAIznvB,EAAI5lB,KAAKotwB,WAAaptwB,KAAKgtwB,WAC3BhtwB,KAAK+9D,QAAUuusB,GACftswB,KAAKktwB,QAAQtnvB,GAER5lB,KAAK+9D,QAAUwusB,IACpBvswB,KAAKktwB,QAAQltwB,KAAKurD,SAAW3lC,EAErC,CACA,KAAA4hE,GACIxnF,KAAK+9D,MAAQsusB,GACbrswB,KAAKqnL,KAAK,UACd,CACA,QAAA+llB,GACI,O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,KAAKmnB,EAAI,EACTnnB,KAAKknB,EAAI,EACTlnB,KAAKwB,KAAO,IAChB,CDiBAujxB,GAAM7nwB,UAAUwS,UAAY,QAC5Bq1vB,GAAM7nwB,UAAUsqvB,WAAY,EAC5Bud,GAAM7nwB,UAAUy/uB,oBAAsB,CAAC,UACvC3c,EAAc+kC,IACdx9B,EAAQC,gBAAgBu9B,GAAO,SAAU,EAAGr+B,KAC5Ca,EAAQC,gBAAgBu9B,GAAO,QAAS,EAAGr+B,KAC3Ca,EAAQC,gBAAgBu9B,GAAO,aAAa,GAC5Cx9B,EAAQa,WAAW28B,GAAO,CACtBrmC,SAAU,QACVumC,YAAa,WACbC,YAAa,aC1BjB,IAAIC,GAAY,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEAC,GAAY,CACZ,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJ,SAASC,GAAoBxvB,EAAWj5F,GACpC,IACIrzpB,EAAGgmJ,EAAGrjJ,EAAGsC,EAAGomwB,EAAI0Q,EAAIC,EAAIC,EAAOC,EAAOC,EAAOC,EAAOC,EAAWC,EAAWC,EAAWC,EAAWC,EAAUC,EAAUC,EAAUC,EAAUxgC,EAAIygC,EAAIC,EAAIC,EAAIC,EADxJC,EAAS3wB,EAAU9vrB,KAAMo0G,EAAQ07kB,EAAU17kB,MAAOE,EAASw7kB,EAAUx7kB,OAErEtB,EAAM6jf,EAASA,EAAS,EAAG6pH,EAActsmB,EAAQ,EAAGusmB,EAAersmB,EAAS,EAAGssmB,EAAc/pH,EAAS,EAAGgqH,EAAaD,GAAeA,EAAc,GAAM,EAAGE,EAAa,IAAI7B,GAAa8B,EAAW,KAAM/prB,EAAQ8prB,EAAYE,EAAU,KAAMC,EAAW,KAAMC,EAAU9B,GAAUvoH,GAASsqH,EAAU9B,GAAUxoH,GACrT,IAAK1wpB,EAAI,EAAGA,EAAI6sK,EAAK7sK,IACjB6wF,EAAQA,EAAMv7F,KAAO,IAAIwjxB,GACrB94wB,IAAMy6wB,IACNG,EAAW/prB,GAKnB,IAFAA,EAAMv7F,KAAOqlxB,EACbtB,EAAKD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","sources":["webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js","webpack://htcommunity/./node_modules/@azure/logger/dist/browser/log.js","webpack://htcommunity/./node_modules/@azure/logger/dist/browser/debug.js","webpack://htcommunity/./node_modules/@azure/logger/dist/browser/index.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/log.js","webpack://htcommunity/./node_modules/@azure/core-util/node_modules/@azure/abort-controller/dist/browser/AbortError.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/createAbortablePromise.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/delay.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/random.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/object.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/error.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/bytesEncoding.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/uuidUtils.common.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/uuidUtils.js","webpack://htcommunity/./node_modules/@azure/core-util/dist/browser/checkEnvironment.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/constants.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller/dist/browser/AbortError.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js","webpack://htcommunity/./node_modules/@azure/core-tracing/dist/browser/tracingContext.js","webpack://htcommunity/./node_modules/@azure/core-tracing/dist/browser/state.js","webpack://htcommunity/./node_modules/@azure/core-tracing/dist/browser/instrumenter.js","webpack://htcommunity/./node_modules/@azure/core-tracing/dist/browser/tracingClient.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/restError.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js","webpack://htcommunity/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js","webpack://htcommunity/./node_modules/tslib/tslib.es6.mjs","webpack://htcommunity/./node_modules/@azure/core-auth/dist/browser/tokenCredential.js","webpack://htcommunity/./node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/base64.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/interfaces.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/utils.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/serializer.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/state.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/operationHelpers.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/deserializationPolicy.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/interfaceHelpers.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/serializationPolicy.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/pipeline.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/httpClientCache.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/urlHelpers.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/log.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/serviceClient.js","webpack://htcommunity/./node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js","webpack://htcommunity/./node_modules/@azure/core-http-compat/dist/browser/util.js","webpack://htcommunity/./node_modules/@azure/core-http-compat/dist/browser/response.js","webpack://htcommunity/./node_modules/@azure/core-http-compat/dist/browser/extendedClient.js","webpack://htcommunity/./node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js","webpack://htcommunity/./node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js","webpack://htcommunity/./node_modules/@azure/core-xml/dist/browser/xml.common.js","webpack://htcommunity/./node_modules/@azure/core-xml/dist/browser/xml.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/log.js","webpack://htcommunity/./node_modules/@azure/abort-controller/dist-esm/src/AbortController.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/RequestPolicy.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/constants.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.common.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicy.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageRetryPolicyFactory.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/StorageSharedKeyCredential.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/CredentialPolicy.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/AnonymousCredentialPolicy.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/Credential.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/AnonymousCredential.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/cache.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicyV2.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicyV2.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageSharedKeyCredentialPolicyV2.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicy.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageBrowserPolicyFactory.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Pipeline.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/models/mappers.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/models/parameters.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/service.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/container.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/blob.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/pageBlob.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/appendBlob.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/blockBlob.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/storageClient.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageContextClient.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageClient.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/tracing.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASPermissions.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/ContainerSASPermissions.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/UserDelegationKeyCredential.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SasIPRange.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SASQueryParameters.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASSignatureValues.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobLeaseClient.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobDownloadResponse.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobQueryResponse.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/models.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/PageBlobRangeResponse.js","webpack://htcommunity/./node_modules/@azure/core-lro/dist/browser/logger.js","webpack://htcommunity/./node_modules/@azure/core-lro/dist/browser/legacy/poller.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/pollers/BlobStartCopyFromUrlPoller.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Range.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Batch.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-common/src/BufferScheduler.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Clients.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BatchUtils.browser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BatchResponseParser.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Mutex.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generatedModels.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobBatch.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobBatchClient.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/ContainerClient.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASPermissions.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASResourceTypes.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASServices.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASSignatureValues.js","webpack://htcommunity/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobServiceClient.js","webpack://htcommunity/./node_modules/@ctrl/tinycolor/dist/module/util.js","webpack://htcommunity/./node_modules/@ctrl/tinycolor/dist/module/conversion.js","webpack://htcommunity/./node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","webpack://htcommunity/./node_modules/@ctrl/tinycolor/dist/module/format-input.js","webpack://htcommunity/./node_modules/@ctrl/tinycolor/dist/module/index.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/test-client-utils/dist/generateTestUser.js","webpack://htcommunity/./node_modules/@fluidframework/test-client-utils/dist/index.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/assertionShortCodesMap.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/generateToken.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/index.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/insecureTokenProvider.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/mockDeltas.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/mockHandle.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/mockStorage.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/mocks.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/mocksDataStoreContext.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/mocksForReconnection.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/dist/validateAssertionError.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/assert.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/base64Encoding.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/bufferBrowser.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/hashFileBrowser.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/batchManager.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/disposal.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/eventForwarder.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/heap.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/promiseCache.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/rangeTracker.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/rateLimiter.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/safeParser.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/timer.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/trace.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/delay.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/bufferShared.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/lazy.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/logger.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/performanceBrowser.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/promises.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/typedEventEmitter.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/common-utils/lib/unreachable.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/container-definitions/lib/fluidPackage.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/container-definitions/lib/browserPackage.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/container-definitions/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/container-definitions/lib/loader.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/container-definitions/lib/runtime.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/container-definitions/lib/tokenProvider.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/protocol-definitions/lib/protocol.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/protocol-definitions/lib/scopes.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/protocol-definitions/lib/storage.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/protocol-definitions/lib/summary.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/dataStoreContext.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/dataStoreFactory.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/dataStoreRegistry.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/garbageCollection.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/index.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/protocol.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-definitions/dist/summary.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/dataStoreHandleContextUtils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/dataStoreHelpers.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/objectstoragepartition.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/objectstorageutils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/requestParser.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/runtimeFactoryHelper.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/protocol-base/lib/blobs.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/summaryUtils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/summarizerNode/summarizerNodeUtils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/summarizerNode/summarizerNode.js","webpack://htcommunity/./node_modules/@fluidframework/garbage-collector/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/summarizerNode/summarizerNodeWithGc.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/runtime-utils/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/errorLogging.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/fluidErrorBase.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/config.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/logger.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/debugLogger.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/eventEmitterWithErrorHandling.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/events.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/mockLogger.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/thresholdCounter.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/test-runtime-utils/node_modules/@fluidframework/telemetry-utils/lib/sampledTelemetryHelper.js","webpack://htcommunity/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://htcommunity/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://htcommunity/./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack://htcommunity/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://htcommunity/./node_modules/bail/index.js","webpack://htcommunity/./node_modules/base64-js/index.js","webpack://htcommunity/./node_modules/batch-processor/src/batch-processor.js","webpack://htcommunity/./node_modules/batch-processor/src/utils.js","webpack://htcommunity/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://htcommunity/./node_modules/crypto-js/aes.js","webpack://htcommunity/./node_modules/crypto-js/blowfish.js","webpack://htcommunity/./node_modules/crypto-js/cipher-core.js","webpack://htcommunity/./node_modules/crypto-js/core.js","webpack://htcommunity/./node_modules/crypto-js/enc-base64.js","webpack://htcommunity/./node_modules/crypto-js/enc-base64url.js","webpack://htcommunity/./node_modules/crypto-js/enc-utf16.js","webpack://htcommunity/./node_modules/crypto-js/evpkdf.js","webpack://htcommunity/./node_modules/crypto-js/format-hex.js","webpack://htcommunity/./node_modules/crypto-js/hmac.js","webpack://htcommunity/./node_modules/crypto-js/index.js","webpack://htcommunity/./node_modules/crypto-js/lib-typedarrays.js","webpack://htcommunity/./node_modules/crypto-js/md5.js","webpack://htcommunity/./node_modules/crypto-js/mode-cfb.js","webpack://htcommunity/./node_modules/crypto-js/mode-ctr-gladman.js","webpack://htcommunity/./node_modules/crypto-js/mode-ctr.js","webpack://htcommunity/./node_modules/crypto-js/mode-ecb.js","webpack://htcommunity/./node_modules/crypto-js/mode-ofb.js","webpack://htcommunity/./node_modules/crypto-js/pad-ansix923.js","webpack://htcommunity/./node_modules/crypto-js/pad-iso10126.js","webpack://htcommunity/./node_modules/crypto-js/pad-iso97971.js","webpack://htcommunity/./node_modules/crypto-js/pad-nopadding.js","webpack://htcommunity/./node_modules/crypto-js/pad-zeropadding.js","webpack://htcommunity/./node_modules/crypto-js/pbkdf2.js","webpack://htcommunity/./node_modules/crypto-js/rabbit-legacy.js","webpack://htcommunity/./node_modules/crypto-js/rabbit.js","webpack://htcommunity/./node_modules/crypto-js/rc4.js","webpack://htcommunity/./node_modules/crypto-js/ripemd160.js","webpack://htcommunity/./node_modules/crypto-js/sha1.js","webpack://htcommunity/./node_modules/crypto-js/sha224.js","webpack://htcommunity/./node_modules/crypto-js/sha256.js","webpack://htcommunity/./node_modules/crypto-js/sha3.js","webpack://htcommunity/./node_modules/crypto-js/sha384.js","webpack://htcommunity/./node_modules/crypto-js/sha512.js","webpack://htcommunity/./node_modules/crypto-js/tripledes.js","webpack://htcommunity/./node_modules/crypto-js/x64-core.js","webpack://htcommunity/./node_modules/dayjs/dayjs.min.js","webpack://htcommunity/./node_modules/dayjs/plugin/advancedFormat.js","webpack://htcommunity/./node_modules/dayjs/plugin/customParseFormat.js","webpack://htcommunity/./node_modules/dayjs/plugin/dayOfYear.js","webpack://htcommunity/./node_modules/dayjs/plugin/isSameOrAfter.js","webpack://htcommunity/./node_modules/dayjs/plugin/isSameOrBefore.js","webpack://htcommunity/./node_modules/dayjs/plugin/localeData.js","webpack://htcommunity/./node_modules/dayjs/plugin/weekOfYear.js","webpack://htcommunity/./node_modules/dayjs/plugin/weekYear.js","webpack://htcommunity/./node_modules/debug/src/browser.js","webpack://htcommunity/./node_modules/debug/src/common.js","webpack://htcommunity/./node_modules/dijkstrajs/dijkstra.js","webpack://htcommunity/./node_modules/double-ended-queue/js/deque.js","webpack://htcommunity/./node_modules/element-resize-detector/src/browser-detector.js","webpack://htcommunity/./node_modules/element-resize-detector/src/collection-utils.js","webpack://htcommunity/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://htcommunity/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://htcommunity/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://htcommunity/./node_modules/element-resize-detector/src/element-utils.js","webpack://htcommunity/./node_modules/element-resize-detector/src/id-generator.js","webpack://htcommunity/./node_modules/element-resize-detector/src/id-handler.js","webpack://htcommunity/./node_modules/element-resize-detector/src/listener-handler.js","webpack://htcommunity/./node_modules/element-resize-detector/src/reporter.js","webpack://htcommunity/./node_modules/element-resize-detector/src/state-handler.js","webpack://htcommunity/./node_modules/encode-utf8/index.js","webpack://htcommunity/./node_modules/event-source-polyfill/src/eventsource.js","webpack://htcommunity/./node_modules/events/events.js","webpack://htcommunity/./node_modules/events_pkg/events.js","webpack://htcommunity/./node_modules/extend/index.js","webpack://htcommunity/./node_modules/html-to-image/es/util.js","webpack://htcommunity/./node_modules/html-to-image/es/clone-pseudos.js","webpack://htcommunity/./node_modules/html-to-image/es/mimes.js","webpack://htcommunity/./node_modules/html-to-image/es/dataurl.js","webpack://htcommunity/./node_modules/html-to-image/es/clone-node.js","webpack://htcommunity/./node_modules/html-to-image/es/embed-resources.js","webpack://htcommunity/./node_modules/html-to-image/es/embed-images.js","webpack://htcommunity/./node_modules/html-to-image/es/apply-style.js","webpack://htcommunity/./node_modules/html-to-image/es/embed-webfonts.js","webpack://htcommunity/./node_modules/html-to-image/es/index.js","webpack://htcommunity/./node_modules/json-stringify-safe/stringify.js","webpack://htcommunity/./node_modules/jsrsasign/lib/jsrsasign.js","webpack://htcommunity/./node_modules/jszip/dist/jszip.min.js","webpack://htcommunity/./node_modules/jwt-decode/build/jwt-decode.esm.js","webpack://htcommunity/./node_modules/lodash/_DataView.js","webpack://htcommunity/./node_modules/lodash/_Hash.js","webpack://htcommunity/./node_modules/lodash/_ListCache.js","webpack://htcommunity/./node_modules/lodash/_Map.js","webpack://htcommunity/./node_modules/lodash/_MapCache.js","webpack://htcommunity/./node_modules/lodash/_Promise.js","webpack://htcommunity/./node_modules/lodash/_Set.js","webpack://htcommunity/./node_modules/lodash/_Stack.js","webpack://htcommunity/./node_modules/lodash/_Symbol.js","webpack://htcommunity/./node_modules/lodash/_Uint8Array.js","webpack://htcommunity/./node_modules/lodash/_WeakMap.js","webpack://htcommunity/./node_modules/lodash/_arrayEach.js","webpack://htcommunity/./node_modules/lodash/_arrayFilter.js","webpack://htcommunity/./node_modules/lodash/_arrayLikeKeys.js","webpack://htcommunity/./node_modules/lodash/_arrayPush.js","webpack://htcommunity/./node_modules/lodash/_assignValue.js","webpack://htcommunity/./node_modules/lodash/_assocIndexOf.js","webpack://htcommunity/./node_modules/lodash/_baseAssign.js","webpack://htcommunity/./node_modules/lodash/_baseAssignIn.js","webpack://htcommunity/./node_modules/lodash/_baseAssignValue.js","webpack://htcommunity/./node_modules/lodash/_baseClone.js","webpack://htcommunity/./node_modules/lodash/_baseCreate.js","webpack://htcommunity/./node_modules/lodash/_baseGetAllKeys.js","webpack://htcommunity/./node_modules/lodash/_baseGetTag.js","webpack://htcommunity/./node_modules/lodash/_baseIsArguments.js","webpack://htcommunity/./node_modules/lodash/_baseIsMap.js","webpack://htcommunity/./node_modules/lodash/_baseIsNative.js","webpack://htcommunity/./node_modules/lodash/_baseIsSet.js","webpack://htcommunity/./node_modules/lodash/_baseIsTypedArray.js","webpack://htcommunity/./node_modules/lodash/_baseKeys.js","webpack://htcommunity/./node_modules/lodash/_baseKeysIn.js","webpack://htcommunity/./node_modules/lodash/_baseTimes.js","webpack://htcommunity/./node_modules/lodash/_baseUnary.js","webpack://htcommunity/./node_modules/lodash/_cloneArrayBuffer.js","webpack://htcommunity/./node_modules/lodash/_cloneBuffer.js","webpack://htcommunity/./node_modules/lodash/_cloneDataView.js","webpack://htcommunity/./node_modules/lodash/_cloneRegExp.js","webpack://htcommunity/./node_modules/lodash/_cloneSymbol.js","webpack://htcommunity/./node_modules/lodash/_cloneTypedArray.js","webpack://htcommunity/./node_modules/lodash/_copyArray.js","webpack://htcommunity/./node_modules/lodash/_copyObject.js","webpack://htcommunity/./node_modules/lodash/_copySymbols.js","webpack://htcommunity/./node_modules/lodash/_copySymbolsIn.js","webpack://htcommunity/./node_modules/lodash/_coreJsData.js","webpack://htcommunity/./node_modules/lodash/_defineProperty.js","webpack://htcommunity/./node_modules/lodash/_freeGlobal.js","webpack://htcommunity/./node_modules/lodash/_getAllKeys.js","webpack://htcommunity/./node_modules/lodash/_getAllKeysIn.js","webpack://htcommunity/./node_modules/lodash/_getMapData.js","webpack://htcommunity/./node_modules/lodash/_getNative.js","webpack://htcommunity/./node_modules/lodash/_getPrototype.js","webpack://htcommunity/./node_modules/lodash/_getRawTag.js","webpack://htcommunity/./node_modules/lodash/_getSymbols.js","webpack://htcommunity/./node_modules/lodash/_getSymbolsIn.js","webpack://htcommunity/./node_modules/lodash/_getTag.js","webpack://htcommunity/./node_modules/lodash/_getValue.js","webpack://htcommunity/./node_modules/lodash/_hashClear.js","webpack://htcommunity/./node_modules/lodash/_hashDelete.js","webpack://htcommunity/./node_modules/lodash/_hashGet.js","webpack://htcommunity/./node_modules/lodash/_hashHas.js","webpack://htcommunity/./node_modules/lodash/_hashSet.js","webpack://htcommunity/./node_modules/lodash/_initCloneArray.js","webpack://htcommunity/./node_modules/lodash/_initCloneByTag.js","webpack://htcommunity/./node_modules/lodash/_initCloneObject.js","webpack://htcommunity/./node_modules/lodash/_isIndex.js","webpack://htcommunity/./node_modules/lodash/_isKeyable.js","webpack://htcommunity/./node_modules/lodash/_isMasked.js","webpack://htcommunity/./node_modules/lodash/_isPrototype.js","webpack://htcommunity/./node_modules/lodash/_listCacheClear.js","webpack://htcommunity/./node_modules/lodash/_listCacheDelete.js","webpack://htcommunity/./node_modules/lodash/_listCacheGet.js","webpack://htcommunity/./node_modules/lodash/_listCacheHas.js","webpack://htcommunity/./node_modules/lodash/_listCacheSet.js","webpack://htcommunity/./node_modules/lodash/_mapCacheClear.js","webpack://htcommunity/./node_modules/lodash/_mapCacheDelete.js","webpack://htcommunity/./node_modules/lodash/_mapCacheGet.js","webpack://htcommunity/./node_modules/lodash/_mapCacheHas.js","webpack://htcommunity/./node_modules/lodash/_mapCacheSet.js","webpack://htcommunity/./node_modules/lodash/_nativeCreate.js","webpack://htcommunity/./node_modules/lodash/_nativeKeys.js","webpack://htcommunity/./node_modules/lodash/_nativeKeysIn.js","webpack://htcommunity/./node_modules/lodash/_nodeUtil.js","webpack://htcommunity/./node_modules/lodash/_objectToString.js","webpack://htcommunity/./node_modules/lodash/_overArg.js","webpack://htcommunity/./node_modules/lodash/_root.js","webpack://htcommunity/./node_modules/lodash/_stackClear.js","webpack://htcommunity/./node_modules/lodash/_stackDelete.js","webpack://htcommunity/./node_modules/lodash/_stackGet.js","webpack://htcommunity/./node_modules/lodash/_stackHas.js","webpack://htcommunity/./node_modules/lodash/_stackSet.js","webpack://htcommunity/./node_modules/lodash/_toSource.js","webpack://htcommunity/./node_modules/lodash/cloneDeep.js","webpack://htcommunity/./node_modules/lodash/eq.js","webpack://htcommunity/./node_modules/lodash/isArguments.js","webpack://htcommunity/./node_modules/lodash/isArray.js","webpack://htcommunity/./node_modules/lodash/isArrayLike.js","webpack://htcommunity/./node_modules/lodash/isBuffer.js","webpack://htcommunity/./node_modules/lodash/isFunction.js","webpack://htcommunity/./node_modules/lodash/isLength.js","webpack://htcommunity/./node_modules/lodash/isMap.js","webpack://htcommunity/./node_modules/lodash/isObject.js","webpack://htcommunity/./node_modules/lodash/isObjectLike.js","webpack://htcommunity/./node_modules/lodash/isSet.js","webpack://htcommunity/./node_modules/lodash/isTypedArray.js","webpack://htcommunity/./node_modules/lodash/keys.js","webpack://htcommunity/./node_modules/lodash/keysIn.js","webpack://htcommunity/./node_modules/lodash/stubArray.js","webpack://htcommunity/./node_modules/lodash/stubFalse.js","webpack://htcommunity/./node_modules/longest-streak/index.js","webpack://htcommunity/./node_modules/lz4js/lz4.js","webpack://htcommunity/./node_modules/lz4js/util.js","webpack://htcommunity/./node_modules/lz4js/xxh32.js","webpack://htcommunity/./node_modules/mdast-util-from-markdown/dist/index.js","webpack://htcommunity/./node_modules/mdast-util-from-markdown/index.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/index.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/configure.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/blockquote.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/break.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/code.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/definition.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/emphasis.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/heading.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/html.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/image-reference.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/image.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/index.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/link-reference.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/link.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/list-item.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/list.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/paragraph.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/root.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/strong.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/text.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/index.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/join.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/unsafe.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/association.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-fence.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-quote.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-rule-repeat.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-rule.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/check-strong.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/container-flow.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","webpack://htcommunity/./node_modules/mdast-util-to-markdown/lib/util/safe.js","webpack://htcommunity/./node_modules/mdast-util-to-string/index.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-alpha.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-alphanumeric.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-atext.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-control.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-digit.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-hex-digit.js","webpack://htcommunity/./node_modules/micromark/dist/character/ascii-punctuation.js","webpack://htcommunity/./node_modules/micromark/dist/character/markdown-line-ending-or-space.js","webpack://htcommunity/./node_modules/micromark/dist/character/markdown-line-ending.js","webpack://htcommunity/./node_modules/micromark/dist/character/markdown-space.js","webpack://htcommunity/./node_modules/micromark/dist/character/unicode-punctuation.js","webpack://htcommunity/./node_modules/micromark/dist/character/unicode-whitespace.js","webpack://htcommunity/./node_modules/micromark/dist/constant/assign.js","webpack://htcommunity/./node_modules/micromark/dist/constant/from-char-code.js","webpack://htcommunity/./node_modules/micromark/dist/constant/has-own-property.js","webpack://htcommunity/./node_modules/micromark/dist/constant/html-block-names.js","webpack://htcommunity/./node_modules/micromark/dist/constant/html-raw-names.js","webpack://htcommunity/./node_modules/micromark/dist/constant/splice.js","webpack://htcommunity/./node_modules/micromark/dist/constant/unicode-punctuation-regex.js","webpack://htcommunity/./node_modules/micromark/dist/constructs.js","webpack://htcommunity/./node_modules/micromark/dist/initialize/content.js","webpack://htcommunity/./node_modules/micromark/dist/initialize/document.js","webpack://htcommunity/./node_modules/micromark/dist/initialize/flow.js","webpack://htcommunity/./node_modules/micromark/dist/initialize/text.js","webpack://htcommunity/./node_modules/micromark/dist/parse.js","webpack://htcommunity/./node_modules/micromark/dist/postprocess.js","webpack://htcommunity/./node_modules/micromark/dist/preprocess.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/attention.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/autolink.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/block-quote.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/character-escape.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/character-reference.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/code-fenced.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/code-indented.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/code-text.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/content.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/definition.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/factory-destination.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/factory-label.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/factory-space.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/factory-title.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/factory-whitespace.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/hard-break-escape.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/heading-atx.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/html-flow.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/html-text.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/label-end.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/label-start-image.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/label-start-link.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/line-ending.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/list.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/partial-blank-line.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/setext-underline.js","webpack://htcommunity/./node_modules/micromark/dist/tokenize/thematic-break.js","webpack://htcommunity/./node_modules/micromark/dist/util/chunked-push.js","webpack://htcommunity/./node_modules/micromark/dist/util/chunked-splice.js","webpack://htcommunity/./node_modules/micromark/dist/util/classify-character.js","webpack://htcommunity/./node_modules/micromark/dist/util/combine-extensions.js","webpack://htcommunity/./node_modules/micromark/dist/util/create-tokenizer.js","webpack://htcommunity/./node_modules/micromark/dist/util/miniflat.js","webpack://htcommunity/./node_modules/micromark/dist/util/move-point.js","webpack://htcommunity/./node_modules/micromark/dist/util/normalize-identifier.js","webpack://htcommunity/./node_modules/micromark/dist/util/prefix-size.js","webpack://htcommunity/./node_modules/micromark/dist/util/regex-check.js","webpack://htcommunity/./node_modules/micromark/dist/util/resolve-all.js","webpack://htcommunity/./node_modules/micromark/dist/util/safe-from-int.js","webpack://htcommunity/./node_modules/micromark/dist/util/serialize-chunks.js","webpack://htcommunity/./node_modules/micromark/dist/util/shallow.js","webpack://htcommunity/./node_modules/micromark/dist/util/size-chunks.js","webpack://htcommunity/./node_modules/micromark/dist/util/slice-chunks.js","webpack://htcommunity/./node_modules/micromark/dist/util/subtokenize.js","webpack://htcommunity/./node_modules/ms/index.js","webpack://htcommunity/./node_modules/parse-entities/decode-entity.browser.js","webpack://htcommunity/./node_modules/path-browserify/index.js","webpack://htcommunity/./node_modules/popper.js/dist/umd/popper.js","webpack://htcommunity/./node_modules/qrcode/lib/browser.js","webpack://htcommunity/./node_modules/qrcode/lib/can-promise.js","webpack://htcommunity/./node_modules/qrcode/lib/core/alignment-pattern.js","webpack://htcommunity/./node_modules/qrcode/lib/core/alphanumeric-data.js","webpack://htcommunity/./node_modules/qrcode/lib/core/bit-buffer.js","webpack://htcommunity/./node_modules/qrcode/lib/core/bit-matrix.js","webpack://htcommunity/./node_modules/qrcode/lib/core/byte-data.js","webpack://htcommunity/./node_modules/qrcode/lib/core/error-correction-code.js","webpack://htcommunity/./node_modules/qrcode/lib/core/error-correction-level.js","webpack://htcommunity/./node_modules/qrcode/lib/core/finder-pattern.js","webpack://htcommunity/./node_modules/qrcode/lib/core/format-info.js","webpack://htcommunity/./node_modules/qrcode/lib/core/galois-field.js","webpack://htcommunity/./node_modules/qrcode/lib/core/kanji-data.js","webpack://htcommunity/./node_modules/qrcode/lib/core/mask-pattern.js","webpack://htcommunity/./node_modules/qrcode/lib/core/mode.js","webpack://htcommunity/./node_modules/qrcode/lib/core/numeric-data.js","webpack://htcommunity/./node_modules/qrcode/lib/core/polynomial.js","webpack://htcommunity/./node_modules/qrcode/lib/core/qrcode.js","webpack://htcommunity/./node_modules/qrcode/lib/core/reed-solomon-encoder.js","webpack://htcommunity/./node_modules/qrcode/lib/core/regex.js","webpack://htcommunity/./node_modules/qrcode/lib/core/segments.js","webpack://htcommunity/./node_modules/qrcode/lib/core/utils.js","webpack://htcommunity/./node_modules/qrcode/lib/core/version-check.js","webpack://htcommunity/./node_modules/qrcode/lib/core/version.js","webpack://htcommunity/./node_modules/qrcode/lib/renderer/canvas.js","webpack://htcommunity/./node_modules/qrcode/lib/renderer/svg-tag.js","webpack://htcommunity/./node_modules/qrcode/lib/renderer/utils.js","webpack://htcommunity/./node_modules/remark-parse/index.js","webpack://htcommunity/./node_modules/remark-stringify/index.js","webpack://htcommunity/./node_modules/remark/index.js","webpack://htcommunity/./node_modules/repeat-string/index.js","webpack://htcommunity/./node_modules/sillyname/index.js","webpack://htcommunity/./node_modules/svg-baker-runtime/browser-symbol.js","webpack://htcommunity/./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js","webpack://htcommunity/./node_modules/trough/index.js","webpack://htcommunity/./node_modules/trough/wrap.js","webpack://htcommunity/./node_modules/unified/index.js","webpack://htcommunity/./node_modules/unified/node_modules/is-buffer/index.js","webpack://htcommunity/./node_modules/unified/node_modules/is-plain-obj/index.js","webpack://htcommunity/./node_modules/unist-util-stringify-position/index.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/v1.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/parse.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/v35.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/md5.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/v3.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/v5.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/nil.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/version.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/regex.js","webpack://htcommunity/./node_modules/uuid/dist/esm-browser/validate.js","webpack://htcommunity/./node_modules/vfile-message/index.js","webpack://htcommunity/./node_modules/vfile/index.js","webpack://htcommunity/./node_modules/vfile/lib/core.js","webpack://htcommunity/./node_modules/vfile/lib/index.js","webpack://htcommunity/./node_modules/vfile/lib/minpath.browser.js","webpack://htcommunity/./node_modules/vfile/lib/minproc.browser.js","webpack://htcommunity/./node_modules/vfile/node_modules/is-buffer/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/popper.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/render.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/notification/notification.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/notification/notice.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/notification/notice.vue?9d25","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/notification/notification.vue?bae8","webpack://htcommunity/./node_modules/view-ui-plus/src/components/base/notification/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/message/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/poptip/poptip.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/icon/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/mixins/link.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/button/button.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/button/button.vue?63cd","webpack://htcommunity/./node_modules/view-ui-plus/src/components/poptip/poptip.vue?7aa1","webpack://htcommunity/./node_modules/view-ui-plus/src/components/poptip/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/radio/radio-group.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/radio/radio-group.vue?2b31","webpack://htcommunity/./node_modules/view-ui-plus/src/components/radio-group/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/radio/radio.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/radio/radio.vue?812b","webpack://htcommunity/./node_modules/view-ui-plus/src/components/radio/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/rate/rate.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/rate/rate.vue?b9c8","webpack://htcommunity/./node_modules/view-ui-plus/src/components/rate/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/slider/slider.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/input-number/input-number.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/input-number/input-number.vue?6abb","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tooltip/tooltip.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tooltip/tooltip.vue?758a","webpack://htcommunity/./node_modules/view-ui-plus/src/components/slider/marker.js","webpack://htcommunity/./node_modules/view-ui-plus/src/utils/dom.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/slider/slider.vue?83f7","webpack://htcommunity/./node_modules/view-ui-plus/src/components/slider/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tabs/pane.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tabs/pane.vue?537d","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tab-pane/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tabs/tabs.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/dropdown/dropdown.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/select/dropdown.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/select/dropdown.vue?4851","webpack://htcommunity/./node_modules/view-ui-plus/src/components/dropdown/dropdown.vue?7df3","webpack://htcommunity/./node_modules/view-ui-plus/src/components/dropdown/dropdown-menu.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/dropdown/dropdown-menu.vue?093e","webpack://htcommunity/./node_modules/view-ui-plus/src/mixins/globalConfig.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tabs/tabs.vue?0f2a","webpack://htcommunity/./node_modules/view-ui-plus/src/components/tabs/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/directives/clickoutside.js","webpack://htcommunity/./node_modules/view-ui-plus/src/mixins/form.js","webpack://htcommunity/./node_modules/view-ui-plus/src/locale/lang.js","webpack://htcommunity/./node_modules/view-ui-plus/src/locale/lang/zh-CN.js","webpack://htcommunity/./node_modules/view-ui-plus/node_modules/deepmerge/dist/es.js","webpack://htcommunity/./node_modules/view-ui-plus/src/locale/format.js","webpack://htcommunity/./node_modules/view-ui-plus/src/locale/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/mixins/locale.js","webpack://htcommunity/./node_modules/view-ui-plus/src/utils/assist.js","webpack://htcommunity/./node_modules/view-ui-plus/src/utils/index.js","webpack://htcommunity/./node_modules/view-ui-plus/src/utils/random_str.js","webpack://htcommunity/./node_modules/view-ui-plus/src/utils/transfer-queue.js","webpack://htcommunity/./node_modules/vue-lazyload/vue-lazyload.esm.js","webpack://htcommunity/./node_modules/vue-loader/dist/exportHelper.js","webpack://htcommunity/./node_modules/view-ui-plus/src/components/icon/icon.vue","webpack://htcommunity/./node_modules/view-ui-plus/src/components/icon/icon.vue?00c6","webpack://htcommunity/./node_modules/zwitch/index.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/eventEmitter.cjs","webpack://htcommunity/./node_modules/@tylerbu/sorted-btree-es6/b+tree.js","webpack://htcommunity/./node_modules/core-js/internals/a-callable.js","webpack://htcommunity/./node_modules/core-js/internals/a-possible-prototype.js","webpack://htcommunity/./node_modules/core-js/internals/an-instance.js","webpack://htcommunity/./node_modules/core-js/internals/an-object.js","webpack://htcommunity/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://htcommunity/./node_modules/core-js/internals/array-buffer-byte-length.js","webpack://htcommunity/./node_modules/core-js/internals/array-buffer-is-detached.js","webpack://htcommunity/./node_modules/core-js/internals/array-buffer-transfer.js","webpack://htcommunity/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://htcommunity/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://htcommunity/./node_modules/core-js/internals/array-includes.js","webpack://htcommunity/./node_modules/core-js/internals/array-set-length.js","webpack://htcommunity/./node_modules/core-js/internals/array-to-reversed.js","webpack://htcommunity/./node_modules/core-js/internals/array-with.js","webpack://htcommunity/./node_modules/core-js/internals/classof-raw.js","webpack://htcommunity/./node_modules/core-js/internals/classof.js","webpack://htcommunity/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://htcommunity/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://htcommunity/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://htcommunity/./node_modules/core-js/internals/create-property-descriptor.js","webpack://htcommunity/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://htcommunity/./node_modules/core-js/internals/define-built-in.js","webpack://htcommunity/./node_modules/core-js/internals/define-global-property.js","webpack://htcommunity/./node_modules/core-js/internals/descriptors.js","webpack://htcommunity/./node_modules/core-js/internals/detach-transferable.js","webpack://htcommunity/./node_modules/core-js/internals/document-create-element.js","webpack://htcommunity/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://htcommunity/./node_modules/core-js/internals/dom-exception-constants.js","webpack://htcommunity/./node_modules/core-js/internals/engine-is-browser.js","webpack://htcommunity/./node_modules/core-js/internals/engine-is-deno.js","webpack://htcommunity/./node_modules/core-js/internals/engine-is-node.js","webpack://htcommunity/./node_modules/core-js/internals/engine-user-agent.js","webpack://htcommunity/./node_modules/core-js/internals/engine-v8-version.js","webpack://htcommunity/./node_modules/core-js/internals/enum-bug-keys.js","webpack://htcommunity/./node_modules/core-js/internals/error-stack-clear.js","webpack://htcommunity/./node_modules/core-js/internals/export.js","webpack://htcommunity/./node_modules/core-js/internals/fails.js","webpack://htcommunity/./node_modules/core-js/internals/function-bind-native.js","webpack://htcommunity/./node_modules/core-js/internals/function-call.js","webpack://htcommunity/./node_modules/core-js/internals/function-name.js","webpack://htcommunity/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://htcommunity/./node_modules/core-js/internals/function-uncurry-this.js","webpack://htcommunity/./node_modules/core-js/internals/get-built-in.js","webpack://htcommunity/./node_modules/core-js/internals/get-method.js","webpack://htcommunity/./node_modules/core-js/internals/global.js","webpack://htcommunity/./node_modules/core-js/internals/has-own-property.js","webpack://htcommunity/./node_modules/core-js/internals/hidden-keys.js","webpack://htcommunity/./node_modules/core-js/internals/ie8-dom-define.js","webpack://htcommunity/./node_modules/core-js/internals/indexed-object.js","webpack://htcommunity/./node_modules/core-js/internals/inherit-if-required.js","webpack://htcommunity/./node_modules/core-js/internals/inspect-source.js","webpack://htcommunity/./node_modules/core-js/internals/internal-state.js","webpack://htcommunity/./node_modules/core-js/internals/is-array.js","webpack://htcommunity/./node_modules/core-js/internals/is-big-int-array.js","webpack://htcommunity/./node_modules/core-js/internals/is-callable.js","webpack://htcommunity/./node_modules/core-js/internals/is-forced.js","webpack://htcommunity/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://htcommunity/./node_modules/core-js/internals/is-object.js","webpack://htcommunity/./node_modules/core-js/internals/is-possible-prototype.js","webpack://htcommunity/./node_modules/core-js/internals/is-pure.js","webpack://htcommunity/./node_modules/core-js/internals/is-symbol.js","webpack://htcommunity/./node_modules/core-js/internals/length-of-array-like.js","webpack://htcommunity/./node_modules/core-js/internals/make-built-in.js","webpack://htcommunity/./node_modules/core-js/internals/math-trunc.js","webpack://htcommunity/./node_modules/core-js/internals/normalize-string-argument.js","webpack://htcommunity/./node_modules/core-js/internals/object-define-property.js","webpack://htcommunity/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://htcommunity/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://htcommunity/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://htcommunity/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://htcommunity/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://htcommunity/./node_modules/core-js/internals/object-keys-internal.js","webpack://htcommunity/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://htcommunity/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://htcommunity/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://htcommunity/./node_modules/core-js/internals/own-keys.js","webpack://htcommunity/./node_modules/core-js/internals/require-object-coercible.js","webpack://htcommunity/./node_modules/core-js/internals/shared-key.js","webpack://htcommunity/./node_modules/core-js/internals/shared-store.js","webpack://htcommunity/./node_modules/core-js/internals/shared.js","webpack://htcommunity/./node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://htcommunity/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://htcommunity/./node_modules/core-js/internals/to-absolute-index.js","webpack://htcommunity/./node_modules/core-js/internals/to-big-int.js","webpack://htcommunity/./node_modules/core-js/internals/to-index.js","webpack://htcommunity/./node_modules/core-js/internals/to-indexed-object.js","webpack://htcommunity/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://htcommunity/./node_modules/core-js/internals/to-length.js","webpack://htcommunity/./node_modules/core-js/internals/to-object.js","webpack://htcommunity/./node_modules/core-js/internals/to-primitive.js","webpack://htcommunity/./node_modules/core-js/internals/to-property-key.js","webpack://htcommunity/./node_modules/core-js/internals/to-string-tag-support.js","webpack://htcommunity/./node_modules/core-js/internals/to-string.js","webpack://htcommunity/./node_modules/core-js/internals/try-node-require.js","webpack://htcommunity/./node_modules/core-js/internals/try-to-string.js","webpack://htcommunity/./node_modules/core-js/internals/uid.js","webpack://htcommunity/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://htcommunity/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://htcommunity/./node_modules/core-js/internals/validate-arguments-length.js","webpack://htcommunity/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://htcommunity/./node_modules/core-js/internals/well-known-symbol.js","webpack://htcommunity/./node_modules/core-js/modules/es.array-buffer.detached.js","webpack://htcommunity/./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack://htcommunity/./node_modules/core-js/modules/es.array-buffer.transfer.js","webpack://htcommunity/./node_modules/core-js/modules/es.array.push.js","webpack://htcommunity/./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack://htcommunity/./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack://htcommunity/./node_modules/core-js/modules/es.typed-array.with.js","webpack://htcommunity/./node_modules/core-js/modules/web.dom-exception.stack.js","webpack://htcommunity/./node_modules/core-js/modules/web.url-search-params.delete.js","webpack://htcommunity/./node_modules/core-js/modules/web.url-search-params.has.js","webpack://htcommunity/./node_modules/core-js/modules/web.url-search-params.size.js","webpack://htcommunity/./node_modules/@element-plus/icons-vue/dist/index.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/base64EncodingBrowser.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/bufferBrowser.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/performanceIsomorphic.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/typedEventEmitter.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/loadPaused.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/container-definitions/lib/fluidPackage.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/typesGuards.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/summaryForCreateNew.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/attachment.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/audience.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/protocol/scopes.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/networkUtils.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/contracts.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/deltaQueue.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/protocol/quorum.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/protocol/protocol.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/protocol.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/connectionManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/connectionState.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/catchUpMonitor.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/connectionStateHandler.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/containerContext.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/protocolTreeDocumentStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/retriableDocumentStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/containerStorageAdapter.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/deltaManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/memoryBlobStorage.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/noopHeuristic.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/quorum.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/serializedStateManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/container.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/debugLogger.js","webpack://htcommunity/./node_modules/@fluidframework/container-loader/lib/loader.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/documentServiceFactoryProxy.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/documentServiceProxy.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/adapters/compression/compressionTypes.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/adapters/compression/documentServiceCompressionAdapter.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/adapters/compression/documentServiceFactoryCompressionAdapter.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/adapters/predefinedAdapters.js","webpack://htcommunity/./node_modules/@fluidframework/fluid-static/lib/fluidContainer.js","webpack://htcommunity/./node_modules/@fluidframework/fluid-static/lib/serviceAudience.js","webpack://htcommunity/./node_modules/@fluidframework/merge-tree/lib/collections/rbTree.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/directory.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/directoryFactory.js","webpack://htcommunity/./node_modules/@fluidframework/aqueduct/lib/data-objects/pureDataObject.js","webpack://htcommunity/./node_modules/@fluidframework/aqueduct/lib/data-objects/dataObject.js","webpack://htcommunity/./node_modules/@fluidframework/request-handler/lib/runtimeRequestHandlerBuilder.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/runtimeFactoryHelper.js","webpack://htcommunity/./node_modules/@fluidframework/synthesize/lib/IFluidDependencySynthesizer.js","webpack://htcommunity/./node_modules/@fluidframework/synthesize/lib/dependencyContainer.js","webpack://htcommunity/./node_modules/@fluidframework/aqueduct/lib/container-runtime-factories/baseContainerRuntimeFactory.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/channelDeltaConnection.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/objectstorageutils.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/channelStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/channelContext.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/localChannelContext.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/dataStoreRuntime.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/remoteChannelContext.js","webpack://htcommunity/./node_modules/@fluidframework/aqueduct/lib/data-object-factories/pureDataObjectFactory.js","webpack://htcommunity/./node_modules/@fluidframework/aqueduct/lib/data-object-factories/dataObjectFactory.js","webpack://htcommunity/./node_modules/@fluidframework/fluid-static/lib/compatibilityConfiguration.js","webpack://htcommunity/./node_modules/@fluidframework/fluid-static/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/fluid-static/lib/rootDataObject.js","webpack://htcommunity/./node_modules/@fluidframework/driver-base/lib/driverUtils.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/rateLimiter.js","webpack://htcommunity/./node_modules/@fluidframework/common-utils/lib/bufferBrowser.js","webpack://htcommunity/./node_modules/@fluidframework/common-utils/lib/unreachable.js","webpack://htcommunity/./node_modules/@fluidframework/common-utils/lib/assert.js","webpack://htcommunity/./node_modules/@fluidframework/protocol-definitions/lib/summary.mjs","webpack://htcommunity/./node_modules/@fluidframework/protocol-base/lib/gitHelper.js","webpack://htcommunity/./node_modules/@fluidframework/server-services-client/lib/storageUtils.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/mapWithExpiration.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/cache.js","webpack://htcommunity/./node_modules/engine.io-parser/build/esm/commons.js","webpack://htcommunity/./node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack://htcommunity/./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","webpack://htcommunity/./node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack://htcommunity/./node_modules/engine.io-parser/build/esm/index.js","webpack://htcommunity/./node_modules/@socket.io/component-emitter/lib/esm/index.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/globalThis.browser.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/util.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/contrib/parseqs.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transport.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/contrib/yeast.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/contrib/has-cors.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transports/polling.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transports/websocket.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transports/webtransport.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/transports/index.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/contrib/parseuri.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/socket.js","webpack://htcommunity/./node_modules/engine.io-client/build/esm/index.js","webpack://htcommunity/./node_modules/socket.io-client/build/esm/url.js","webpack://htcommunity/./node_modules/socket.io-parser/build/esm/is-binary.js","webpack://htcommunity/./node_modules/socket.io-parser/build/esm/binary.js","webpack://htcommunity/./node_modules/socket.io-parser/build/esm/index.js","webpack://htcommunity/./node_modules/socket.io-client/build/esm/on.js","webpack://htcommunity/./node_modules/socket.io-client/build/esm/socket.js","webpack://htcommunity/./node_modules/socket.io-client/build/esm/contrib/backo2.js","webpack://htcommunity/./node_modules/socket.io-client/build/esm/manager.js","webpack://htcommunity/./node_modules/socket.io-client/build/esm/index.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/parallelRequests.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/deltaStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/driver-base/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/driver-base/lib/documentDeltaConnection.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/errorUtils.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/documentDeltaConnection.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/prefetchDocumentStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/retriableGitManager.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/hashFileBrowser.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/summaryTreeUploadManager.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/shreddedSummaryDocumentStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/r11sSnapshotParser.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/treeUtils.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/wholeSummaryUploadManager.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/wholeSummaryDocumentStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/documentStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/gitManager.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/historian.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/nullBlobStorageService.js","webpack://htcommunity/./node_modules/@fluidframework/server-services-client/lib/constants.js","webpack://htcommunity/./node_modules/@fluidframework/server-services-client/lib/restLessClient.js","webpack://htcommunity/./node_modules/@fluidframework/common-utils/lib/base64Encoding.js","webpack://htcommunity/./node_modules/@fluidframework/server-services-client/lib/historian.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/queryStringUtils.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/restWrapperBase.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/restWrapper.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/documentService.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/routerliciousResolvedUrl.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/urlUtils.js","webpack://htcommunity/./node_modules/@fluidframework/routerlicious-driver/lib/documentServiceFactory.js","webpack://htcommunity/./node_modules/@fluidframework/azure-client/lib/AzureAudience.js","webpack://htcommunity/./node_modules/@fluidframework/azure-client/lib/AzureUrlResolver.js","webpack://htcommunity/./node_modules/@fluidframework/azure-client/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/azure-client/lib/AzureClient.js","webpack://htcommunity/./node_modules/@fluidframework/container-definitions/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/container-definitions/lib/loader.js","webpack://htcommunity/./node_modules/@fluidframework/container-definitions/lib/runtime.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/blobManager/blobManagerSnapSum.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/snapshotUtils.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/dataStoreContext.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/dataStoreContexts.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/channelCollection.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/storageServiceWithAttachBlobs.js","webpack://htcommunity/./node_modules/@fluid-internal/client-utils/lib/trace.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/promiseCache.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/batchTracker.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/blobManager/blobManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/connectionTelemetry.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/containerHandleContext.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/deltaManagerProxies.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcConfigs.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcReferenceGraphAlgorithm.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcSummaryStateTracker.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcTelemetry.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcUnreferencedStateTracker.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/garbageCollection.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/opGroupingManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/batchManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/opSplitter.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/metadata.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/remoteMessageProcessor.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/opDecompressor.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/outbox.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opLifecycle/opCompressor.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/pendingStateManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/deltaScheduler.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/scheduleManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/documentSchema.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summarizerNode/summarizerNodeUtils.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summarizerNode/summarizerNode.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summarizerNode/summarizerNodeWithGc.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summaryCollection.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/orderedClientElection.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/opProperties.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summarizerHeuristics.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summaryGenerator.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/runningSummarizer.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summarizer.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/runWhileConnectedCoordinator.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summaryManager.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/throttler.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/containerRuntime.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/dataStore.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/dataStoreRegistry.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcDefinitions.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/gc/gcHelpers.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/messageTypes.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summarizerClientElection.js","webpack://htcommunity/./node_modules/@fluidframework/container-runtime/lib/summary/summaryFormat.js","webpack://htcommunity/./node_modules/@fluidframework/core-interfaces/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/core-interfaces/lib/logger.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/assert.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/compare.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/delay.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/lazy.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/promises.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/timer.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/unreachable.js","webpack://htcommunity/./node_modules/@fluidframework/datastore/lib/fluidHandle.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/driverError.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/protocol/protocol.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/protocol/storage.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/protocol/summary.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/storage.js","webpack://htcommunity/./node_modules/@fluidframework/driver-definitions/lib/urlResolver.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/blob.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/buildSnapshotTree.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/documentStorageServiceProxy.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/messageRecognition.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/network.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/protocol/gitHelper.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/readAndParse.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/runWithRetry.js","webpack://htcommunity/./node_modules/@fluidframework/driver-utils/lib/storageUtils.js","webpack://htcommunity/./node_modules/@fluidframework/id-compressor/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/id-compressor/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/id-compressor/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/id-compressor/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/id-compressor/lib/utilities.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/localValues.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/map.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/mapKernel.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/mapFactory.js","webpack://htcommunity/./node_modules/@fluidframework/map/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-definitions/lib/dataStoreContext.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-definitions/lib/garbageCollectionDefinitions.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-definitions/lib/summary.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/dataStoreHandleContextUtils.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/dataStoreHelpers.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/deltaManager.js","webpack://htcommunity/./node_modules/@fluidframework/core-interfaces/lib/handles.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/handles.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/requestParser.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/summaryUtils.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/unpackUsedRoutes.js","webpack://htcommunity/./node_modules/@fluidframework/runtime-utils/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/sampledTelemetryHelper.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/handle.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/remoteObjectHandle.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/serializer.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/summarySerializer.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/sharedObject.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/shared-object-base/lib/valueType.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/config.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/error.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/node_modules/uuid/dist/esm-browser/native.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/node_modules/uuid/dist/esm-browser/rng.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/node_modules/uuid/dist/esm-browser/stringify.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/node_modules/uuid/dist/esm-browser/v4.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/errorLogging.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/eventEmitterWithErrorHandling.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/events.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/fluidErrorBase.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/logger.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/mathTools.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/thresholdCounter.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/utils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/brand.js","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/error/error.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/any/any.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/array/array.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/never/never.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/function/function.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/union/union.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/number/number.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/string/string.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/object/object.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/date/date.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/null/null.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/const/const.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/deref/deref.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/not/not.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/record/record.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/required/required.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/void/void.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/strict/strict.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/type/type/index.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/typeboxBrand.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/opaque.js","webpack://htcommunity/./node_modules/@fluidframework/core-utils/lib/oob.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/nestedMap.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/nestedSet.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/transactionResult.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/stackyIterator.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/utils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/referenceCounting.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/brandedMap.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/rangeMap.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/idAllocator.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/util/breakable.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/events/events.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/types.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/anchorSet.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/cursor.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/mapTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/pathTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/treeTextFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/codec/codec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/codec/discriminatedUnions.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/codec/noopValidator.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/codec/versioned/format.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/codec/versioned/codec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/schema-stored/format.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/schema-stored/schema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/schema-stored/multiplicity.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/schema-stored/storedSchemaRepository.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/persistedTreeTextFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/deltaUtil.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/visitDelta.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/rebase/types.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/rebase/changeRebaser.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/rebase/revisionTagCodec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/rebase/utils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/detachedFieldIndexFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/detachedFieldIndexCodec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/detachedFieldIndex.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/tree/visitorUtils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/forest/forest.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/schema-view/view.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/revertible/revertible.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/core/change-family/editBuilder.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/editableTreeBinder.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/valueUtilities.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/treeCursorUtils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/chunk.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/basicChunk.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/sequenceChunk.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/uniformChunk.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/chunkTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/forest-summary/format.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/forest-summary/codec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/forest-summary/forestSummarizer.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/mapTreeCursor.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/memoizedIdRangeAllocator.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/object-forest/objectForest.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schema-index/format.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schema-index/codec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schema-index/schemaSummarizer.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/treeTextCursor.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/fieldKind.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/isNeverTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/fieldKindWithEditor.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/comparison.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/crossFieldQueries.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/chunkedForest.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/formatGeneric.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/format.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/treeCompressionUtils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/emptyChunk.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/compressedEncode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/nodeShape.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/chunked-forest/codec/codecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/modularChangeFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/fieldChangeHandler.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/genericFieldKindFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/genericFieldKindTypes.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/genericFieldKind.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/modularChangeFamily.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/modular-schema/modularChangeCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/formatV1.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/deltaUtils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/types.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/utils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/moveEffectTable.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/relevantRemovedRoots.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/markListFactory.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/markQueue.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/compose.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/invert.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/prune.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/rebase.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/replaceRevisions.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/changeAtomIdCodec.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/formatV2.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/formatV3.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldEditor.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/optional-field/optionalFieldCodecV1.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/optional-field/optionalFieldCodecV2.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/optional-field/optionalFieldCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/optional-field/optionalField.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/default-schema/noChangeCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/default-schema/defaultFieldKinds.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/default-schema/defaultEditBuilder.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/default-schema/schemaChecker.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/default-schema/defaultSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/typed-schema/typeUtils.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/typed-schema/typedTreeSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/typed-schema/view.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/typed-schema/flexList.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/typed-schema/schemaCollection.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schemaBuilderBase.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schemaBuilder.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/node-key/nodeKeyManager.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/node-key/nodeKey.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/flexTreeTypes.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/navigation.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/lazyEntity.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/unboxed.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/lazyNode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/utilities.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/lazyField.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-tree/context.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/detachedFieldIndexSummarizer.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schema-edits/schemaChangeFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/schema-edits/schemaChangeCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/mitigatedChangeFamily.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/feature-libraries/flex-map-tree/mapTreeNode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/transactionStack.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/branch.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/sequenceIdUtils.js","webpack://htcommunity/./node_modules/@fluidframework/telemetry-utils/lib/telemetryEventBatcher.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/editManager.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/editManagerFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/editManagerCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/editManagerSummarizer.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/messageFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/messageCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/changeEnricher.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/defaultResubmitMachine.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/transactionEnricher.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/branchCommitEnricher.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree-core/sharedTreeCore.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/core/treeNodeKernel.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/core/withType.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/core/treeNodeSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/core/types.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/core/schemaCaching.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/schemaTypes.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/toFlexSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/domains/leafDomain.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/domains/schemaBuilder.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/domains/json/jsonDomainSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/domains/json/jsonCursor.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/leafNodeSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/objectNodeTypes.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/proxyBinding.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/proxies.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/toMapTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/treeNodeValid.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/arrayNode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/objectNode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/mapNode.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/api/schemaFactoryRecursive.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/api/schemaFactory.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/api/tree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/api/treeNodeApi.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/api/testRecursiveDomain.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/simpleSchemaToJsonSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/viewSchemaToSimpleSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/getSimpleSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/simple-tree/getJsonSchema.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/schematizeTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/treeView.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/schematizingTreeView.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/sharedTreeChangeFormat.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/sharedTreeChangeCodecs.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/sharedTreeEditBuilder.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/sharedTreeChangeFamily.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/sharedTreeChangeEnricher.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/treeCheckout.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/sharedTree.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/shared-tree/treeApi.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/packageVersion.js","webpack://htcommunity/./node_modules/@fluidframework/tree/lib/treeFactory.js","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/system/policy.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/system/system.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/errors/function.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/errors/errors.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/check/check.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs","webpack://htcommunity/./node_modules/@fluidframework/tree/node_modules/@sinclair/typebox/build/esm/compiler/compiler.mjs","webpack://htcommunity/./node_modules/@ungap/structured-clone/esm/types.js","webpack://htcommunity/./node_modules/@ungap/structured-clone/esm/deserialize.js","webpack://htcommunity/./node_modules/@ungap/structured-clone/esm/serialize.js","webpack://htcommunity/./node_modules/@ungap/structured-clone/esm/index.js","webpack://htcommunity/./node_modules/hookable/dist/index.mjs","webpack://htcommunity/./node_modules/@unhead/shared/dist/index.mjs","webpack://htcommunity/./node_modules/@unhead/dom/dist/index.mjs","webpack://htcommunity/./node_modules/unhead/dist/index.mjs","webpack://htcommunity/./node_modules/@unhead/vue/dist/shared/vue.cf295fb1.mjs","webpack://htcommunity/./node_modules/@unhead/vue/dist/shared/vue.f36acd1f.mjs","webpack://htcommunity/./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.mjs","webpack://htcommunity/./node_modules/@vueuse/core/index.mjs","webpack://htcommunity/./node_modules/@unhead/vue/dist/polyfill.mjs","webpack://htcommunity/./node_modules/@vueuse/head/dist/index.mjs","webpack://htcommunity/./node_modules/@vueuse/shared/index.mjs","webpack://htcommunity/./node_modules/axios/lib/helpers/bind.js","webpack://htcommunity/./node_modules/axios/lib/utils.js","webpack://htcommunity/./node_modules/axios/lib/core/AxiosError.js","webpack://htcommunity/./node_modules/axios/lib/helpers/null.js","webpack://htcommunity/./node_modules/axios/lib/helpers/toFormData.js","webpack://htcommunity/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://htcommunity/./node_modules/axios/lib/helpers/buildURL.js","webpack://htcommunity/./node_modules/axios/lib/core/InterceptorManager.js","webpack://htcommunity/./node_modules/axios/lib/defaults/transitional.js","webpack://htcommunity/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://htcommunity/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://htcommunity/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://htcommunity/./node_modules/axios/lib/platform/browser/index.js","webpack://htcommunity/./node_modules/axios/lib/platform/common/utils.js","webpack://htcommunity/./node_modules/axios/lib/platform/index.js","webpack://htcommunity/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://htcommunity/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://htcommunity/./node_modules/axios/lib/defaults/index.js","webpack://htcommunity/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://htcommunity/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://htcommunity/./node_modules/axios/lib/core/transformData.js","webpack://htcommunity/./node_modules/axios/lib/cancel/isCancel.js","webpack://htcommunity/./node_modules/axios/lib/cancel/CanceledError.js","webpack://htcommunity/./node_modules/axios/lib/core/settle.js","webpack://htcommunity/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://htcommunity/./node_modules/axios/lib/helpers/speedometer.js","webpack://htcommunity/./node_modules/axios/lib/helpers/throttle.js","webpack://htcommunity/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://htcommunity/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://htcommunity/./node_modules/axios/lib/helpers/cookies.js","webpack://htcommunity/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://htcommunity/./node_modules/axios/lib/helpers/combineURLs.js","webpack://htcommunity/./node_modules/axios/lib/core/buildFullPath.js","webpack://htcommunity/./node_modules/axios/lib/core/mergeConfig.js","webpack://htcommunity/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://htcommunity/./node_modules/axios/lib/adapters/xhr.js","webpack://htcommunity/./node_modules/axios/lib/helpers/composeSignals.js","webpack://htcommunity/./node_modules/axios/lib/helpers/trackStream.js","webpack://htcommunity/./node_modules/axios/lib/adapters/fetch.js","webpack://htcommunity/./node_modules/axios/lib/adapters/adapters.js","webpack://htcommunity/./node_modules/axios/lib/core/dispatchRequest.js","webpack://htcommunity/./node_modules/axios/lib/env/data.js","webpack://htcommunity/./node_modules/axios/lib/helpers/validator.js","webpack://htcommunity/./node_modules/axios/lib/core/Axios.js","webpack://htcommunity/./node_modules/axios/lib/cancel/CancelToken.js","webpack://htcommunity/./node_modules/axios/lib/helpers/spread.js","webpack://htcommunity/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://htcommunity/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://htcommunity/./node_modules/axios/lib/axios.js","webpack://htcommunity/./node_modules/element-plus/es/_virtual/plugin-vue_export-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/badge/src/badge.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/badge/src/badge2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/badge/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/use-button.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/button-custom.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/button2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/button-group.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/button-group2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/button/src/button.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/config-provider/src/config-provider-props.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/config-provider/src/config-provider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/config-provider/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/config-provider/src/hooks/use-global-config.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/focus-trap/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-escape-keydown/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/focus-trap/src/focus-trap.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/focus-trap/src/tokens.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-prop/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/hooks/use-form-common-props.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/hooks/use-form-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/icon/src/icon.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/icon/src/icon2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/icon/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input/src/input.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-cursor/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input/src/input2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/directives/trap-focus/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message-box/src/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message-box/src/messageBox.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message-box/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message/src/message.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message/src/instance.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message/src/message2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message/src/method.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/message/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/overlay/src/overlay.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/overlay/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/constants/aria.mjs","webpack://htcommunity/./node_modules/element-plus/es/constants/event.mjs","webpack://htcommunity/./node_modules/element-plus/es/constants/size.mjs","webpack://htcommunity/./node_modules/element-plus/es/version.mjs","webpack://htcommunity/./node_modules/element-plus/es/constants/key.mjs","webpack://htcommunity/./node_modules/element-plus/es/make-installer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/affix/src/affix.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/affix/src/affix2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/affix/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/alert/src/alert.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/alert/src/alert2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/alert/index.mjs","webpack://htcommunity/./node_modules/lodash-es/now.js","webpack://htcommunity/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://htcommunity/./node_modules/lodash-es/_baseTrim.js","webpack://htcommunity/./node_modules/lodash-es/toNumber.js","webpack://htcommunity/./node_modules/lodash-es/debounce.js","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/util.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/thumb.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/thumb2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/bar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/bar2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/scrollbar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/src/scrollbar2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/scrollbar/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/popper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/popper2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-timeout/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-delayed-toggle/index.mjs","webpack://htcommunity/./node_modules/@popperjs/core/dist/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/trigger.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/trigger.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-model-toggle/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/arrow.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/tooltip.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/dom/event.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-forward-ref/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slot/src/only-child.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/trigger2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/trigger2.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-popper-container/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/composables/use-focus-trap.mjs","webpack://htcommunity/./node_modules/lodash-es/isUndefined.js","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-popper/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/composables/use-content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/composables/use-content-dom.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/content2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/content2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popper/src/arrow2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/src/tooltip2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/autocomplete/src/autocomplete.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/autocomplete/src/autocomplete2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/autocomplete/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/avatar/src/avatar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/avatar/src/avatar2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/avatar/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/backtop/src/backtop2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/backtop/src/use-backtop.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/backtop/src/backtop.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/backtop/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/breadcrumb/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/breadcrumb/src/breadcrumb.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/breadcrumb/src/breadcrumb2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/breadcrumb/src/breadcrumb-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/breadcrumb/src/breadcrumb-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/breadcrumb/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/src/date-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/constants/date.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/src/use-date-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/src/date-table2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/src/use-calendar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/src/calendar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/src/calendar2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/calendar/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/card/src/card.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/card/src/card2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/card/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/carousel.mjs","webpack://htcommunity/./node_modules/lodash-es/throttle.js","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-ordered-children/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/use-carousel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/carousel2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/carousel-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/use-carousel-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/src/carousel-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/carousel/index.mjs","webpack://htcommunity/./node_modules/lodash-es/_stackClear.js","webpack://htcommunity/./node_modules/lodash-es/_stackDelete.js","webpack://htcommunity/./node_modules/lodash-es/_stackGet.js","webpack://htcommunity/./node_modules/lodash-es/_stackHas.js","webpack://htcommunity/./node_modules/lodash-es/_stackSet.js","webpack://htcommunity/./node_modules/lodash-es/_Stack.js","webpack://htcommunity/./node_modules/lodash-es/_arrayEach.js","webpack://htcommunity/./node_modules/lodash-es/_copyObject.js","webpack://htcommunity/./node_modules/lodash-es/_baseTimes.js","webpack://htcommunity/./node_modules/lodash-es/stubFalse.js","webpack://htcommunity/./node_modules/lodash-es/isBuffer.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://htcommunity/./node_modules/lodash-es/_baseUnary.js","webpack://htcommunity/./node_modules/lodash-es/_nodeUtil.js","webpack://htcommunity/./node_modules/lodash-es/isTypedArray.js","webpack://htcommunity/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://htcommunity/./node_modules/lodash-es/_isPrototype.js","webpack://htcommunity/./node_modules/lodash-es/_overArg.js","webpack://htcommunity/./node_modules/lodash-es/_nativeKeys.js","webpack://htcommunity/./node_modules/lodash-es/_baseKeys.js","webpack://htcommunity/./node_modules/lodash-es/isArrayLike.js","webpack://htcommunity/./node_modules/lodash-es/keys.js","webpack://htcommunity/./node_modules/lodash-es/_baseAssign.js","webpack://htcommunity/./node_modules/lodash-es/_nativeKeysIn.js","webpack://htcommunity/./node_modules/lodash-es/_baseKeysIn.js","webpack://htcommunity/./node_modules/lodash-es/keysIn.js","webpack://htcommunity/./node_modules/lodash-es/_baseAssignIn.js","webpack://htcommunity/./node_modules/lodash-es/_cloneBuffer.js","webpack://htcommunity/./node_modules/lodash-es/_copyArray.js","webpack://htcommunity/./node_modules/lodash-es/_arrayFilter.js","webpack://htcommunity/./node_modules/lodash-es/stubArray.js","webpack://htcommunity/./node_modules/lodash-es/_getSymbols.js","webpack://htcommunity/./node_modules/lodash-es/_copySymbols.js","webpack://htcommunity/./node_modules/lodash-es/_getPrototype.js","webpack://htcommunity/./node_modules/lodash-es/_getSymbolsIn.js","webpack://htcommunity/./node_modules/lodash-es/_copySymbolsIn.js","webpack://htcommunity/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://htcommunity/./node_modules/lodash-es/_getAllKeys.js","webpack://htcommunity/./node_modules/lodash-es/_getAllKeysIn.js","webpack://htcommunity/./node_modules/lodash-es/_DataView.js","webpack://htcommunity/./node_modules/lodash-es/_Promise.js","webpack://htcommunity/./node_modules/lodash-es/_Set.js","webpack://htcommunity/./node_modules/lodash-es/_WeakMap.js","webpack://htcommunity/./node_modules/lodash-es/_getTag.js","webpack://htcommunity/./node_modules/lodash-es/_initCloneArray.js","webpack://htcommunity/./node_modules/lodash-es/_Uint8Array.js","webpack://htcommunity/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://htcommunity/./node_modules/lodash-es/_cloneDataView.js","webpack://htcommunity/./node_modules/lodash-es/_cloneRegExp.js","webpack://htcommunity/./node_modules/lodash-es/_cloneSymbol.js","webpack://htcommunity/./node_modules/lodash-es/_cloneTypedArray.js","webpack://htcommunity/./node_modules/lodash-es/_initCloneByTag.js","webpack://htcommunity/./node_modules/lodash-es/_baseCreate.js","webpack://htcommunity/./node_modules/lodash-es/_initCloneObject.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsMap.js","webpack://htcommunity/./node_modules/lodash-es/isMap.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsSet.js","webpack://htcommunity/./node_modules/lodash-es/isSet.js","webpack://htcommunity/./node_modules/lodash-es/_baseClone.js","webpack://htcommunity/./node_modules/lodash-es/cloneDeep.js","webpack://htcommunity/./node_modules/lodash-es/_setCacheAdd.js","webpack://htcommunity/./node_modules/lodash-es/_setCacheHas.js","webpack://htcommunity/./node_modules/lodash-es/_SetCache.js","webpack://htcommunity/./node_modules/lodash-es/_arraySome.js","webpack://htcommunity/./node_modules/lodash-es/_cacheHas.js","webpack://htcommunity/./node_modules/lodash-es/_equalArrays.js","webpack://htcommunity/./node_modules/lodash-es/_mapToArray.js","webpack://htcommunity/./node_modules/lodash-es/_setToArray.js","webpack://htcommunity/./node_modules/lodash-es/_equalByTag.js","webpack://htcommunity/./node_modules/lodash-es/_equalObjects.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsEqual.js","webpack://htcommunity/./node_modules/lodash-es/isEqual.js","webpack://htcommunity/./node_modules/lodash-es/flattenDeep.js","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/checkbox.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/composables/use-checkbox-disabled.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/composables/use-checkbox-event.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/composables/use-checkbox-model.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/composables/use-checkbox-status.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/composables/use-checkbox.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/checkbox2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/checkbox-button.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/checkbox-group.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/src/checkbox-group2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/checkbox/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/radio.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/use-radio.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/radio2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/radio-button.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/radio-button2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/radio-group.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/src/radio-group2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/radio/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/node-content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/types.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/node2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/menu.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/strings.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/node.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/store.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/config.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/arrays.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/src/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader-panel/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tag/src/tag.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tag/src/tag2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tag/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader/src/cascader.mjs","webpack://htcommunity/./node_modules/element-plus/es/directives/click-outside/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader/src/cascader2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/cascader/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/check-tag/src/check-tag.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/check-tag/src/check-tag2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/check-tag/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/col/src/col.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/row/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/col/src/col2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/col/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/collapse.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/constants.mjs","webpack://htcommunity/./node_modules/lodash-es/castArray.js","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/use-collapse.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/collapse2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse-transition/src/collapse-transition.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse-transition/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/collapse-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/use-collapse-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/src/collapse-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collapse/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/props/alpha-slider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/utils/draggable.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/dom/position.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/composables/use-alpha-slider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/components/alpha-slider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/components/hue-slider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/color-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/utils/color.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/components/predefine.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/components/sv-panel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/src/color-picker2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/color-picker/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/config-provider/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/container/src/container.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/container/src/aside.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/container/src/footer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/container/src/header.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/container/src/main.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/container/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/props/shared.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/common/props.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/date-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/shared.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/panel-date-pick.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/basic-date-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/composables/use-basic-date-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/basic-cell.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/basic-cell-render.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/basic-date-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/basic-month-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/basic-month-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/basic-year-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/basic-year-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/props/panel-time-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/composables/use-time-panel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/composables/use-time-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/props/basic-time-spinner.mjs","webpack://htcommunity/./node_modules/element-plus/es/directives/repeat-click/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/time-picker-com/basic-time-spinner.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/time-picker-com/panel-time-pick.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/panel-date-pick.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/panel-date-range.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/composables/use-shortcut.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/composables/use-range-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/panel-date-range.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/props/panel-month-range.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/composables/use-month-range-header.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker-com/panel-month-range.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/panel-utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/common/picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/src/date-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/date-picker/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/token.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/descriptions-cell.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/descriptions-row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/descriptions-row2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/description.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/description2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/src/description-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/descriptions/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/src/dialog-content2.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/vue/refs.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/src/dialog-content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/src/dialog.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/src/use-dialog.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/src/dialog2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dialog/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/divider/src/divider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/divider/src/divider2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/divider/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/drawer/src/drawer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/drawer/src/drawer2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/drawer/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collection/src/collection2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collection/src/collection-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/collection/src/collection.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/dropdown.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/tokens.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/roving-focus-group/src/roving-focus-group.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/roving-focus-group/src/tokens.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/roving-focus-group/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/roving-focus-group/src/roving-focus-group-impl.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/roving-focus-group/src/roving-focus-group2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/dropdown2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/dropdown-item-impl.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/useDropdown.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/roving-focus-group/src/roving-focus-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/dropdown-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/src/dropdown-menu.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/dropdown/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/empty/src/img-empty.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/empty/src/empty.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/empty/src/empty2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/empty/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/form.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/form2.mjs","webpack://htcommunity/./node_modules/async-validator/dist-web/index.js","webpack://htcommunity/./node_modules/lodash-es/clone.js","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/form-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/form-label-wrap.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/src/form-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/form/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/image-viewer/src/image-viewer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/image-viewer/src/image-viewer2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/image-viewer/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/image/src/image.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/image/src/image2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/image/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input-number/src/input-number.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input-number/src/input-number2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/input-number/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/link/src/link.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/link/src/link2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/link/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/utils/submenu.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/utils/menu-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/utils/menu-bar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/menu-collapse-transition.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/use-menu.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/use-menu-color.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/use-menu-css-var.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/sub-menu.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/menu.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/menu-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/menu-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/menu-item-group.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/src/menu-item-group2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/menu/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/page-header/src/page-header.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/page-header/src/page-header2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/page-header/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/prev.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/prev2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/next.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/next2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/token.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/useOption.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/option.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/select-dropdown.mjs","webpack://htcommunity/./node_modules/lodash-es/_baseFindIndex.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsMatch.js","webpack://htcommunity/./node_modules/lodash-es/_isStrictComparable.js","webpack://htcommunity/./node_modules/lodash-es/_getMatchData.js","webpack://htcommunity/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://htcommunity/./node_modules/lodash-es/_baseMatches.js","webpack://htcommunity/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://htcommunity/./node_modules/lodash-es/_baseProperty.js","webpack://htcommunity/./node_modules/lodash-es/_basePropertyDeep.js","webpack://htcommunity/./node_modules/lodash-es/property.js","webpack://htcommunity/./node_modules/lodash-es/_baseIteratee.js","webpack://htcommunity/./node_modules/lodash-es/toFinite.js","webpack://htcommunity/./node_modules/lodash-es/toInteger.js","webpack://htcommunity/./node_modules/lodash-es/findLastIndex.js","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/useInput.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/useSelect.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/options.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/select.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/select2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/src/option-group.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/usePagination.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/sizes.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/sizes2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/jumper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/jumper2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/total.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/total2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/pager.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/components/pager2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/src/pagination.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/pagination/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popconfirm/src/popconfirm.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popconfirm/src/popconfirm2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popconfirm/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popover/src/popover.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popover/src/popover2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popover/src/directive.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/popover/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/progress/src/progress2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/progress/src/progress.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/progress/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/rate/src/rate.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/rate/src/rate2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/rate/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/result/src/result.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/result/src/result2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/result/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/row/src/row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/row/src/row2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/row/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/group-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/useOption.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/useProps.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/defaults.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/token.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/option-item.mjs","webpack://htcommunity/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/hooks/use-cache.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/defaults.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/hooks/use-wheel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/props.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/components/scrollbar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/builders/build-list.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/components/fixed-size-list.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/components/dynamic-size-list.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/select-dropdown.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/useAllowCreate.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/useSelect.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/src/select.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/select-v2/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/skeleton/src/skeleton.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/skeleton/src/skeleton-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/skeleton/src/skeleton-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-throttle-render/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/skeleton/src/skeleton2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/skeleton/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/slider.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/button.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/composables/use-slider-button.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/button2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/marker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/composables/use-slide.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/composables/use-stops.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/composables/use-marks.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/composables/use-watch.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/composables/use-lifecycle.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/src/slider2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/slider/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/space/src/item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/space/src/use-space.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/space/src/space.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/space/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/statistic/src/statistic.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/statistic/src/statistic2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/statistic/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/countdown/src/countdown.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/countdown/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/countdown/src/countdown2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/countdown/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/steps/src/steps.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/steps/src/steps2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/steps/src/item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/steps/src/item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/steps/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/switch/src/switch.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/switch/src/switch2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/switch/index.mjs","webpack://htcommunity/./node_modules/lodash-es/_createBaseFor.js","webpack://htcommunity/./node_modules/lodash-es/_baseFor.js","webpack://htcommunity/./node_modules/lodash-es/_baseForOwn.js","webpack://htcommunity/./node_modules/lodash-es/_createBaseEach.js","webpack://htcommunity/./node_modules/lodash-es/_baseEach.js","webpack://htcommunity/./node_modules/lodash-es/_baseMap.js","webpack://htcommunity/./node_modules/lodash-es/map.js","webpack://htcommunity/./node_modules/lodash-es/flatMap.js","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/util.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/store/expand.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/store/current.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/store/tree.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/store/watcher.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/store/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/store/helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-layout.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/filter-panel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/layout-observer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/tokens.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-header/event-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-header/style.helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-header/utils-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-header/index.mjs","webpack://htcommunity/./node_modules/lodash-es/_assignMergeValue.js","webpack://htcommunity/./node_modules/lodash-es/isArrayLikeObject.js","webpack://htcommunity/./node_modules/lodash-es/isPlainObject.js","webpack://htcommunity/./node_modules/lodash-es/_safeGet.js","webpack://htcommunity/./node_modules/lodash-es/toPlainObject.js","webpack://htcommunity/./node_modules/lodash-es/_baseMergeDeep.js","webpack://htcommunity/./node_modules/lodash-es/_baseMerge.js","webpack://htcommunity/./node_modules/lodash-es/_baseRest.js","webpack://htcommunity/./node_modules/lodash-es/_isIterateeCall.js","webpack://htcommunity/./node_modules/lodash-es/_createAssigner.js","webpack://htcommunity/./node_modules/lodash-es/merge.js","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-body/events-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-body/styles-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-body/render-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-body/defaults.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-body/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-footer/mapState-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-footer/style-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-footer/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table/utils-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table/style-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table/key-render-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table/defaults.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/h-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/composables/use-scrollbar.mjs","webpack://htcommunity/./node_modules/normalize-wheel-es/dist/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/directives/mousewheel/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/config.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-column/watcher-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-column/render-helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-column/defaults.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/src/table-column/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/private.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/use-columns.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/use-scrollbar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/use-row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/use-data.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/use-styles.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/use-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/tokens.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/common.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/header.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/grid.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/hooks/use-grid-wheel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/builders/build-grid.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/components/dynamic-size-grid.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/virtual-list/src/components/fixed-size-grid.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/header.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/table-grid.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/main-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/left-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/right-table.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/cell.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/expand-icon.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/cell.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/header-row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/header-row.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/header.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/header-cell.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/sort-icon.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/header-cell.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/footer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/empty.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/renderers/overlay.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/table-v2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/auto-resizer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/composables/use-auto-resize.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/src/components/auto-resizer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/table-v2/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/tab-bar.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/tab-bar2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/tab-nav.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/tabs.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/tab-pane.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/src/tab-pane2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tabs/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/text/src/text.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/text/src/text2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/text/index.mjs","webpack://htcommunity/./node_modules/lodash-es/_baseIsNaN.js","webpack://htcommunity/./node_modules/lodash-es/_strictIndexOf.js","webpack://htcommunity/./node_modules/lodash-es/_baseIndexOf.js","webpack://htcommunity/./node_modules/lodash-es/_arrayIncludes.js","webpack://htcommunity/./node_modules/lodash-es/_arrayIncludesWith.js","webpack://htcommunity/./node_modules/lodash-es/noop.js","webpack://htcommunity/./node_modules/lodash-es/_createSet.js","webpack://htcommunity/./node_modules/lodash-es/_baseUniq.js","webpack://htcommunity/./node_modules/lodash-es/union.js","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/props/panel-time-range.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/time-picker-com/panel-time-range.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/src/time-picker.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-picker/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-select/src/time-select.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-select/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-select/src/time-select2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/time-select/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/timeline/src/timeline.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/timeline/src/timeline-item.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/timeline/src/timeline-item2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/timeline/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/common.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/arrow.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/root.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/trigger.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/tooltip.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/root2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/arrow2.mjs","webpack://htcommunity/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://htcommunity/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://htcommunity/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://htcommunity/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-floating/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/visual-hidden/src/visual-hidden.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/visual-hidden/src/visual-hidden2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/content2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/forward-ref.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/trigger2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/src/tooltip2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tooltip-v2/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/transfer.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/transfer-panel.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/composables/use-props-alias.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/composables/use-check.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/transfer-panel2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/composables/use-computed-data.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/composables/use-checked-change.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/composables/use-move.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/src/transfer2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/transfer/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/model/util.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/model/node.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/model/tree-store.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/tree-node-content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/model/useNodeExpandEventBroadcast.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/model/useDragNode.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/tree-node.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/model/useKeydown.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/src/tree.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/src/select.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/src/tree-select-option.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/src/tree.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/src/cache-options.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/src/tree-select.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-select/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/virtual-tree.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/composables/useCheck.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/composables/useFilter.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/composables/useTree.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/tree-node-content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/tree-node.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/src/tree.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tree-v2/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/ajax.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload-list.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload-list2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload-dragger.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload-dragger2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload-content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload-content2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/use-handlers.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/src/upload2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/upload/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/watermark/src/watermark.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/watermark/src/utils.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/watermark/src/useClips.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/watermark/src/watermark2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/watermark/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/mask.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/helper.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/mask2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/content.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/content2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/steps.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/tour.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/tour2.mjs","webpack://htcommunity/./node_modules/lodash-es/last.js","webpack://htcommunity/./node_modules/lodash-es/_baseSlice.js","webpack://htcommunity/./node_modules/lodash-es/_parent.js","webpack://htcommunity/./node_modules/lodash-es/_baseUnset.js","webpack://htcommunity/./node_modules/lodash-es/_customOmitClone.js","webpack://htcommunity/./node_modules/lodash-es/omit.js","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/step2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/src/step.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/tour/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/anchor/src/anchor.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/anchor/src/constants.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/dom/element.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/throttleByRaf.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/anchor/src/anchor2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/anchor/src/anchor-link.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/anchor/src/anchor-link2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/anchor/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/segmented/src/segmented.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/segmented/src/segmented2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/segmented/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/component.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/infinite-scroll/src/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/infinite-scroll/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/loading/src/loading.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/loading/src/service.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/loading/src/directive.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/loading/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/notification/src/notification.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/notification/src/notification2.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/notification/src/notify.mjs","webpack://htcommunity/./node_modules/element-plus/es/components/notification/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/plugin.mjs","webpack://htcommunity/./node_modules/element-plus/es/defaults.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-aria/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-attrs/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-deprecated/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-draggable/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-empty-values/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-focus-controller/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-id/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/locale/lang/en.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-locale/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-lockscreen/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-namespace/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-same-target/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-size/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/hooks/use-z-index/index.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/browser.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/dom/aria.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/easings.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/dom/scroll.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/dom/style.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/error.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/i18n.mjs","webpack://htcommunity/./node_modules/lodash-es/set.js","webpack://htcommunity/./node_modules/element-plus/es/utils/objects.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/raf.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/types.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/typescript.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/vue/icon.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/vue/install.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/vue/props/runtime.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/vue/validator.mjs","webpack://htcommunity/./node_modules/element-plus/es/utils/vue/vnode.mjs","webpack://htcommunity/./node_modules/fluid-framework/lib/index.js","webpack://htcommunity/./node_modules/js-base64/base64.mjs","webpack://htcommunity/./node_modules/konva/lib/Global.js","webpack://htcommunity/./node_modules/konva/lib/Util.js","webpack://htcommunity/./node_modules/konva/lib/Validators.js","webpack://htcommunity/./node_modules/konva/lib/Factory.js","webpack://htcommunity/./node_modules/konva/lib/Context.js","webpack://htcommunity/./node_modules/konva/lib/Canvas.js","webpack://htcommunity/./node_modules/konva/lib/DragAndDrop.js","webpack://htcommunity/./node_modules/konva/lib/Node.js","webpack://htcommunity/./node_modules/konva/lib/Container.js","webpack://htcommunity/./node_modules/konva/lib/PointerEvents.js","webpack://htcommunity/./node_modules/konva/lib/Stage.js","webpack://htcommunity/./node_modules/konva/lib/Shape.js","webpack://htcommunity/./node_modules/konva/lib/Layer.js","webpack://htcommunity/./node_modules/konva/lib/FastLayer.js","webpack://htcommunity/./node_modules/konva/lib/Group.js","webpack://htcommunity/./node_modules/konva/lib/Animation.js","webpack://htcommunity/./node_modules/konva/lib/Tween.js","webpack://htcommunity/./node_modules/konva/lib/_CoreInternals.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Arc.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Line.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Path.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Arrow.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Circle.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Ellipse.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Image.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Label.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Rect.js","webpack://htcommunity/./node_modules/konva/lib/shapes/RegularPolygon.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Ring.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Sprite.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Star.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Text.js","webpack://htcommunity/./node_modules/konva/lib/shapes/TextPath.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Transformer.js","webpack://htcommunity/./node_modules/konva/lib/shapes/Wedge.js","webpack://htcommunity/./node_modules/konva/lib/filters/Blur.js","webpack://htcommunity/./node_modules/konva/lib/filters/Brighten.js","webpack://htcommunity/./node_modules/konva/lib/filters/Contrast.js","webpack://htcommunity/./node_modules/konva/lib/filters/Emboss.js","webpack://htcommunity/./node_modules/konva/lib/filters/Enhance.js","webpack://htcommunity/./node_modules/konva/lib/filters/Grayscale.js","webpack://htcommunity/./node_modules/konva/lib/filters/HSL.js","webpack://htcommunity/./node_modules/konva/lib/filters/HSV.js","webpack://htcommunity/./node_modules/konva/lib/filters/Invert.js","webpack://htcommunity/./node_modules/konva/lib/filters/Kaleidoscope.js","webpack://htcommunity/./node_modules/konva/lib/filters/Mask.js","webpack://htcommunity/./node_modules/konva/lib/filters/Noise.js","webpack://htcommunity/./node_modules/konva/lib/filters/Pixelate.js","webpack://htcommunity/./node_modules/konva/lib/filters/Posterize.js","webpack://htcommunity/./node_modules/konva/lib/filters/RGB.js","webpack://htcommunity/./node_modules/konva/lib/filters/RGBA.js","webpack://htcommunity/./node_modules/konva/lib/filters/Sepia.js","webpack://htcommunity/./node_modules/konva/lib/filters/Solarize.js","webpack://htcommunity/./node_modules/konva/lib/filters/Threshold.js","webpack://htcommunity/./node_modules/konva/lib/_FullInternals.js","webpack://htcommunity/./node_modules/konva/lib/index.js","webpack://htcommunity/./node_modules/lodash-es/_listCacheClear.js","webpack://htcommunity/./node_modules/lodash-es/_assocIndexOf.js","webpack://htcommunity/./node_modules/lodash-es/_listCacheDelete.js","webpack://htcommunity/./node_modules/lodash-es/_listCacheGet.js","webpack://htcommunity/./node_modules/lodash-es/_listCacheHas.js","webpack://htcommunity/./node_modules/lodash-es/_listCacheSet.js","webpack://htcommunity/./node_modules/lodash-es/_ListCache.js","webpack://htcommunity/./node_modules/lodash-es/_Map.js","webpack://htcommunity/./node_modules/lodash-es/_nativeCreate.js","webpack://htcommunity/./node_modules/lodash-es/_hashClear.js","webpack://htcommunity/./node_modules/lodash-es/_hashDelete.js","webpack://htcommunity/./node_modules/lodash-es/_hashGet.js","webpack://htcommunity/./node_modules/lodash-es/_hashHas.js","webpack://htcommunity/./node_modules/lodash-es/_hashSet.js","webpack://htcommunity/./node_modules/lodash-es/_Hash.js","webpack://htcommunity/./node_modules/lodash-es/_mapCacheClear.js","webpack://htcommunity/./node_modules/lodash-es/_isKeyable.js","webpack://htcommunity/./node_modules/lodash-es/_getMapData.js","webpack://htcommunity/./node_modules/lodash-es/_mapCacheDelete.js","webpack://htcommunity/./node_modules/lodash-es/_mapCacheGet.js","webpack://htcommunity/./node_modules/lodash-es/_mapCacheHas.js","webpack://htcommunity/./node_modules/lodash-es/_mapCacheSet.js","webpack://htcommunity/./node_modules/lodash-es/_MapCache.js","webpack://htcommunity/./node_modules/lodash-es/_Symbol.js","webpack://htcommunity/./node_modules/lodash-es/_arrayMap.js","webpack://htcommunity/./node_modules/lodash-es/_arrayPush.js","webpack://htcommunity/./node_modules/lodash-es/_assignValue.js","webpack://htcommunity/./node_modules/lodash-es/_baseAssignValue.js","webpack://htcommunity/./node_modules/lodash-es/_isFlattenable.js","webpack://htcommunity/./node_modules/lodash-es/_baseFlatten.js","webpack://htcommunity/./node_modules/lodash-es/_baseGet.js","webpack://htcommunity/./node_modules/lodash-es/_getRawTag.js","webpack://htcommunity/./node_modules/lodash-es/_objectToString.js","webpack://htcommunity/./node_modules/lodash-es/_baseGetTag.js","webpack://htcommunity/./node_modules/lodash-es/_baseSet.js","webpack://htcommunity/./node_modules/lodash-es/_memoizeCapped.js","webpack://htcommunity/./node_modules/lodash-es/_stringToPath.js","webpack://htcommunity/./node_modules/lodash-es/_baseToString.js","webpack://htcommunity/./node_modules/lodash-es/toString.js","webpack://htcommunity/./node_modules/lodash-es/_castPath.js","webpack://htcommunity/./node_modules/lodash-es/_defineProperty.js","webpack://htcommunity/./node_modules/lodash-es/_flatRest.js","webpack://htcommunity/./node_modules/lodash-es/_freeGlobal.js","webpack://htcommunity/./node_modules/lodash-es/_coreJsData.js","webpack://htcommunity/./node_modules/lodash-es/_isMasked.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsNative.js","webpack://htcommunity/./node_modules/lodash-es/_getValue.js","webpack://htcommunity/./node_modules/lodash-es/_getNative.js","webpack://htcommunity/./node_modules/lodash-es/_isIndex.js","webpack://htcommunity/./node_modules/lodash-es/_isKey.js","webpack://htcommunity/./node_modules/lodash-es/_apply.js","webpack://htcommunity/./node_modules/lodash-es/_overRest.js","webpack://htcommunity/./node_modules/lodash-es/_root.js","webpack://htcommunity/./node_modules/lodash-es/constant.js","webpack://htcommunity/./node_modules/lodash-es/_baseSetToString.js","webpack://htcommunity/./node_modules/lodash-es/_shortOut.js","webpack://htcommunity/./node_modules/lodash-es/_setToString.js","webpack://htcommunity/./node_modules/lodash-es/_toKey.js","webpack://htcommunity/./node_modules/lodash-es/_toSource.js","webpack://htcommunity/./node_modules/lodash-es/eq.js","webpack://htcommunity/./node_modules/lodash-es/flatten.js","webpack://htcommunity/./node_modules/lodash-es/fromPairs.js","webpack://htcommunity/./node_modules/lodash-es/get.js","webpack://htcommunity/./node_modules/lodash-es/_baseHasIn.js","webpack://htcommunity/./node_modules/lodash-es/_hasPath.js","webpack://htcommunity/./node_modules/lodash-es/hasIn.js","webpack://htcommunity/./node_modules/lodash-es/identity.js","webpack://htcommunity/./node_modules/lodash-es/_baseIsArguments.js","webpack://htcommunity/./node_modules/lodash-es/isArguments.js","webpack://htcommunity/./node_modules/lodash-es/isArray.js","webpack://htcommunity/./node_modules/lodash-es/isFunction.js","webpack://htcommunity/./node_modules/lodash-es/isLength.js","webpack://htcommunity/./node_modules/lodash-es/isNil.js","webpack://htcommunity/./node_modules/lodash-es/isObject.js","webpack://htcommunity/./node_modules/lodash-es/isObjectLike.js","webpack://htcommunity/./node_modules/lodash-es/isSymbol.js","webpack://htcommunity/./node_modules/lodash-es/memoize.js","webpack://htcommunity/./node_modules/lodash-es/_basePickBy.js","webpack://htcommunity/./node_modules/lodash-es/_basePick.js","webpack://htcommunity/./node_modules/lodash-es/pick.js","webpack://htcommunity/./node_modules/pinia/node_modules/vue-demi/lib/index.mjs","webpack://htcommunity/./node_modules/@vue/devtools-api/lib/esm/env.js","webpack://htcommunity/./node_modules/@vue/devtools-api/lib/esm/const.js","webpack://htcommunity/./node_modules/@vue/devtools-api/lib/esm/time.js","webpack://htcommunity/./node_modules/pinia/dist/pinia.mjs","webpack://htcommunity/./node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack://htcommunity/./node_modules/@vue/devtools-api/lib/esm/index.js","webpack://htcommunity/./node_modules/quasar/dist/quasar.client.js","webpack://htcommunity/./node_modules/quasar/icon-set/material-icons.js","webpack://htcommunity/./node_modules/@intlify/shared/dist/shared.mjs","webpack://htcommunity/./node_modules/@intlify/message-compiler/dist/message-compiler.mjs","webpack://htcommunity/./node_modules/@intlify/core-base/dist/core-base.mjs","webpack://htcommunity/./node_modules/vue-i18n/dist/vue-i18n.mjs","webpack://htcommunity/./node_modules/vue-router/dist/vue-router.mjs"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline {\n constructor(policies) {\n var _a;\n this._policies = [];\n this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : [];\n this._orderedPolicies = undefined;\n }\n addPolicy(policy, options = {}) {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n removePolicy(options) {\n const removedPolicies = [];\n this._policies = this._policies.filter((policyDescriptor) => {\n if ((options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n }\n else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n return removedPolicies;\n }\n sendRequest(httpClient, request) {\n const policies = this.getOrderedPolicies();\n const pipeline = policies.reduceRight((next, policy) => {\n return (req) => {\n return policy.sendRequest(req, next);\n };\n }, (req) => httpClient.sendRequest(req));\n return pipeline(request);\n }\n getOrderedPolicies() {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n clone() {\n return new HttpPipeline(this._policies);\n }\n static create() {\n return new HttpPipeline();\n }\n orderPolicies() {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result = [];\n // Track all policies we know about.\n const policyMap = new Map();\n function createPhase(name) {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n // Small helper function to map phase name to each Phase\n function getPhase(phase) {\n if (phase === \"Retry\") {\n return retryPhase;\n }\n else if (phase === \"Serialize\") {\n return serializePhase;\n }\n else if (phase === \"Deserialize\") {\n return deserializePhase;\n }\n else if (phase === \"Sign\") {\n return signPhase;\n }\n else {\n return noPhase;\n }\n }\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n function walkPhase(phase) {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n function walkPhases() {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n return result;\n }\n}\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline() {\n return HttpPipeline.create();\n}\n//# sourceMappingURL=pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function log(...args) {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n }\n else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n }\n else if (firstArg.includes(\":info\")) {\n console.info(...args);\n }\n else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n }\n else {\n console.debug(...args);\n }\n }\n}\n//# sourceMappingURL=log-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { log } from \"./log.js\";\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n return createDebugger(namespace);\n}, {\n enable,\n enabled,\n disable,\n log,\n});\nfunction enable(namespaces) {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n }\n else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\nfunction enabled(namespace) {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\nfunction disable() {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\nfunction createDebugger(namespace) {\n const newDebugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n function debug(...args) {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n debuggers.push(newDebugger);\n return newDebugger;\n}\nfunction destroy() {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\nfunction extend(namespace) {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\nexport default debugObj;\n//# sourceMappingURL=debug.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport debug from \"./debug.js\";\nconst registeredLoggers = new Set();\nconst logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\nlet azureLogLevel;\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n }\n else {\n console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\", \")}.`);\n }\n}\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level) {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`);\n }\n azureLogLevel = level;\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n debug.enable(enabledNamespaces.join(\",\"));\n}\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel() {\n return azureLogLevel;\n}\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace) {\n const clientRootLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\nfunction patchLogMethod(parent, child) {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\nfunction createLogger(parent, level) {\n const logger = Object.assign(parent.extend(level), {\n level,\n });\n patchLogMethod(parent, logger);\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n registeredLoggers.add(logger);\n return logger;\n}\nfunction shouldEnable(logger) {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\nfunction isAzureLogLevel(logLevel) {\n return AZURE_LOG_LEVELS.includes(logLevel);\n}\n//# sourceMappingURL=index.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n//# sourceMappingURL=AbortError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(buildPromise, options) {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort() {\n reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : \"The operation was aborted.\"));\n }\n function removeListeners() {\n abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener(\"abort\", onAbort);\n }\n function onAbort() {\n cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise((x) => {\n removeListeners();\n resolve(x);\n }, (x) => {\n removeListeners();\n reject(x);\n });\n }\n catch (err) {\n reject(err);\n }\n abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener(\"abort\", onAbort);\n });\n}\n//# sourceMappingURL=createAbortablePromise.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nconst StandardAbortMessage = \"The delay was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs, options) {\n let token;\n const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n return createAbortablePromise((resolve) => {\n token = setTimeout(resolve, timeInMs);\n }, {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage,\n });\n}\n//# sourceMappingURL=delay.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min, max) {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n//# sourceMappingURL=random.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input) {\n return (typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date));\n}\n//# sourceMappingURL=object.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isObject } from \"./object.js\";\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e) {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e) {\n if (isError(e)) {\n return e.message;\n }\n else {\n let stringified;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n }\n else {\n stringified = String(e);\n }\n }\n catch (err) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n//# sourceMappingURL=error.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes, format) {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value, format) {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes) {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes) {\n const decoder = new TextDecoder();\n const dataString = decoder.decode(bytes);\n return dataString;\n}\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes) {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value) {\n return new TextEncoder().encode(value);\n}\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value) {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value) {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value) {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n return bytes;\n}\n//# sourceMappingURL=bytesEncoding-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID() {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n }\n else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n }\n else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID() {\n return generateUUID();\n}\n//# sourceMappingURL=uuidUtils.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a;\nimport { generateUUID } from \"./uuidUtils.common.js\";\n// NOTE: This could be undefined if not used in a secure context\nconst uuidFunction = typeof ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : generateUUID;\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID() {\n return uuidFunction();\n}\n//# sourceMappingURL=uuidUtils-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a, _b, _c, _d;\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker = typeof self === \"object\" &&\n typeof (self === null || self === void 0 ? void 0 : self.importScripts) === \"function\" &&\n (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === \"DedicatedWorkerGlobalScope\" ||\n ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === \"ServiceWorkerGlobalScope\" ||\n ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno = typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike = typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node);\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative = typeof navigator !== \"undefined\" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === \"ReactNative\";\n//# sourceMappingURL=checkEnvironment.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isObject } from \"@azure/core-util\";\nconst RedactedString = \"REDACTED\";\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\n/**\n * @internal\n */\nexport class Sanitizer {\n constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n sanitize(obj) {\n const seen = new Set();\n return JSON.stringify(obj, (key, value) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });\n }\n if (key === \"headers\") {\n return this.sanitizeHeaders(value);\n }\n else if (key === \"url\") {\n return this.sanitizeUrl(value);\n }\n else if (key === \"query\") {\n return this.sanitizeQuery(value);\n }\n else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n }\n else if (key === \"response\") {\n // Don't log response again\n return undefined;\n }\n else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n }\n else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n return value;\n }, 2);\n }\n sanitizeHeaders(obj) {\n const sanitized = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n }\n else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n sanitizeQuery(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const sanitized = {};\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n }\n else {\n sanitized[k] = RedactedString;\n }\n }\n return sanitized;\n }\n sanitizeUrl(value) {\n if (typeof value !== \"string\" || value === null) {\n return value;\n }\n const url = new URL(value);\n if (!url.search) {\n return value;\n }\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n return url.toString();\n }\n}\n//# sourceMappingURL=sanitizer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options = {}) {\n var _a;\n const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request, next) {\n if (!logger.enabled) {\n return next(request);\n }\n logger(`Request: ${sanitizer.sanitize(request)}`);\n const response = await next(request);\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n return response;\n },\n };\n}\n//# sourceMappingURL=logPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options = {}) {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\nasync function handleRedirect(next, response, maxRetries, currentRetries = 0) {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n request.headers.delete(\"Authorization\");\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n return response;\n}\n//# sourceMappingURL=redirectPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json.\n */\n/**\n * @internal\n */\nexport function getHeaderName() {\n return \"x-ms-useragent\";\n}\n/**\n * @internal\n */\nexport function setPlatformSpecificData(map) {\n var _a, _b, _c;\n const localNavigator = globalThis.navigator;\n map.set(\"OS\", ((_c = (_b = (_a = localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.userAgentData) === null || _a === void 0 ? void 0 : _a.platform) !== null && _b !== void 0 ? _b : localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.platform) !== null && _c !== void 0 ? _c : \"unknown\").replace(\" \", \"\"));\n}\n//# sourceMappingURL=userAgentPlatform-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const SDK_VERSION = \"1.16.0\";\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\nfunction getUserAgentString(telemetryInfo) {\n const parts = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n/**\n * @internal\n */\nexport function getUserAgentHeaderName() {\n return getHeaderName();\n}\n/**\n * @internal\n */\nexport function getUserAgentValue(prefix) {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\nconst UserAgentHeaderName = getUserAgentHeaderName();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options = {}) {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, userAgentValue);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent = Symbol(\"rawContent\");\nfunction hasRawContent(x) {\n return typeof x[rawContent] === \"function\";\n}\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(blob) {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n }\n else {\n return blob.stream();\n }\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(stream, name, options = {}) {\n var _a, _b, _c, _d;\n return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : \"\", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : \"\", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\"Not supported: a Node stream was provided as input to createFileFromStream.\");\n }\n return s;\n }, [rawContent]: stream });\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(content, name, options = {}) {\n var _a, _b, _c;\n if (isNodeLike) {\n return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : \"\", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : \"\", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content });\n }\n else {\n return new File([content], name, options);\n }\n}\n//# sourceMappingURL=file.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function isNodeReadableStream(x) {\n return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nexport function isWebReadableStream(x) {\n return Boolean(x &&\n typeof x.getReader === \"function\" &&\n typeof x.tee === \"function\");\n}\nexport function isReadableStream(x) {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\nexport function isBlob(x) {\n return typeof x.stream === \"function\";\n}\n//# sourceMappingURL=typeGuards.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream) {\n return new Response(stream).blob();\n}\nasync function toBlobPart(source) {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\");\n }\n return toBlobPart(rawContent);\n}\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(sources) {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n return new Blob(parts);\n}\n//# sourceMappingURL=concat-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\nfunction generateBoundary() {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\nfunction encodeHeaders(headers) {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\nfunction getLength(source) {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n }\n else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n }\n else {\n return undefined;\n }\n}\nfunction getTotalLength(sources) {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n }\n else {\n total += partLength;\n }\n }\n return total;\n}\nasync function buildRequestBody(request, parts, boundary) {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n request.body = await concat(sources);\n}\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);\nfunction assertValidBoundary(boundary) {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy() {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next) {\n var _a;\n if (!request.multipartBody) {\n return next(request);\n }\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n let boundary = request.multipartBody.boundary;\n const contentTypeHeader = (_a = request.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);\n }\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);\n }\n boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary);\n if (boundary) {\n assertValidBoundary(boundary);\n }\n else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n request.multipartBody = undefined;\n return next(request);\n },\n };\n}\n//# sourceMappingURL=multipartPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n/**\n * decompressResponsePolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function decompressResponsePolicy() {\n throw new Error(\"decompressResponsePolicy is not supported in browser environment\");\n}\n//# sourceMappingURL=decompressResponsePolicy-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n//# sourceMappingURL=AbortError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(delayInMs, value, options) {\n return new Promise((resolve, reject) => {\n let timer = undefined;\n let onAborted = undefined;\n const rejectOnAbort = () => {\n return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));\n };\n const removeListeners = () => {\n if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n onAborted = () => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n if (options === null || options === void 0 ? void 0 : options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(response, headerName) {\n const value = response.headers.get(headerName);\n if (!value)\n return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum))\n return;\n return valueAsNum;\n}\n//# sourceMappingURL=helpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response) {\n if (!(response && [429, 503].includes(response.status)))\n return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader)\n return;\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n }\n catch (e) {\n return undefined;\n }\n}\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response) {\n return Number.isFinite(getRetryAfterInMs(response));\n}\nexport function throttlingRetryStrategy() {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n//# sourceMappingURL=throttlingRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getRandomIntegerInclusive } from \"@azure/core-util\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(options = {}) {\n var _a, _b;\n const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n let retryAfterInMs = retryInterval;\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n // Exponentially increase the delay each time\n const exponentialDelay = retryAfterInMs * Math.pow(2, retryCount);\n // Don't let the delay exceed the maximum\n const clampedExponentialDelay = Math.min(maxRetryInterval, exponentialDelay);\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n retryAfterInMs =\n clampedExponentialDelay / 2 + getRandomIntegerInclusive(0, clampedExponentialDelay / 2);\n return { retryAfterInMs };\n },\n };\n}\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response) {\n return Boolean(response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505);\n}\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err) {\n if (!err) {\n return false;\n }\n return (err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\");\n}\n//# sourceMappingURL=exponentialRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay } from \"../util/helpers.js\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request, next) {\n var _a, _b;\n let response;\n let responseError;\n let retryCount = -1;\n // eslint-disable-next-line no-constant-condition\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n }\n catch (e) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n response = responseError.response;\n }\n if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);\n if (responseError) {\n throw responseError;\n }\n else if (response) {\n return response;\n }\n else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n if (errorToThrow) {\n strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);\n throw errorToThrow;\n }\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n if (redirectTo) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n if (responseError) {\n logger.info(`None of the retry strategies could work with the received error. Throwing it.`);\n throw responseError;\n }\n if (response) {\n logger.info(`None of the retry strategies could work with the received response. Returning it.`);\n return response;\n }\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n//# sourceMappingURL=retryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options = {}) {\n var _a;\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction normalizeName(name) {\n return name.toLowerCase();\n}\nfunction* headerIterator(map) {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\nclass HttpHeadersImpl {\n constructor(rawHeaders) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n set(name, value) {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n get(name) {\n var _a;\n return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n has(name) {\n return this._headersMap.has(normalizeName(name));\n }\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n delete(name) {\n this._headersMap.delete(normalizeName(name));\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJSON(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n }\n else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator]() {\n return headerIterator(this._headersMap);\n }\n}\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders) {\n return new HttpHeadersImpl(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\nfunction formDataToFormDataMap(formData) {\n var _a;\n const formDataMap = {};\n for (const [key, value] of formData.entries()) {\n (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []);\n formDataMap[key].push(value);\n }\n return formDataMap;\n}\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy() {\n return {\n name: formDataPolicyName,\n async sendRequest(request, next) {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n }\n else {\n await prepareFormData(request.formData, request);\n }\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\nfunction wwwFormUrlEncode(formData) {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n }\n else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\nasync function prepareFormData(formData, request) {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n request.headers.set(\"Content-Type\", contentType !== null && contentType !== void 0 ? contentType : \"multipart/form-data\");\n // set body to MultipartRequestBody using content from FormDataMap\n const parts = [];\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n }\n else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);\n }\n else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = value.name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\"Content-Disposition\", `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`);\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n//# sourceMappingURL=formDataPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\nexport function getDefaultProxySettings() {\n throw new Error(errorMessage);\n}\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy() {\n throw new Error(errorMessage);\n}\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents() {\n throw new Error(errorMessage);\n}\n//# sourceMappingURL=proxyPolicy-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=setClientRequestIdPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings) {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=tlsPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options = {}) {\n let context = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n/** @internal */\nexport class TracingContextImpl {\n constructor(initialContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n setValue(key, value) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n getValue(key) {\n return this._contextMap.get(key);\n }\n deleteValue(key) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n//# sourceMappingURL=tracingContext.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n instrumenterImplementation: undefined,\n};\n//# sourceMappingURL=state-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\nexport function createDefaultTracingSpan() {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n };\n}\nexport function createDefaultInstrumenter() {\n return {\n createRequestHeaders: () => {\n return {};\n },\n parseTraceparentHeader: () => {\n return undefined;\n },\n startSpan: (_name, spanOptions) => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext(_context, callback, ...callbackArgs) {\n return callback(...callbackArgs);\n },\n };\n}\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter) {\n state.instrumenterImplementation = instrumenter;\n}\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter() {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n//# sourceMappingURL=instrumenter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options) {\n const { namespace, packageName, packageVersion } = options;\n function startSpan(name, operationOptions, spanOptions) {\n var _a;\n const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext }));\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions = Object.assign({}, operationOptions, {\n tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }),\n });\n return {\n span,\n updatedOptions,\n };\n }\n async function withSpan(name, operationOptions, callback, spanOptions) {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span)));\n span.setStatus({ status: \"success\" });\n return result;\n }\n catch (err) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n }\n finally {\n span.end();\n }\n }\n function withContext(context, callback, ...callbackArgs) {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader) {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext) {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n//# sourceMappingURL=tracingClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const custom = {};\n//# sourceMappingURL=inspect-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isError } from \"@azure/core-util\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\nconst errorSanitizer = new Sanitizer();\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n constructor(message, options = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n this.request = options.request;\n this.response = options.response;\n Object.setPrototypeOf(this, RestError.prototype);\n }\n /**\n * Logging method for util.inspect in Node\n */\n [custom]() {\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize(this)}`;\n }\n}\n/**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\nRestError.REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n/**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\nRestError.PARSE_ERROR = \"PARSE_ERROR\";\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e) {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n//# sourceMappingURL=restError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTracingClient, } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options = {}) {\n const userAgent = getUserAgentValue(options.userAgentPrefix);\n const tracingClient = tryCreateTracingClient();\n return {\n name: tracingPolicyName,\n async sendRequest(request, next) {\n var _a, _b;\n if (!tracingClient || !((_a = request.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext)) {\n return next(request);\n }\n const { span, tracingContext } = (_b = tryCreateSpan(tracingClient, request, userAgent)) !== null && _b !== void 0 ? _b : {};\n if (!span || !tracingContext) {\n return next(request);\n }\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n }\n catch (err) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\nfunction tryCreateTracingClient() {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n }\n catch (e) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\nfunction tryCreateSpan(tracingClient, request, userAgent) {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, {\n spanKind: \"client\",\n spanAttributes: {\n \"http.method\": request.method,\n \"http.url\": request.url,\n requestId: request.requestId,\n },\n });\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n if (userAgent) {\n span.setAttribute(\"http.user_agent\", userAgent);\n }\n // set headers\n const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n }\n catch (e) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\nfunction tryProcessError(span, error) {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n }\n catch (e) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\nfunction tryProcessResponse(span, response) {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n span.setStatus({\n status: \"success\",\n });\n span.end();\n }\n catch (e) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n//# sourceMappingURL=tracingPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { logPolicy } from \"./policies/logPolicy.js\";\nimport { createEmptyPipeline } from \"./pipeline.js\";\nimport { redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options) {\n var _a;\n const pipeline = createEmptyPipeline();\n if (isNodeLike) {\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy(options.userAgentOptions), { afterPhase: \"Retry\" });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body) {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n async sendRequest(request) {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n try {\n return await makeRequest(request);\n }\n catch (e) {\n throw getError(e, request);\n }\n }\n}\n/**\n * Sends a request\n */\nasync function makeRequest(request) {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, (\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {})), (\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}));\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n requestInit.duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n }\n catch (e) {\n abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n throw e;\n }\n}\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(httpResponse, request, abortControllerCleanup) {\n var _a, _b;\n const headers = buildPipelineHeaders(httpResponse);\n const response = {\n request,\n headers,\n status: httpResponse.status,\n };\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) ||\n ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined;\n }\n else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n }\n }\n else {\n const responseStream = new Response(bodyStream);\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n }\n return response;\n}\nfunction setupAbortSignal(request) {\n const abortController = new AbortController();\n // Cleanup function\n let abortControllerCleanup;\n /**\n * Attach an abort listener to the request\n */\n let abortListener;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n abortListener = (event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n var _a;\n if (abortListener) {\n (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n return { abortController, abortControllerCleanup };\n}\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e, request) {\n var _a;\n if (e && (e === null || e === void 0 ? void 0 : e.name) === \"AbortError\") {\n return e;\n }\n else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders) {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n return headers;\n}\nfunction buildPipelineHeaders(httpResponse) {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n return responseHeaders;\n}\nfunction buildRequestBody(request) {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(readableStream, options = {}) {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n },\n }));\n }\n else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n var _a;\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0;\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason) {\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n return reader.cancel(reason);\n },\n });\n }\n}\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient() {\n return new FetchHttpClient();\n}\nfunction isTransformStreamSupported(readableStream) {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n//# sourceMappingURL=fetchHttpClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createFetchHttpClient } from \"./fetchHttpClient.js\";\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient() {\n return createFetchHttpClient();\n}\n//# sourceMappingURL=defaultHttpClient-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { randomUUID } from \"@azure/core-util\";\nclass PipelineRequestImpl {\n constructor(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n this.url = options.url;\n this.body = options.body;\n this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders();\n this.method = (_b = options.method) !== null && _b !== void 0 ? _b : \"GET\";\n this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false;\n this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false;\n }\n}\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options) {\n return new PipelineRequestImpl(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay } from \"./helpers.js\";\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken() {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n }\n catch (_a) {\n return null;\n }\n }\n else {\n const finalToken = await getAccessToken();\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n return finalToken;\n }\n }\n let token = await tryGetAccessToken();\n while (token === null) {\n await delay(retryIntervalInMs);\n token = await tryGetAccessToken();\n }\n return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(credential, tokenCyclerOptions) {\n let refreshWorker = null;\n let token = null;\n let tenantId;\n const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing() {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh() {\n var _a;\n return (!cycler.isRefreshing &&\n ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh() {\n return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n },\n };\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(scopes, getTokenOptions) {\n var _a;\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n // If we don't have a token, then we should timeout immediately\n (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n return refreshWorker;\n }\n return async (scopes, tokenOptions) => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantId !== tokenOptions.tenantId || Boolean(tokenOptions.claims) || cycler.mustRefresh;\n if (mustRefresh)\n return refresh(scopes, tokenOptions);\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n return token;\n };\n}\n//# sourceMappingURL=tokenCycler.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options) {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(options) {\n var _a;\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = Object.assign({ authorizeRequest: (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) !== null && _a !== void 0 ? _a : defaultAuthorizeRequest, authorizeRequestOnChallenge: challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge }, challengeCallbacks);\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request, next) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n }\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n let response;\n let error;\n try {\n response = await next(request);\n }\n catch (err) {\n error = err;\n response = err.response;\n }\n if (callbacks.authorizeRequestOnChallenge &&\n (response === null || response === void 0 ? void 0 : response.status) === 401 &&\n getChallenge(response)) {\n // processes challenge\n const shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n if (shouldSendRequest) {\n return next(request);\n }\n }\n if (error) {\n throw error;\n }\n else {\n return response;\n }\n },\n };\n}\n//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential) {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential;\n return (castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0));\n}\n//# sourceMappingURL=tokenCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\nexport function createDisableKeepAlivePolicy() {\n return {\n name: disableKeepAlivePolicyName,\n async sendRequest(request, next) {\n request.disableKeepAlive = true;\n return next(request);\n },\n };\n}\n/**\n * @internal\n */\nexport function pipelineContainsDisableKeepAlivePolicy(pipeline) {\n return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n//# sourceMappingURL=disableKeepAlivePolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value) {\n return btoa(value);\n}\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value) {\n let str = \"\";\n for (let i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return btoa(str);\n}\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value) {\n const byteString = atob(value);\n const arr = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n arr[i] = byteString.charCodeAt(i);\n }\n return arr;\n}\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value) {\n return atob(value);\n}\n//# sourceMappingURL=base64-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n//# sourceMappingURL=interfaces.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value, mapperTypeName) {\n return (mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !==\n null ||\n value === undefined ||\n value === null));\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value) {\n return validateISODuration.test(value);\n}\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid) {\n return validUuidRegex.test(uuid);\n}\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(responseObject) {\n const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body);\n if (responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n }\n else {\n return responseObject.shouldWrapBody\n ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody;\n }\n}\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(fullResponse, responseSpec) {\n var _a, _b;\n const parsedHeaders = fullResponse.parsedHeaders;\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody });\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable);\n const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name;\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody });\n }\n const modelProperties = (expectedBodyTypeName === \"Composite\" &&\n bodyMapper.type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : [];\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key];\n }\n }\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as base64 from \"./base64.js\";\nimport { XML_ATTRKEY, XML_CHARKEY, } from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\nclass SerializerImpl {\n constructor(modelMappers = {}, isXML = false) {\n this.modelMappers = modelMappers;\n this.isXML = isXML;\n }\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper, value, objectName) {\n const failValidation = (constraintName, constraintValue) => {\n throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (UniqueItems &&\n value.some((item, i, ar) => ar.indexOf(item) !== i)) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(mapper, object, objectName, options = { xml: {} }) {\n var _a, _b, _c;\n const updatedOptions = {\n xml: {\n rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n },\n };\n let payload = {};\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n const { required, nullable } = mapper;\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n if (object === undefined || object === null) {\n payload = object;\n }\n else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n }\n else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n }\n else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n }\n else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n payload = serializeDateTypes(mapperType, object, objectName);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n }\n return payload;\n }\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(mapper, responseBody, objectName, options = { xml: {} }) {\n var _a, _b, _c, _d;\n const updatedOptions = {\n xml: {\n rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n },\n ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n let payload;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n }\n else if (responseBody === \"false\") {\n payload = false;\n }\n else {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n }\n else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n }\n else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n }\n }\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n return payload;\n }\n}\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(modelMappers = {}, isXML = false) {\n return new SerializerImpl(modelMappers, isXML);\n}\nfunction trimEnd(str, ch) {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\nfunction splitSerializeName(prop) {\n const classes = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n }\n else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n return classes;\n}\nfunction dateToUnixTime(d) {\n if (!d) {\n return undefined;\n }\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d);\n }\n return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n }\n else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n }\n else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n }\n }\n else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n }\n else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\") {\n throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`);\n }\n }\n }\n return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n if (!allowedValues) {\n throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n }\n return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\nfunction serializeBase64UrlType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n }\n else if (typeName.match(/^DateTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n }\n else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n }\n else if (typeName.match(/^UnixTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`);\n }\n value = dateToUnixTime(value);\n }\n else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n }\n }\n }\n return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n var _a;\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = Object.assign({}, serializedValue);\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n }\n else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n const tempDictionary = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n const additionalProperties = mapper.type.additionalProperties;\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;\n }\n return additionalProperties;\n}\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n }\n return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;\n if (!modelProps) {\n throw new Error(`modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n }\n }\n return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n if (object !== undefined && object !== null) {\n const payload = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n let propName;\n let parentObject = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n }\n else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n }\n else {\n const paths = splitSerializeName(propertyMapper.serializedName);\n propName = paths.pop();\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if ((childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });\n }\n const propertyObjectName = propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)) {\n toSerialize = mapper.serializedName;\n }\n const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n }\n else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n }\n else {\n parentObject[propName] = value;\n }\n }\n }\n }\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n }\n }\n }\n return payload;\n }\n return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n }\n else {\n const result = Object.assign({}, serializedValue);\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n var _a, _b;\n const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance = {};\n const handledPropertyNames = [];\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n }\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n }\n else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);\n }\n else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n }\n else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n }\n else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName];\n const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : [];\n instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n handledPropertyNames.push(xmlName);\n }\n else {\n const property = responseBody[propertyName];\n instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n handledPropertyNames.push(propertyName);\n }\n }\n }\n else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res)\n break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)) {\n propertyInstance = mapper.serializedName;\n }\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n }\n else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n instance[key] = serializedValue;\n }\n }\n }\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName) => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n }\n }\n }\n else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)) {\n instance[key] = responseBody[key];\n }\n }\n }\n return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n const tempDictionary = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n var _a;\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element;\n }\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n }\n return tempArray;\n }\n return responseBody;\n}\nfunction getIndexDiscriminator(discriminators, discriminatorValue, typeName) {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator = discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n }\n else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n return undefined;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n var _a;\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className;\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n return (mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n return (typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n};\n//# sourceMappingURL=serializer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n operationRequestMap: new WeakMap(),\n};\n//# sourceMappingURL=state-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { state } from \"./state.js\";\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n }\n else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n }\n else {\n if (parameterMapper.required) {\n value = {};\n }\n for (const propertyName in parameterPath) {\n const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n const propertyPath = parameterPath[propertyName];\n const propertyValue = getOperationArgumentValueFromParameter(operationArguments, {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n }, fallbackObject);\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n const result = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n }\n else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nfunction hasOriginalRequest(request) {\n return originalRequestSymbol in request;\n}\nexport function getOperationRequestInfo(request) {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n//# sourceMappingURL=operationHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_CHARKEY, } from \"./interfaces.js\";\nimport { RestError, } from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options = {}) {\n var _a, _b, _c, _d, _e, _f, _g;\n const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes;\n const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : \"\",\n includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false,\n xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY,\n },\n };\n return {\n name: deserializationPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML);\n },\n };\n}\nfunction getOperationResponseMap(parsedResponse) {\n let result;\n const request = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n if (operationSpec) {\n if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) {\n result = operationSpec.responses[parsedResponse.status];\n }\n else {\n result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n const request = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize;\n let result;\n if (shouldDeserialize === undefined) {\n result = true;\n }\n else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n }\n else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\nasync function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) {\n const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML);\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options);\n if (error) {\n throw error;\n }\n else if (shouldReturnResponse) {\n return parsedResponse;\n }\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n }\n catch (deserializeError) {\n const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n throw restError;\n }\n }\n else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\", { xml: {}, ignoreUnknownProperties: true });\n }\n }\n return parsedResponse;\n}\nfunction isOperationSpecEmpty(operationSpec) {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) {\n var _a;\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n }\n else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;\n const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status))\n ? `Unexpected status code: ${parsedResponse.status}`\n : parsedResponse.bodyAsText;\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n if (defaultBodyMapper) {\n let valueToDeserialize = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\", options);\n }\n const internalError = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n if (defaultBodyMapper) {\n error.response.parsedBody = deserializedError;\n }\n }\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n error.response.parsedHeaders =\n operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\");\n }\n }\n catch (defaultError) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n return { error, shouldReturnResponse: false };\n}\nasync function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) {\n var _a;\n if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) &&\n operationResponse.bodyAsText) {\n const text = operationResponse.bodyAsText;\n const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n try {\n if (contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n }\n else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n }\n catch (err) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n return operationResponse;\n}\n//# sourceMappingURL=deserializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MapperTypeNames } from \"./serializer.js\";\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec) {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter) {\n const { parameterPath, mapper } = parameter;\n let result;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n }\n else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n }\n else {\n result = mapper.serializedName;\n }\n return result;\n}\n//# sourceMappingURL=interfaceHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_ATTRKEY, XML_CHARKEY, } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options = {}) {\n const stringifyXML = options.stringifyXML;\n return {\n name: serializationPolicyName,\n async sendRequest(request, next) {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n/**\n * @internal\n */\nexport function serializeHeaders(request, operationArguments, operationSpec) {\n var _a, _b;\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));\n const headerCollectionPrefix = headerParameter.mapper\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n }\n else {\n request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue);\n }\n }\n }\n }\n const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n/**\n * @internal\n */\nexport function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {\n throw new Error(\"XML serialization unsupported!\");\n}) {\n var _a, _b, _c, _d, _e;\n const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : \"\",\n includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false,\n xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY,\n },\n };\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody);\n const bodyMapper = operationSpec.requestBody.mapper;\n const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;\n const typeName = bodyMapper.type.name;\n try {\n if ((request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required) {\n const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);\n request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);\n const isStream = typeName === MapperTypeNames.Stream;\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });\n }\n else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n }\n else if (typeName === MapperTypeNames.String &&\n (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match(\"text/plain\")) || operationSpec.mediaType === \"text\")) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n }\n else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n }\n catch (error) {\n throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \" \")}.`);\n }\n }\n else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter);\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);\n }\n }\n }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n return serializedValue;\n}\nfunction prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n//# sourceMappingURL=serializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { deserializationPolicy } from \"./deserializationPolicy.js\";\nimport { bearerTokenAuthenticationPolicy, createPipelineFromOptions, } from \"@azure/core-rest-pipeline\";\nimport { serializationPolicy } from \"./serializationPolicy.js\";\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options = {}) {\n const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {});\n if (options.credentialOptions) {\n pipeline.addPolicy(bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }));\n }\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n return pipeline;\n}\n//# sourceMappingURL=pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\nlet cachedHttpClient;\nexport function getCachedDefaultHttpClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n return cachedHttpClient;\n}\n//# sourceMappingURL=httpClientCache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\nconst CollectionFormatToDelimiterMap = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\nexport function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) {\n const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject);\n let isAbsolutePath = false;\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n }\n else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n return requestUrl;\n}\nfunction replaceAll(input, replacements) {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\nfunction calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) {\n var _a;\n const result = new Map();\n if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject);\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString);\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue);\n }\n }\n return result;\n}\nfunction isAbsoluteUrl(url) {\n return url.includes(\"://\");\n}\nfunction appendPath(url, pathToAppend) {\n if (!pathToAppend) {\n return url;\n }\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n }\n else {\n newPath = newPath + pathToAppend;\n }\n parsedUrl.pathname = newPath;\n return parsedUrl.toString();\n}\nfunction calculateQueryParameters(operationSpec, operationArguments, fallbackObject) {\n var _a;\n const result = new Map();\n const sequenceParams = new Set();\n if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject);\n if ((queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required) {\n queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter));\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n }\n else if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item) => {\n return encodeURIComponent(item);\n });\n }\n else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\nfunction simpleParseQueryParams(queryString) {\n const result = new Map();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n }\n else {\n result.set(name, [existingValue, value]);\n }\n }\n else {\n result.set(name, value);\n }\n }\n return result;\n}\n/** @internal */\nexport function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) {\n if (queryParams.size === 0) {\n return url;\n }\n const parsedUrl = new URL(url);\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n }\n else {\n existingValue.push(value);\n }\n }\n else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n }\n else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n }\n else {\n combinedParams.set(name, value);\n }\n }\n const searchPieces = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n }\n else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n }\n else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n//# sourceMappingURL=urlHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options = {}) {\n var _a, _b;\n this._requestContentType = options.requestContentType;\n this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri;\n if (options.baseUri) {\n logger.warning(\"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\");\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request) {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(operationArguments, operationSpec) {\n const endpoint = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\");\n }\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n const request = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]);\n if (options === null || options === void 0 ? void 0 : options.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n }\n catch (error) {\n if (typeof error === \"object\" && (error === null || error === void 0 ? void 0 : error.response)) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"]);\n error.details = flatResponse;\n if (options === null || options === void 0 ? void 0 : options.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\nfunction createDefaultPipeline(options) {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions = options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions }));\n}\nfunction getCredentialScopes(options) {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n if (options.credential && !options.credentialScopes) {\n throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`);\n }\n return undefined;\n}\n//# sourceMappingURL=serviceClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\nfunction isUuid(text) {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(text);\n}\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, Object.assign(Object.assign({}, requestOptions), { tenantId }));\n if (!accessToken) {\n return false;\n }\n challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`);\n return true;\n }\n return false;\n};\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo) {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(challengeOptions, challengeInfo) {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge) {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")));\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {});\n}\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request) {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\n// We use a custom symbol to cache a reference to the original request without\n// exposing it on the public interface.\nconst originalRequestSymbol = Symbol(\"Original PipelineRequest\");\n// Symbol.for() will return the same symbol if it's already been created\n// This particular one is used in core-client to handle the case of when a request is\n// cloned but we need to retrieve the OperationSpec and OperationArguments from the\n// original request.\nconst originalClientRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nexport function toPipelineRequest(webResource, options = {}) {\n const compatWebResource = webResource;\n const request = compatWebResource[originalRequestSymbol];\n const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true }));\n if (request) {\n request.headers = headers;\n return request;\n }\n else {\n const newRequest = createPipelineRequest({\n url: webResource.url,\n method: webResource.method,\n headers,\n withCredentials: webResource.withCredentials,\n timeout: webResource.timeout,\n requestId: webResource.requestId,\n abortSignal: webResource.abortSignal,\n body: webResource.body,\n formData: webResource.formData,\n disableKeepAlive: !!webResource.keepAlive,\n onDownloadProgress: webResource.onDownloadProgress,\n onUploadProgress: webResource.onUploadProgress,\n proxySettings: webResource.proxySettings,\n streamResponseStatusCodes: webResource.streamResponseStatusCodes,\n });\n if (options.originalRequest) {\n newRequest[originalClientRequestSymbol] =\n options.originalRequest;\n }\n return newRequest;\n }\n}\nexport function toWebResourceLike(request, options) {\n var _a;\n const originalRequest = (_a = options === null || options === void 0 ? void 0 : options.originalRequest) !== null && _a !== void 0 ? _a : request;\n const webResource = {\n url: request.url,\n method: request.method,\n headers: toHttpHeadersLike(request.headers),\n withCredentials: request.withCredentials,\n timeout: request.timeout,\n requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n abortSignal: request.abortSignal,\n body: request.body,\n formData: request.formData,\n keepAlive: !!request.disableKeepAlive,\n onDownloadProgress: request.onDownloadProgress,\n onUploadProgress: request.onUploadProgress,\n proxySettings: request.proxySettings,\n streamResponseStatusCodes: request.streamResponseStatusCodes,\n clone() {\n throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n },\n prepare() {\n throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n },\n validateRequestProperties() {\n /** do nothing */\n },\n };\n if (options === null || options === void 0 ? void 0 : options.createProxy) {\n return new Proxy(webResource, {\n get(target, prop, receiver) {\n if (prop === originalRequestSymbol) {\n return request;\n }\n else if (prop === \"clone\") {\n return () => {\n return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), {\n createProxy: true,\n originalRequest,\n });\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop === \"keepAlive\") {\n request.disableKeepAlive = !value;\n }\n const passThroughProps = [\n \"url\",\n \"method\",\n \"withCredentials\",\n \"timeout\",\n \"requestId\",\n \"abortSignal\",\n \"body\",\n \"formData\",\n \"onDownloadProgress\",\n \"onUploadProgress\",\n \"proxySettings\",\n \"streamResponseStatusCodes\",\n ];\n if (typeof prop === \"string\" && passThroughProps.includes(prop)) {\n request[prop] = value;\n }\n return Reflect.set(target, prop, value, receiver);\n },\n });\n }\n else {\n return webResource;\n }\n}\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nexport function toHttpHeadersLike(headers) {\n return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName) {\n return headerName.toLowerCase();\n}\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders {\n constructor(rawHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName, headerValue) {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString(),\n };\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName) {\n const header = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName) {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName) {\n const result = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders() {\n return this.toJson({ preserveCase: true });\n }\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray() {\n const headers = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames() {\n const headerNames = [];\n const headers = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues() {\n const headerValues = [];\n const headers = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJson(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n }\n else {\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone() {\n const resultPreservingCasing = {};\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n//# sourceMappingURL=util.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { toHttpHeadersLike, toPipelineRequest, toWebResourceLike, } from \"./util.js\";\nconst originalResponse = Symbol(\"Original FullOperationResponse\");\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toCompatResponse(response, options) {\n let request = toWebResourceLike(response.request);\n let headers = toHttpHeadersLike(response.headers);\n if (options === null || options === void 0 ? void 0 : options.createProxy) {\n return new Proxy(response, {\n get(target, prop, receiver) {\n if (prop === \"headers\") {\n return headers;\n }\n else if (prop === \"request\") {\n return request;\n }\n else if (prop === originalResponse) {\n return response;\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop === \"headers\") {\n headers = value;\n }\n else if (prop === \"request\") {\n request = value;\n }\n return Reflect.set(target, prop, value, receiver);\n },\n });\n }\n else {\n return Object.assign(Object.assign({}, response), { request,\n headers });\n }\n}\n/**\n * A helper to convert back to a PipelineResponse\n * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toPipelineResponse(compatResponse) {\n const extendedCompatResponse = compatResponse;\n const response = extendedCompatResponse[originalResponse];\n const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true }));\n if (response) {\n response.headers = headers;\n return response;\n }\n else {\n return Object.assign(Object.assign({}, compatResponse), { headers, request: toPipelineRequest(compatResponse.request) });\n }\n}\n//# sourceMappingURL=response.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createDisableKeepAlivePolicy, pipelineContainsDisableKeepAlivePolicy, } from \"./policies/disableKeepAlivePolicy.js\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport { ServiceClient, } from \"@azure/core-client\";\nimport { toCompatResponse } from \"./response.js\";\n/**\n * Client to provide compatability between core V1 & V2.\n */\nexport class ExtendedServiceClient extends ServiceClient {\n constructor(options) {\n var _a, _b;\n super(options);\n if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false &&\n !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) {\n this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n }\n if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) {\n this.pipeline.removePolicy({\n name: redirectPolicyName,\n });\n }\n }\n /**\n * Compatible send operation request function.\n *\n * @param operationArguments - Operation arguments\n * @param operationSpec - Operation Spec\n * @returns\n */\n async sendOperationRequest(operationArguments, operationSpec) {\n var _a;\n const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n let lastResponse;\n function onResponse(rawResponse, flatResponse, error) {\n lastResponse = rawResponse;\n if (userProvidedCallBack) {\n userProvidedCallBack(rawResponse, flatResponse, error);\n }\n }\n operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse });\n const result = await super.sendOperationRequest(operationArguments, operationSpec);\n if (lastResponse) {\n Object.defineProperty(result, \"_response\", {\n value: toCompatResponse(lastResponse),\n });\n }\n return result;\n }\n}\n//# sourceMappingURL=extendedClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { toPipelineRequest, toWebResourceLike } from \"../util.js\";\nimport { toCompatResponse, toPipelineResponse } from \"../response.js\";\n/**\n * An enum for compatibility with RequestPolicy\n */\nexport var HttpPipelineLogLevel;\n(function (HttpPipelineLogLevel) {\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"ERROR\"] = 1] = \"ERROR\";\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"INFO\"] = 3] = \"INFO\";\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"OFF\"] = 0] = \"OFF\";\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"WARNING\"] = 2] = \"WARNING\";\n})(HttpPipelineLogLevel || (HttpPipelineLogLevel = {}));\nconst mockRequestPolicyOptions = {\n log(_logLevel, _message) {\n /* do nothing */\n },\n shouldLog(_logLevel) {\n return false;\n },\n};\n/**\n * The name of the RequestPolicyFactoryPolicy\n */\nexport const requestPolicyFactoryPolicyName = \"RequestPolicyFactoryPolicy\";\n/**\n * A policy that wraps policies written for core-http.\n * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline\n */\nexport function createRequestPolicyFactoryPolicy(factories) {\n const orderedFactories = factories.slice().reverse();\n return {\n name: requestPolicyFactoryPolicyName,\n async sendRequest(request, next) {\n let httpPipeline = {\n async sendRequest(httpRequest) {\n const response = await next(toPipelineRequest(httpRequest));\n return toCompatResponse(response, { createProxy: true });\n },\n };\n for (const factory of orderedFactories) {\n httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions);\n }\n const webResourceLike = toWebResourceLike(request, { createProxy: true });\n const response = await httpPipeline.sendRequest(webResourceLike);\n return toPipelineResponse(response);\n },\n };\n}\n//# sourceMappingURL=requestPolicyFactoryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { toPipelineResponse } from \"./response.js\";\nimport { toWebResourceLike } from \"./util.js\";\n/**\n * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient.\n * @param requestPolicyClient - A HttpClient compatible with core-http\n * @returns A HttpClient compatible with core-rest-pipeline\n */\nexport function convertHttpClient(requestPolicyClient) {\n return {\n sendRequest: async (request) => {\n const response = await requestPolicyClient.sendRequest(toWebResourceLike(request, { createProxy: true }));\n return toPipelineResponse(response);\n },\n };\n}\n//# sourceMappingURL=httpClientAdapter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n//# sourceMappingURL=xml.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/// \nimport { XML_ATTRKEY, XML_CHARKEY } from \"./xml.common.js\";\nif (!document || !DOMParser || !Node || !XMLSerializer) {\n throw new Error(`This library depends on the following DOM objects: [\"document\", \"DOMParser\", \"Node\", \"XMLSerializer\"] to parse XML, but some of these are undefined. You may provide a polyfill to make these globally available in order to support your environment. For more information, please refer to https://aka.ms/azsdk/js/web-workers. `);\n}\n// Policy to make our code Trusted Types compliant at running time.\n// https://github.com/w3c/webappsec-trusted-types\n// We are calling DOMParser.parseFromString() to parse XML payload from Azure services.\n// The parsed DOM object is not exposed to outside. Scripts are disabled when parsing\n// according to the spec. There are no HTML/XSS security concerns on the usage of\n// parseFromString() here.\nlet ttPolicy;\ntry {\n if (typeof self.trustedTypes !== \"undefined\") {\n ttPolicy = self.trustedTypes.createPolicy(\"@azure/core-xml#xml.browser\", {\n createHTML: (s) => s,\n });\n }\n}\ncatch (e) {\n console.warn('Could not create trusted types policy \"@azure/core-xml#xml.browser\"');\n}\nconst doc = document.implementation.createDocument(null, null, null);\nconst parser = new DOMParser();\nexport function parseXML(str, opts = {}) {\n var _a, _b, _c, _d, _e, _f;\n try {\n const updatedOptions = {\n rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n cdataPropName: (_d = opts.cdataPropName) !== null && _d !== void 0 ? _d : \"__cdata\",\n stopNodes: (_e = opts.stopNodes) !== null && _e !== void 0 ? _e : [],\n };\n const dom = parser.parseFromString(((_f = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _f !== void 0 ? _f : str), \"application/xml\");\n throwIfError(dom);\n let obj;\n if (updatedOptions.includeRoot) {\n obj = domToObject(dom, updatedOptions);\n }\n else {\n obj = domToObject(dom.childNodes[0], updatedOptions);\n }\n return Promise.resolve(obj);\n }\n catch (err) {\n return Promise.reject(err);\n }\n}\nlet errorNS;\nfunction getErrorNamespace() {\n var _a, _b;\n if (errorNS === undefined) {\n try {\n const invalidXML = ((_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(\"INVALID\")) !== null && _a !== void 0 ? _a : \"INVALID\");\n errorNS =\n (_b = parser.parseFromString(invalidXML, \"text/xml\").getElementsByTagName(\"parsererror\")[0]\n .namespaceURI) !== null && _b !== void 0 ? _b : \"\";\n }\n catch (ignored) {\n // Most browsers will return a document containing , but IE will throw.\n errorNS = \"\";\n }\n }\n return errorNS;\n}\nfunction throwIfError(dom) {\n const parserErrors = dom.getElementsByTagName(\"parsererror\");\n if (parserErrors.length > 0 && getErrorNamespace()) {\n for (let i = 0; i < parserErrors.length; i++) {\n if (parserErrors[i].namespaceURI === errorNS) {\n throw new Error(parserErrors[i].innerHTML);\n }\n }\n }\n}\nfunction isElement(node) {\n return !!node.attributes;\n}\n/**\n * Get the Element-typed version of the provided Node if the provided node is an element with\n * attributes. If it isn't, then undefined is returned.\n */\nfunction asElementWithAttributes(node) {\n return isElement(node) && node.hasAttributes() ? node : undefined;\n}\nfunction domToObject(node, options) {\n var _a;\n let result = {};\n const childNodeCount = node.childNodes.length;\n const firstChildNode = node.childNodes[0];\n const onlyChildTextValue = (firstChildNode &&\n childNodeCount === 1 &&\n firstChildNode.nodeType === Node.TEXT_NODE &&\n firstChildNode.nodeValue) ||\n undefined;\n const elementWithAttributes = asElementWithAttributes(node);\n if (elementWithAttributes) {\n result[XML_ATTRKEY] = {};\n for (let i = 0; i < elementWithAttributes.attributes.length; i++) {\n const attr = elementWithAttributes.attributes[i];\n result[XML_ATTRKEY][attr.nodeName] = attr.nodeValue;\n }\n if (onlyChildTextValue) {\n result[options.xmlCharKey] = onlyChildTextValue;\n }\n }\n else if (childNodeCount === 0) {\n result = \"\";\n }\n else if (onlyChildTextValue) {\n result = onlyChildTextValue;\n }\n if (!onlyChildTextValue) {\n for (let i = 0; i < childNodeCount; i++) {\n const child = node.childNodes[i];\n // Check if CData\n if ((child === null || child === void 0 ? void 0 : child.nodeType) === Node.CDATA_SECTION_NODE) {\n // Already in the CDATA\n result = child.textContent;\n }\n else if (((_a = child === null || child === void 0 ? void 0 : child.firstChild) === null || _a === void 0 ? void 0 : _a.nodeType) === Node.CDATA_SECTION_NODE) {\n // Look if child is CDATA\n result[child.nodeName] = child.textContent;\n }\n else if (child.nodeType !== Node.TEXT_NODE) {\n // Ignore leading/trailing whitespace nodes\n const childObject = domToObject(child, options);\n if (!result[child.nodeName]) {\n result[child.nodeName] = childObject;\n }\n else if (Array.isArray(result[child.nodeName])) {\n result[child.nodeName].push(childObject);\n }\n else {\n result[child.nodeName] = [result[child.nodeName], childObject];\n }\n }\n }\n }\n return result;\n}\nconst serializer = new XMLSerializer();\nexport function stringifyXML(content, opts = {}) {\n var _a, _b, _c, _d, _e;\n const updatedOptions = {\n rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : \"root\",\n includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n cdataPropName: (_d = opts.cdataPropName) !== null && _d !== void 0 ? _d : \"__cdata\",\n stopNodes: (_e = opts.stopNodes) !== null && _e !== void 0 ? _e : [],\n };\n const dom = buildNode(content, updatedOptions.rootName, updatedOptions)[0];\n return ('' + serializer.serializeToString(dom));\n}\nfunction buildAttributes(attrs) {\n const result = [];\n for (const key of Object.keys(attrs)) {\n const attr = doc.createAttribute(key);\n attr.value = attrs[key].toString();\n result.push(attr);\n }\n return result;\n}\nfunction buildNode(obj, elementName, options) {\n if (obj === undefined ||\n obj === null ||\n typeof obj === \"string\" ||\n typeof obj === \"number\" ||\n typeof obj === \"boolean\") {\n const elem = doc.createElement(elementName);\n elem.textContent = obj === undefined || obj === null ? \"\" : obj.toString();\n return [elem];\n }\n else if (Array.isArray(obj)) {\n const result = [];\n for (const arrayElem of obj) {\n for (const child of buildNode(arrayElem, elementName, options)) {\n result.push(child);\n }\n }\n return result;\n }\n else if (typeof obj === \"object\") {\n const elem = doc.createElement(elementName);\n for (const key of Object.keys(obj)) {\n if (key === XML_ATTRKEY) {\n for (const attr of buildAttributes(obj[key])) {\n elem.attributes.setNamedItem(attr);\n }\n }\n else if (key === options.xmlCharKey) {\n elem.textContent = obj[key].toString();\n }\n else if (key === options.cdataPropName) {\n const cdataElement = doc.createCDATASection(obj[key].toString());\n elem.appendChild(cdataElement);\n }\n else {\n for (const child of buildNode(obj[key], key, options)) {\n elem.appendChild(child);\n }\n }\n }\n return [elem];\n }\n else {\n throw new Error(`Illegal value passed to buildObject: ${obj}`);\n }\n}\n//# sourceMappingURL=xml-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The `@azure/logger` configuration for this package.\n */\nexport const logger = createClientLogger(\"storage-blob\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortSignal, abortSignal } from \"./AbortSignal\";\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n/**\n * An AbortController provides an AbortSignal and the associated controls to signal\n * that an asynchronous operation should be aborted.\n *\n * @example\n * Abort an operation when another event fires\n * ```ts\n * const controller = new AbortController();\n * const signal = controller.signal;\n * doAsyncWork(signal);\n * button.addEventListener('click', () => controller.abort());\n * ```\n *\n * @example\n * Share aborter cross multiple operations in 30s\n * ```ts\n * // Upload the same data to 2 different data centers at the same time,\n * // abort another when any of them is finished\n * const controller = AbortController.withTimeout(30 * 1000);\n * doAsyncWork(controller.signal).then(controller.abort);\n * doAsyncWork(controller.signal).then(controller.abort);\n *```\n *\n * @example\n * Cascaded aborting\n * ```ts\n * // All operations can't take more than 30 seconds\n * const aborter = Aborter.timeout(30 * 1000);\n *\n * // Following 2 operations can't take more than 25 seconds\n * await doAsyncWork(aborter.withTimeout(25 * 1000));\n * await doAsyncWork(aborter.withTimeout(25 * 1000));\n * ```\n */\nexport class AbortController {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(parentSignals) {\n this._signal = new AbortSignal();\n if (!parentSignals) {\n return;\n }\n // coerce parentSignals into an array\n if (!Array.isArray(parentSignals)) {\n // eslint-disable-next-line prefer-rest-params\n parentSignals = arguments;\n }\n for (const parentSignal of parentSignals) {\n // if the parent signal has already had abort() called,\n // then call abort on this signal as well.\n if (parentSignal.aborted) {\n this.abort();\n }\n else {\n // when the parent signal aborts, this signal should as well.\n parentSignal.addEventListener(\"abort\", () => {\n this.abort();\n });\n }\n }\n }\n /**\n * The AbortSignal associated with this controller that will signal aborted\n * when the abort method is called on this controller.\n *\n * @readonly\n */\n get signal() {\n return this._signal;\n }\n /**\n * Signal that any operations passed this controller's associated abort signal\n * to cancel any remaining work and throw an `AbortError`.\n */\n abort() {\n abortSignal(this._signal);\n }\n /**\n * Creates a new AbortSignal instance that will abort after the provided ms.\n * @param ms - Elapsed time in milliseconds to trigger an abort.\n */\n static timeout(ms) {\n const signal = new AbortSignal();\n const timer = setTimeout(abortSignal, ms, signal);\n // Prevent the active Timer from keeping the Node.js event loop active.\n if (typeof timer.unref === \"function\") {\n timer.unref();\n }\n return signal;\n }\n}\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The base class from which all request policies derive.\n */\nexport class BaseRequestPolicy {\n /**\n * The main method to implement that manipulates a request/response.\n */\n constructor(\n /**\n * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline.\n */\n _nextPolicy, \n /**\n * The options that can be passed to a given request policy.\n */\n _options) {\n this._nextPolicy = _nextPolicy;\n this._options = _options;\n }\n /**\n * Get whether or not a log with the provided log level should be logged.\n * @param logLevel - The log level of the log that will be logged.\n * @returns Whether or not a log with the provided log level should be logged.\n */\n shouldLog(logLevel) {\n return this._options.shouldLog(logLevel);\n }\n /**\n * Attempt to log the provided message to the provided logger. If no logger was provided or if\n * the log level does not meat the logger's threshold, then nothing will be logged.\n * @param logLevel - The log level of this log.\n * @param message - The message of this log.\n */\n log(logLevel, message) {\n this._options.log(logLevel, message);\n }\n}\n//# sourceMappingURL=RequestPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const SDK_VERSION = \"12.23.0\";\nexport const SERVICE_VERSION = \"2024-05-04\";\nexport const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB\nexport const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB\nexport const BLOCK_BLOB_MAX_BLOCKS = 50000;\nexport const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB\nexport const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB\nexport const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;\nexport const REQUEST_TIMEOUT = 100 * 1000; // In ms\n/**\n * The OAuth scope to use with Azure Storage.\n */\nexport const StorageOAuthScopes = \"https://storage.azure.com/.default\";\nexport const URLConstants = {\n Parameters: {\n FORCE_BROWSER_NO_CACHE: \"_\",\n SIGNATURE: \"sig\",\n SNAPSHOT: \"snapshot\",\n VERSIONID: \"versionid\",\n TIMEOUT: \"timeout\",\n },\n};\nexport const HTTPURLConnection = {\n HTTP_ACCEPTED: 202,\n HTTP_CONFLICT: 409,\n HTTP_NOT_FOUND: 404,\n HTTP_PRECON_FAILED: 412,\n HTTP_RANGE_NOT_SATISFIABLE: 416,\n};\nexport const HeaderConstants = {\n AUTHORIZATION: \"Authorization\",\n AUTHORIZATION_SCHEME: \"Bearer\",\n CONTENT_ENCODING: \"Content-Encoding\",\n CONTENT_ID: \"Content-ID\",\n CONTENT_LANGUAGE: \"Content-Language\",\n CONTENT_LENGTH: \"Content-Length\",\n CONTENT_MD5: \"Content-Md5\",\n CONTENT_TRANSFER_ENCODING: \"Content-Transfer-Encoding\",\n CONTENT_TYPE: \"Content-Type\",\n COOKIE: \"Cookie\",\n DATE: \"date\",\n IF_MATCH: \"if-match\",\n IF_MODIFIED_SINCE: \"if-modified-since\",\n IF_NONE_MATCH: \"if-none-match\",\n IF_UNMODIFIED_SINCE: \"if-unmodified-since\",\n PREFIX_FOR_STORAGE: \"x-ms-\",\n RANGE: \"Range\",\n USER_AGENT: \"User-Agent\",\n X_MS_CLIENT_REQUEST_ID: \"x-ms-client-request-id\",\n X_MS_COPY_SOURCE: \"x-ms-copy-source\",\n X_MS_DATE: \"x-ms-date\",\n X_MS_ERROR_CODE: \"x-ms-error-code\",\n X_MS_VERSION: \"x-ms-version\",\n};\nexport const ETagNone = \"\";\nexport const ETagAny = \"*\";\nexport const SIZE_1_MB = 1 * 1024 * 1024;\nexport const BATCH_MAX_REQUEST = 256;\nexport const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;\nexport const HTTP_LINE_ENDING = \"\\r\\n\";\nexport const HTTP_VERSION_1_1 = \"HTTP/1.1\";\nexport const EncryptionAlgorithmAES25 = \"AES256\";\nexport const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;\nexport const StorageBlobLoggingAllowedHeaderNames = [\n \"Access-Control-Allow-Origin\",\n \"Cache-Control\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"Request-Id\",\n \"traceparent\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"x-ms-client-request-id\",\n \"x-ms-date\",\n \"x-ms-error-code\",\n \"x-ms-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-version\",\n \"Accept-Ranges\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-MD5\",\n \"Content-Range\",\n \"ETag\",\n \"Last-Modified\",\n \"Server\",\n \"Vary\",\n \"x-ms-content-crc64\",\n \"x-ms-copy-action\",\n \"x-ms-copy-completion-time\",\n \"x-ms-copy-id\",\n \"x-ms-copy-progress\",\n \"x-ms-copy-status\",\n \"x-ms-has-immutability-policy\",\n \"x-ms-has-legal-hold\",\n \"x-ms-lease-state\",\n \"x-ms-lease-status\",\n \"x-ms-range\",\n \"x-ms-request-server-encrypted\",\n \"x-ms-server-encrypted\",\n \"x-ms-snapshot\",\n \"x-ms-source-range\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"x-ms-access-tier\",\n \"x-ms-access-tier-change-time\",\n \"x-ms-access-tier-inferred\",\n \"x-ms-account-kind\",\n \"x-ms-archive-status\",\n \"x-ms-blob-append-offset\",\n \"x-ms-blob-cache-control\",\n \"x-ms-blob-committed-block-count\",\n \"x-ms-blob-condition-appendpos\",\n \"x-ms-blob-condition-maxsize\",\n \"x-ms-blob-content-disposition\",\n \"x-ms-blob-content-encoding\",\n \"x-ms-blob-content-language\",\n \"x-ms-blob-content-length\",\n \"x-ms-blob-content-md5\",\n \"x-ms-blob-content-type\",\n \"x-ms-blob-public-access\",\n \"x-ms-blob-sequence-number\",\n \"x-ms-blob-type\",\n \"x-ms-copy-destination-snapshot\",\n \"x-ms-creation-time\",\n \"x-ms-default-encryption-scope\",\n \"x-ms-delete-snapshots\",\n \"x-ms-delete-type-permanent\",\n \"x-ms-deny-encryption-scope-override\",\n \"x-ms-encryption-algorithm\",\n \"x-ms-if-sequence-number-eq\",\n \"x-ms-if-sequence-number-le\",\n \"x-ms-if-sequence-number-lt\",\n \"x-ms-incremental-copy\",\n \"x-ms-lease-action\",\n \"x-ms-lease-break-period\",\n \"x-ms-lease-duration\",\n \"x-ms-lease-id\",\n \"x-ms-lease-time\",\n \"x-ms-page-write\",\n \"x-ms-proposed-lease-id\",\n \"x-ms-range-get-content-md5\",\n \"x-ms-rehydrate-priority\",\n \"x-ms-sequence-number-action\",\n \"x-ms-sku-name\",\n \"x-ms-source-content-md5\",\n \"x-ms-source-if-match\",\n \"x-ms-source-if-modified-since\",\n \"x-ms-source-if-none-match\",\n \"x-ms-source-if-unmodified-since\",\n \"x-ms-tag-count\",\n \"x-ms-encryption-key-sha256\",\n \"x-ms-if-tags\",\n \"x-ms-source-if-tags\",\n];\nexport const StorageBlobLoggingAllowedQueryParameters = [\n \"comp\",\n \"maxresults\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"se\",\n \"si\",\n \"sip\",\n \"sp\",\n \"spr\",\n \"sr\",\n \"srt\",\n \"ss\",\n \"st\",\n \"sv\",\n \"include\",\n \"marker\",\n \"prefix\",\n \"copyid\",\n \"restype\",\n \"blockid\",\n \"blocklisttype\",\n \"delimiter\",\n \"prevsnapshot\",\n \"ske\",\n \"skoid\",\n \"sks\",\n \"skt\",\n \"sktid\",\n \"skv\",\n \"snapshot\",\n];\nexport const BlobUsesCustomerSpecifiedEncryptionMsg = \"BlobUsesCustomerSpecifiedEncryption\";\nexport const BlobDoesNotUseCustomerSpecifiedEncryption = \"BlobDoesNotUseCustomerSpecifiedEncryption\";\n/// List of ports used for path style addressing.\n/// Path style addressing means that storage account is put in URI's Path segment in instead of in host.\nexport const PathStylePorts = [\n \"10000\",\n \"10001\",\n \"10002\",\n \"10003\",\n \"10004\",\n \"10100\",\n \"10101\",\n \"10102\",\n \"10103\",\n \"10104\",\n \"11000\",\n \"11001\",\n \"11002\",\n \"11003\",\n \"11004\",\n \"11100\",\n \"11101\",\n \"11102\",\n \"11103\",\n \"11104\",\n];\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { DevelopmentConnectionString, HeaderConstants, PathStylePorts, URLConstants, } from \"./constants\";\n/**\n * Reserved URL characters must be properly escaped for Storage services like Blob or File.\n *\n * ## URL encode and escape strategy for JS SDKs\n *\n * When customers pass a URL string into XxxClient classes constructor, the URL string may already be URL encoded or not.\n * But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL\n * string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.\n *\n * ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.\n *\n * This is what legacy V2 SDK does, simple and works for most of the cases.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%253A\" and send to server. A blob named \"b%3A\" will be created.\n *\n * But this strategy will make it not possible to create a blob with \"?\" in it's name. Because when customer URL string is\n * \"http://account.blob.core.windows.net/con/blob?name\", the \"?name\" will be treated as URL paramter instead of blob name.\n * If customer URL string is \"http://account.blob.core.windows.net/con/blob%3Fname\", a blob named \"blob%3Fname\" will be created.\n * V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.\n * We cannot accept a SDK cannot create a blob name with \"?\". So we implement strategy two:\n *\n * ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.\n *\n * This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will escape \":\" like \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%3A\" to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%253A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%253A\" to server. A blob named \"b%3A\" will be created.\n *\n * This strategy gives us flexibility to create with any special characters. But \"%\" will be treated as a special characters, if the URL string\n * is not encoded, there shouldn't a \"%\" in the URL string, otherwise the URL is not a valid URL.\n * If customer needs to create a blob with \"%\" in it's blob name, use \"%25\" instead of \"%\". Just like above 3rd sample.\n * And following URL strings are invalid:\n * - \"http://account.blob.core.windows.net/con/b%\"\n * - \"http://account.blob.core.windows.net/con/b%2\"\n * - \"http://account.blob.core.windows.net/con/b%G\"\n *\n * Another special character is \"?\", use \"%2F\" to represent a blob name with \"?\" in a URL string.\n *\n * ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`\n *\n * We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata\n *\n * @param url -\n */\nexport function escapeURLPath(url) {\n const urlParsed = new URL(url);\n let path = urlParsed.pathname;\n path = path || \"/\";\n path = escape(path);\n urlParsed.pathname = path;\n return urlParsed.toString();\n}\nfunction getProxyUriFromDevConnString(connectionString) {\n // Development Connection String\n // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key\n let proxyUri = \"\";\n if (connectionString.search(\"DevelopmentStorageProxyUri=\") !== -1) {\n // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri\n const matchCredentials = connectionString.split(\";\");\n for (const element of matchCredentials) {\n if (element.trim().startsWith(\"DevelopmentStorageProxyUri=\")) {\n proxyUri = element.trim().match(\"DevelopmentStorageProxyUri=(.*)\")[1];\n }\n }\n }\n return proxyUri;\n}\nexport function getValueInConnString(connectionString, argument) {\n const elements = connectionString.split(\";\");\n for (const element of elements) {\n if (element.trim().startsWith(argument)) {\n return element.trim().match(argument + \"=(.*)\")[1];\n }\n }\n return \"\";\n}\n/**\n * Extracts the parts of an Azure Storage account connection string.\n *\n * @param connectionString - Connection string.\n * @returns String key value pairs of the storage account's url and credentials.\n */\nexport function extractConnectionStringParts(connectionString) {\n let proxyUri = \"\";\n if (connectionString.startsWith(\"UseDevelopmentStorage=true\")) {\n // Development connection string\n proxyUri = getProxyUriFromDevConnString(connectionString);\n connectionString = DevelopmentConnectionString;\n }\n // Matching BlobEndpoint in the Account connection string\n let blobEndpoint = getValueInConnString(connectionString, \"BlobEndpoint\");\n // Slicing off '/' at the end if exists\n // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)\n blobEndpoint = blobEndpoint.endsWith(\"/\") ? blobEndpoint.slice(0, -1) : blobEndpoint;\n if (connectionString.search(\"DefaultEndpointsProtocol=\") !== -1 &&\n connectionString.search(\"AccountKey=\") !== -1) {\n // Account connection string\n let defaultEndpointsProtocol = \"\";\n let accountName = \"\";\n let accountKey = Buffer.from(\"accountKey\", \"base64\");\n let endpointSuffix = \"\";\n // Get account name and key\n accountName = getValueInConnString(connectionString, \"AccountName\");\n accountKey = Buffer.from(getValueInConnString(connectionString, \"AccountKey\"), \"base64\");\n if (!blobEndpoint) {\n // BlobEndpoint is not present in the Account connection string\n // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`\n defaultEndpointsProtocol = getValueInConnString(connectionString, \"DefaultEndpointsProtocol\");\n const protocol = defaultEndpointsProtocol.toLowerCase();\n if (protocol !== \"https\" && protocol !== \"http\") {\n throw new Error(\"Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'\");\n }\n endpointSuffix = getValueInConnString(connectionString, \"EndpointSuffix\");\n if (!endpointSuffix) {\n throw new Error(\"Invalid EndpointSuffix in the provided Connection String\");\n }\n blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n }\n if (!accountName) {\n throw new Error(\"Invalid AccountName in the provided Connection String\");\n }\n else if (accountKey.length === 0) {\n throw new Error(\"Invalid AccountKey in the provided Connection String\");\n }\n return {\n kind: \"AccountConnString\",\n url: blobEndpoint,\n accountName,\n accountKey,\n proxyUri,\n };\n }\n else {\n // SAS connection string\n let accountSas = getValueInConnString(connectionString, \"SharedAccessSignature\");\n let accountName = getValueInConnString(connectionString, \"AccountName\");\n // if accountName is empty, try to read it from BlobEndpoint\n if (!accountName) {\n accountName = getAccountNameFromUrl(blobEndpoint);\n }\n if (!blobEndpoint) {\n throw new Error(\"Invalid BlobEndpoint in the provided SAS Connection String\");\n }\n else if (!accountSas) {\n throw new Error(\"Invalid SharedAccessSignature in the provided SAS Connection String\");\n }\n // client constructors assume accountSas does *not* start with ?\n if (accountSas.startsWith(\"?\")) {\n accountSas = accountSas.substring(1);\n }\n return { kind: \"SASConnString\", url: blobEndpoint, accountName, accountSas };\n }\n}\n/**\n * Internal escape method implemented Strategy Two mentioned in escapeURL() description.\n *\n * @param text -\n */\nfunction escape(text) {\n return encodeURIComponent(text)\n .replace(/%2F/g, \"/\") // Don't escape for \"/\"\n .replace(/'/g, \"%27\") // Escape for \"'\"\n .replace(/\\+/g, \"%20\")\n .replace(/%25/g, \"%\"); // Revert encoded \"%\"\n}\n/**\n * Append a string to URL path. Will remove duplicated \"/\" in front of the string\n * when URL path ends with a \"/\".\n *\n * @param url - Source URL string\n * @param name - String to be appended to URL\n * @returns An updated URL string\n */\nexport function appendToURLPath(url, name) {\n const urlParsed = new URL(url);\n let path = urlParsed.pathname;\n path = path ? (path.endsWith(\"/\") ? `${path}${name}` : `${path}/${name}`) : name;\n urlParsed.pathname = path;\n return urlParsed.toString();\n}\n/**\n * Set URL parameter name and value. If name exists in URL parameters, old value\n * will be replaced by name key. If not provide value, the parameter will be deleted.\n *\n * @param url - Source URL string\n * @param name - Parameter name\n * @param value - Parameter value\n * @returns An updated URL string\n */\nexport function setURLParameter(url, name, value) {\n const urlParsed = new URL(url);\n const encodedName = encodeURIComponent(name);\n const encodedValue = value ? encodeURIComponent(value) : undefined;\n // mutating searchParams will change the encoding, so we have to do this ourselves\n const searchString = urlParsed.search === \"\" ? \"?\" : urlParsed.search;\n const searchPieces = [];\n for (const pair of searchString.slice(1).split(\"&\")) {\n if (pair) {\n const [key] = pair.split(\"=\", 2);\n if (key !== encodedName) {\n searchPieces.push(pair);\n }\n }\n }\n if (encodedValue) {\n searchPieces.push(`${encodedName}=${encodedValue}`);\n }\n urlParsed.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return urlParsed.toString();\n}\n/**\n * Get URL parameter by name.\n *\n * @param url -\n * @param name -\n */\nexport function getURLParameter(url, name) {\n var _a;\n const urlParsed = new URL(url);\n return (_a = urlParsed.searchParams.get(name)) !== null && _a !== void 0 ? _a : undefined;\n}\n/**\n * Set URL host.\n *\n * @param url - Source URL string\n * @param host - New host string\n * @returns An updated URL string\n */\nexport function setURLHost(url, host) {\n const urlParsed = new URL(url);\n urlParsed.hostname = host;\n return urlParsed.toString();\n}\n/**\n * Get URL path from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPath(url) {\n try {\n const urlParsed = new URL(url);\n return urlParsed.pathname;\n }\n catch (e) {\n return undefined;\n }\n}\n/**\n * Get URL scheme from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLScheme(url) {\n try {\n const urlParsed = new URL(url);\n return urlParsed.protocol.endsWith(\":\") ? urlParsed.protocol.slice(0, -1) : urlParsed.protocol;\n }\n catch (e) {\n return undefined;\n }\n}\n/**\n * Get URL path and query from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPathAndQuery(url) {\n const urlParsed = new URL(url);\n const pathString = urlParsed.pathname;\n if (!pathString) {\n throw new RangeError(\"Invalid url without valid path.\");\n }\n let queryString = urlParsed.search || \"\";\n queryString = queryString.trim();\n if (queryString !== \"\") {\n queryString = queryString.startsWith(\"?\") ? queryString : `?${queryString}`; // Ensure query string start with '?'\n }\n return `${pathString}${queryString}`;\n}\n/**\n * Get URL query key value pairs from an URL string.\n *\n * @param url -\n */\nexport function getURLQueries(url) {\n let queryString = new URL(url).search;\n if (!queryString) {\n return {};\n }\n queryString = queryString.trim();\n queryString = queryString.startsWith(\"?\") ? queryString.substring(1) : queryString;\n let querySubStrings = queryString.split(\"&\");\n querySubStrings = querySubStrings.filter((value) => {\n const indexOfEqual = value.indexOf(\"=\");\n const lastIndexOfEqual = value.lastIndexOf(\"=\");\n return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);\n });\n const queries = {};\n for (const querySubString of querySubStrings) {\n const splitResults = querySubString.split(\"=\");\n const key = splitResults[0];\n const value = splitResults[1];\n queries[key] = value;\n }\n return queries;\n}\n/**\n * Append a string to URL query.\n *\n * @param url - Source URL string.\n * @param queryParts - String to be appended to the URL query.\n * @returns An updated URL string.\n */\nexport function appendToURLQuery(url, queryParts) {\n const urlParsed = new URL(url);\n let query = urlParsed.search;\n if (query) {\n query += \"&\" + queryParts;\n }\n else {\n query = queryParts;\n }\n urlParsed.search = query;\n return urlParsed.toString();\n}\n/**\n * Rounds a date off to seconds.\n *\n * @param date -\n * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;\n * If false, YYYY-MM-DDThh:mm:ssZ will be returned.\n * @returns Date string in ISO8061 format, with or without 7 milliseconds component\n */\nexport function truncatedISO8061Date(date, withMilliseconds = true) {\n // Date.toISOString() will return like \"2018-10-29T06:34:36.139Z\"\n const dateString = date.toISOString();\n return withMilliseconds\n ? dateString.substring(0, dateString.length - 1) + \"0000\" + \"Z\"\n : dateString.substring(0, dateString.length - 5) + \"Z\";\n}\n/**\n * Base64 encode.\n *\n * @param content -\n */\nexport function base64encode(content) {\n return !isNode ? btoa(content) : Buffer.from(content).toString(\"base64\");\n}\n/**\n * Base64 decode.\n *\n * @param encodedString -\n */\nexport function base64decode(encodedString) {\n return !isNode ? atob(encodedString) : Buffer.from(encodedString, \"base64\").toString();\n}\n/**\n * Generate a 64 bytes base64 block ID string.\n *\n * @param blockIndex -\n */\nexport function generateBlockID(blockIDPrefix, blockIndex) {\n // To generate a 64 bytes base64 string, source string should be 48\n const maxSourceStringLength = 48;\n // A blob can have a maximum of 100,000 uncommitted blocks at any given time\n const maxBlockIndexLength = 6;\n const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;\n if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {\n blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);\n }\n const res = blockIDPrefix +\n padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, \"0\");\n return base64encode(res);\n}\n/**\n * Delay specified time interval.\n *\n * @param timeInMs -\n * @param aborter -\n * @param abortError -\n */\nexport async function delay(timeInMs, aborter, abortError) {\n return new Promise((resolve, reject) => {\n /* eslint-disable-next-line prefer-const */\n let timeout;\n const abortHandler = () => {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n reject(abortError);\n };\n const resolveHandler = () => {\n if (aborter !== undefined) {\n aborter.removeEventListener(\"abort\", abortHandler);\n }\n resolve();\n };\n timeout = setTimeout(resolveHandler, timeInMs);\n if (aborter !== undefined) {\n aborter.addEventListener(\"abort\", abortHandler);\n }\n });\n}\n/**\n * String.prototype.padStart()\n *\n * @param currentString -\n * @param targetLength -\n * @param padString -\n */\nexport function padStart(currentString, targetLength, padString = \" \") {\n // @ts-expect-error: TS doesn't know this code needs to run downlevel sometimes\n if (String.prototype.padStart) {\n return currentString.padStart(targetLength, padString);\n }\n padString = padString || \" \";\n if (currentString.length > targetLength) {\n return currentString;\n }\n else {\n targetLength = targetLength - currentString.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + currentString;\n }\n}\nexport function sanitizeURL(url) {\n let safeURL = url;\n if (getURLParameter(safeURL, URLConstants.Parameters.SIGNATURE)) {\n safeURL = setURLParameter(safeURL, URLConstants.Parameters.SIGNATURE, \"*****\");\n }\n return safeURL;\n}\nexport function sanitizeHeaders(originalHeader) {\n const headers = createHttpHeaders();\n for (const [name, value] of originalHeader) {\n if (name.toLowerCase() === HeaderConstants.AUTHORIZATION.toLowerCase()) {\n headers.set(name, \"*****\");\n }\n else if (name.toLowerCase() === HeaderConstants.X_MS_COPY_SOURCE) {\n headers.set(name, sanitizeURL(value));\n }\n else {\n headers.set(name, value);\n }\n }\n return headers;\n}\n/**\n * If two strings are equal when compared case insensitive.\n *\n * @param str1 -\n * @param str2 -\n */\nexport function iEqual(str1, str2) {\n return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();\n}\n/**\n * Extracts account name from the url\n * @param url - url to extract the account name from\n * @returns with the account name\n */\nexport function getAccountNameFromUrl(url) {\n const parsedUrl = new URL(url);\n let accountName;\n try {\n if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n accountName = parsedUrl.hostname.split(\".\")[0];\n }\n else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/\n // .getPath() -> /devstoreaccount1/\n accountName = parsedUrl.pathname.split(\"/\")[1];\n }\n else {\n // Custom domain case: \"https://customdomain.com/containername/blob\".\n accountName = \"\";\n }\n return accountName;\n }\n catch (error) {\n throw new Error(\"Unable to extract accountName with provided information.\");\n }\n}\nexport function isIpEndpointStyle(parsedUrl) {\n const host = parsedUrl.host;\n // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.\n // Case 2: localhost(:port) or host.docker.internal, use broad regex to match port part.\n // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.\n // For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.\n return (/^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(:[0-9]+)?$/.test(host) ||\n (Boolean(parsedUrl.port) && PathStylePorts.includes(parsedUrl.port)));\n}\n/**\n * Convert Tags to encoded string.\n *\n * @param tags -\n */\nexport function toBlobTagsString(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const tagPairs = [];\n for (const key in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, key)) {\n const value = tags[key];\n tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n }\n }\n return tagPairs.join(\"&\");\n}\n/**\n * Convert Tags type to BlobTags.\n *\n * @param tags -\n */\nexport function toBlobTags(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const res = {\n blobTagSet: [],\n };\n for (const key in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, key)) {\n const value = tags[key];\n res.blobTagSet.push({\n key,\n value,\n });\n }\n }\n return res;\n}\n/**\n * Covert BlobTags to Tags type.\n *\n * @param tags -\n */\nexport function toTags(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const res = {};\n for (const blobTag of tags.blobTagSet) {\n res[blobTag.key] = blobTag.value;\n }\n return res;\n}\n/**\n * Convert BlobQueryTextConfiguration to QuerySerialization type.\n *\n * @param textConfiguration -\n */\nexport function toQuerySerialization(textConfiguration) {\n if (textConfiguration === undefined) {\n return undefined;\n }\n switch (textConfiguration.kind) {\n case \"csv\":\n return {\n format: {\n type: \"delimited\",\n delimitedTextConfiguration: {\n columnSeparator: textConfiguration.columnSeparator || \",\",\n fieldQuote: textConfiguration.fieldQuote || \"\",\n recordSeparator: textConfiguration.recordSeparator,\n escapeChar: textConfiguration.escapeCharacter || \"\",\n headersPresent: textConfiguration.hasHeaders || false,\n },\n },\n };\n case \"json\":\n return {\n format: {\n type: \"json\",\n jsonTextConfiguration: {\n recordSeparator: textConfiguration.recordSeparator,\n },\n },\n };\n case \"arrow\":\n return {\n format: {\n type: \"arrow\",\n arrowConfiguration: {\n schema: textConfiguration.schema,\n },\n },\n };\n case \"parquet\":\n return {\n format: {\n type: \"parquet\",\n },\n };\n default:\n throw Error(\"Invalid BlobQueryTextConfiguration.\");\n }\n}\nexport function parseObjectReplicationRecord(objectReplicationRecord) {\n if (!objectReplicationRecord) {\n return undefined;\n }\n if (\"policy-id\" in objectReplicationRecord) {\n // If the dictionary contains a key with policy id, we are not required to do any parsing since\n // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.\n return undefined;\n }\n const orProperties = [];\n for (const key in objectReplicationRecord) {\n const ids = key.split(\"_\");\n const policyPrefix = \"or-\";\n if (ids[0].startsWith(policyPrefix)) {\n ids[0] = ids[0].substring(policyPrefix.length);\n }\n const rule = {\n ruleId: ids[1],\n replicationStatus: objectReplicationRecord[key],\n };\n const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);\n if (policyIndex > -1) {\n orProperties[policyIndex].rules.push(rule);\n }\n else {\n orProperties.push({\n policyId: ids[0],\n rules: [rule],\n });\n }\n }\n return orProperties;\n}\n/**\n * Attach a TokenCredential to an object.\n *\n * @param thing -\n * @param credential -\n */\nexport function attachCredential(thing, credential) {\n thing.credential = credential;\n return thing;\n}\nexport function httpAuthorizationToString(httpAuthorization) {\n return httpAuthorization ? httpAuthorization.scheme + \" \" + httpAuthorization.value : undefined;\n}\nexport function BlobNameToString(name) {\n if (name.encoded) {\n return decodeURIComponent(name.content);\n }\n else {\n return name.content;\n }\n}\nexport function ConvertInternalResponseOfListBlobFlat(internalResponse) {\n return Object.assign(Object.assign({}, internalResponse), { segment: {\n blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n return blobItem;\n }),\n } });\n}\nexport function ConvertInternalResponseOfListBlobHierarchy(internalResponse) {\n var _a;\n return Object.assign(Object.assign({}, internalResponse), { segment: {\n blobPrefixes: (_a = internalResponse.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {\n const blobPrefix = Object.assign(Object.assign({}, blobPrefixInternal), { name: BlobNameToString(blobPrefixInternal.name) });\n return blobPrefix;\n }),\n blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n return blobItem;\n }),\n } });\n}\nexport function* ExtractPageRangeInfoItems(getPageRangesSegment) {\n let pageRange = [];\n let clearRange = [];\n if (getPageRangesSegment.pageRange)\n pageRange = getPageRangesSegment.pageRange;\n if (getPageRangesSegment.clearRange)\n clearRange = getPageRangesSegment.clearRange;\n let pageRangeIndex = 0;\n let clearRangeIndex = 0;\n while (pageRangeIndex < pageRange.length && clearRangeIndex < clearRange.length) {\n if (pageRange[pageRangeIndex].start < clearRange[clearRangeIndex].start) {\n yield {\n start: pageRange[pageRangeIndex].start,\n end: pageRange[pageRangeIndex].end,\n isClear: false,\n };\n ++pageRangeIndex;\n }\n else {\n yield {\n start: clearRange[clearRangeIndex].start,\n end: clearRange[clearRangeIndex].end,\n isClear: true,\n };\n ++clearRangeIndex;\n }\n }\n for (; pageRangeIndex < pageRange.length; ++pageRangeIndex) {\n yield {\n start: pageRange[pageRangeIndex].start,\n end: pageRange[pageRangeIndex].end,\n isClear: false,\n };\n }\n for (; clearRangeIndex < clearRange.length; ++clearRangeIndex) {\n yield {\n start: clearRange[clearRangeIndex].start,\n end: clearRange[clearRangeIndex].end,\n isClear: true,\n };\n }\n}\n/**\n * Escape the blobName but keep path separator ('/').\n */\nexport function EscapePath(blobName) {\n const split = blobName.split(\"/\");\n for (let i = 0; i < split.length; i++) {\n split[i] = encodeURIComponent(split[i]);\n }\n return split.join(\"/\");\n}\n/**\n * A typesafe helper for ensuring that a given response object has\n * the original _response attached.\n * @param response - A response object from calling a client operation\n * @returns The same object, but with known _response property\n */\nexport function assertResponse(response) {\n if (`_response` in response) {\n return response;\n }\n throw new TypeError(`Unexpected response object ${response}`);\n}\n//# sourceMappingURL=utils.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * A factory method used to generated a RetryPolicy factory.\n *\n * @param retryOptions -\n */\nexport function NewRetryPolicyFactory(retryOptions) {\n return {\n create: (nextPolicy, options) => {\n return new StorageRetryPolicy(nextPolicy, options, retryOptions);\n },\n };\n}\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport class StorageRetryPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of RetryPolicy.\n *\n * @param nextPolicy -\n * @param options -\n * @param retryOptions -\n */\n constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {\n super(nextPolicy, options);\n // Initialize retry options\n this.retryOptions = {\n retryPolicyType: retryOptions.retryPolicyType\n ? retryOptions.retryPolicyType\n : DEFAULT_RETRY_OPTIONS.retryPolicyType,\n maxTries: retryOptions.maxTries && retryOptions.maxTries >= 1\n ? Math.floor(retryOptions.maxTries)\n : DEFAULT_RETRY_OPTIONS.maxTries,\n tryTimeoutInMs: retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0\n ? retryOptions.tryTimeoutInMs\n : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,\n retryDelayInMs: retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0\n ? Math.min(retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs)\n : DEFAULT_RETRY_OPTIONS.retryDelayInMs,\n maxRetryDelayInMs: retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,\n secondaryHost: retryOptions.secondaryHost\n ? retryOptions.secondaryHost\n : DEFAULT_RETRY_OPTIONS.secondaryHost,\n };\n }\n /**\n * Sends request.\n *\n * @param request -\n */\n async sendRequest(request) {\n return this.attemptSendRequest(request, false, 1);\n }\n /**\n * Decide and perform next retry. Won't mutate request parameter.\n *\n * @param request -\n * @param secondaryHas404 - If attempt was against the secondary & it returned a StatusNotFound (404), then\n * the resource was not found. This may be due to replication delay. So, in this\n * case, we'll never try the secondary again for this operation.\n * @param attempt - How many retries has been attempted to performed, starting from 1, which includes\n * the attempt will be performed by this method call.\n */\n async attemptSendRequest(request, secondaryHas404, attempt) {\n const newRequest = request.clone();\n const isPrimaryRetry = secondaryHas404 ||\n !this.retryOptions.secondaryHost ||\n !(request.method === \"GET\" || request.method === \"HEAD\" || request.method === \"OPTIONS\") ||\n attempt % 2 === 1;\n if (!isPrimaryRetry) {\n newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);\n }\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (this.retryOptions.tryTimeoutInMs) {\n newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());\n }\n let response;\n try {\n logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n response = await this._nextPolicy.sendRequest(newRequest);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {\n return response;\n }\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n }\n catch (err) {\n logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {\n throw err;\n }\n }\n await this.delay(isPrimaryRetry, attempt, request.abortSignal);\n return this.attemptSendRequest(request, secondaryHas404, ++attempt);\n }\n /**\n * Decide whether to retry according to last HTTP response and retry counters.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param response -\n * @param err -\n */\n shouldRetry(isPrimaryRetry, attempt, response, err) {\n if (attempt >= this.retryOptions.maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions\n .maxTries}, no further try.`);\n return false;\n }\n // Handle network failures, you may need to customize the list when you implement\n // your own http client\n const retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\", // For default xhr based http client provided in ms-rest-js\n ];\n if (err) {\n for (const retriableError of retriableErrors) {\n if (err.name.toUpperCase().includes(retriableError) ||\n err.message.toUpperCase().includes(retriableError) ||\n (err.code && err.code.toString().toUpperCase() === retriableError)) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n }\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || err) {\n const statusCode = response ? response.status : err ? err.statusCode : 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"PARSE_ERROR\" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n return true;\n }\n return false;\n }\n /**\n * Delay a calculated time between retries.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param abortSignal -\n */\n async delay(isPrimaryRetry, attempt, abortSignal) {\n let delayTimeInMs = 0;\n if (isPrimaryRetry) {\n switch (this.retryOptions.retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = this.retryOptions.retryDelayInMs;\n break;\n }\n }\n else {\n delayTimeInMs = Math.random() * 1000;\n }\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);\n }\n}\n//# sourceMappingURL=StorageRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageRetryPolicy, StorageRetryPolicyType } from \"./policies/StorageRetryPolicy\";\nexport { StorageRetryPolicyType, StorageRetryPolicy };\n/**\n * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.\n */\nexport class StorageRetryPolicyFactory {\n /**\n * Creates an instance of StorageRetryPolicyFactory.\n * @param retryOptions -\n */\n constructor(retryOptions) {\n this.retryOptions = retryOptions;\n }\n /**\n * Creates a StorageRetryPolicy object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);\n }\n}\n//# sourceMappingURL=StorageRetryPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport class StorageSharedKeyCredential {\n}\n//# sourceMappingURL=StorageSharedKeyCredential.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\n/**\n * Credential policy used to sign HTTP(S) requests before sending. This is an\n * abstract class.\n */\nexport class CredentialPolicy extends BaseRequestPolicy {\n /**\n * Sends out request.\n *\n * @param request -\n */\n sendRequest(request) {\n return this._nextPolicy.sendRequest(this.signRequest(request));\n }\n /**\n * Child classes must implement this method with request signing. This method\n * will be executed in {@link sendRequest}.\n *\n * @param request -\n */\n signRequest(request) {\n // Child classes must override this method with request signing. This method\n // will be executed in sendRequest().\n return request;\n }\n}\n//# sourceMappingURL=CredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { CredentialPolicy } from \"./CredentialPolicy\";\n/**\n * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources\n * or for use with Shared Access Signatures (SAS).\n */\nexport class AnonymousCredentialPolicy extends CredentialPolicy {\n /**\n * Creates an instance of AnonymousCredentialPolicy.\n * @param nextPolicy -\n * @param options -\n */\n // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n}\n//# sourceMappingURL=AnonymousCredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Credential is an abstract class for Azure Storage HTTP requests signing. This\n * class will host an credentialPolicyCreator factory which generates CredentialPolicy.\n */\nexport class Credential {\n /**\n * Creates a RequestPolicy object.\n *\n * @param _nextPolicy -\n * @param _options -\n */\n create(_nextPolicy, _options) {\n throw new Error(\"Method should be implemented in children classes.\");\n }\n}\n//# sourceMappingURL=Credential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AnonymousCredentialPolicy } from \"../policies/AnonymousCredentialPolicy\";\nimport { Credential } from \"./Credential\";\n/**\n * AnonymousCredential provides a credentialPolicyCreator member used to create\n * AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with\n * HTTP(S) requests that read public resources or for use with Shared Access\n * Signatures (SAS).\n */\nexport class AnonymousCredential extends Credential {\n /**\n * Creates an {@link AnonymousCredentialPolicy} object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new AnonymousCredentialPolicy(nextPolicy, options);\n }\n}\n//# sourceMappingURL=AnonymousCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\nlet _defaultHttpClient;\nexport function getCachedDefaultHttpClient() {\n if (!_defaultHttpClient) {\n _defaultHttpClient = createDefaultHttpClient();\n }\n return _defaultHttpClient;\n}\n//# sourceMappingURL=cache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isNode } from \"@azure/core-util\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * The programmatic identifier of the StorageBrowserPolicy.\n */\nexport const storageBrowserPolicyName = \"storageBrowserPolicy\";\n/**\n * storageBrowserPolicy is a policy used to prevent browsers from caching requests\n * and to remove cookies and explicit content-length headers.\n */\nexport function storageBrowserPolicy() {\n return {\n name: storageBrowserPolicyName,\n async sendRequest(request, next) {\n if (isNode) {\n return next(request);\n }\n if (request.method === \"GET\" || request.method === \"HEAD\") {\n request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n }\n request.headers.delete(HeaderConstants.COOKIE);\n // According to XHR standards, content-length should be fully controlled by browsers\n request.headers.delete(HeaderConstants.CONTENT_LENGTH);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=StorageBrowserPolicyV2.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { isRestError, RestError, } from \"@azure/core-rest-pipeline\";\nimport { getErrorMessage } from \"@azure/core-util\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * Name of the {@link storageRetryPolicy}\n */\nexport const storageRetryPolicyName = \"storageRetryPolicy\";\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\",\n];\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport function storageRetryPolicy(options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const retryPolicyType = (_a = options.retryPolicyType) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_OPTIONS.retryPolicyType;\n const maxTries = (_b = options.maxTries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_OPTIONS.maxTries;\n const retryDelayInMs = (_c = options.retryDelayInMs) !== null && _c !== void 0 ? _c : DEFAULT_RETRY_OPTIONS.retryDelayInMs;\n const maxRetryDelayInMs = (_d = options.maxRetryDelayInMs) !== null && _d !== void 0 ? _d : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;\n const secondaryHost = (_e = options.secondaryHost) !== null && _e !== void 0 ? _e : DEFAULT_RETRY_OPTIONS.secondaryHost;\n const tryTimeoutInMs = (_f = options.tryTimeoutInMs) !== null && _f !== void 0 ? _f : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;\n function shouldRetry({ isPrimaryRetry, attempt, response, error, }) {\n var _a, _b;\n if (attempt >= maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);\n return false;\n }\n if (error) {\n for (const retriableError of retriableErrors) {\n if (error.name.toUpperCase().includes(retriableError) ||\n error.message.toUpperCase().includes(retriableError) ||\n (error.code && error.code.toString().toUpperCase() === retriableError)) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n if ((error === null || error === void 0 ? void 0 : error.code) === \"PARSE_ERROR\" &&\n (error === null || error === void 0 ? void 0 : error.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n return true;\n }\n }\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || error) {\n const statusCode = (_b = (_a = response === null || response === void 0 ? void 0 : response.status) !== null && _a !== void 0 ? _a : error === null || error === void 0 ? void 0 : error.statusCode) !== null && _b !== void 0 ? _b : 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n return false;\n }\n function calculateDelay(isPrimaryRetry, attempt) {\n let delayTimeInMs = 0;\n if (isPrimaryRetry) {\n switch (retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * retryDelayInMs, maxRetryDelayInMs);\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = retryDelayInMs;\n break;\n }\n }\n else {\n delayTimeInMs = Math.random() * 1000;\n }\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delayTimeInMs;\n }\n return {\n name: storageRetryPolicyName,\n async sendRequest(request, next) {\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (tryTimeoutInMs) {\n request.url = setURLParameter(request.url, URLConstants.Parameters.TIMEOUT, String(Math.floor(tryTimeoutInMs / 1000)));\n }\n const primaryUrl = request.url;\n const secondaryUrl = secondaryHost ? setURLHost(request.url, secondaryHost) : undefined;\n let secondaryHas404 = false;\n let attempt = 1;\n let retryAgain = true;\n let response;\n let error;\n while (retryAgain) {\n const isPrimaryRetry = secondaryHas404 ||\n !secondaryUrl ||\n ![\"GET\", \"HEAD\", \"OPTIONS\"].includes(request.method) ||\n attempt % 2 === 1;\n request.url = isPrimaryRetry ? primaryUrl : secondaryUrl;\n response = undefined;\n error = undefined;\n try {\n logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n response = await next(request);\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n }\n catch (e) {\n if (isRestError(e)) {\n logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);\n error = e;\n }\n else {\n logger.error(`RetryPolicy: Caught error, message: ${getErrorMessage(e)}`);\n throw e;\n }\n }\n retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });\n if (retryAgain) {\n await delay(calculateDelay(isPrimaryRetry, attempt), request.abortSignal, RETRY_ABORT_ERROR);\n }\n attempt++;\n }\n if (response) {\n return response;\n }\n throw error !== null && error !== void 0 ? error : new RestError(\"RetryPolicy failed without known error.\");\n },\n };\n}\n//# sourceMappingURL=StorageRetryPolicyV2.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the storageSharedKeyCredentialPolicy.\n */\nexport const storageSharedKeyCredentialPolicyName = \"storageSharedKeyCredentialPolicy\";\n/**\n * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.\n */\nexport function storageSharedKeyCredentialPolicy(_options) {\n return {\n name: storageSharedKeyCredentialPolicyName,\n async sendRequest(request, next) {\n return next(request);\n },\n };\n}\n//# sourceMappingURL=StorageSharedKeyCredentialPolicyV2.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\nimport { isNode } from \"@azure/core-util\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:\n *\n * 1. Browsers cache GET/HEAD requests by adding conditional headers such as 'IF_MODIFIED_SINCE'.\n * StorageBrowserPolicy is a policy used to add a timestamp query to GET/HEAD request URL\n * thus avoid the browser cache.\n *\n * 2. Remove cookie header for security\n *\n * 3. Remove content-length header to avoid browsers warning\n */\nexport class StorageBrowserPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of StorageBrowserPolicy.\n * @param nextPolicy -\n * @param options -\n */\n // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n /**\n * Sends out request.\n *\n * @param request -\n */\n async sendRequest(request) {\n if (isNode) {\n return this._nextPolicy.sendRequest(request);\n }\n if (request.method.toUpperCase() === \"GET\" || request.method.toUpperCase() === \"HEAD\") {\n request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n }\n request.headers.remove(HeaderConstants.COOKIE);\n // According to XHR standards, content-length should be fully controlled by browsers\n request.headers.remove(HeaderConstants.CONTENT_LENGTH);\n return this._nextPolicy.sendRequest(request);\n }\n}\n//# sourceMappingURL=StorageBrowserPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageBrowserPolicy } from \"./policies/StorageBrowserPolicy\";\nexport { StorageBrowserPolicy };\n/**\n * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.\n */\nexport class StorageBrowserPolicyFactory {\n /**\n * Creates a StorageBrowserPolicyFactory object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new StorageBrowserPolicy(nextPolicy, options);\n }\n}\n//# sourceMappingURL=StorageBrowserPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { __rest } from \"tslib\";\nimport { convertHttpClient, createRequestPolicyFactoryPolicy, } from \"@azure/core-http-compat\";\nimport { bearerTokenAuthenticationPolicy, decompressResponsePolicyName, } from \"@azure/core-rest-pipeline\";\nimport { authorizeRequestOnTenantChallenge, createClientPipeline } from \"@azure/core-client\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { logger } from \"./log\";\nimport { StorageRetryPolicyFactory } from \"./StorageRetryPolicyFactory\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageOAuthScopes, StorageBlobLoggingAllowedHeaderNames, StorageBlobLoggingAllowedQueryParameters, SDK_VERSION, } from \"./utils/constants\";\nimport { getCachedDefaultHttpClient } from \"./utils/cache\";\nimport { storageBrowserPolicy } from \"./policies/StorageBrowserPolicyV2\";\nimport { storageRetryPolicy } from \"./policies/StorageRetryPolicyV2\";\nimport { storageSharedKeyCredentialPolicy } from \"./policies/StorageSharedKeyCredentialPolicyV2\";\nimport { StorageBrowserPolicyFactory } from \"./StorageBrowserPolicyFactory\";\n// Export following interfaces and types for customers who want to implement their\n// own RequestPolicy or HTTPClient\nexport { StorageOAuthScopes, };\n/**\n * A helper to decide if a given argument satisfies the Pipeline contract\n * @param pipeline - An argument that may be a Pipeline\n * @returns true when the argument satisfies the Pipeline contract\n */\nexport function isPipelineLike(pipeline) {\n if (!pipeline || typeof pipeline !== \"object\") {\n return false;\n }\n const castPipeline = pipeline;\n return (Array.isArray(castPipeline.factories) &&\n typeof castPipeline.options === \"object\" &&\n typeof castPipeline.toServiceClientOptions === \"function\");\n}\n/**\n * A Pipeline class containing HTTP request policies.\n * You can create a default Pipeline by calling {@link newPipeline}.\n * Or you can create a Pipeline with your own policies by the constructor of Pipeline.\n *\n * Refer to {@link newPipeline} and provided policies before implementing your\n * customized Pipeline.\n */\nexport class Pipeline {\n /**\n * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.\n *\n * @param factories -\n * @param options -\n */\n constructor(factories, options = {}) {\n this.factories = factories;\n this.options = options;\n }\n /**\n * Transfer Pipeline object to ServiceClientOptions object which is required by\n * ServiceClient constructor.\n *\n * @returns The ServiceClientOptions object from this Pipeline.\n */\n toServiceClientOptions() {\n return {\n httpClient: this.options.httpClient,\n requestPolicyFactories: this.factories,\n };\n }\n}\n/**\n * Creates a new Pipeline object with Credential provided.\n *\n * @param credential - Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.\n * @param pipelineOptions - Optional. Options.\n * @returns A new Pipeline object.\n */\nexport function newPipeline(credential, pipelineOptions = {}) {\n if (!credential) {\n credential = new AnonymousCredential();\n }\n const pipeline = new Pipeline([], pipelineOptions);\n pipeline._credential = credential;\n return pipeline;\n}\nfunction processDownlevelPipeline(pipeline) {\n const knownFactoryFunctions = [\n isAnonymousCredential,\n isStorageSharedKeyCredential,\n isCoreHttpBearerTokenFactory,\n isStorageBrowserPolicyFactory,\n isStorageRetryPolicyFactory,\n isStorageTelemetryPolicyFactory,\n isCoreHttpPolicyFactory,\n ];\n if (pipeline.factories.length) {\n const novelFactories = pipeline.factories.filter((factory) => {\n return !knownFactoryFunctions.some((knownFactory) => knownFactory(factory));\n });\n if (novelFactories.length) {\n const hasInjector = novelFactories.some((factory) => isInjectorPolicyFactory(factory));\n // if there are any left over, wrap in a requestPolicyFactoryPolicy\n return {\n wrappedPolicies: createRequestPolicyFactoryPolicy(novelFactories),\n afterRetry: hasInjector,\n };\n }\n }\n return undefined;\n}\nexport function getCoreClientOptions(pipeline) {\n var _a;\n const _b = pipeline.options, { httpClient: v1Client } = _b, restOptions = __rest(_b, [\"httpClient\"]);\n let httpClient = pipeline._coreHttpClient;\n if (!httpClient) {\n httpClient = v1Client ? convertHttpClient(v1Client) : getCachedDefaultHttpClient();\n pipeline._coreHttpClient = httpClient;\n }\n let corePipeline = pipeline._corePipeline;\n if (!corePipeline) {\n const packageDetails = `azsdk-js-azure-storage-blob/${SDK_VERSION}`;\n const userAgentPrefix = restOptions.userAgentOptions && restOptions.userAgentOptions.userAgentPrefix\n ? `${restOptions.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n corePipeline = createClientPipeline(Object.assign(Object.assign({}, restOptions), { loggingOptions: {\n additionalAllowedHeaderNames: StorageBlobLoggingAllowedHeaderNames,\n additionalAllowedQueryParameters: StorageBlobLoggingAllowedQueryParameters,\n logger: logger.info,\n }, userAgentOptions: {\n userAgentPrefix,\n }, serializationOptions: {\n stringifyXML,\n serializerOptions: {\n xml: {\n // Use customized XML char key of \"#\" so we can deserialize metadata\n // with \"_\" key\n xmlCharKey: \"#\",\n },\n },\n }, deserializationOptions: {\n parseXML,\n serializerOptions: {\n xml: {\n // Use customized XML char key of \"#\" so we can deserialize metadata\n // with \"_\" key\n xmlCharKey: \"#\",\n },\n },\n } }));\n corePipeline.removePolicy({ phase: \"Retry\" });\n corePipeline.removePolicy({ name: decompressResponsePolicyName });\n corePipeline.addPolicy(storageRetryPolicy(restOptions.retryOptions), { phase: \"Retry\" });\n corePipeline.addPolicy(storageBrowserPolicy());\n const downlevelResults = processDownlevelPipeline(pipeline);\n if (downlevelResults) {\n corePipeline.addPolicy(downlevelResults.wrappedPolicies, downlevelResults.afterRetry ? { afterPhase: \"Retry\" } : undefined);\n }\n const credential = getCredentialFromPipeline(pipeline);\n if (isTokenCredential(credential)) {\n corePipeline.addPolicy(bearerTokenAuthenticationPolicy({\n credential,\n scopes: (_a = restOptions.audience) !== null && _a !== void 0 ? _a : StorageOAuthScopes,\n challengeCallbacks: { authorizeRequestOnChallenge: authorizeRequestOnTenantChallenge },\n }), { phase: \"Sign\" });\n }\n else if (credential instanceof StorageSharedKeyCredential) {\n corePipeline.addPolicy(storageSharedKeyCredentialPolicy({\n accountName: credential.accountName,\n accountKey: credential.accountKey,\n }), { phase: \"Sign\" });\n }\n pipeline._corePipeline = corePipeline;\n }\n return Object.assign(Object.assign({}, restOptions), { allowInsecureConnection: true, httpClient, pipeline: corePipeline });\n}\nexport function getCredentialFromPipeline(pipeline) {\n // see if we squirreled one away on the type itself\n if (pipeline._credential) {\n return pipeline._credential;\n }\n // if it came from another package, loop over the factories and look for one like before\n let credential = new AnonymousCredential();\n for (const factory of pipeline.factories) {\n if (isTokenCredential(factory.credential)) {\n // Only works if the factory has been attached a \"credential\" property.\n // We do that in newPipeline() when using TokenCredential.\n credential = factory.credential;\n }\n else if (isStorageSharedKeyCredential(factory)) {\n return factory;\n }\n }\n return credential;\n}\nfunction isStorageSharedKeyCredential(factory) {\n if (factory instanceof StorageSharedKeyCredential) {\n return true;\n }\n return factory.constructor.name === \"StorageSharedKeyCredential\";\n}\nfunction isAnonymousCredential(factory) {\n if (factory instanceof AnonymousCredential) {\n return true;\n }\n return factory.constructor.name === \"AnonymousCredential\";\n}\nfunction isCoreHttpBearerTokenFactory(factory) {\n return isTokenCredential(factory.credential);\n}\nfunction isStorageBrowserPolicyFactory(factory) {\n if (factory instanceof StorageBrowserPolicyFactory) {\n return true;\n }\n return factory.constructor.name === \"StorageBrowserPolicyFactory\";\n}\nfunction isStorageRetryPolicyFactory(factory) {\n if (factory instanceof StorageRetryPolicyFactory) {\n return true;\n }\n return factory.constructor.name === \"StorageRetryPolicyFactory\";\n}\nfunction isStorageTelemetryPolicyFactory(factory) {\n return factory.constructor.name === \"TelemetryPolicyFactory\";\n}\nfunction isInjectorPolicyFactory(factory) {\n return factory.constructor.name === \"InjectorPolicyFactory\";\n}\nfunction isCoreHttpPolicyFactory(factory) {\n const knownPolicies = [\n \"GenerateClientRequestIdPolicy\",\n \"TracingPolicy\",\n \"LogPolicy\",\n \"ProxyPolicy\",\n \"DisableResponseDecompressionPolicy\",\n \"KeepAlivePolicy\",\n \"DeserializationPolicy\",\n ];\n const mockHttpClient = {\n sendRequest: async (request) => {\n return {\n request,\n headers: request.headers.clone(),\n status: 500,\n };\n },\n };\n const mockRequestPolicyOptions = {\n log(_logLevel, _message) {\n /* do nothing */\n },\n shouldLog(_logLevel) {\n return false;\n },\n };\n const policyInstance = factory.create(mockHttpClient, mockRequestPolicyOptions);\n const policyName = policyInstance.constructor.name;\n // bundlers sometimes add a custom suffix to the class name to make it unique\n return knownPolicies.some((knownPolicyName) => {\n return policyName.startsWith(knownPolicyName);\n });\n}\n//# sourceMappingURL=Pipeline.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nexport const BlobServiceProperties = {\n serializedName: \"BlobServiceProperties\",\n xmlName: \"StorageServiceProperties\",\n type: {\n name: \"Composite\",\n className: \"BlobServiceProperties\",\n modelProperties: {\n blobAnalyticsLogging: {\n serializedName: \"Logging\",\n xmlName: \"Logging\",\n type: {\n name: \"Composite\",\n className: \"Logging\",\n },\n },\n hourMetrics: {\n serializedName: \"HourMetrics\",\n xmlName: \"HourMetrics\",\n type: {\n name: \"Composite\",\n className: \"Metrics\",\n },\n },\n minuteMetrics: {\n serializedName: \"MinuteMetrics\",\n xmlName: \"MinuteMetrics\",\n type: {\n name: \"Composite\",\n className: \"Metrics\",\n },\n },\n cors: {\n serializedName: \"Cors\",\n xmlName: \"Cors\",\n xmlIsWrapped: true,\n xmlElementName: \"CorsRule\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"CorsRule\",\n },\n },\n },\n },\n defaultServiceVersion: {\n serializedName: \"DefaultServiceVersion\",\n xmlName: \"DefaultServiceVersion\",\n type: {\n name: \"String\",\n },\n },\n deleteRetentionPolicy: {\n serializedName: \"DeleteRetentionPolicy\",\n xmlName: \"DeleteRetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\",\n },\n },\n staticWebsite: {\n serializedName: \"StaticWebsite\",\n xmlName: \"StaticWebsite\",\n type: {\n name: \"Composite\",\n className: \"StaticWebsite\",\n },\n },\n },\n },\n};\nexport const Logging = {\n serializedName: \"Logging\",\n type: {\n name: \"Composite\",\n className: \"Logging\",\n modelProperties: {\n version: {\n serializedName: \"Version\",\n required: true,\n xmlName: \"Version\",\n type: {\n name: \"String\",\n },\n },\n deleteProperty: {\n serializedName: \"Delete\",\n required: true,\n xmlName: \"Delete\",\n type: {\n name: \"Boolean\",\n },\n },\n read: {\n serializedName: \"Read\",\n required: true,\n xmlName: \"Read\",\n type: {\n name: \"Boolean\",\n },\n },\n write: {\n serializedName: \"Write\",\n required: true,\n xmlName: \"Write\",\n type: {\n name: \"Boolean\",\n },\n },\n retentionPolicy: {\n serializedName: \"RetentionPolicy\",\n xmlName: \"RetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\",\n },\n },\n },\n },\n};\nexport const RetentionPolicy = {\n serializedName: \"RetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\",\n modelProperties: {\n enabled: {\n serializedName: \"Enabled\",\n required: true,\n xmlName: \"Enabled\",\n type: {\n name: \"Boolean\",\n },\n },\n days: {\n constraints: {\n InclusiveMinimum: 1,\n },\n serializedName: \"Days\",\n xmlName: \"Days\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexport const Metrics = {\n serializedName: \"Metrics\",\n type: {\n name: \"Composite\",\n className: \"Metrics\",\n modelProperties: {\n version: {\n serializedName: \"Version\",\n xmlName: \"Version\",\n type: {\n name: \"String\",\n },\n },\n enabled: {\n serializedName: \"Enabled\",\n required: true,\n xmlName: \"Enabled\",\n type: {\n name: \"Boolean\",\n },\n },\n includeAPIs: {\n serializedName: \"IncludeAPIs\",\n xmlName: \"IncludeAPIs\",\n type: {\n name: \"Boolean\",\n },\n },\n retentionPolicy: {\n serializedName: \"RetentionPolicy\",\n xmlName: \"RetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\",\n },\n },\n },\n },\n};\nexport const CorsRule = {\n serializedName: \"CorsRule\",\n type: {\n name: \"Composite\",\n className: \"CorsRule\",\n modelProperties: {\n allowedOrigins: {\n serializedName: \"AllowedOrigins\",\n required: true,\n xmlName: \"AllowedOrigins\",\n type: {\n name: \"String\",\n },\n },\n allowedMethods: {\n serializedName: \"AllowedMethods\",\n required: true,\n xmlName: \"AllowedMethods\",\n type: {\n name: \"String\",\n },\n },\n allowedHeaders: {\n serializedName: \"AllowedHeaders\",\n required: true,\n xmlName: \"AllowedHeaders\",\n type: {\n name: \"String\",\n },\n },\n exposedHeaders: {\n serializedName: \"ExposedHeaders\",\n required: true,\n xmlName: \"ExposedHeaders\",\n type: {\n name: \"String\",\n },\n },\n maxAgeInSeconds: {\n constraints: {\n InclusiveMinimum: 0,\n },\n serializedName: \"MaxAgeInSeconds\",\n required: true,\n xmlName: \"MaxAgeInSeconds\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexport const StaticWebsite = {\n serializedName: \"StaticWebsite\",\n type: {\n name: \"Composite\",\n className: \"StaticWebsite\",\n modelProperties: {\n enabled: {\n serializedName: \"Enabled\",\n required: true,\n xmlName: \"Enabled\",\n type: {\n name: \"Boolean\",\n },\n },\n indexDocument: {\n serializedName: \"IndexDocument\",\n xmlName: \"IndexDocument\",\n type: {\n name: \"String\",\n },\n },\n errorDocument404Path: {\n serializedName: \"ErrorDocument404Path\",\n xmlName: \"ErrorDocument404Path\",\n type: {\n name: \"String\",\n },\n },\n defaultIndexDocumentPath: {\n serializedName: \"DefaultIndexDocumentPath\",\n xmlName: \"DefaultIndexDocumentPath\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const StorageError = {\n serializedName: \"StorageError\",\n type: {\n name: \"Composite\",\n className: \"StorageError\",\n modelProperties: {\n message: {\n serializedName: \"Message\",\n xmlName: \"Message\",\n type: {\n name: \"String\",\n },\n },\n code: {\n serializedName: \"Code\",\n xmlName: \"Code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobServiceStatistics = {\n serializedName: \"BlobServiceStatistics\",\n xmlName: \"StorageServiceStats\",\n type: {\n name: \"Composite\",\n className: \"BlobServiceStatistics\",\n modelProperties: {\n geoReplication: {\n serializedName: \"GeoReplication\",\n xmlName: \"GeoReplication\",\n type: {\n name: \"Composite\",\n className: \"GeoReplication\",\n },\n },\n },\n },\n};\nexport const GeoReplication = {\n serializedName: \"GeoReplication\",\n type: {\n name: \"Composite\",\n className: \"GeoReplication\",\n modelProperties: {\n status: {\n serializedName: \"Status\",\n required: true,\n xmlName: \"Status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"live\", \"bootstrap\", \"unavailable\"],\n },\n },\n lastSyncOn: {\n serializedName: \"LastSyncTime\",\n required: true,\n xmlName: \"LastSyncTime\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ListContainersSegmentResponse = {\n serializedName: \"ListContainersSegmentResponse\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"ListContainersSegmentResponse\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\",\n },\n },\n prefix: {\n serializedName: \"Prefix\",\n xmlName: \"Prefix\",\n type: {\n name: \"String\",\n },\n },\n marker: {\n serializedName: \"Marker\",\n xmlName: \"Marker\",\n type: {\n name: \"String\",\n },\n },\n maxPageSize: {\n serializedName: \"MaxResults\",\n xmlName: \"MaxResults\",\n type: {\n name: \"Number\",\n },\n },\n containerItems: {\n serializedName: \"ContainerItems\",\n required: true,\n xmlName: \"Containers\",\n xmlIsWrapped: true,\n xmlElementName: \"Container\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ContainerItem\",\n },\n },\n },\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerItem = {\n serializedName: \"ContainerItem\",\n xmlName: \"Container\",\n type: {\n name: \"Composite\",\n className: \"ContainerItem\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n required: true,\n xmlName: \"Name\",\n type: {\n name: \"String\",\n },\n },\n deleted: {\n serializedName: \"Deleted\",\n xmlName: \"Deleted\",\n type: {\n name: \"Boolean\",\n },\n },\n version: {\n serializedName: \"Version\",\n xmlName: \"Version\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"Properties\",\n xmlName: \"Properties\",\n type: {\n name: \"Composite\",\n className: \"ContainerProperties\",\n },\n },\n metadata: {\n serializedName: \"Metadata\",\n xmlName: \"Metadata\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexport const ContainerProperties = {\n serializedName: \"ContainerProperties\",\n type: {\n name: \"Composite\",\n className: \"ContainerProperties\",\n modelProperties: {\n lastModified: {\n serializedName: \"Last-Modified\",\n required: true,\n xmlName: \"Last-Modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n etag: {\n serializedName: \"Etag\",\n required: true,\n xmlName: \"Etag\",\n type: {\n name: \"String\",\n },\n },\n leaseStatus: {\n serializedName: \"LeaseStatus\",\n xmlName: \"LeaseStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"],\n },\n },\n leaseState: {\n serializedName: \"LeaseState\",\n xmlName: \"LeaseState\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\",\n ],\n },\n },\n leaseDuration: {\n serializedName: \"LeaseDuration\",\n xmlName: \"LeaseDuration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"],\n },\n },\n publicAccess: {\n serializedName: \"PublicAccess\",\n xmlName: \"PublicAccess\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"],\n },\n },\n hasImmutabilityPolicy: {\n serializedName: \"HasImmutabilityPolicy\",\n xmlName: \"HasImmutabilityPolicy\",\n type: {\n name: \"Boolean\",\n },\n },\n hasLegalHold: {\n serializedName: \"HasLegalHold\",\n xmlName: \"HasLegalHold\",\n type: {\n name: \"Boolean\",\n },\n },\n defaultEncryptionScope: {\n serializedName: \"DefaultEncryptionScope\",\n xmlName: \"DefaultEncryptionScope\",\n type: {\n name: \"String\",\n },\n },\n preventEncryptionScopeOverride: {\n serializedName: \"DenyEncryptionScopeOverride\",\n xmlName: \"DenyEncryptionScopeOverride\",\n type: {\n name: \"Boolean\",\n },\n },\n deletedOn: {\n serializedName: \"DeletedTime\",\n xmlName: \"DeletedTime\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n remainingRetentionDays: {\n serializedName: \"RemainingRetentionDays\",\n xmlName: \"RemainingRetentionDays\",\n type: {\n name: \"Number\",\n },\n },\n isImmutableStorageWithVersioningEnabled: {\n serializedName: \"ImmutableStorageWithVersioningEnabled\",\n xmlName: \"ImmutableStorageWithVersioningEnabled\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexport const KeyInfo = {\n serializedName: \"KeyInfo\",\n type: {\n name: \"Composite\",\n className: \"KeyInfo\",\n modelProperties: {\n startsOn: {\n serializedName: \"Start\",\n required: true,\n xmlName: \"Start\",\n type: {\n name: \"String\",\n },\n },\n expiresOn: {\n serializedName: \"Expiry\",\n required: true,\n xmlName: \"Expiry\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const UserDelegationKey = {\n serializedName: \"UserDelegationKey\",\n type: {\n name: \"Composite\",\n className: \"UserDelegationKey\",\n modelProperties: {\n signedObjectId: {\n serializedName: \"SignedOid\",\n required: true,\n xmlName: \"SignedOid\",\n type: {\n name: \"String\",\n },\n },\n signedTenantId: {\n serializedName: \"SignedTid\",\n required: true,\n xmlName: \"SignedTid\",\n type: {\n name: \"String\",\n },\n },\n signedStartsOn: {\n serializedName: \"SignedStart\",\n required: true,\n xmlName: \"SignedStart\",\n type: {\n name: \"String\",\n },\n },\n signedExpiresOn: {\n serializedName: \"SignedExpiry\",\n required: true,\n xmlName: \"SignedExpiry\",\n type: {\n name: \"String\",\n },\n },\n signedService: {\n serializedName: \"SignedService\",\n required: true,\n xmlName: \"SignedService\",\n type: {\n name: \"String\",\n },\n },\n signedVersion: {\n serializedName: \"SignedVersion\",\n required: true,\n xmlName: \"SignedVersion\",\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"Value\",\n required: true,\n xmlName: \"Value\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const FilterBlobSegment = {\n serializedName: \"FilterBlobSegment\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"FilterBlobSegment\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\",\n },\n },\n where: {\n serializedName: \"Where\",\n required: true,\n xmlName: \"Where\",\n type: {\n name: \"String\",\n },\n },\n blobs: {\n serializedName: \"Blobs\",\n required: true,\n xmlName: \"Blobs\",\n xmlIsWrapped: true,\n xmlElementName: \"Blob\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"FilterBlobItem\",\n },\n },\n },\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const FilterBlobItem = {\n serializedName: \"FilterBlobItem\",\n xmlName: \"Blob\",\n type: {\n name: \"Composite\",\n className: \"FilterBlobItem\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n required: true,\n xmlName: \"Name\",\n type: {\n name: \"String\",\n },\n },\n containerName: {\n serializedName: \"ContainerName\",\n required: true,\n xmlName: \"ContainerName\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"Tags\",\n xmlName: \"Tags\",\n type: {\n name: \"Composite\",\n className: \"BlobTags\",\n },\n },\n },\n },\n};\nexport const BlobTags = {\n serializedName: \"BlobTags\",\n xmlName: \"Tags\",\n type: {\n name: \"Composite\",\n className: \"BlobTags\",\n modelProperties: {\n blobTagSet: {\n serializedName: \"BlobTagSet\",\n required: true,\n xmlName: \"TagSet\",\n xmlIsWrapped: true,\n xmlElementName: \"Tag\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobTag\",\n },\n },\n },\n },\n },\n },\n};\nexport const BlobTag = {\n serializedName: \"BlobTag\",\n xmlName: \"Tag\",\n type: {\n name: \"Composite\",\n className: \"BlobTag\",\n modelProperties: {\n key: {\n serializedName: \"Key\",\n required: true,\n xmlName: \"Key\",\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"Value\",\n required: true,\n xmlName: \"Value\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const SignedIdentifier = {\n serializedName: \"SignedIdentifier\",\n xmlName: \"SignedIdentifier\",\n type: {\n name: \"Composite\",\n className: \"SignedIdentifier\",\n modelProperties: {\n id: {\n serializedName: \"Id\",\n required: true,\n xmlName: \"Id\",\n type: {\n name: \"String\",\n },\n },\n accessPolicy: {\n serializedName: \"AccessPolicy\",\n xmlName: \"AccessPolicy\",\n type: {\n name: \"Composite\",\n className: \"AccessPolicy\",\n },\n },\n },\n },\n};\nexport const AccessPolicy = {\n serializedName: \"AccessPolicy\",\n type: {\n name: \"Composite\",\n className: \"AccessPolicy\",\n modelProperties: {\n startsOn: {\n serializedName: \"Start\",\n xmlName: \"Start\",\n type: {\n name: \"String\",\n },\n },\n expiresOn: {\n serializedName: \"Expiry\",\n xmlName: \"Expiry\",\n type: {\n name: \"String\",\n },\n },\n permissions: {\n serializedName: \"Permission\",\n xmlName: \"Permission\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ListBlobsFlatSegmentResponse = {\n serializedName: \"ListBlobsFlatSegmentResponse\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"ListBlobsFlatSegmentResponse\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\",\n },\n },\n containerName: {\n serializedName: \"ContainerName\",\n required: true,\n xmlName: \"ContainerName\",\n xmlIsAttribute: true,\n type: {\n name: \"String\",\n },\n },\n prefix: {\n serializedName: \"Prefix\",\n xmlName: \"Prefix\",\n type: {\n name: \"String\",\n },\n },\n marker: {\n serializedName: \"Marker\",\n xmlName: \"Marker\",\n type: {\n name: \"String\",\n },\n },\n maxPageSize: {\n serializedName: \"MaxResults\",\n xmlName: \"MaxResults\",\n type: {\n name: \"Number\",\n },\n },\n segment: {\n serializedName: \"Segment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobFlatListSegment\",\n },\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobFlatListSegment = {\n serializedName: \"BlobFlatListSegment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobFlatListSegment\",\n modelProperties: {\n blobItems: {\n serializedName: \"BlobItems\",\n required: true,\n xmlName: \"BlobItems\",\n xmlElementName: \"Blob\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobItemInternal\",\n },\n },\n },\n },\n },\n },\n};\nexport const BlobItemInternal = {\n serializedName: \"BlobItemInternal\",\n xmlName: \"Blob\",\n type: {\n name: \"Composite\",\n className: \"BlobItemInternal\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n xmlName: \"Name\",\n type: {\n name: \"Composite\",\n className: \"BlobName\",\n },\n },\n deleted: {\n serializedName: \"Deleted\",\n required: true,\n xmlName: \"Deleted\",\n type: {\n name: \"Boolean\",\n },\n },\n snapshot: {\n serializedName: \"Snapshot\",\n required: true,\n xmlName: \"Snapshot\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"VersionId\",\n xmlName: \"VersionId\",\n type: {\n name: \"String\",\n },\n },\n isCurrentVersion: {\n serializedName: \"IsCurrentVersion\",\n xmlName: \"IsCurrentVersion\",\n type: {\n name: \"Boolean\",\n },\n },\n properties: {\n serializedName: \"Properties\",\n xmlName: \"Properties\",\n type: {\n name: \"Composite\",\n className: \"BlobPropertiesInternal\",\n },\n },\n metadata: {\n serializedName: \"Metadata\",\n xmlName: \"Metadata\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n blobTags: {\n serializedName: \"BlobTags\",\n xmlName: \"Tags\",\n type: {\n name: \"Composite\",\n className: \"BlobTags\",\n },\n },\n objectReplicationMetadata: {\n serializedName: \"ObjectReplicationMetadata\",\n xmlName: \"OrMetadata\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n hasVersionsOnly: {\n serializedName: \"HasVersionsOnly\",\n xmlName: \"HasVersionsOnly\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexport const BlobName = {\n serializedName: \"BlobName\",\n type: {\n name: \"Composite\",\n className: \"BlobName\",\n modelProperties: {\n encoded: {\n serializedName: \"Encoded\",\n xmlName: \"Encoded\",\n xmlIsAttribute: true,\n type: {\n name: \"Boolean\",\n },\n },\n content: {\n serializedName: \"content\",\n xmlName: \"content\",\n xmlIsMsText: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobPropertiesInternal = {\n serializedName: \"BlobPropertiesInternal\",\n xmlName: \"Properties\",\n type: {\n name: \"Composite\",\n className: \"BlobPropertiesInternal\",\n modelProperties: {\n createdOn: {\n serializedName: \"Creation-Time\",\n xmlName: \"Creation-Time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n lastModified: {\n serializedName: \"Last-Modified\",\n required: true,\n xmlName: \"Last-Modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n etag: {\n serializedName: \"Etag\",\n required: true,\n xmlName: \"Etag\",\n type: {\n name: \"String\",\n },\n },\n contentLength: {\n serializedName: \"Content-Length\",\n xmlName: \"Content-Length\",\n type: {\n name: \"Number\",\n },\n },\n contentType: {\n serializedName: \"Content-Type\",\n xmlName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n contentEncoding: {\n serializedName: \"Content-Encoding\",\n xmlName: \"Content-Encoding\",\n type: {\n name: \"String\",\n },\n },\n contentLanguage: {\n serializedName: \"Content-Language\",\n xmlName: \"Content-Language\",\n type: {\n name: \"String\",\n },\n },\n contentMD5: {\n serializedName: \"Content-MD5\",\n xmlName: \"Content-MD5\",\n type: {\n name: \"ByteArray\",\n },\n },\n contentDisposition: {\n serializedName: \"Content-Disposition\",\n xmlName: \"Content-Disposition\",\n type: {\n name: \"String\",\n },\n },\n cacheControl: {\n serializedName: \"Cache-Control\",\n xmlName: \"Cache-Control\",\n type: {\n name: \"String\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n blobType: {\n serializedName: \"BlobType\",\n xmlName: \"BlobType\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n },\n },\n leaseStatus: {\n serializedName: \"LeaseStatus\",\n xmlName: \"LeaseStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"],\n },\n },\n leaseState: {\n serializedName: \"LeaseState\",\n xmlName: \"LeaseState\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\",\n ],\n },\n },\n leaseDuration: {\n serializedName: \"LeaseDuration\",\n xmlName: \"LeaseDuration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"],\n },\n },\n copyId: {\n serializedName: \"CopyId\",\n xmlName: \"CopyId\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n serializedName: \"CopyStatus\",\n xmlName: \"CopyStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n },\n },\n copySource: {\n serializedName: \"CopySource\",\n xmlName: \"CopySource\",\n type: {\n name: \"String\",\n },\n },\n copyProgress: {\n serializedName: \"CopyProgress\",\n xmlName: \"CopyProgress\",\n type: {\n name: \"String\",\n },\n },\n copyCompletedOn: {\n serializedName: \"CopyCompletionTime\",\n xmlName: \"CopyCompletionTime\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyStatusDescription: {\n serializedName: \"CopyStatusDescription\",\n xmlName: \"CopyStatusDescription\",\n type: {\n name: \"String\",\n },\n },\n serverEncrypted: {\n serializedName: \"ServerEncrypted\",\n xmlName: \"ServerEncrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n incrementalCopy: {\n serializedName: \"IncrementalCopy\",\n xmlName: \"IncrementalCopy\",\n type: {\n name: \"Boolean\",\n },\n },\n destinationSnapshot: {\n serializedName: \"DestinationSnapshot\",\n xmlName: \"DestinationSnapshot\",\n type: {\n name: \"String\",\n },\n },\n deletedOn: {\n serializedName: \"DeletedTime\",\n xmlName: \"DeletedTime\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n remainingRetentionDays: {\n serializedName: \"RemainingRetentionDays\",\n xmlName: \"RemainingRetentionDays\",\n type: {\n name: \"Number\",\n },\n },\n accessTier: {\n serializedName: \"AccessTier\",\n xmlName: \"AccessTier\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"P4\",\n \"P6\",\n \"P10\",\n \"P15\",\n \"P20\",\n \"P30\",\n \"P40\",\n \"P50\",\n \"P60\",\n \"P70\",\n \"P80\",\n \"Hot\",\n \"Cool\",\n \"Archive\",\n \"Cold\",\n ],\n },\n },\n accessTierInferred: {\n serializedName: \"AccessTierInferred\",\n xmlName: \"AccessTierInferred\",\n type: {\n name: \"Boolean\",\n },\n },\n archiveStatus: {\n serializedName: \"ArchiveStatus\",\n xmlName: \"ArchiveStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"rehydrate-pending-to-hot\",\n \"rehydrate-pending-to-cool\",\n \"rehydrate-pending-to-cold\",\n ],\n },\n },\n customerProvidedKeySha256: {\n serializedName: \"CustomerProvidedKeySha256\",\n xmlName: \"CustomerProvidedKeySha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"EncryptionScope\",\n xmlName: \"EncryptionScope\",\n type: {\n name: \"String\",\n },\n },\n accessTierChangedOn: {\n serializedName: \"AccessTierChangeTime\",\n xmlName: \"AccessTierChangeTime\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n tagCount: {\n serializedName: \"TagCount\",\n xmlName: \"TagCount\",\n type: {\n name: \"Number\",\n },\n },\n expiresOn: {\n serializedName: \"Expiry-Time\",\n xmlName: \"Expiry-Time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isSealed: {\n serializedName: \"Sealed\",\n xmlName: \"Sealed\",\n type: {\n name: \"Boolean\",\n },\n },\n rehydratePriority: {\n serializedName: \"RehydratePriority\",\n xmlName: \"RehydratePriority\",\n type: {\n name: \"Enum\",\n allowedValues: [\"High\", \"Standard\"],\n },\n },\n lastAccessedOn: {\n serializedName: \"LastAccessTime\",\n xmlName: \"LastAccessTime\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyExpiresOn: {\n serializedName: \"ImmutabilityPolicyUntilDate\",\n xmlName: \"ImmutabilityPolicyUntilDate\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyMode: {\n serializedName: \"ImmutabilityPolicyMode\",\n xmlName: \"ImmutabilityPolicyMode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n },\n },\n legalHold: {\n serializedName: \"LegalHold\",\n xmlName: \"LegalHold\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexport const ListBlobsHierarchySegmentResponse = {\n serializedName: \"ListBlobsHierarchySegmentResponse\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"ListBlobsHierarchySegmentResponse\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\",\n },\n },\n containerName: {\n serializedName: \"ContainerName\",\n required: true,\n xmlName: \"ContainerName\",\n xmlIsAttribute: true,\n type: {\n name: \"String\",\n },\n },\n prefix: {\n serializedName: \"Prefix\",\n xmlName: \"Prefix\",\n type: {\n name: \"String\",\n },\n },\n marker: {\n serializedName: \"Marker\",\n xmlName: \"Marker\",\n type: {\n name: \"String\",\n },\n },\n maxPageSize: {\n serializedName: \"MaxResults\",\n xmlName: \"MaxResults\",\n type: {\n name: \"Number\",\n },\n },\n delimiter: {\n serializedName: \"Delimiter\",\n xmlName: \"Delimiter\",\n type: {\n name: \"String\",\n },\n },\n segment: {\n serializedName: \"Segment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobHierarchyListSegment\",\n },\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobHierarchyListSegment = {\n serializedName: \"BlobHierarchyListSegment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobHierarchyListSegment\",\n modelProperties: {\n blobPrefixes: {\n serializedName: \"BlobPrefixes\",\n xmlName: \"BlobPrefixes\",\n xmlElementName: \"BlobPrefix\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobPrefix\",\n },\n },\n },\n },\n blobItems: {\n serializedName: \"BlobItems\",\n required: true,\n xmlName: \"BlobItems\",\n xmlElementName: \"Blob\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobItemInternal\",\n },\n },\n },\n },\n },\n },\n};\nexport const BlobPrefix = {\n serializedName: \"BlobPrefix\",\n type: {\n name: \"Composite\",\n className: \"BlobPrefix\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n xmlName: \"Name\",\n type: {\n name: \"Composite\",\n className: \"BlobName\",\n },\n },\n },\n },\n};\nexport const BlockLookupList = {\n serializedName: \"BlockLookupList\",\n xmlName: \"BlockList\",\n type: {\n name: \"Composite\",\n className: \"BlockLookupList\",\n modelProperties: {\n committed: {\n serializedName: \"Committed\",\n xmlName: \"Committed\",\n xmlElementName: \"Committed\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n uncommitted: {\n serializedName: \"Uncommitted\",\n xmlName: \"Uncommitted\",\n xmlElementName: \"Uncommitted\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n latest: {\n serializedName: \"Latest\",\n xmlName: \"Latest\",\n xmlElementName: \"Latest\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexport const BlockList = {\n serializedName: \"BlockList\",\n type: {\n name: \"Composite\",\n className: \"BlockList\",\n modelProperties: {\n committedBlocks: {\n serializedName: \"CommittedBlocks\",\n xmlName: \"CommittedBlocks\",\n xmlIsWrapped: true,\n xmlElementName: \"Block\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Block\",\n },\n },\n },\n },\n uncommittedBlocks: {\n serializedName: \"UncommittedBlocks\",\n xmlName: \"UncommittedBlocks\",\n xmlIsWrapped: true,\n xmlElementName: \"Block\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Block\",\n },\n },\n },\n },\n },\n },\n};\nexport const Block = {\n serializedName: \"Block\",\n type: {\n name: \"Composite\",\n className: \"Block\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n required: true,\n xmlName: \"Name\",\n type: {\n name: \"String\",\n },\n },\n size: {\n serializedName: \"Size\",\n required: true,\n xmlName: \"Size\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexport const PageList = {\n serializedName: \"PageList\",\n type: {\n name: \"Composite\",\n className: \"PageList\",\n modelProperties: {\n pageRange: {\n serializedName: \"PageRange\",\n xmlName: \"PageRange\",\n xmlElementName: \"PageRange\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"PageRange\",\n },\n },\n },\n },\n clearRange: {\n serializedName: \"ClearRange\",\n xmlName: \"ClearRange\",\n xmlElementName: \"ClearRange\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ClearRange\",\n },\n },\n },\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageRange = {\n serializedName: \"PageRange\",\n xmlName: \"PageRange\",\n type: {\n name: \"Composite\",\n className: \"PageRange\",\n modelProperties: {\n start: {\n serializedName: \"Start\",\n required: true,\n xmlName: \"Start\",\n type: {\n name: \"Number\",\n },\n },\n end: {\n serializedName: \"End\",\n required: true,\n xmlName: \"End\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexport const ClearRange = {\n serializedName: \"ClearRange\",\n xmlName: \"ClearRange\",\n type: {\n name: \"Composite\",\n className: \"ClearRange\",\n modelProperties: {\n start: {\n serializedName: \"Start\",\n required: true,\n xmlName: \"Start\",\n type: {\n name: \"Number\",\n },\n },\n end: {\n serializedName: \"End\",\n required: true,\n xmlName: \"End\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexport const QueryRequest = {\n serializedName: \"QueryRequest\",\n xmlName: \"QueryRequest\",\n type: {\n name: \"Composite\",\n className: \"QueryRequest\",\n modelProperties: {\n queryType: {\n serializedName: \"QueryType\",\n required: true,\n xmlName: \"QueryType\",\n type: {\n name: \"String\",\n },\n },\n expression: {\n serializedName: \"Expression\",\n required: true,\n xmlName: \"Expression\",\n type: {\n name: \"String\",\n },\n },\n inputSerialization: {\n serializedName: \"InputSerialization\",\n xmlName: \"InputSerialization\",\n type: {\n name: \"Composite\",\n className: \"QuerySerialization\",\n },\n },\n outputSerialization: {\n serializedName: \"OutputSerialization\",\n xmlName: \"OutputSerialization\",\n type: {\n name: \"Composite\",\n className: \"QuerySerialization\",\n },\n },\n },\n },\n};\nexport const QuerySerialization = {\n serializedName: \"QuerySerialization\",\n type: {\n name: \"Composite\",\n className: \"QuerySerialization\",\n modelProperties: {\n format: {\n serializedName: \"Format\",\n xmlName: \"Format\",\n type: {\n name: \"Composite\",\n className: \"QueryFormat\",\n },\n },\n },\n },\n};\nexport const QueryFormat = {\n serializedName: \"QueryFormat\",\n type: {\n name: \"Composite\",\n className: \"QueryFormat\",\n modelProperties: {\n type: {\n serializedName: \"Type\",\n required: true,\n xmlName: \"Type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"delimited\", \"json\", \"arrow\", \"parquet\"],\n },\n },\n delimitedTextConfiguration: {\n serializedName: \"DelimitedTextConfiguration\",\n xmlName: \"DelimitedTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"DelimitedTextConfiguration\",\n },\n },\n jsonTextConfiguration: {\n serializedName: \"JsonTextConfiguration\",\n xmlName: \"JsonTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"JsonTextConfiguration\",\n },\n },\n arrowConfiguration: {\n serializedName: \"ArrowConfiguration\",\n xmlName: \"ArrowConfiguration\",\n type: {\n name: \"Composite\",\n className: \"ArrowConfiguration\",\n },\n },\n parquetTextConfiguration: {\n serializedName: \"ParquetTextConfiguration\",\n xmlName: \"ParquetTextConfiguration\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexport const DelimitedTextConfiguration = {\n serializedName: \"DelimitedTextConfiguration\",\n xmlName: \"DelimitedTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"DelimitedTextConfiguration\",\n modelProperties: {\n columnSeparator: {\n serializedName: \"ColumnSeparator\",\n xmlName: \"ColumnSeparator\",\n type: {\n name: \"String\",\n },\n },\n fieldQuote: {\n serializedName: \"FieldQuote\",\n xmlName: \"FieldQuote\",\n type: {\n name: \"String\",\n },\n },\n recordSeparator: {\n serializedName: \"RecordSeparator\",\n xmlName: \"RecordSeparator\",\n type: {\n name: \"String\",\n },\n },\n escapeChar: {\n serializedName: \"EscapeChar\",\n xmlName: \"EscapeChar\",\n type: {\n name: \"String\",\n },\n },\n headersPresent: {\n serializedName: \"HeadersPresent\",\n xmlName: \"HasHeaders\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexport const JsonTextConfiguration = {\n serializedName: \"JsonTextConfiguration\",\n xmlName: \"JsonTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"JsonTextConfiguration\",\n modelProperties: {\n recordSeparator: {\n serializedName: \"RecordSeparator\",\n xmlName: \"RecordSeparator\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ArrowConfiguration = {\n serializedName: \"ArrowConfiguration\",\n xmlName: \"ArrowConfiguration\",\n type: {\n name: \"Composite\",\n className: \"ArrowConfiguration\",\n modelProperties: {\n schema: {\n serializedName: \"Schema\",\n required: true,\n xmlName: \"Schema\",\n xmlIsWrapped: true,\n xmlElementName: \"Field\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ArrowField\",\n },\n },\n },\n },\n },\n },\n};\nexport const ArrowField = {\n serializedName: \"ArrowField\",\n xmlName: \"Field\",\n type: {\n name: \"Composite\",\n className: \"ArrowField\",\n modelProperties: {\n type: {\n serializedName: \"Type\",\n required: true,\n xmlName: \"Type\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"Name\",\n xmlName: \"Name\",\n type: {\n name: \"String\",\n },\n },\n precision: {\n serializedName: \"Precision\",\n xmlName: \"Precision\",\n type: {\n name: \"Number\",\n },\n },\n scale: {\n serializedName: \"Scale\",\n xmlName: \"Scale\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexport const ServiceSetPropertiesHeaders = {\n serializedName: \"Service_setPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSetPropertiesHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceSetPropertiesExceptionHeaders = {\n serializedName: \"Service_setPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetPropertiesHeaders = {\n serializedName: \"Service_getPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetPropertiesHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetPropertiesExceptionHeaders = {\n serializedName: \"Service_getPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetStatisticsHeaders = {\n serializedName: \"Service_getStatisticsHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetStatisticsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetStatisticsExceptionHeaders = {\n serializedName: \"Service_getStatisticsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetStatisticsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceListContainersSegmentHeaders = {\n serializedName: \"Service_listContainersSegmentHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceListContainersSegmentHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceListContainersSegmentExceptionHeaders = {\n serializedName: \"Service_listContainersSegmentExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceListContainersSegmentExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetUserDelegationKeyHeaders = {\n serializedName: \"Service_getUserDelegationKeyHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetUserDelegationKeyHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetUserDelegationKeyExceptionHeaders = {\n serializedName: \"Service_getUserDelegationKeyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetUserDelegationKeyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetAccountInfoHeaders = {\n serializedName: \"Service_getAccountInfoHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetAccountInfoHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n skuName: {\n serializedName: \"x-ms-sku-name\",\n xmlName: \"x-ms-sku-name\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Standard_LRS\",\n \"Standard_GRS\",\n \"Standard_RAGRS\",\n \"Standard_ZRS\",\n \"Premium_LRS\",\n ],\n },\n },\n accountKind: {\n serializedName: \"x-ms-account-kind\",\n xmlName: \"x-ms-account-kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Storage\",\n \"BlobStorage\",\n \"StorageV2\",\n \"FileStorage\",\n \"BlockBlobStorage\",\n ],\n },\n },\n isHierarchicalNamespaceEnabled: {\n serializedName: \"x-ms-is-hns-enabled\",\n xmlName: \"x-ms-is-hns-enabled\",\n type: {\n name: \"Boolean\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceGetAccountInfoExceptionHeaders = {\n serializedName: \"Service_getAccountInfoExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetAccountInfoExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceSubmitBatchHeaders = {\n serializedName: \"Service_submitBatchHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSubmitBatchHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceSubmitBatchExceptionHeaders = {\n serializedName: \"Service_submitBatchExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSubmitBatchExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceFilterBlobsHeaders = {\n serializedName: \"Service_filterBlobsHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceFilterBlobsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ServiceFilterBlobsExceptionHeaders = {\n serializedName: \"Service_filterBlobsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceFilterBlobsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerCreateHeaders = {\n serializedName: \"Container_createHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerCreateHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerCreateExceptionHeaders = {\n serializedName: \"Container_createExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerCreateExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerGetPropertiesHeaders = {\n serializedName: \"Container_getPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetPropertiesHeaders\",\n modelProperties: {\n metadata: {\n serializedName: \"x-ms-meta\",\n headerCollectionPrefix: \"x-ms-meta-\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"],\n },\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\",\n ],\n },\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"],\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobPublicAccess: {\n serializedName: \"x-ms-blob-public-access\",\n xmlName: \"x-ms-blob-public-access\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"],\n },\n },\n hasImmutabilityPolicy: {\n serializedName: \"x-ms-has-immutability-policy\",\n xmlName: \"x-ms-has-immutability-policy\",\n type: {\n name: \"Boolean\",\n },\n },\n hasLegalHold: {\n serializedName: \"x-ms-has-legal-hold\",\n xmlName: \"x-ms-has-legal-hold\",\n type: {\n name: \"Boolean\",\n },\n },\n defaultEncryptionScope: {\n serializedName: \"x-ms-default-encryption-scope\",\n xmlName: \"x-ms-default-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n denyEncryptionScopeOverride: {\n serializedName: \"x-ms-deny-encryption-scope-override\",\n xmlName: \"x-ms-deny-encryption-scope-override\",\n type: {\n name: \"Boolean\",\n },\n },\n isImmutableStorageWithVersioningEnabled: {\n serializedName: \"x-ms-immutable-storage-with-versioning-enabled\",\n xmlName: \"x-ms-immutable-storage-with-versioning-enabled\",\n type: {\n name: \"Boolean\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerGetPropertiesExceptionHeaders = {\n serializedName: \"Container_getPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerDeleteHeaders = {\n serializedName: \"Container_deleteHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerDeleteHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerDeleteExceptionHeaders = {\n serializedName: \"Container_deleteExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerDeleteExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerSetMetadataHeaders = {\n serializedName: \"Container_setMetadataHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetMetadataHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerSetMetadataExceptionHeaders = {\n serializedName: \"Container_setMetadataExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetMetadataExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerGetAccessPolicyHeaders = {\n serializedName: \"Container_getAccessPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccessPolicyHeaders\",\n modelProperties: {\n blobPublicAccess: {\n serializedName: \"x-ms-blob-public-access\",\n xmlName: \"x-ms-blob-public-access\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"],\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerGetAccessPolicyExceptionHeaders = {\n serializedName: \"Container_getAccessPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccessPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerSetAccessPolicyHeaders = {\n serializedName: \"Container_setAccessPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetAccessPolicyHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerSetAccessPolicyExceptionHeaders = {\n serializedName: \"Container_setAccessPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetAccessPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerRestoreHeaders = {\n serializedName: \"Container_restoreHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRestoreHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerRestoreExceptionHeaders = {\n serializedName: \"Container_restoreExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRestoreExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerRenameHeaders = {\n serializedName: \"Container_renameHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenameHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerRenameExceptionHeaders = {\n serializedName: \"Container_renameExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenameExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerSubmitBatchHeaders = {\n serializedName: \"Container_submitBatchHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSubmitBatchHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerSubmitBatchExceptionHeaders = {\n serializedName: \"Container_submitBatchExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSubmitBatchExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerFilterBlobsHeaders = {\n serializedName: \"Container_filterBlobsHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerFilterBlobsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ContainerFilterBlobsExceptionHeaders = {\n serializedName: \"Container_filterBlobsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerFilterBlobsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerAcquireLeaseHeaders = {\n serializedName: \"Container_acquireLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerAcquireLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ContainerAcquireLeaseExceptionHeaders = {\n serializedName: \"Container_acquireLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerAcquireLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerReleaseLeaseHeaders = {\n serializedName: \"Container_releaseLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerReleaseLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ContainerReleaseLeaseExceptionHeaders = {\n serializedName: \"Container_releaseLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerReleaseLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerRenewLeaseHeaders = {\n serializedName: \"Container_renewLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenewLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ContainerRenewLeaseExceptionHeaders = {\n serializedName: \"Container_renewLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenewLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerBreakLeaseHeaders = {\n serializedName: \"Container_breakLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerBreakLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseTime: {\n serializedName: \"x-ms-lease-time\",\n xmlName: \"x-ms-lease-time\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ContainerBreakLeaseExceptionHeaders = {\n serializedName: \"Container_breakLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerBreakLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerChangeLeaseHeaders = {\n serializedName: \"Container_changeLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerChangeLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const ContainerChangeLeaseExceptionHeaders = {\n serializedName: \"Container_changeLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerChangeLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerListBlobFlatSegmentHeaders = {\n serializedName: \"Container_listBlobFlatSegmentHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobFlatSegmentHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerListBlobFlatSegmentExceptionHeaders = {\n serializedName: \"Container_listBlobFlatSegmentExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobFlatSegmentExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerListBlobHierarchySegmentHeaders = {\n serializedName: \"Container_listBlobHierarchySegmentHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobHierarchySegmentHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerListBlobHierarchySegmentExceptionHeaders = {\n serializedName: \"Container_listBlobHierarchySegmentExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobHierarchySegmentExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const ContainerGetAccountInfoHeaders = {\n serializedName: \"Container_getAccountInfoHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccountInfoHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n skuName: {\n serializedName: \"x-ms-sku-name\",\n xmlName: \"x-ms-sku-name\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Standard_LRS\",\n \"Standard_GRS\",\n \"Standard_RAGRS\",\n \"Standard_ZRS\",\n \"Premium_LRS\",\n ],\n },\n },\n accountKind: {\n serializedName: \"x-ms-account-kind\",\n xmlName: \"x-ms-account-kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Storage\",\n \"BlobStorage\",\n \"StorageV2\",\n \"FileStorage\",\n \"BlockBlobStorage\",\n ],\n },\n },\n },\n },\n};\nexport const ContainerGetAccountInfoExceptionHeaders = {\n serializedName: \"Container_getAccountInfoExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccountInfoExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobDownloadHeaders = {\n serializedName: \"Blob_downloadHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDownloadHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n createdOn: {\n serializedName: \"x-ms-creation-time\",\n xmlName: \"x-ms-creation-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n metadata: {\n serializedName: \"x-ms-meta\",\n headerCollectionPrefix: \"x-ms-meta-\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n objectReplicationPolicyId: {\n serializedName: \"x-ms-or-policy-id\",\n xmlName: \"x-ms-or-policy-id\",\n type: {\n name: \"String\",\n },\n },\n objectReplicationRules: {\n serializedName: \"x-ms-or\",\n headerCollectionPrefix: \"x-ms-or-\",\n xmlName: \"x-ms-or\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n contentLength: {\n serializedName: \"content-length\",\n xmlName: \"content-length\",\n type: {\n name: \"Number\",\n },\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n contentRange: {\n serializedName: \"content-range\",\n xmlName: \"content-range\",\n type: {\n name: \"String\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n contentEncoding: {\n serializedName: \"content-encoding\",\n xmlName: \"content-encoding\",\n type: {\n name: \"String\",\n },\n },\n cacheControl: {\n serializedName: \"cache-control\",\n xmlName: \"cache-control\",\n type: {\n name: \"String\",\n },\n },\n contentDisposition: {\n serializedName: \"content-disposition\",\n xmlName: \"content-disposition\",\n type: {\n name: \"String\",\n },\n },\n contentLanguage: {\n serializedName: \"content-language\",\n xmlName: \"content-language\",\n type: {\n name: \"String\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n blobType: {\n serializedName: \"x-ms-blob-type\",\n xmlName: \"x-ms-blob-type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n },\n },\n copyCompletedOn: {\n serializedName: \"x-ms-copy-completion-time\",\n xmlName: \"x-ms-copy-completion-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyStatusDescription: {\n serializedName: \"x-ms-copy-status-description\",\n xmlName: \"x-ms-copy-status-description\",\n type: {\n name: \"String\",\n },\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\",\n },\n },\n copyProgress: {\n serializedName: \"x-ms-copy-progress\",\n xmlName: \"x-ms-copy-progress\",\n type: {\n name: \"String\",\n },\n },\n copySource: {\n serializedName: \"x-ms-copy-source\",\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n },\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"],\n },\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\",\n ],\n },\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"],\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n isCurrentVersion: {\n serializedName: \"x-ms-is-current-version\",\n xmlName: \"x-ms-is-current-version\",\n type: {\n name: \"Boolean\",\n },\n },\n acceptRanges: {\n serializedName: \"accept-ranges\",\n xmlName: \"accept-ranges\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-server-encrypted\",\n xmlName: \"x-ms-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n blobContentMD5: {\n serializedName: \"x-ms-blob-content-md5\",\n xmlName: \"x-ms-blob-content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n tagCount: {\n serializedName: \"x-ms-tag-count\",\n xmlName: \"x-ms-tag-count\",\n type: {\n name: \"Number\",\n },\n },\n isSealed: {\n serializedName: \"x-ms-blob-sealed\",\n xmlName: \"x-ms-blob-sealed\",\n type: {\n name: \"Boolean\",\n },\n },\n lastAccessed: {\n serializedName: \"x-ms-last-access-time\",\n xmlName: \"x-ms-last-access-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyExpiresOn: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyMode: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n },\n },\n legalHold: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n contentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n },\n },\n};\nexport const BlobDownloadExceptionHeaders = {\n serializedName: \"Blob_downloadExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDownloadExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobGetPropertiesHeaders = {\n serializedName: \"Blob_getPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetPropertiesHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n createdOn: {\n serializedName: \"x-ms-creation-time\",\n xmlName: \"x-ms-creation-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n metadata: {\n serializedName: \"x-ms-meta\",\n headerCollectionPrefix: \"x-ms-meta-\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n objectReplicationPolicyId: {\n serializedName: \"x-ms-or-policy-id\",\n xmlName: \"x-ms-or-policy-id\",\n type: {\n name: \"String\",\n },\n },\n objectReplicationRules: {\n serializedName: \"x-ms-or\",\n headerCollectionPrefix: \"x-ms-or-\",\n xmlName: \"x-ms-or\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n blobType: {\n serializedName: \"x-ms-blob-type\",\n xmlName: \"x-ms-blob-type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n },\n },\n copyCompletedOn: {\n serializedName: \"x-ms-copy-completion-time\",\n xmlName: \"x-ms-copy-completion-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyStatusDescription: {\n serializedName: \"x-ms-copy-status-description\",\n xmlName: \"x-ms-copy-status-description\",\n type: {\n name: \"String\",\n },\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\",\n },\n },\n copyProgress: {\n serializedName: \"x-ms-copy-progress\",\n xmlName: \"x-ms-copy-progress\",\n type: {\n name: \"String\",\n },\n },\n copySource: {\n serializedName: \"x-ms-copy-source\",\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n },\n },\n isIncrementalCopy: {\n serializedName: \"x-ms-incremental-copy\",\n xmlName: \"x-ms-incremental-copy\",\n type: {\n name: \"Boolean\",\n },\n },\n destinationSnapshot: {\n serializedName: \"x-ms-copy-destination-snapshot\",\n xmlName: \"x-ms-copy-destination-snapshot\",\n type: {\n name: \"String\",\n },\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"],\n },\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\",\n ],\n },\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"],\n },\n },\n contentLength: {\n serializedName: \"content-length\",\n xmlName: \"content-length\",\n type: {\n name: \"Number\",\n },\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n contentEncoding: {\n serializedName: \"content-encoding\",\n xmlName: \"content-encoding\",\n type: {\n name: \"String\",\n },\n },\n contentDisposition: {\n serializedName: \"content-disposition\",\n xmlName: \"content-disposition\",\n type: {\n name: \"String\",\n },\n },\n contentLanguage: {\n serializedName: \"content-language\",\n xmlName: \"content-language\",\n type: {\n name: \"String\",\n },\n },\n cacheControl: {\n serializedName: \"cache-control\",\n xmlName: \"cache-control\",\n type: {\n name: \"String\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n acceptRanges: {\n serializedName: \"accept-ranges\",\n xmlName: \"accept-ranges\",\n type: {\n name: \"String\",\n },\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-server-encrypted\",\n xmlName: \"x-ms-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n accessTier: {\n serializedName: \"x-ms-access-tier\",\n xmlName: \"x-ms-access-tier\",\n type: {\n name: \"String\",\n },\n },\n accessTierInferred: {\n serializedName: \"x-ms-access-tier-inferred\",\n xmlName: \"x-ms-access-tier-inferred\",\n type: {\n name: \"Boolean\",\n },\n },\n archiveStatus: {\n serializedName: \"x-ms-archive-status\",\n xmlName: \"x-ms-archive-status\",\n type: {\n name: \"String\",\n },\n },\n accessTierChangedOn: {\n serializedName: \"x-ms-access-tier-change-time\",\n xmlName: \"x-ms-access-tier-change-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n isCurrentVersion: {\n serializedName: \"x-ms-is-current-version\",\n xmlName: \"x-ms-is-current-version\",\n type: {\n name: \"Boolean\",\n },\n },\n tagCount: {\n serializedName: \"x-ms-tag-count\",\n xmlName: \"x-ms-tag-count\",\n type: {\n name: \"Number\",\n },\n },\n expiresOn: {\n serializedName: \"x-ms-expiry-time\",\n xmlName: \"x-ms-expiry-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isSealed: {\n serializedName: \"x-ms-blob-sealed\",\n xmlName: \"x-ms-blob-sealed\",\n type: {\n name: \"Boolean\",\n },\n },\n rehydratePriority: {\n serializedName: \"x-ms-rehydrate-priority\",\n xmlName: \"x-ms-rehydrate-priority\",\n type: {\n name: \"Enum\",\n allowedValues: [\"High\", \"Standard\"],\n },\n },\n lastAccessed: {\n serializedName: \"x-ms-last-access-time\",\n xmlName: \"x-ms-last-access-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyExpiresOn: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyMode: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n },\n },\n legalHold: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobGetPropertiesExceptionHeaders = {\n serializedName: \"Blob_getPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobDeleteHeaders = {\n serializedName: \"Blob_deleteHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobDeleteExceptionHeaders = {\n serializedName: \"Blob_deleteExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobUndeleteHeaders = {\n serializedName: \"Blob_undeleteHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobUndeleteHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobUndeleteExceptionHeaders = {\n serializedName: \"Blob_undeleteExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobUndeleteExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetExpiryHeaders = {\n serializedName: \"Blob_setExpiryHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetExpiryHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobSetExpiryExceptionHeaders = {\n serializedName: \"Blob_setExpiryExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetExpiryExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetHttpHeadersHeaders = {\n serializedName: \"Blob_setHttpHeadersHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetHttpHeadersHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetHttpHeadersExceptionHeaders = {\n serializedName: \"Blob_setHttpHeadersExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetHttpHeadersExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetImmutabilityPolicyHeaders = {\n serializedName: \"Blob_setImmutabilityPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetImmutabilityPolicyHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyExpiry: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n immutabilityPolicyMode: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n },\n },\n },\n },\n};\nexport const BlobSetImmutabilityPolicyExceptionHeaders = {\n serializedName: \"Blob_setImmutabilityPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetImmutabilityPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobDeleteImmutabilityPolicyHeaders = {\n serializedName: \"Blob_deleteImmutabilityPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteImmutabilityPolicyHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobDeleteImmutabilityPolicyExceptionHeaders = {\n serializedName: \"Blob_deleteImmutabilityPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteImmutabilityPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetLegalHoldHeaders = {\n serializedName: \"Blob_setLegalHoldHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetLegalHoldHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n legalHold: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexport const BlobSetLegalHoldExceptionHeaders = {\n serializedName: \"Blob_setLegalHoldExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetLegalHoldExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetMetadataHeaders = {\n serializedName: \"Blob_setMetadataHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetMetadataHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetMetadataExceptionHeaders = {\n serializedName: \"Blob_setMetadataExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetMetadataExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobAcquireLeaseHeaders = {\n serializedName: \"Blob_acquireLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAcquireLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobAcquireLeaseExceptionHeaders = {\n serializedName: \"Blob_acquireLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAcquireLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobReleaseLeaseHeaders = {\n serializedName: \"Blob_releaseLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobReleaseLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobReleaseLeaseExceptionHeaders = {\n serializedName: \"Blob_releaseLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobReleaseLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobRenewLeaseHeaders = {\n serializedName: \"Blob_renewLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobRenewLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobRenewLeaseExceptionHeaders = {\n serializedName: \"Blob_renewLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobRenewLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobChangeLeaseHeaders = {\n serializedName: \"Blob_changeLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobChangeLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobChangeLeaseExceptionHeaders = {\n serializedName: \"Blob_changeLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobChangeLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobBreakLeaseHeaders = {\n serializedName: \"Blob_breakLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobBreakLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n leaseTime: {\n serializedName: \"x-ms-lease-time\",\n xmlName: \"x-ms-lease-time\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n },\n },\n};\nexport const BlobBreakLeaseExceptionHeaders = {\n serializedName: \"Blob_breakLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobBreakLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobCreateSnapshotHeaders = {\n serializedName: \"Blob_createSnapshotHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCreateSnapshotHeaders\",\n modelProperties: {\n snapshot: {\n serializedName: \"x-ms-snapshot\",\n xmlName: \"x-ms-snapshot\",\n type: {\n name: \"String\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobCreateSnapshotExceptionHeaders = {\n serializedName: \"Blob_createSnapshotExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCreateSnapshotExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobStartCopyFromURLHeaders = {\n serializedName: \"Blob_startCopyFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobStartCopyFromURLHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobStartCopyFromURLExceptionHeaders = {\n serializedName: \"Blob_startCopyFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobStartCopyFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobCopyFromURLHeaders = {\n serializedName: \"Blob_copyFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCopyFromURLHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n defaultValue: \"success\",\n isConstant: true,\n serializedName: \"x-ms-copy-status\",\n type: {\n name: \"String\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobCopyFromURLExceptionHeaders = {\n serializedName: \"Blob_copyFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCopyFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobAbortCopyFromURLHeaders = {\n serializedName: \"Blob_abortCopyFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAbortCopyFromURLHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobAbortCopyFromURLExceptionHeaders = {\n serializedName: \"Blob_abortCopyFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAbortCopyFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetTierHeaders = {\n serializedName: \"Blob_setTierHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTierHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetTierExceptionHeaders = {\n serializedName: \"Blob_setTierExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTierExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobGetAccountInfoHeaders = {\n serializedName: \"Blob_getAccountInfoHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetAccountInfoHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n skuName: {\n serializedName: \"x-ms-sku-name\",\n xmlName: \"x-ms-sku-name\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Standard_LRS\",\n \"Standard_GRS\",\n \"Standard_RAGRS\",\n \"Standard_ZRS\",\n \"Premium_LRS\",\n ],\n },\n },\n accountKind: {\n serializedName: \"x-ms-account-kind\",\n xmlName: \"x-ms-account-kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Storage\",\n \"BlobStorage\",\n \"StorageV2\",\n \"FileStorage\",\n \"BlockBlobStorage\",\n ],\n },\n },\n },\n },\n};\nexport const BlobGetAccountInfoExceptionHeaders = {\n serializedName: \"Blob_getAccountInfoExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetAccountInfoExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobQueryHeaders = {\n serializedName: \"Blob_queryHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobQueryHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n metadata: {\n serializedName: \"x-ms-meta\",\n headerCollectionPrefix: \"x-ms-meta-\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n contentLength: {\n serializedName: \"content-length\",\n xmlName: \"content-length\",\n type: {\n name: \"Number\",\n },\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n contentRange: {\n serializedName: \"content-range\",\n xmlName: \"content-range\",\n type: {\n name: \"String\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n contentEncoding: {\n serializedName: \"content-encoding\",\n xmlName: \"content-encoding\",\n type: {\n name: \"String\",\n },\n },\n cacheControl: {\n serializedName: \"cache-control\",\n xmlName: \"cache-control\",\n type: {\n name: \"String\",\n },\n },\n contentDisposition: {\n serializedName: \"content-disposition\",\n xmlName: \"content-disposition\",\n type: {\n name: \"String\",\n },\n },\n contentLanguage: {\n serializedName: \"content-language\",\n xmlName: \"content-language\",\n type: {\n name: \"String\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n blobType: {\n serializedName: \"x-ms-blob-type\",\n xmlName: \"x-ms-blob-type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n },\n },\n copyCompletionTime: {\n serializedName: \"x-ms-copy-completion-time\",\n xmlName: \"x-ms-copy-completion-time\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyStatusDescription: {\n serializedName: \"x-ms-copy-status-description\",\n xmlName: \"x-ms-copy-status-description\",\n type: {\n name: \"String\",\n },\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\",\n },\n },\n copyProgress: {\n serializedName: \"x-ms-copy-progress\",\n xmlName: \"x-ms-copy-progress\",\n type: {\n name: \"String\",\n },\n },\n copySource: {\n serializedName: \"x-ms-copy-source\",\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n },\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"],\n },\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\",\n ],\n },\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"],\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n acceptRanges: {\n serializedName: \"accept-ranges\",\n xmlName: \"accept-ranges\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-server-encrypted\",\n xmlName: \"x-ms-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n blobContentMD5: {\n serializedName: \"x-ms-blob-content-md5\",\n xmlName: \"x-ms-blob-content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n contentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n },\n },\n};\nexport const BlobQueryExceptionHeaders = {\n serializedName: \"Blob_queryExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobQueryExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobGetTagsHeaders = {\n serializedName: \"Blob_getTagsHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetTagsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobGetTagsExceptionHeaders = {\n serializedName: \"Blob_getTagsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetTagsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetTagsHeaders = {\n serializedName: \"Blob_setTagsHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTagsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlobSetTagsExceptionHeaders = {\n serializedName: \"Blob_setTagsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTagsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobCreateHeaders = {\n serializedName: \"PageBlob_createHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCreateHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobCreateExceptionHeaders = {\n serializedName: \"PageBlob_createExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCreateExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobUploadPagesHeaders = {\n serializedName: \"PageBlob_uploadPagesHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobUploadPagesExceptionHeaders = {\n serializedName: \"PageBlob_uploadPagesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobClearPagesHeaders = {\n serializedName: \"PageBlob_clearPagesHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobClearPagesHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobClearPagesExceptionHeaders = {\n serializedName: \"PageBlob_clearPagesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobClearPagesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobUploadPagesFromURLHeaders = {\n serializedName: \"PageBlob_uploadPagesFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesFromURLHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobUploadPagesFromURLExceptionHeaders = {\n serializedName: \"PageBlob_uploadPagesFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobGetPageRangesHeaders = {\n serializedName: \"PageBlob_getPageRangesHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n blobContentLength: {\n serializedName: \"x-ms-blob-content-length\",\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobGetPageRangesExceptionHeaders = {\n serializedName: \"PageBlob_getPageRangesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobGetPageRangesDiffHeaders = {\n serializedName: \"PageBlob_getPageRangesDiffHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesDiffHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n blobContentLength: {\n serializedName: \"x-ms-blob-content-length\",\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobGetPageRangesDiffExceptionHeaders = {\n serializedName: \"PageBlob_getPageRangesDiffExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesDiffExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobResizeHeaders = {\n serializedName: \"PageBlob_resizeHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobResizeHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobResizeExceptionHeaders = {\n serializedName: \"PageBlob_resizeExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobResizeExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobUpdateSequenceNumberHeaders = {\n serializedName: \"PageBlob_updateSequenceNumberHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUpdateSequenceNumberHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobUpdateSequenceNumberExceptionHeaders = {\n serializedName: \"PageBlob_updateSequenceNumberExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUpdateSequenceNumberExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobCopyIncrementalHeaders = {\n serializedName: \"PageBlob_copyIncrementalHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCopyIncrementalHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\",\n },\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const PageBlobCopyIncrementalExceptionHeaders = {\n serializedName: \"PageBlob_copyIncrementalExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCopyIncrementalExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobCreateHeaders = {\n serializedName: \"AppendBlob_createHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobCreateHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobCreateExceptionHeaders = {\n serializedName: \"AppendBlob_createExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobCreateExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobAppendBlockHeaders = {\n serializedName: \"AppendBlob_appendBlockHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobAppendOffset: {\n serializedName: \"x-ms-blob-append-offset\",\n xmlName: \"x-ms-blob-append-offset\",\n type: {\n name: \"String\",\n },\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobAppendBlockExceptionHeaders = {\n serializedName: \"AppendBlob_appendBlockExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobAppendBlockFromUrlHeaders = {\n serializedName: \"AppendBlob_appendBlockFromUrlHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockFromUrlHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n blobAppendOffset: {\n serializedName: \"x-ms-blob-append-offset\",\n xmlName: \"x-ms-blob-append-offset\",\n type: {\n name: \"String\",\n },\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobAppendBlockFromUrlExceptionHeaders = {\n serializedName: \"AppendBlob_appendBlockFromUrlExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockFromUrlExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const AppendBlobSealHeaders = {\n serializedName: \"AppendBlob_sealHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobSealHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isSealed: {\n serializedName: \"x-ms-blob-sealed\",\n xmlName: \"x-ms-blob-sealed\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexport const AppendBlobSealExceptionHeaders = {\n serializedName: \"AppendBlob_sealExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobSealExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobUploadHeaders = {\n serializedName: \"BlockBlob_uploadHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobUploadHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobUploadExceptionHeaders = {\n serializedName: \"BlockBlob_uploadExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobUploadExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobPutBlobFromUrlHeaders = {\n serializedName: \"BlockBlob_putBlobFromUrlHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobPutBlobFromUrlHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobPutBlobFromUrlExceptionHeaders = {\n serializedName: \"BlockBlob_putBlobFromUrlExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobPutBlobFromUrlExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobStageBlockHeaders = {\n serializedName: \"BlockBlob_stageBlockHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockHeaders\",\n modelProperties: {\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobStageBlockExceptionHeaders = {\n serializedName: \"BlockBlob_stageBlockExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobStageBlockFromURLHeaders = {\n serializedName: \"BlockBlob_stageBlockFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockFromURLHeaders\",\n modelProperties: {\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobStageBlockFromURLExceptionHeaders = {\n serializedName: \"BlockBlob_stageBlockFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobCommitBlockListHeaders = {\n serializedName: \"BlockBlob_commitBlockListHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobCommitBlockListHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\",\n },\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobCommitBlockListExceptionHeaders = {\n serializedName: \"BlockBlob_commitBlockListExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobCommitBlockListExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobGetBlockListHeaders = {\n serializedName: \"BlockBlob_getBlockListHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobGetBlockListHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\",\n },\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\",\n },\n },\n blobContentLength: {\n serializedName: \"x-ms-blob-content-length\",\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\",\n },\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexport const BlockBlobGetBlockListExceptionHeaders = {\n serializedName: \"BlockBlob_getBlockListExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobGetBlockListExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n//# sourceMappingURL=mappers.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport { BlobServiceProperties as BlobServicePropertiesMapper, KeyInfo as KeyInfoMapper, QueryRequest as QueryRequestMapper, BlobTags as BlobTagsMapper, BlockLookupList as BlockLookupListMapper, } from \"../models/mappers\";\nexport const contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobServiceProperties = {\n parameterPath: \"blobServiceProperties\",\n mapper: BlobServicePropertiesMapper,\n};\nexport const accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const url = {\n parameterPath: \"url\",\n mapper: {\n serializedName: \"url\",\n required: true,\n xmlName: \"url\",\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexport const restype = {\n parameterPath: \"restype\",\n mapper: {\n defaultValue: \"service\",\n isConstant: true,\n serializedName: \"restype\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"properties\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const timeoutInSeconds = {\n parameterPath: [\"options\", \"timeoutInSeconds\"],\n mapper: {\n constraints: {\n InclusiveMinimum: 0,\n },\n serializedName: \"timeout\",\n xmlName: \"timeout\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const version = {\n parameterPath: \"version\",\n mapper: {\n defaultValue: \"2024-05-04\",\n isConstant: true,\n serializedName: \"x-ms-version\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const requestId = {\n parameterPath: [\"options\", \"requestId\"],\n mapper: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const accept1 = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp1 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"stats\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp2 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"list\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const prefix = {\n parameterPath: [\"options\", \"prefix\"],\n mapper: {\n serializedName: \"prefix\",\n xmlName: \"prefix\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const marker = {\n parameterPath: [\"options\", \"marker\"],\n mapper: {\n serializedName: \"marker\",\n xmlName: \"marker\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const maxPageSize = {\n parameterPath: [\"options\", \"maxPageSize\"],\n mapper: {\n constraints: {\n InclusiveMinimum: 1,\n },\n serializedName: \"maxresults\",\n xmlName: \"maxresults\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const include = {\n parameterPath: [\"options\", \"include\"],\n mapper: {\n serializedName: \"include\",\n xmlName: \"include\",\n xmlElementName: \"ListContainersIncludeType\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Enum\",\n allowedValues: [\"metadata\", \"deleted\", \"system\"],\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nexport const keyInfo = {\n parameterPath: \"keyInfo\",\n mapper: KeyInfoMapper,\n};\nexport const comp3 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"userdelegationkey\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const restype1 = {\n parameterPath: \"restype\",\n mapper: {\n defaultValue: \"account\",\n isConstant: true,\n serializedName: \"restype\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const body = {\n parameterPath: \"body\",\n mapper: {\n serializedName: \"body\",\n required: true,\n xmlName: \"body\",\n type: {\n name: \"Stream\",\n },\n },\n};\nexport const comp4 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"batch\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const contentLength = {\n parameterPath: \"contentLength\",\n mapper: {\n serializedName: \"Content-Length\",\n required: true,\n xmlName: \"Content-Length\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const multipartContentType = {\n parameterPath: \"multipartContentType\",\n mapper: {\n serializedName: \"Content-Type\",\n required: true,\n xmlName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp5 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"blobs\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const where = {\n parameterPath: [\"options\", \"where\"],\n mapper: {\n serializedName: \"where\",\n xmlName: \"where\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const restype2 = {\n parameterPath: \"restype\",\n mapper: {\n defaultValue: \"container\",\n isConstant: true,\n serializedName: \"restype\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const metadata = {\n parameterPath: [\"options\", \"metadata\"],\n mapper: {\n serializedName: \"x-ms-meta\",\n xmlName: \"x-ms-meta\",\n headerCollectionPrefix: \"x-ms-meta-\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n};\nexport const access = {\n parameterPath: [\"options\", \"access\"],\n mapper: {\n serializedName: \"x-ms-blob-public-access\",\n xmlName: \"x-ms-blob-public-access\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"],\n },\n },\n};\nexport const defaultEncryptionScope = {\n parameterPath: [\n \"options\",\n \"containerEncryptionScope\",\n \"defaultEncryptionScope\",\n ],\n mapper: {\n serializedName: \"x-ms-default-encryption-scope\",\n xmlName: \"x-ms-default-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const preventEncryptionScopeOverride = {\n parameterPath: [\n \"options\",\n \"containerEncryptionScope\",\n \"preventEncryptionScopeOverride\",\n ],\n mapper: {\n serializedName: \"x-ms-deny-encryption-scope-override\",\n xmlName: \"x-ms-deny-encryption-scope-override\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const leaseId = {\n parameterPath: [\"options\", \"leaseAccessConditions\", \"leaseId\"],\n mapper: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const ifModifiedSince = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifModifiedSince\"],\n mapper: {\n serializedName: \"If-Modified-Since\",\n xmlName: \"If-Modified-Since\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n};\nexport const ifUnmodifiedSince = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifUnmodifiedSince\"],\n mapper: {\n serializedName: \"If-Unmodified-Since\",\n xmlName: \"If-Unmodified-Since\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n};\nexport const comp6 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"metadata\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp7 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"acl\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const containerAcl = {\n parameterPath: [\"options\", \"containerAcl\"],\n mapper: {\n serializedName: \"containerAcl\",\n xmlName: \"SignedIdentifiers\",\n xmlIsWrapped: true,\n xmlElementName: \"SignedIdentifier\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"SignedIdentifier\",\n },\n },\n },\n },\n};\nexport const comp8 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"undelete\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const deletedContainerName = {\n parameterPath: [\"options\", \"deletedContainerName\"],\n mapper: {\n serializedName: \"x-ms-deleted-container-name\",\n xmlName: \"x-ms-deleted-container-name\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const deletedContainerVersion = {\n parameterPath: [\"options\", \"deletedContainerVersion\"],\n mapper: {\n serializedName: \"x-ms-deleted-container-version\",\n xmlName: \"x-ms-deleted-container-version\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp9 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"rename\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceContainerName = {\n parameterPath: \"sourceContainerName\",\n mapper: {\n serializedName: \"x-ms-source-container-name\",\n required: true,\n xmlName: \"x-ms-source-container-name\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceLeaseId = {\n parameterPath: [\"options\", \"sourceLeaseId\"],\n mapper: {\n serializedName: \"x-ms-source-lease-id\",\n xmlName: \"x-ms-source-lease-id\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp10 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"lease\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const action = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"acquire\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const duration = {\n parameterPath: [\"options\", \"duration\"],\n mapper: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const proposedLeaseId = {\n parameterPath: [\"options\", \"proposedLeaseId\"],\n mapper: {\n serializedName: \"x-ms-proposed-lease-id\",\n xmlName: \"x-ms-proposed-lease-id\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const action1 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"release\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const leaseId1 = {\n parameterPath: \"leaseId\",\n mapper: {\n serializedName: \"x-ms-lease-id\",\n required: true,\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const action2 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"renew\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const action3 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"break\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const breakPeriod = {\n parameterPath: [\"options\", \"breakPeriod\"],\n mapper: {\n serializedName: \"x-ms-lease-break-period\",\n xmlName: \"x-ms-lease-break-period\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const action4 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"change\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const proposedLeaseId1 = {\n parameterPath: \"proposedLeaseId\",\n mapper: {\n serializedName: \"x-ms-proposed-lease-id\",\n required: true,\n xmlName: \"x-ms-proposed-lease-id\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const include1 = {\n parameterPath: [\"options\", \"include\"],\n mapper: {\n serializedName: \"include\",\n xmlName: \"include\",\n xmlElementName: \"ListBlobsIncludeItem\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Enum\",\n allowedValues: [\n \"copy\",\n \"deleted\",\n \"metadata\",\n \"snapshots\",\n \"uncommittedblobs\",\n \"versions\",\n \"tags\",\n \"immutabilitypolicy\",\n \"legalhold\",\n \"deletedwithversions\",\n ],\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nexport const delimiter = {\n parameterPath: \"delimiter\",\n mapper: {\n serializedName: \"delimiter\",\n required: true,\n xmlName: \"delimiter\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const snapshot = {\n parameterPath: [\"options\", \"snapshot\"],\n mapper: {\n serializedName: \"snapshot\",\n xmlName: \"snapshot\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const versionId = {\n parameterPath: [\"options\", \"versionId\"],\n mapper: {\n serializedName: \"versionid\",\n xmlName: \"versionid\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const range = {\n parameterPath: [\"options\", \"range\"],\n mapper: {\n serializedName: \"x-ms-range\",\n xmlName: \"x-ms-range\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const rangeGetContentMD5 = {\n parameterPath: [\"options\", \"rangeGetContentMD5\"],\n mapper: {\n serializedName: \"x-ms-range-get-content-md5\",\n xmlName: \"x-ms-range-get-content-md5\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const rangeGetContentCRC64 = {\n parameterPath: [\"options\", \"rangeGetContentCRC64\"],\n mapper: {\n serializedName: \"x-ms-range-get-content-crc64\",\n xmlName: \"x-ms-range-get-content-crc64\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const encryptionKey = {\n parameterPath: [\"options\", \"cpkInfo\", \"encryptionKey\"],\n mapper: {\n serializedName: \"x-ms-encryption-key\",\n xmlName: \"x-ms-encryption-key\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const encryptionKeySha256 = {\n parameterPath: [\"options\", \"cpkInfo\", \"encryptionKeySha256\"],\n mapper: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const encryptionAlgorithm = {\n parameterPath: [\"options\", \"cpkInfo\", \"encryptionAlgorithm\"],\n mapper: {\n serializedName: \"x-ms-encryption-algorithm\",\n xmlName: \"x-ms-encryption-algorithm\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const ifMatch = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifMatch\"],\n mapper: {\n serializedName: \"If-Match\",\n xmlName: \"If-Match\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const ifNoneMatch = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifNoneMatch\"],\n mapper: {\n serializedName: \"If-None-Match\",\n xmlName: \"If-None-Match\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const ifTags = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifTags\"],\n mapper: {\n serializedName: \"x-ms-if-tags\",\n xmlName: \"x-ms-if-tags\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const deleteSnapshots = {\n parameterPath: [\"options\", \"deleteSnapshots\"],\n mapper: {\n serializedName: \"x-ms-delete-snapshots\",\n xmlName: \"x-ms-delete-snapshots\",\n type: {\n name: \"Enum\",\n allowedValues: [\"include\", \"only\"],\n },\n },\n};\nexport const blobDeleteType = {\n parameterPath: [\"options\", \"blobDeleteType\"],\n mapper: {\n serializedName: \"deletetype\",\n xmlName: \"deletetype\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp11 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"expiry\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const expiryOptions = {\n parameterPath: \"expiryOptions\",\n mapper: {\n serializedName: \"x-ms-expiry-option\",\n required: true,\n xmlName: \"x-ms-expiry-option\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const expiresOn = {\n parameterPath: [\"options\", \"expiresOn\"],\n mapper: {\n serializedName: \"x-ms-expiry-time\",\n xmlName: \"x-ms-expiry-time\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobCacheControl = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobCacheControl\"],\n mapper: {\n serializedName: \"x-ms-blob-cache-control\",\n xmlName: \"x-ms-blob-cache-control\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobContentType = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentType\"],\n mapper: {\n serializedName: \"x-ms-blob-content-type\",\n xmlName: \"x-ms-blob-content-type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobContentMD5 = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentMD5\"],\n mapper: {\n serializedName: \"x-ms-blob-content-md5\",\n xmlName: \"x-ms-blob-content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n};\nexport const blobContentEncoding = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentEncoding\"],\n mapper: {\n serializedName: \"x-ms-blob-content-encoding\",\n xmlName: \"x-ms-blob-content-encoding\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobContentLanguage = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentLanguage\"],\n mapper: {\n serializedName: \"x-ms-blob-content-language\",\n xmlName: \"x-ms-blob-content-language\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobContentDisposition = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentDisposition\"],\n mapper: {\n serializedName: \"x-ms-blob-content-disposition\",\n xmlName: \"x-ms-blob-content-disposition\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp12 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"immutabilityPolicies\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const immutabilityPolicyExpiry = {\n parameterPath: [\"options\", \"immutabilityPolicyExpiry\"],\n mapper: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n};\nexport const immutabilityPolicyMode = {\n parameterPath: [\"options\", \"immutabilityPolicyMode\"],\n mapper: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n },\n },\n};\nexport const comp13 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"legalhold\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const legalHold = {\n parameterPath: \"legalHold\",\n mapper: {\n serializedName: \"x-ms-legal-hold\",\n required: true,\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const encryptionScope = {\n parameterPath: [\"options\", \"encryptionScope\"],\n mapper: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp14 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"snapshot\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const tier = {\n parameterPath: [\"options\", \"tier\"],\n mapper: {\n serializedName: \"x-ms-access-tier\",\n xmlName: \"x-ms-access-tier\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"P4\",\n \"P6\",\n \"P10\",\n \"P15\",\n \"P20\",\n \"P30\",\n \"P40\",\n \"P50\",\n \"P60\",\n \"P70\",\n \"P80\",\n \"Hot\",\n \"Cool\",\n \"Archive\",\n \"Cold\",\n ],\n },\n },\n};\nexport const rehydratePriority = {\n parameterPath: [\"options\", \"rehydratePriority\"],\n mapper: {\n serializedName: \"x-ms-rehydrate-priority\",\n xmlName: \"x-ms-rehydrate-priority\",\n type: {\n name: \"Enum\",\n allowedValues: [\"High\", \"Standard\"],\n },\n },\n};\nexport const sourceIfModifiedSince = {\n parameterPath: [\n \"options\",\n \"sourceModifiedAccessConditions\",\n \"sourceIfModifiedSince\",\n ],\n mapper: {\n serializedName: \"x-ms-source-if-modified-since\",\n xmlName: \"x-ms-source-if-modified-since\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n};\nexport const sourceIfUnmodifiedSince = {\n parameterPath: [\n \"options\",\n \"sourceModifiedAccessConditions\",\n \"sourceIfUnmodifiedSince\",\n ],\n mapper: {\n serializedName: \"x-ms-source-if-unmodified-since\",\n xmlName: \"x-ms-source-if-unmodified-since\",\n type: {\n name: \"DateTimeRfc1123\",\n },\n },\n};\nexport const sourceIfMatch = {\n parameterPath: [\"options\", \"sourceModifiedAccessConditions\", \"sourceIfMatch\"],\n mapper: {\n serializedName: \"x-ms-source-if-match\",\n xmlName: \"x-ms-source-if-match\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceIfNoneMatch = {\n parameterPath: [\n \"options\",\n \"sourceModifiedAccessConditions\",\n \"sourceIfNoneMatch\",\n ],\n mapper: {\n serializedName: \"x-ms-source-if-none-match\",\n xmlName: \"x-ms-source-if-none-match\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceIfTags = {\n parameterPath: [\"options\", \"sourceModifiedAccessConditions\", \"sourceIfTags\"],\n mapper: {\n serializedName: \"x-ms-source-if-tags\",\n xmlName: \"x-ms-source-if-tags\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const copySource = {\n parameterPath: \"copySource\",\n mapper: {\n serializedName: \"x-ms-copy-source\",\n required: true,\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobTagsString = {\n parameterPath: [\"options\", \"blobTagsString\"],\n mapper: {\n serializedName: \"x-ms-tags\",\n xmlName: \"x-ms-tags\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sealBlob = {\n parameterPath: [\"options\", \"sealBlob\"],\n mapper: {\n serializedName: \"x-ms-seal-blob\",\n xmlName: \"x-ms-seal-blob\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const legalHold1 = {\n parameterPath: [\"options\", \"legalHold\"],\n mapper: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const xMsRequiresSync = {\n parameterPath: \"xMsRequiresSync\",\n mapper: {\n defaultValue: \"true\",\n isConstant: true,\n serializedName: \"x-ms-requires-sync\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceContentMD5 = {\n parameterPath: [\"options\", \"sourceContentMD5\"],\n mapper: {\n serializedName: \"x-ms-source-content-md5\",\n xmlName: \"x-ms-source-content-md5\",\n type: {\n name: \"ByteArray\",\n },\n },\n};\nexport const copySourceAuthorization = {\n parameterPath: [\"options\", \"copySourceAuthorization\"],\n mapper: {\n serializedName: \"x-ms-copy-source-authorization\",\n xmlName: \"x-ms-copy-source-authorization\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const copySourceTags = {\n parameterPath: [\"options\", \"copySourceTags\"],\n mapper: {\n serializedName: \"x-ms-copy-source-tag-option\",\n xmlName: \"x-ms-copy-source-tag-option\",\n type: {\n name: \"Enum\",\n allowedValues: [\"REPLACE\", \"COPY\"],\n },\n },\n};\nexport const comp15 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"copy\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const copyActionAbortConstant = {\n parameterPath: \"copyActionAbortConstant\",\n mapper: {\n defaultValue: \"abort\",\n isConstant: true,\n serializedName: \"x-ms-copy-action\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const copyId = {\n parameterPath: \"copyId\",\n mapper: {\n serializedName: \"copyid\",\n required: true,\n xmlName: \"copyid\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp16 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"tier\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const tier1 = {\n parameterPath: \"tier\",\n mapper: {\n serializedName: \"x-ms-access-tier\",\n required: true,\n xmlName: \"x-ms-access-tier\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"P4\",\n \"P6\",\n \"P10\",\n \"P15\",\n \"P20\",\n \"P30\",\n \"P40\",\n \"P50\",\n \"P60\",\n \"P70\",\n \"P80\",\n \"Hot\",\n \"Cool\",\n \"Archive\",\n \"Cold\",\n ],\n },\n },\n};\nexport const queryRequest = {\n parameterPath: [\"options\", \"queryRequest\"],\n mapper: QueryRequestMapper,\n};\nexport const comp17 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"query\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp18 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"tags\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const tags = {\n parameterPath: [\"options\", \"tags\"],\n mapper: BlobTagsMapper,\n};\nexport const transactionalContentMD5 = {\n parameterPath: [\"options\", \"transactionalContentMD5\"],\n mapper: {\n serializedName: \"Content-MD5\",\n xmlName: \"Content-MD5\",\n type: {\n name: \"ByteArray\",\n },\n },\n};\nexport const transactionalContentCrc64 = {\n parameterPath: [\"options\", \"transactionalContentCrc64\"],\n mapper: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n};\nexport const blobType = {\n parameterPath: \"blobType\",\n mapper: {\n defaultValue: \"PageBlob\",\n isConstant: true,\n serializedName: \"x-ms-blob-type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobContentLength = {\n parameterPath: \"blobContentLength\",\n mapper: {\n serializedName: \"x-ms-blob-content-length\",\n required: true,\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const blobSequenceNumber = {\n parameterPath: [\"options\", \"blobSequenceNumber\"],\n mapper: {\n defaultValue: 0,\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const contentType1 = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/octet-stream\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const body1 = {\n parameterPath: \"body\",\n mapper: {\n serializedName: \"body\",\n required: true,\n xmlName: \"body\",\n type: {\n name: \"Stream\",\n },\n },\n};\nexport const accept2 = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp19 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"page\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const pageWrite = {\n parameterPath: \"pageWrite\",\n mapper: {\n defaultValue: \"update\",\n isConstant: true,\n serializedName: \"x-ms-page-write\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const ifSequenceNumberLessThanOrEqualTo = {\n parameterPath: [\n \"options\",\n \"sequenceNumberAccessConditions\",\n \"ifSequenceNumberLessThanOrEqualTo\",\n ],\n mapper: {\n serializedName: \"x-ms-if-sequence-number-le\",\n xmlName: \"x-ms-if-sequence-number-le\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const ifSequenceNumberLessThan = {\n parameterPath: [\n \"options\",\n \"sequenceNumberAccessConditions\",\n \"ifSequenceNumberLessThan\",\n ],\n mapper: {\n serializedName: \"x-ms-if-sequence-number-lt\",\n xmlName: \"x-ms-if-sequence-number-lt\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const ifSequenceNumberEqualTo = {\n parameterPath: [\n \"options\",\n \"sequenceNumberAccessConditions\",\n \"ifSequenceNumberEqualTo\",\n ],\n mapper: {\n serializedName: \"x-ms-if-sequence-number-eq\",\n xmlName: \"x-ms-if-sequence-number-eq\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const pageWrite1 = {\n parameterPath: \"pageWrite\",\n mapper: {\n defaultValue: \"clear\",\n isConstant: true,\n serializedName: \"x-ms-page-write\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceUrl = {\n parameterPath: \"sourceUrl\",\n mapper: {\n serializedName: \"x-ms-copy-source\",\n required: true,\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceRange = {\n parameterPath: \"sourceRange\",\n mapper: {\n serializedName: \"x-ms-source-range\",\n required: true,\n xmlName: \"x-ms-source-range\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sourceContentCrc64 = {\n parameterPath: [\"options\", \"sourceContentCrc64\"],\n mapper: {\n serializedName: \"x-ms-source-content-crc64\",\n xmlName: \"x-ms-source-content-crc64\",\n type: {\n name: \"ByteArray\",\n },\n },\n};\nexport const range1 = {\n parameterPath: \"range\",\n mapper: {\n serializedName: \"x-ms-range\",\n required: true,\n xmlName: \"x-ms-range\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp20 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"pagelist\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const prevsnapshot = {\n parameterPath: [\"options\", \"prevsnapshot\"],\n mapper: {\n serializedName: \"prevsnapshot\",\n xmlName: \"prevsnapshot\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const prevSnapshotUrl = {\n parameterPath: [\"options\", \"prevSnapshotUrl\"],\n mapper: {\n serializedName: \"x-ms-previous-snapshot-url\",\n xmlName: \"x-ms-previous-snapshot-url\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const sequenceNumberAction = {\n parameterPath: \"sequenceNumberAction\",\n mapper: {\n serializedName: \"x-ms-sequence-number-action\",\n required: true,\n xmlName: \"x-ms-sequence-number-action\",\n type: {\n name: \"Enum\",\n allowedValues: [\"max\", \"update\", \"increment\"],\n },\n },\n};\nexport const comp21 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"incrementalcopy\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobType1 = {\n parameterPath: \"blobType\",\n mapper: {\n defaultValue: \"AppendBlob\",\n isConstant: true,\n serializedName: \"x-ms-blob-type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp22 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"appendblock\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const maxSize = {\n parameterPath: [\"options\", \"appendPositionAccessConditions\", \"maxSize\"],\n mapper: {\n serializedName: \"x-ms-blob-condition-maxsize\",\n xmlName: \"x-ms-blob-condition-maxsize\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const appendPosition = {\n parameterPath: [\n \"options\",\n \"appendPositionAccessConditions\",\n \"appendPosition\",\n ],\n mapper: {\n serializedName: \"x-ms-blob-condition-appendpos\",\n xmlName: \"x-ms-blob-condition-appendpos\",\n type: {\n name: \"Number\",\n },\n },\n};\nexport const sourceRange1 = {\n parameterPath: [\"options\", \"sourceRange\"],\n mapper: {\n serializedName: \"x-ms-source-range\",\n xmlName: \"x-ms-source-range\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const comp23 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"seal\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blobType2 = {\n parameterPath: \"blobType\",\n mapper: {\n defaultValue: \"BlockBlob\",\n isConstant: true,\n serializedName: \"x-ms-blob-type\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const copySourceBlobProperties = {\n parameterPath: [\"options\", \"copySourceBlobProperties\"],\n mapper: {\n serializedName: \"x-ms-copy-source-blob-properties\",\n xmlName: \"x-ms-copy-source-blob-properties\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nexport const comp24 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"block\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blockId = {\n parameterPath: \"blockId\",\n mapper: {\n serializedName: \"blockid\",\n required: true,\n xmlName: \"blockid\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const blocks = {\n parameterPath: \"blocks\",\n mapper: BlockLookupListMapper,\n};\nexport const comp25 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"blocklist\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\",\n },\n },\n};\nexport const listType = {\n parameterPath: \"listType\",\n mapper: {\n defaultValue: \"committed\",\n serializedName: \"blocklisttype\",\n required: true,\n xmlName: \"blocklisttype\",\n type: {\n name: \"Enum\",\n allowedValues: [\"committed\", \"uncommitted\", \"all\"],\n },\n },\n};\n//# sourceMappingURL=parameters.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing Service operations. */\nexport class ServiceImpl {\n /**\n * Initialize a new instance of the class Service class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Sets properties for a storage account's Blob service endpoint, including properties for Storage\n * Analytics and CORS (Cross-Origin Resource Sharing) rules\n * @param blobServiceProperties The StorageService properties.\n * @param options The options parameters.\n */\n setProperties(blobServiceProperties, options) {\n return this.client.sendOperationRequest({ blobServiceProperties, options }, setPropertiesOperationSpec);\n }\n /**\n * gets the properties of a storage account's Blob service, including properties for Storage Analytics\n * and CORS (Cross-Origin Resource Sharing) rules.\n * @param options The options parameters.\n */\n getProperties(options) {\n return this.client.sendOperationRequest({ options }, getPropertiesOperationSpec);\n }\n /**\n * Retrieves statistics related to replication for the Blob service. It is only available on the\n * secondary location endpoint when read-access geo-redundant replication is enabled for the storage\n * account.\n * @param options The options parameters.\n */\n getStatistics(options) {\n return this.client.sendOperationRequest({ options }, getStatisticsOperationSpec);\n }\n /**\n * The List Containers Segment operation returns a list of the containers under the specified account\n * @param options The options parameters.\n */\n listContainersSegment(options) {\n return this.client.sendOperationRequest({ options }, listContainersSegmentOperationSpec);\n }\n /**\n * Retrieves a user delegation key for the Blob service. This is only a valid operation when using\n * bearer token authentication.\n * @param keyInfo Key information\n * @param options The options parameters.\n */\n getUserDelegationKey(keyInfo, options) {\n return this.client.sendOperationRequest({ keyInfo, options }, getUserDelegationKeyOperationSpec);\n }\n /**\n * Returns the sku name and account kind\n * @param options The options parameters.\n */\n getAccountInfo(options) {\n return this.client.sendOperationRequest({ options }, getAccountInfoOperationSpec);\n }\n /**\n * The Batch operation allows multiple API calls to be embedded into a single HTTP request.\n * @param contentLength The length of the request.\n * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch\n * boundary. Example header value: multipart/mixed; boundary=batch_\n * @param body Initial data\n * @param options The options parameters.\n */\n submitBatch(contentLength, multipartContentType, body, options) {\n return this.client.sendOperationRequest({ contentLength, multipartContentType, body, options }, submitBatchOperationSpec);\n }\n /**\n * The Filter Blobs operation enables callers to list blobs across all containers whose tags match a\n * given search expression. Filter blobs searches across all containers within a storage account but\n * can be scoped within the expression to a single container.\n * @param options The options parameters.\n */\n filterBlobs(options) {\n return this.client.sendOperationRequest({ options }, filterBlobsOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst setPropertiesOperationSpec = {\n path: \"/\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.ServiceSetPropertiesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceSetPropertiesExceptionHeaders,\n },\n },\n requestBody: Parameters.blobServiceProperties,\n queryParameters: [\n Parameters.restype,\n Parameters.comp,\n Parameters.timeoutInSeconds,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst getPropertiesOperationSpec = {\n path: \"/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.BlobServiceProperties,\n headersMapper: Mappers.ServiceGetPropertiesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceGetPropertiesExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.restype,\n Parameters.comp,\n Parameters.timeoutInSeconds,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getStatisticsOperationSpec = {\n path: \"/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.BlobServiceStatistics,\n headersMapper: Mappers.ServiceGetStatisticsHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceGetStatisticsExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.restype,\n Parameters.timeoutInSeconds,\n Parameters.comp1,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst listContainersSegmentOperationSpec = {\n path: \"/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ListContainersSegmentResponse,\n headersMapper: Mappers.ServiceListContainersSegmentHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceListContainersSegmentExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp2,\n Parameters.prefix,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.include,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getUserDelegationKeyOperationSpec = {\n path: \"/\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.UserDelegationKey,\n headersMapper: Mappers.ServiceGetUserDelegationKeyHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceGetUserDelegationKeyExceptionHeaders,\n },\n },\n requestBody: Parameters.keyInfo,\n queryParameters: [\n Parameters.restype,\n Parameters.timeoutInSeconds,\n Parameters.comp3,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst getAccountInfoOperationSpec = {\n path: \"/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.ServiceGetAccountInfoHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceGetAccountInfoExceptionHeaders,\n },\n },\n queryParameters: [Parameters.comp, Parameters.restype1],\n urlParameters: [Parameters.url],\n headerParameters: [Parameters.version, Parameters.accept1],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst submitBatchOperationSpec = {\n path: \"/\",\n httpMethod: \"POST\",\n responses: {\n 202: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\",\n },\n headersMapper: Mappers.ServiceSubmitBatchHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceSubmitBatchExceptionHeaders,\n },\n },\n requestBody: Parameters.body,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp4],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.multipartContentType,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst filterBlobsOperationSpec = {\n path: \"/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.FilterBlobSegment,\n headersMapper: Mappers.ServiceFilterBlobsHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ServiceFilterBlobsExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.comp5,\n Parameters.where,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\n//# sourceMappingURL=service.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing Container operations. */\nexport class ContainerImpl {\n /**\n * Initialize a new instance of the class Container class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * creates a new container under the specified account. If the container with the same name already\n * exists, the operation fails\n * @param options The options parameters.\n */\n create(options) {\n return this.client.sendOperationRequest({ options }, createOperationSpec);\n }\n /**\n * returns all user-defined metadata and system properties for the specified container. The data\n * returned does not include the container's list of blobs\n * @param options The options parameters.\n */\n getProperties(options) {\n return this.client.sendOperationRequest({ options }, getPropertiesOperationSpec);\n }\n /**\n * operation marks the specified container for deletion. The container and any blobs contained within\n * it are later deleted during garbage collection\n * @param options The options parameters.\n */\n delete(options) {\n return this.client.sendOperationRequest({ options }, deleteOperationSpec);\n }\n /**\n * operation sets one or more user-defined name-value pairs for the specified container.\n * @param options The options parameters.\n */\n setMetadata(options) {\n return this.client.sendOperationRequest({ options }, setMetadataOperationSpec);\n }\n /**\n * gets the permissions for the specified container. The permissions indicate whether container data\n * may be accessed publicly.\n * @param options The options parameters.\n */\n getAccessPolicy(options) {\n return this.client.sendOperationRequest({ options }, getAccessPolicyOperationSpec);\n }\n /**\n * sets the permissions for the specified container. The permissions indicate whether blobs in a\n * container may be accessed publicly.\n * @param options The options parameters.\n */\n setAccessPolicy(options) {\n return this.client.sendOperationRequest({ options }, setAccessPolicyOperationSpec);\n }\n /**\n * Restores a previously-deleted container.\n * @param options The options parameters.\n */\n restore(options) {\n return this.client.sendOperationRequest({ options }, restoreOperationSpec);\n }\n /**\n * Renames an existing container.\n * @param sourceContainerName Required. Specifies the name of the container to rename.\n * @param options The options parameters.\n */\n rename(sourceContainerName, options) {\n return this.client.sendOperationRequest({ sourceContainerName, options }, renameOperationSpec);\n }\n /**\n * The Batch operation allows multiple API calls to be embedded into a single HTTP request.\n * @param contentLength The length of the request.\n * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch\n * boundary. Example header value: multipart/mixed; boundary=batch_\n * @param body Initial data\n * @param options The options parameters.\n */\n submitBatch(contentLength, multipartContentType, body, options) {\n return this.client.sendOperationRequest({ contentLength, multipartContentType, body, options }, submitBatchOperationSpec);\n }\n /**\n * The Filter Blobs operation enables callers to list blobs in a container whose tags match a given\n * search expression. Filter blobs searches within the given container.\n * @param options The options parameters.\n */\n filterBlobs(options) {\n return this.client.sendOperationRequest({ options }, filterBlobsOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param options The options parameters.\n */\n acquireLease(options) {\n return this.client.sendOperationRequest({ options }, acquireLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n releaseLease(leaseId, options) {\n return this.client.sendOperationRequest({ leaseId, options }, releaseLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n renewLease(leaseId, options) {\n return this.client.sendOperationRequest({ leaseId, options }, renewLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param options The options parameters.\n */\n breakLease(options) {\n return this.client.sendOperationRequest({ options }, breakLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param leaseId Specifies the current lease ID on the resource.\n * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400\n * (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor\n * (String) for a list of valid GUID string formats.\n * @param options The options parameters.\n */\n changeLease(leaseId, proposedLeaseId, options) {\n return this.client.sendOperationRequest({ leaseId, proposedLeaseId, options }, changeLeaseOperationSpec);\n }\n /**\n * [Update] The List Blobs operation returns a list of the blobs under the specified container\n * @param options The options parameters.\n */\n listBlobFlatSegment(options) {\n return this.client.sendOperationRequest({ options }, listBlobFlatSegmentOperationSpec);\n }\n /**\n * [Update] The List Blobs operation returns a list of the blobs under the specified container\n * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix\n * element in the response body that acts as a placeholder for all blobs whose names begin with the\n * same substring up to the appearance of the delimiter character. The delimiter may be a single\n * character or a string.\n * @param options The options parameters.\n */\n listBlobHierarchySegment(delimiter, options) {\n return this.client.sendOperationRequest({ delimiter, options }, listBlobHierarchySegmentOperationSpec);\n }\n /**\n * Returns the sku name and account kind\n * @param options The options parameters.\n */\n getAccountInfo(options) {\n return this.client.sendOperationRequest({ options }, getAccountInfoOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.ContainerCreateHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerCreateExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.access,\n Parameters.defaultEncryptionScope,\n Parameters.preventEncryptionScopeOverride,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getPropertiesOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerGetPropertiesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerGetPropertiesExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst deleteOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"DELETE\",\n responses: {\n 202: {\n headersMapper: Mappers.ContainerDeleteHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerDeleteExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setMetadataOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerSetMetadataHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerSetMetadataExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp6,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getAccessPolicyOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: {\n type: { name: \"Composite\", className: \"SignedIdentifier\" },\n },\n },\n serializedName: \"SignedIdentifiers\",\n xmlName: \"SignedIdentifiers\",\n xmlIsWrapped: true,\n xmlElementName: \"SignedIdentifier\",\n },\n headersMapper: Mappers.ContainerGetAccessPolicyHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerGetAccessPolicyExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp7,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setAccessPolicyOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerSetAccessPolicyHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerSetAccessPolicyExceptionHeaders,\n },\n },\n requestBody: Parameters.containerAcl,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp7,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.access,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst restoreOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.ContainerRestoreHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerRestoreExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp8,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.deletedContainerName,\n Parameters.deletedContainerVersion,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst renameOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerRenameHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerRenameExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp9,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.sourceContainerName,\n Parameters.sourceLeaseId,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst submitBatchOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"POST\",\n responses: {\n 202: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\",\n },\n headersMapper: Mappers.ContainerSubmitBatchHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerSubmitBatchExceptionHeaders,\n },\n },\n requestBody: Parameters.body,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp4,\n Parameters.restype2,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.multipartContentType,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst filterBlobsOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.FilterBlobSegment,\n headersMapper: Mappers.ContainerFilterBlobsHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerFilterBlobsExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.comp5,\n Parameters.where,\n Parameters.restype2,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst acquireLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.ContainerAcquireLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerAcquireLeaseExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action,\n Parameters.duration,\n Parameters.proposedLeaseId,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst releaseLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerReleaseLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerReleaseLeaseExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action1,\n Parameters.leaseId1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst renewLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerRenewLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerRenewLeaseExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action2,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst breakLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.ContainerBreakLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerBreakLeaseExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action3,\n Parameters.breakPeriod,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst changeLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerChangeLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerChangeLeaseExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action4,\n Parameters.proposedLeaseId1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst listBlobFlatSegmentOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ListBlobsFlatSegmentResponse,\n headersMapper: Mappers.ContainerListBlobFlatSegmentHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerListBlobFlatSegmentExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp2,\n Parameters.prefix,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.restype2,\n Parameters.include1,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst listBlobHierarchySegmentOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ListBlobsHierarchySegmentResponse,\n headersMapper: Mappers.ContainerListBlobHierarchySegmentHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerListBlobHierarchySegmentExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp2,\n Parameters.prefix,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.restype2,\n Parameters.include1,\n Parameters.delimiter,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getAccountInfoOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerGetAccountInfoHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerGetAccountInfoExceptionHeaders,\n },\n },\n queryParameters: [Parameters.comp, Parameters.restype1],\n urlParameters: [Parameters.url],\n headerParameters: [Parameters.version, Parameters.accept1],\n isXML: true,\n serializer: xmlSerializer,\n};\n//# sourceMappingURL=container.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing Blob operations. */\nexport class BlobImpl {\n /**\n * Initialize a new instance of the class Blob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Download operation reads or downloads a blob from the system, including its metadata and\n * properties. You can also call Download to read a snapshot.\n * @param options The options parameters.\n */\n download(options) {\n return this.client.sendOperationRequest({ options }, downloadOperationSpec);\n }\n /**\n * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system\n * properties for the blob. It does not return the content of the blob.\n * @param options The options parameters.\n */\n getProperties(options) {\n return this.client.sendOperationRequest({ options }, getPropertiesOperationSpec);\n }\n /**\n * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is\n * permanently removed from the storage account. If the storage account's soft delete feature is\n * enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible\n * immediately. However, the blob service retains the blob or snapshot for the number of days specified\n * by the DeleteRetentionPolicy section of [Storage service properties]\n * (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is\n * permanently removed from the storage account. Note that you continue to be charged for the\n * soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the\n * \"include=deleted\" query parameter to discover which blobs and snapshots have been soft deleted. You\n * can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a\n * soft-deleted blob or snapshot causes the service to return an HTTP status code of 404\n * (ResourceNotFound).\n * @param options The options parameters.\n */\n delete(options) {\n return this.client.sendOperationRequest({ options }, deleteOperationSpec);\n }\n /**\n * Undelete a blob that was previously soft deleted\n * @param options The options parameters.\n */\n undelete(options) {\n return this.client.sendOperationRequest({ options }, undeleteOperationSpec);\n }\n /**\n * Sets the time a blob will expire and be deleted.\n * @param expiryOptions Required. Indicates mode of the expiry time\n * @param options The options parameters.\n */\n setExpiry(expiryOptions, options) {\n return this.client.sendOperationRequest({ expiryOptions, options }, setExpiryOperationSpec);\n }\n /**\n * The Set HTTP Headers operation sets system properties on the blob\n * @param options The options parameters.\n */\n setHttpHeaders(options) {\n return this.client.sendOperationRequest({ options }, setHttpHeadersOperationSpec);\n }\n /**\n * The Set Immutability Policy operation sets the immutability policy on the blob\n * @param options The options parameters.\n */\n setImmutabilityPolicy(options) {\n return this.client.sendOperationRequest({ options }, setImmutabilityPolicyOperationSpec);\n }\n /**\n * The Delete Immutability Policy operation deletes the immutability policy on the blob\n * @param options The options parameters.\n */\n deleteImmutabilityPolicy(options) {\n return this.client.sendOperationRequest({ options }, deleteImmutabilityPolicyOperationSpec);\n }\n /**\n * The Set Legal Hold operation sets a legal hold on the blob.\n * @param legalHold Specified if a legal hold should be set on the blob.\n * @param options The options parameters.\n */\n setLegalHold(legalHold, options) {\n return this.client.sendOperationRequest({ legalHold, options }, setLegalHoldOperationSpec);\n }\n /**\n * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more\n * name-value pairs\n * @param options The options parameters.\n */\n setMetadata(options) {\n return this.client.sendOperationRequest({ options }, setMetadataOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param options The options parameters.\n */\n acquireLease(options) {\n return this.client.sendOperationRequest({ options }, acquireLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n releaseLease(leaseId, options) {\n return this.client.sendOperationRequest({ leaseId, options }, releaseLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n renewLease(leaseId, options) {\n return this.client.sendOperationRequest({ leaseId, options }, renewLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param leaseId Specifies the current lease ID on the resource.\n * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400\n * (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor\n * (String) for a list of valid GUID string formats.\n * @param options The options parameters.\n */\n changeLease(leaseId, proposedLeaseId, options) {\n return this.client.sendOperationRequest({ leaseId, proposedLeaseId, options }, changeLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param options The options parameters.\n */\n breakLease(options) {\n return this.client.sendOperationRequest({ options }, breakLeaseOperationSpec);\n }\n /**\n * The Create Snapshot operation creates a read-only snapshot of a blob\n * @param options The options parameters.\n */\n createSnapshot(options) {\n return this.client.sendOperationRequest({ options }, createSnapshotOperationSpec);\n }\n /**\n * The Start Copy From URL operation copies a blob or an internet resource to a new blob.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n startCopyFromURL(copySource, options) {\n return this.client.sendOperationRequest({ copySource, options }, startCopyFromURLOperationSpec);\n }\n /**\n * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return\n * a response until the copy is complete.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n copyFromURL(copySource, options) {\n return this.client.sendOperationRequest({ copySource, options }, copyFromURLOperationSpec);\n }\n /**\n * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination\n * blob with zero length and full metadata.\n * @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy Blob\n * operation.\n * @param options The options parameters.\n */\n abortCopyFromURL(copyId, options) {\n return this.client.sendOperationRequest({ copyId, options }, abortCopyFromURLOperationSpec);\n }\n /**\n * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium\n * storage account and on a block blob in a blob storage account (locally redundant storage only). A\n * premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block\n * blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's\n * ETag.\n * @param tier Indicates the tier to be set on the blob.\n * @param options The options parameters.\n */\n setTier(tier, options) {\n return this.client.sendOperationRequest({ tier, options }, setTierOperationSpec);\n }\n /**\n * Returns the sku name and account kind\n * @param options The options parameters.\n */\n getAccountInfo(options) {\n return this.client.sendOperationRequest({ options }, getAccountInfoOperationSpec);\n }\n /**\n * The Query operation enables users to select/project on blob data by providing simple query\n * expressions.\n * @param options The options parameters.\n */\n query(options) {\n return this.client.sendOperationRequest({ options }, queryOperationSpec);\n }\n /**\n * The Get Tags operation enables users to get the tags associated with a blob.\n * @param options The options parameters.\n */\n getTags(options) {\n return this.client.sendOperationRequest({ options }, getTagsOperationSpec);\n }\n /**\n * The Set Tags operation enables users to set tags on a blob.\n * @param options The options parameters.\n */\n setTags(options) {\n return this.client.sendOperationRequest({ options }, setTagsOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst downloadOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\",\n },\n headersMapper: Mappers.BlobDownloadHeaders,\n },\n 206: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\",\n },\n headersMapper: Mappers.BlobDownloadHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobDownloadExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.rangeGetContentMD5,\n Parameters.rangeGetContentCRC64,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getPropertiesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"HEAD\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobGetPropertiesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobGetPropertiesExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst deleteOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"DELETE\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobDeleteHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobDeleteExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n Parameters.blobDeleteType,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.deleteSnapshots,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst undeleteOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobUndeleteHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobUndeleteExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp8],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setExpiryOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetExpiryHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetExpiryExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp11],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.expiryOptions,\n Parameters.expiresOn,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setHttpHeadersOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetHttpHeadersHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetHttpHeadersExceptionHeaders,\n },\n },\n queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setImmutabilityPolicyOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetImmutabilityPolicyHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetImmutabilityPolicyExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp12],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifUnmodifiedSince,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst deleteImmutabilityPolicyOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobDeleteImmutabilityPolicyHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobDeleteImmutabilityPolicyExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp12],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setLegalHoldOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetLegalHoldHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetLegalHoldExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp13],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.legalHold,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setMetadataOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetMetadataHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetMetadataExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp6],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst acquireLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlobAcquireLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobAcquireLeaseExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action,\n Parameters.duration,\n Parameters.proposedLeaseId,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst releaseLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobReleaseLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobReleaseLeaseExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action1,\n Parameters.leaseId1,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst renewLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobRenewLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobRenewLeaseExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action2,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst changeLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobChangeLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobChangeLeaseExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action4,\n Parameters.proposedLeaseId1,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst breakLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobBreakLeaseHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobBreakLeaseExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action3,\n Parameters.breakPeriod,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst createSnapshotOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlobCreateSnapshotHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobCreateSnapshotExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp14],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst startCopyFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobStartCopyFromURLHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobStartCopyFromURLExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.tier,\n Parameters.rehydratePriority,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceIfTags,\n Parameters.copySource,\n Parameters.blobTagsString,\n Parameters.sealBlob,\n Parameters.legalHold1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst copyFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobCopyFromURLHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobCopyFromURLExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.copySource,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.xMsRequiresSync,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.copySourceTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst abortCopyFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 204: {\n headersMapper: Mappers.BlobAbortCopyFromURLHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobAbortCopyFromURLExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp15,\n Parameters.copyId,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.copyActionAbortConstant,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setTierOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetTierHeaders,\n },\n 202: {\n headersMapper: Mappers.BlobSetTierHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetTierExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n Parameters.comp16,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifTags,\n Parameters.rehydratePriority,\n Parameters.tier1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getAccountInfoOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobGetAccountInfoHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobGetAccountInfoExceptionHeaders,\n },\n },\n queryParameters: [Parameters.comp, Parameters.restype1],\n urlParameters: [Parameters.url],\n headerParameters: [Parameters.version, Parameters.accept1],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst queryOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\",\n },\n headersMapper: Mappers.BlobQueryHeaders,\n },\n 206: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\",\n },\n headersMapper: Mappers.BlobQueryHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobQueryExceptionHeaders,\n },\n },\n requestBody: Parameters.queryRequest,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.comp17,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst getTagsOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.BlobTags,\n headersMapper: Mappers.BlobGetTagsHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobGetTagsExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n Parameters.comp18,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst setTagsOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 204: {\n headersMapper: Mappers.BlobSetTagsHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetTagsExceptionHeaders,\n },\n },\n requestBody: Parameters.tags,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.versionId,\n Parameters.comp18,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.leaseId,\n Parameters.ifTags,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\n//# sourceMappingURL=blob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing PageBlob operations. */\nexport class PageBlobImpl {\n /**\n * Initialize a new instance of the class PageBlob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Create operation creates a new page blob.\n * @param contentLength The length of the request.\n * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The\n * page blob size must be aligned to a 512-byte boundary.\n * @param options The options parameters.\n */\n create(contentLength, blobContentLength, options) {\n return this.client.sendOperationRequest({ contentLength, blobContentLength, options }, createOperationSpec);\n }\n /**\n * The Upload Pages operation writes a range of pages to a page blob\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n uploadPages(contentLength, body, options) {\n return this.client.sendOperationRequest({ contentLength, body, options }, uploadPagesOperationSpec);\n }\n /**\n * The Clear Pages operation clears a set of pages from a page blob\n * @param contentLength The length of the request.\n * @param options The options parameters.\n */\n clearPages(contentLength, options) {\n return this.client.sendOperationRequest({ contentLength, options }, clearPagesOperationSpec);\n }\n /**\n * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a\n * URL\n * @param sourceUrl Specify a URL to the copy source.\n * @param sourceRange Bytes of source data in the specified range. The length of this range should\n * match the ContentLength header and x-ms-range/Range destination range header.\n * @param contentLength The length of the request.\n * @param range The range of bytes to which the source range would be written. The range should be 512\n * aligned and range-end is required.\n * @param options The options parameters.\n */\n uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {\n return this.client.sendOperationRequest({ sourceUrl, sourceRange, contentLength, range, options }, uploadPagesFromURLOperationSpec);\n }\n /**\n * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a\n * page blob\n * @param options The options parameters.\n */\n getPageRanges(options) {\n return this.client.sendOperationRequest({ options }, getPageRangesOperationSpec);\n }\n /**\n * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were\n * changed between target blob and previous snapshot.\n * @param options The options parameters.\n */\n getPageRangesDiff(options) {\n return this.client.sendOperationRequest({ options }, getPageRangesDiffOperationSpec);\n }\n /**\n * Resize the Blob\n * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The\n * page blob size must be aligned to a 512-byte boundary.\n * @param options The options parameters.\n */\n resize(blobContentLength, options) {\n return this.client.sendOperationRequest({ blobContentLength, options }, resizeOperationSpec);\n }\n /**\n * Update the sequence number of the blob\n * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.\n * This property applies to page blobs only. This property indicates how the service should modify the\n * blob's sequence number\n * @param options The options parameters.\n */\n updateSequenceNumber(sequenceNumberAction, options) {\n return this.client.sendOperationRequest({ sequenceNumberAction, options }, updateSequenceNumberOperationSpec);\n }\n /**\n * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.\n * The snapshot is copied such that only the differential changes between the previously copied\n * snapshot are transferred to the destination. The copied snapshots are complete copies of the\n * original snapshot and can be read or copied from as usual. This API is supported since REST version\n * 2016-05-31.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n copyIncremental(copySource, options) {\n return this.client.sendOperationRequest({ copySource, options }, copyIncrementalOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobCreateHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobCreateExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.blobType,\n Parameters.blobContentLength,\n Parameters.blobSequenceNumber,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst uploadPagesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobUploadPagesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobUploadPagesExceptionHeaders,\n },\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n Parameters.pageWrite,\n Parameters.ifSequenceNumberLessThanOrEqualTo,\n Parameters.ifSequenceNumberLessThan,\n Parameters.ifSequenceNumberEqualTo,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"binary\",\n serializer: xmlSerializer,\n};\nconst clearPagesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobClearPagesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobClearPagesExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.ifSequenceNumberLessThanOrEqualTo,\n Parameters.ifSequenceNumberLessThan,\n Parameters.ifSequenceNumberEqualTo,\n Parameters.pageWrite1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst uploadPagesFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobUploadPagesFromURLHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobUploadPagesFromURLExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.pageWrite,\n Parameters.ifSequenceNumberLessThanOrEqualTo,\n Parameters.ifSequenceNumberLessThan,\n Parameters.ifSequenceNumberEqualTo,\n Parameters.sourceUrl,\n Parameters.sourceRange,\n Parameters.sourceContentCrc64,\n Parameters.range1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getPageRangesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.PageList,\n headersMapper: Mappers.PageBlobGetPageRangesHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobGetPageRangesExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.snapshot,\n Parameters.comp20,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst getPageRangesDiffOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.PageList,\n headersMapper: Mappers.PageBlobGetPageRangesDiffHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobGetPageRangesDiffExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.snapshot,\n Parameters.comp20,\n Parameters.prevsnapshot,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.prevSnapshotUrl,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst resizeOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.PageBlobResizeHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobResizeExceptionHeaders,\n },\n },\n queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.blobContentLength,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst updateSequenceNumberOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.PageBlobUpdateSequenceNumberHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobUpdateSequenceNumberExceptionHeaders,\n },\n },\n queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobSequenceNumber,\n Parameters.sequenceNumberAction,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst copyIncrementalOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.PageBlobCopyIncrementalHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobCopyIncrementalExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp21],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.copySource,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\n//# sourceMappingURL=pageBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing AppendBlob operations. */\nexport class AppendBlobImpl {\n /**\n * Initialize a new instance of the class AppendBlob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Create Append Blob operation creates a new append blob.\n * @param contentLength The length of the request.\n * @param options The options parameters.\n */\n create(contentLength, options) {\n return this.client.sendOperationRequest({ contentLength, options }, createOperationSpec);\n }\n /**\n * The Append Block operation commits a new block of data to the end of an existing append blob. The\n * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to\n * AppendBlob. Append Block is supported only on version 2015-02-21 version or later.\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n appendBlock(contentLength, body, options) {\n return this.client.sendOperationRequest({ contentLength, body, options }, appendBlockOperationSpec);\n }\n /**\n * The Append Block operation commits a new block of data to the end of an existing append blob where\n * the contents are read from a source url. The Append Block operation is permitted only if the blob\n * was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version\n * 2015-02-21 version or later.\n * @param sourceUrl Specify a URL to the copy source.\n * @param contentLength The length of the request.\n * @param options The options parameters.\n */\n appendBlockFromUrl(sourceUrl, contentLength, options) {\n return this.client.sendOperationRequest({ sourceUrl, contentLength, options }, appendBlockFromUrlOperationSpec);\n }\n /**\n * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version\n * 2019-12-12 version or later.\n * @param options The options parameters.\n */\n seal(options) {\n return this.client.sendOperationRequest({ options }, sealOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.AppendBlobCreateHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobCreateExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.blobType1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst appendBlockOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.AppendBlobAppendBlockHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobAppendBlockExceptionHeaders,\n },\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp22],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n Parameters.maxSize,\n Parameters.appendPosition,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"binary\",\n serializer: xmlSerializer,\n};\nconst appendBlockFromUrlOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.AppendBlobAppendBlockFromUrlHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobAppendBlockFromUrlExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp22],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.transactionalContentMD5,\n Parameters.sourceUrl,\n Parameters.sourceContentCrc64,\n Parameters.maxSize,\n Parameters.appendPosition,\n Parameters.sourceRange1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst sealOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.AppendBlobSealHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobSealExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp23],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.appendPosition,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\n//# sourceMappingURL=appendBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing BlockBlob operations. */\nexport class BlockBlobImpl {\n /**\n * Initialize a new instance of the class BlockBlob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Upload Block Blob operation updates the content of an existing block blob. Updating an existing\n * block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put\n * Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a\n * partial update of the content of a block blob, use the Put Block List operation.\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n upload(contentLength, body, options) {\n return this.client.sendOperationRequest({ contentLength, body, options }, uploadOperationSpec);\n }\n /**\n * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read\n * from a given URL. This API is supported beginning with the 2020-04-08 version. Partial updates are\n * not supported with Put Blob from URL; the content of an existing blob is overwritten with the\n * content of the new blob. To perform partial updates to a block blob’s contents using a source URL,\n * use the Put Block from URL API in conjunction with Put Block List.\n * @param contentLength The length of the request.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n putBlobFromUrl(contentLength, copySource, options) {\n return this.client.sendOperationRequest({ contentLength, copySource, options }, putBlobFromUrlOperationSpec);\n }\n /**\n * The Stage Block operation creates a new block to be committed as part of a blob\n * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string\n * must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified\n * for the blockid parameter must be the same size for each block.\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n stageBlock(blockId, contentLength, body, options) {\n return this.client.sendOperationRequest({ blockId, contentLength, body, options }, stageBlockOperationSpec);\n }\n /**\n * The Stage Block operation creates a new block to be committed as part of a blob where the contents\n * are read from a URL.\n * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string\n * must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified\n * for the blockid parameter must be the same size for each block.\n * @param contentLength The length of the request.\n * @param sourceUrl Specify a URL to the copy source.\n * @param options The options parameters.\n */\n stageBlockFromURL(blockId, contentLength, sourceUrl, options) {\n return this.client.sendOperationRequest({ blockId, contentLength, sourceUrl, options }, stageBlockFromURLOperationSpec);\n }\n /**\n * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the\n * blob. In order to be written as part of a blob, a block must have been successfully written to the\n * server in a prior Put Block operation. You can call Put Block List to update a blob by uploading\n * only those blocks that have changed, then committing the new and existing blocks together. You can\n * do this by specifying whether to commit a block from the committed block list or from the\n * uncommitted block list, or to commit the most recently uploaded version of the block, whichever list\n * it may belong to.\n * @param blocks Blob Blocks.\n * @param options The options parameters.\n */\n commitBlockList(blocks, options) {\n return this.client.sendOperationRequest({ blocks, options }, commitBlockListOperationSpec);\n }\n /**\n * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block\n * blob\n * @param listType Specifies whether to return the list of committed blocks, the list of uncommitted\n * blocks, or both lists together.\n * @param options The options parameters.\n */\n getBlockList(listType, options) {\n return this.client.sendOperationRequest({ listType, options }, getBlockListOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst uploadOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobUploadHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobUploadExceptionHeaders,\n },\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n Parameters.blobType2,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"binary\",\n serializer: xmlSerializer,\n};\nconst putBlobFromUrlOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobPutBlobFromUrlHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobPutBlobFromUrlExceptionHeaders,\n },\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceIfTags,\n Parameters.copySource,\n Parameters.blobTagsString,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.copySourceTags,\n Parameters.transactionalContentMD5,\n Parameters.blobType2,\n Parameters.copySourceBlobProperties,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst stageBlockOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobStageBlockHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobStageBlockExceptionHeaders,\n },\n },\n requestBody: Parameters.body1,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp24,\n Parameters.blockId,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.encryptionScope,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"binary\",\n serializer: xmlSerializer,\n};\nconst stageBlockFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobStageBlockFromURLHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobStageBlockFromURLExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp24,\n Parameters.blockId,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.encryptionScope,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.sourceUrl,\n Parameters.sourceContentCrc64,\n Parameters.sourceRange1,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\nconst commitBlockListOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobCommitBlockListHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobCommitBlockListExceptionHeaders,\n },\n },\n requestBody: Parameters.blocks,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp25],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer,\n};\nconst getBlockListOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.BlockList,\n headersMapper: Mappers.BlockBlobGetBlockListHeaders,\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobGetBlockListExceptionHeaders,\n },\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.comp25,\n Parameters.listType,\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifTags,\n ],\n isXML: true,\n serializer: xmlSerializer,\n};\n//# sourceMappingURL=blockBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\nimport { ServiceImpl, ContainerImpl, BlobImpl, PageBlobImpl, AppendBlobImpl, BlockBlobImpl, } from \"./operations\";\nexport class StorageClient extends coreHttpCompat.ExtendedServiceClient {\n /**\n * Initializes a new instance of the StorageClient class.\n * @param url The URL of the service account, container, or blob that is the target of the desired\n * operation.\n * @param options The parameter options\n */\n constructor(url, options) {\n var _a, _b;\n if (url === undefined) {\n throw new Error(\"'url' cannot be null\");\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults = {\n requestContentType: \"application/json; charset=utf-8\",\n };\n const packageDetails = `azsdk-js-azure-storage-blob/12.23.0`;\n const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n userAgentPrefix,\n }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"{url}\" });\n super(optionsWithDefaults);\n // Parameter assignments\n this.url = url;\n // Assigning values to Constant parameters\n this.version = options.version || \"2023-11-03\";\n this.service = new ServiceImpl(this);\n this.container = new ContainerImpl(this);\n this.blob = new BlobImpl(this);\n this.pageBlob = new PageBlobImpl(this);\n this.appendBlob = new AppendBlobImpl(this);\n this.blockBlob = new BlockBlobImpl(this);\n }\n}\n//# sourceMappingURL=storageClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageClient } from \"./generated/src\";\n/**\n * @internal\n */\nexport class StorageContextClient extends StorageClient {\n async sendOperationRequest(operationArguments, operationSpec) {\n const operationSpecToSend = Object.assign({}, operationSpec);\n if (operationSpecToSend.path === \"/{containerName}\" ||\n operationSpecToSend.path === \"/{containerName}/{blob}\") {\n operationSpecToSend.path = \"\";\n }\n return super.sendOperationRequest(operationArguments, operationSpecToSend);\n }\n}\n//# sourceMappingURL=StorageContextClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageContextClient } from \"./StorageContextClient\";\nimport { getCoreClientOptions, getCredentialFromPipeline } from \"./Pipeline\";\nimport { escapeURLPath, getURLScheme, iEqual, getAccountNameFromUrl } from \"./utils/utils.common\";\n/**\n * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}\n * and etc.\n */\nexport class StorageClient {\n /**\n * Creates an instance of StorageClient.\n * @param url - url to resource\n * @param pipeline - request policy pipeline.\n */\n constructor(url, pipeline) {\n // URL should be encoded and only once, protocol layer shouldn't encode URL again\n this.url = escapeURLPath(url);\n this.accountName = getAccountNameFromUrl(url);\n this.pipeline = pipeline;\n this.storageClientContext = new StorageContextClient(this.url, getCoreClientOptions(pipeline));\n this.isHttps = iEqual(getURLScheme(this.url) || \"\", \"https\");\n this.credential = getCredentialFromPipeline(pipeline);\n // Override protocol layer's default content-type\n const storageClientContext = this.storageClientContext;\n storageClientContext.requestContentType = undefined;\n }\n}\n//# sourceMappingURL=StorageClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants\";\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n packageName: \"@azure/storage-blob\",\n packageVersion: SDK_VERSION,\n namespace: \"Microsoft.Storage\",\n});\n//# sourceMappingURL=tracing.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting\n * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all\n * the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class BlobSASPermissions {\n constructor() {\n /**\n * Specifies Read access granted.\n */\n this.read = false;\n /**\n * Specifies Add access granted.\n */\n this.add = false;\n /**\n * Specifies Create access granted.\n */\n this.create = false;\n /**\n * Specifies Write access granted.\n */\n this.write = false;\n /**\n * Specifies Delete access granted.\n */\n this.delete = false;\n /**\n * Specifies Delete version access granted.\n */\n this.deleteVersion = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Specifies Move access granted.\n */\n this.move = false;\n /**\n * Specifies Execute access granted.\n */\n this.execute = false;\n /**\n * Specifies SetImmutabilityPolicy access granted.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n }\n /**\n * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid permission.\n *\n * @param permissions -\n */\n static parse(permissions) {\n const blobSASPermissions = new BlobSASPermissions();\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n blobSASPermissions.read = true;\n break;\n case \"a\":\n blobSASPermissions.add = true;\n break;\n case \"c\":\n blobSASPermissions.create = true;\n break;\n case \"w\":\n blobSASPermissions.write = true;\n break;\n case \"d\":\n blobSASPermissions.delete = true;\n break;\n case \"x\":\n blobSASPermissions.deleteVersion = true;\n break;\n case \"t\":\n blobSASPermissions.tag = true;\n break;\n case \"m\":\n blobSASPermissions.move = true;\n break;\n case \"e\":\n blobSASPermissions.execute = true;\n break;\n case \"i\":\n blobSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n blobSASPermissions.permanentDelete = true;\n break;\n default:\n throw new RangeError(`Invalid permission: ${char}`);\n }\n }\n return blobSASPermissions;\n }\n /**\n * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const blobSASPermissions = new BlobSASPermissions();\n if (permissionLike.read) {\n blobSASPermissions.read = true;\n }\n if (permissionLike.add) {\n blobSASPermissions.add = true;\n }\n if (permissionLike.create) {\n blobSASPermissions.create = true;\n }\n if (permissionLike.write) {\n blobSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n blobSASPermissions.delete = true;\n }\n if (permissionLike.deleteVersion) {\n blobSASPermissions.deleteVersion = true;\n }\n if (permissionLike.tag) {\n blobSASPermissions.tag = true;\n }\n if (permissionLike.move) {\n blobSASPermissions.move = true;\n }\n if (permissionLike.execute) {\n blobSASPermissions.execute = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n blobSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n blobSASPermissions.permanentDelete = true;\n }\n return blobSASPermissions;\n }\n /**\n * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n * order accepted by the service.\n *\n * @returns A string which represents the BlobSASPermissions\n */\n toString() {\n const permissions = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=BlobSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.\n * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.\n * Once all the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class ContainerSASPermissions {\n constructor() {\n /**\n * Specifies Read access granted.\n */\n this.read = false;\n /**\n * Specifies Add access granted.\n */\n this.add = false;\n /**\n * Specifies Create access granted.\n */\n this.create = false;\n /**\n * Specifies Write access granted.\n */\n this.write = false;\n /**\n * Specifies Delete access granted.\n */\n this.delete = false;\n /**\n * Specifies Delete version access granted.\n */\n this.deleteVersion = false;\n /**\n * Specifies List access granted.\n */\n this.list = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Specifies Move access granted.\n */\n this.move = false;\n /**\n * Specifies Execute access granted.\n */\n this.execute = false;\n /**\n * Specifies SetImmutabilityPolicy access granted.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n /**\n * Specifies that Filter Blobs by Tags is permitted.\n */\n this.filterByTags = false;\n }\n /**\n * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid permission.\n *\n * @param permissions -\n */\n static parse(permissions) {\n const containerSASPermissions = new ContainerSASPermissions();\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n containerSASPermissions.read = true;\n break;\n case \"a\":\n containerSASPermissions.add = true;\n break;\n case \"c\":\n containerSASPermissions.create = true;\n break;\n case \"w\":\n containerSASPermissions.write = true;\n break;\n case \"d\":\n containerSASPermissions.delete = true;\n break;\n case \"l\":\n containerSASPermissions.list = true;\n break;\n case \"t\":\n containerSASPermissions.tag = true;\n break;\n case \"x\":\n containerSASPermissions.deleteVersion = true;\n break;\n case \"m\":\n containerSASPermissions.move = true;\n break;\n case \"e\":\n containerSASPermissions.execute = true;\n break;\n case \"i\":\n containerSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n containerSASPermissions.permanentDelete = true;\n break;\n case \"f\":\n containerSASPermissions.filterByTags = true;\n break;\n default:\n throw new RangeError(`Invalid permission ${char}`);\n }\n }\n return containerSASPermissions;\n }\n /**\n * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const containerSASPermissions = new ContainerSASPermissions();\n if (permissionLike.read) {\n containerSASPermissions.read = true;\n }\n if (permissionLike.add) {\n containerSASPermissions.add = true;\n }\n if (permissionLike.create) {\n containerSASPermissions.create = true;\n }\n if (permissionLike.write) {\n containerSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n containerSASPermissions.delete = true;\n }\n if (permissionLike.list) {\n containerSASPermissions.list = true;\n }\n if (permissionLike.deleteVersion) {\n containerSASPermissions.deleteVersion = true;\n }\n if (permissionLike.tag) {\n containerSASPermissions.tag = true;\n }\n if (permissionLike.move) {\n containerSASPermissions.move = true;\n }\n if (permissionLike.execute) {\n containerSASPermissions.execute = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n containerSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n containerSASPermissions.permanentDelete = true;\n }\n if (permissionLike.filterByTags) {\n containerSASPermissions.filterByTags = true;\n }\n return containerSASPermissions;\n }\n /**\n * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n * order accepted by the service.\n *\n * The order of the characters should be as specified here to ensure correctness.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n *\n */\n toString() {\n const permissions = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.list) {\n permissions.push(\"l\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n if (this.filterByTags) {\n permissions.push(\"f\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=ContainerSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport class UserDelegationKeyCredential {\n}\n//# sourceMappingURL=UserDelegationKeyCredential.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Generate SasIPRange format string. For example:\n *\n * \"8.8.8.8\" or \"1.1.1.1-255.255.255.255\"\n *\n * @param ipRange -\n */\nexport function ipRangeToString(ipRange) {\n return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;\n}\n//# sourceMappingURL=SasIPRange.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\n/**\n * Protocols for generated SAS.\n */\nexport var SASProtocol;\n(function (SASProtocol) {\n /**\n * Protocol that allows HTTPS only\n */\n SASProtocol[\"Https\"] = \"https\";\n /**\n * Protocol that allows both HTTPS and HTTP\n */\n SASProtocol[\"HttpsAndHttp\"] = \"https,http\";\n})(SASProtocol || (SASProtocol = {}));\n/**\n * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly\n * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}\n * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should\n * be taken here in case there are existing query parameters, which might affect the appropriate means of appending\n * these query parameters).\n *\n * NOTE: Instances of this class are immutable.\n */\nexport class SASQueryParameters {\n /**\n * Optional. IP range allowed for this SAS.\n *\n * @readonly\n */\n get ipRange() {\n if (this.ipRangeInner) {\n return {\n end: this.ipRangeInner.end,\n start: this.ipRangeInner.start,\n };\n }\n return undefined;\n }\n constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId, encryptionScope) {\n this.version = version;\n this.signature = signature;\n if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== \"string\") {\n // SASQueryParametersOptions\n this.permissions = permissionsOrOptions.permissions;\n this.services = permissionsOrOptions.services;\n this.resourceTypes = permissionsOrOptions.resourceTypes;\n this.protocol = permissionsOrOptions.protocol;\n this.startsOn = permissionsOrOptions.startsOn;\n this.expiresOn = permissionsOrOptions.expiresOn;\n this.ipRangeInner = permissionsOrOptions.ipRange;\n this.identifier = permissionsOrOptions.identifier;\n this.encryptionScope = permissionsOrOptions.encryptionScope;\n this.resource = permissionsOrOptions.resource;\n this.cacheControl = permissionsOrOptions.cacheControl;\n this.contentDisposition = permissionsOrOptions.contentDisposition;\n this.contentEncoding = permissionsOrOptions.contentEncoding;\n this.contentLanguage = permissionsOrOptions.contentLanguage;\n this.contentType = permissionsOrOptions.contentType;\n if (permissionsOrOptions.userDelegationKey) {\n this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;\n this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;\n this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;\n this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;\n this.signedService = permissionsOrOptions.userDelegationKey.signedService;\n this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;\n this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;\n this.correlationId = permissionsOrOptions.correlationId;\n }\n }\n else {\n this.services = services;\n this.resourceTypes = resourceTypes;\n this.expiresOn = expiresOn;\n this.permissions = permissionsOrOptions;\n this.protocol = protocol;\n this.startsOn = startsOn;\n this.ipRangeInner = ipRange;\n this.encryptionScope = encryptionScope;\n this.identifier = identifier;\n this.resource = resource;\n this.cacheControl = cacheControl;\n this.contentDisposition = contentDisposition;\n this.contentEncoding = contentEncoding;\n this.contentLanguage = contentLanguage;\n this.contentType = contentType;\n if (userDelegationKey) {\n this.signedOid = userDelegationKey.signedObjectId;\n this.signedTenantId = userDelegationKey.signedTenantId;\n this.signedStartsOn = userDelegationKey.signedStartsOn;\n this.signedExpiresOn = userDelegationKey.signedExpiresOn;\n this.signedService = userDelegationKey.signedService;\n this.signedVersion = userDelegationKey.signedVersion;\n this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;\n this.correlationId = correlationId;\n }\n }\n }\n /**\n * Encodes all SAS query parameters into a string that can be appended to a URL.\n *\n */\n toString() {\n const params = [\n \"sv\",\n \"ss\",\n \"srt\",\n \"spr\",\n \"st\",\n \"se\",\n \"sip\",\n \"si\",\n \"ses\",\n \"skoid\", // Signed object ID\n \"sktid\", // Signed tenant ID\n \"skt\", // Signed key start time\n \"ske\", // Signed key expiry time\n \"sks\", // Signed key service\n \"skv\", // Signed key version\n \"sr\",\n \"sp\",\n \"sig\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"saoid\",\n \"scid\",\n ];\n const queries = [];\n for (const param of params) {\n switch (param) {\n case \"sv\":\n this.tryAppendQueryParameter(queries, param, this.version);\n break;\n case \"ss\":\n this.tryAppendQueryParameter(queries, param, this.services);\n break;\n case \"srt\":\n this.tryAppendQueryParameter(queries, param, this.resourceTypes);\n break;\n case \"spr\":\n this.tryAppendQueryParameter(queries, param, this.protocol);\n break;\n case \"st\":\n this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);\n break;\n case \"se\":\n this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);\n break;\n case \"sip\":\n this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);\n break;\n case \"si\":\n this.tryAppendQueryParameter(queries, param, this.identifier);\n break;\n case \"ses\":\n this.tryAppendQueryParameter(queries, param, this.encryptionScope);\n break;\n case \"skoid\": // Signed object ID\n this.tryAppendQueryParameter(queries, param, this.signedOid);\n break;\n case \"sktid\": // Signed tenant ID\n this.tryAppendQueryParameter(queries, param, this.signedTenantId);\n break;\n case \"skt\": // Signed key start time\n this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);\n break;\n case \"ske\": // Signed key expiry time\n this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);\n break;\n case \"sks\": // Signed key service\n this.tryAppendQueryParameter(queries, param, this.signedService);\n break;\n case \"skv\": // Signed key version\n this.tryAppendQueryParameter(queries, param, this.signedVersion);\n break;\n case \"sr\":\n this.tryAppendQueryParameter(queries, param, this.resource);\n break;\n case \"sp\":\n this.tryAppendQueryParameter(queries, param, this.permissions);\n break;\n case \"sig\":\n this.tryAppendQueryParameter(queries, param, this.signature);\n break;\n case \"rscc\":\n this.tryAppendQueryParameter(queries, param, this.cacheControl);\n break;\n case \"rscd\":\n this.tryAppendQueryParameter(queries, param, this.contentDisposition);\n break;\n case \"rsce\":\n this.tryAppendQueryParameter(queries, param, this.contentEncoding);\n break;\n case \"rscl\":\n this.tryAppendQueryParameter(queries, param, this.contentLanguage);\n break;\n case \"rsct\":\n this.tryAppendQueryParameter(queries, param, this.contentType);\n break;\n case \"saoid\":\n this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);\n break;\n case \"scid\":\n this.tryAppendQueryParameter(queries, param, this.correlationId);\n break;\n }\n }\n return queries.join(\"&\");\n }\n /**\n * A private helper method used to filter and append query key/value pairs into an array.\n *\n * @param queries -\n * @param key -\n * @param value -\n */\n tryAppendQueryParameter(queries, key, value) {\n if (!value) {\n return;\n }\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n if (key.length > 0 && value.length > 0) {\n queries.push(`${key}=${value}`);\n }\n }\n}\n//# sourceMappingURL=SASQueryParameters.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BlobSASPermissions } from \"./BlobSASPermissions\";\nimport { ContainerSASPermissions } from \"./ContainerSASPermissions\";\nimport { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential\";\nimport { UserDelegationKeyCredential } from \"../credentials/UserDelegationKeyCredential\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\nexport function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential;\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);\n }\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n }\n // Version 2020-12-06 adds support for encryptionscope in SAS.\n if (version >= \"2020-12-06\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n return generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential);\n }\n }\n // Version 2019-12-12 adds support for the blob tags permission.\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n if (version >= \"2018-11-09\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential);\n }\n else {\n return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);\n }\n }\n }\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n throw new RangeError(\"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\");\n }\n }\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, undefined, undefined, undefined, blobSASSignatureValues.encryptionScope);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId, blobSASSignatureValues.encryptionScope);\n}\nfunction getCanonicalName(accountName, containerName, blobName) {\n // Container: \"/blob/account/containerName\"\n // Blob: \"/blob/account/containerName/blobName\"\n const elements = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\nfunction SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n if (blobSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {\n throw RangeError(\"Must provide 'blobName' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.versionId && version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {\n throw RangeError(\"Must provide 'blobName' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\") {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'x' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'y' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when providing 't' permission.\");\n }\n if (version < \"2020-02-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.\");\n }\n if (version < \"2021-04-10\" &&\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.filterByTags) {\n throw RangeError(\"'version' must be >= '2021-04-10' when providing the 'f' permission.\");\n }\n if (version < \"2020-02-10\" &&\n (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.\");\n }\n if (blobSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n blobSASSignatureValues.version = version;\n return blobSASSignatureValues;\n}\n//# sourceMappingURL=BlobSASSignatureValues.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { randomUUID } from \"@azure/core-util\";\nimport { ETagNone } from \"./utils/constants\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { assertResponse } from \"./utils/utils.common\";\n/**\n * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.\n */\nexport class BlobLeaseClient {\n /**\n * Gets the lease Id.\n *\n * @readonly\n */\n get leaseId() {\n return this._leaseId;\n }\n /**\n * Gets the url.\n *\n * @readonly\n */\n get url() {\n return this._url;\n }\n /**\n * Creates an instance of BlobLeaseClient.\n * @param client - The client to make the lease operation requests.\n * @param leaseId - Initial proposed lease id.\n */\n constructor(client, leaseId) {\n const clientContext = client.storageClientContext;\n this._url = client.url;\n if (client.name === undefined) {\n this._isContainer = true;\n this._containerOrBlobOperation = clientContext.container;\n }\n else {\n this._isContainer = false;\n this._containerOrBlobOperation = clientContext.blob;\n }\n if (!leaseId) {\n leaseId = randomUUID();\n }\n this._leaseId = leaseId;\n }\n /**\n * Establishes and manages a lock on a container for delete operations, or on a blob\n * for write and delete operations.\n * The lock duration can be 15 to 60 seconds, or can be infinite.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param duration - Must be between 15 to 60 seconds, or infinite (-1)\n * @param options - option to configure lease management operations.\n * @returns Response data for acquire lease operation.\n */\n async acquireLease(duration, options = {}) {\n var _a, _b, _c, _d, _e;\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n return tracingClient.withSpan(\"BlobLeaseClient-acquireLease\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this._containerOrBlobOperation.acquireLease({\n abortSignal: options.abortSignal,\n duration,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n proposedLeaseId: this._leaseId,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * To change the ID of the lease.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param proposedLeaseId - the proposed new lease Id.\n * @param options - option to configure lease management operations.\n * @returns Response data for change lease operation.\n */\n async changeLease(proposedLeaseId, options = {}) {\n var _a, _b, _c, _d, _e;\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n return tracingClient.withSpan(\"BlobLeaseClient-changeLease\", options, async (updatedOptions) => {\n var _a;\n const response = assertResponse(await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, {\n abortSignal: options.abortSignal,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n this._leaseId = proposedLeaseId;\n return response;\n });\n }\n /**\n * To free the lease if it is no longer needed so that another client may\n * immediately acquire a lease against the container or the blob.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param options - option to configure lease management operations.\n * @returns Response data for release lease operation.\n */\n async releaseLease(options = {}) {\n var _a, _b, _c, _d, _e;\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n return tracingClient.withSpan(\"BlobLeaseClient-releaseLease\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this._containerOrBlobOperation.releaseLease(this._leaseId, {\n abortSignal: options.abortSignal,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * To renew the lease.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param options - Optional option to configure lease management operations.\n * @returns Response data for renew lease operation.\n */\n async renewLease(options = {}) {\n var _a, _b, _c, _d, _e;\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n return tracingClient.withSpan(\"BlobLeaseClient-renewLease\", options, async (updatedOptions) => {\n var _a;\n return this._containerOrBlobOperation.renewLease(this._leaseId, {\n abortSignal: options.abortSignal,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n });\n });\n }\n /**\n * To end the lease but ensure that another client cannot acquire a new lease\n * until the current lease period has expired.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param breakPeriod - Break period\n * @param options - Optional options to configure lease management operations.\n * @returns Response data for break lease operation.\n */\n async breakLease(breakPeriod, options = {}) {\n var _a, _b, _c, _d, _e;\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n return tracingClient.withSpan(\"BlobLeaseClient-breakLease\", options, async (updatedOptions) => {\n var _a;\n const operationOptions = {\n abortSignal: options.abortSignal,\n breakPeriod,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n };\n return assertResponse(await this._containerOrBlobOperation.breakLease(operationOptions));\n });\n }\n}\n//# sourceMappingURL=BlobLeaseClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// This file is used as a shim of \"BlobDownloadResponse\" for some browser bundlers\n// when trying to bundle \"BlobDownloadResponse\"\n// \"BlobDownloadResponse\" class is only available in Node.js runtime\nexport const BlobDownloadResponse = 1;\n//# sourceMappingURL=BlobDownloadResponse.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN BROWSER RUNTIME.\n *\n * BlobQueryResponse implements BlobDownloadResponseModel interface, and in browser runtime it will\n * parse avor data returned by blob query.\n */\nexport class BlobQueryResponse {\n /**\n * Indicates that the service supports\n * requests for partial file content.\n *\n * @readonly\n */\n get acceptRanges() {\n return this.originalResponse.acceptRanges;\n }\n /**\n * Returns if it was previously specified\n * for the file.\n *\n * @readonly\n */\n get cacheControl() {\n return this.originalResponse.cacheControl;\n }\n /**\n * Returns the value that was specified\n * for the 'x-ms-content-disposition' header and specifies how to process the\n * response.\n *\n * @readonly\n */\n get contentDisposition() {\n return this.originalResponse.contentDisposition;\n }\n /**\n * Returns the value that was specified\n * for the Content-Encoding request header.\n *\n * @readonly\n */\n get contentEncoding() {\n return this.originalResponse.contentEncoding;\n }\n /**\n * Returns the value that was specified\n * for the Content-Language request header.\n *\n * @readonly\n */\n get contentLanguage() {\n return this.originalResponse.contentLanguage;\n }\n /**\n * The current sequence number for a\n * page blob. This header is not returned for block blobs or append blobs.\n *\n * @readonly\n */\n get blobSequenceNumber() {\n return this.originalResponse.blobSequenceNumber;\n }\n /**\n * The blob's type. Possible values include:\n * 'BlockBlob', 'PageBlob', 'AppendBlob'.\n *\n * @readonly\n */\n get blobType() {\n return this.originalResponse.blobType;\n }\n /**\n * The number of bytes present in the\n * response body.\n *\n * @readonly\n */\n get contentLength() {\n return this.originalResponse.contentLength;\n }\n /**\n * If the file has an MD5 hash and the\n * request is to read the full file, this response header is returned so that\n * the client can check for message content integrity. If the request is to\n * read a specified range and the 'x-ms-range-get-content-md5' is set to\n * true, then the request returns an MD5 hash for the range, as long as the\n * range size is less than or equal to 4 MB. If neither of these sets of\n * conditions is true, then no value is returned for the 'Content-MD5'\n * header.\n *\n * @readonly\n */\n get contentMD5() {\n return this.originalResponse.contentMD5;\n }\n /**\n * Indicates the range of bytes returned if\n * the client requested a subset of the file by setting the Range request\n * header.\n *\n * @readonly\n */\n get contentRange() {\n return this.originalResponse.contentRange;\n }\n /**\n * The content type specified for the file.\n * The default content type is 'application/octet-stream'\n *\n * @readonly\n */\n get contentType() {\n return this.originalResponse.contentType;\n }\n /**\n * Conclusion time of the last attempted\n * Copy File operation where this file was the destination file. This value\n * can specify the time of a completed, aborted, or failed copy attempt.\n *\n * @readonly\n */\n get copyCompletedOn() {\n return undefined;\n }\n /**\n * String identifier for the last attempted Copy\n * File operation where this file was the destination file.\n *\n * @readonly\n */\n get copyId() {\n return this.originalResponse.copyId;\n }\n /**\n * Contains the number of bytes copied and\n * the total bytes in the source in the last attempted Copy File operation\n * where this file was the destination file. Can show between 0 and\n * Content-Length bytes copied.\n *\n * @readonly\n */\n get copyProgress() {\n return this.originalResponse.copyProgress;\n }\n /**\n * URL up to 2KB in length that specifies the\n * source file used in the last attempted Copy File operation where this file\n * was the destination file.\n *\n * @readonly\n */\n get copySource() {\n return this.originalResponse.copySource;\n }\n /**\n * State of the copy operation\n * identified by 'x-ms-copy-id'. Possible values include: 'pending',\n * 'success', 'aborted', 'failed'\n *\n * @readonly\n */\n get copyStatus() {\n return this.originalResponse.copyStatus;\n }\n /**\n * Only appears when\n * x-ms-copy-status is failed or pending. Describes cause of fatal or\n * non-fatal copy operation failure.\n *\n * @readonly\n */\n get copyStatusDescription() {\n return this.originalResponse.copyStatusDescription;\n }\n /**\n * When a blob is leased,\n * specifies whether the lease is of infinite or fixed duration. Possible\n * values include: 'infinite', 'fixed'.\n *\n * @readonly\n */\n get leaseDuration() {\n return this.originalResponse.leaseDuration;\n }\n /**\n * Lease state of the blob. Possible\n * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.\n *\n * @readonly\n */\n get leaseState() {\n return this.originalResponse.leaseState;\n }\n /**\n * The current lease status of the\n * blob. Possible values include: 'locked', 'unlocked'.\n *\n * @readonly\n */\n get leaseStatus() {\n return this.originalResponse.leaseStatus;\n }\n /**\n * A UTC date/time value generated by the service that\n * indicates the time at which the response was initiated.\n *\n * @readonly\n */\n get date() {\n return this.originalResponse.date;\n }\n /**\n * The number of committed blocks\n * present in the blob. This header is returned only for append blobs.\n *\n * @readonly\n */\n get blobCommittedBlockCount() {\n return this.originalResponse.blobCommittedBlockCount;\n }\n /**\n * The ETag contains a value that you can use to\n * perform operations conditionally, in quotes.\n *\n * @readonly\n */\n get etag() {\n return this.originalResponse.etag;\n }\n /**\n * The error code.\n *\n * @readonly\n */\n get errorCode() {\n return this.originalResponse.errorCode;\n }\n /**\n * The value of this header is set to\n * true if the file data and application metadata are completely encrypted\n * using the specified algorithm. Otherwise, the value is set to false (when\n * the file is unencrypted, or if only parts of the file/application metadata\n * are encrypted).\n *\n * @readonly\n */\n get isServerEncrypted() {\n return this.originalResponse.isServerEncrypted;\n }\n /**\n * If the blob has a MD5 hash, and if\n * request contains range header (Range or x-ms-range), this response header\n * is returned with the value of the whole blob's MD5 value. This value may\n * or may not be equal to the value returned in Content-MD5 header, with the\n * latter calculated from the requested range.\n *\n * @readonly\n */\n get blobContentMD5() {\n return this.originalResponse.blobContentMD5;\n }\n /**\n * Returns the date and time the file was last\n * modified. Any operation that modifies the file or its properties updates\n * the last modified time.\n *\n * @readonly\n */\n get lastModified() {\n return this.originalResponse.lastModified;\n }\n /**\n * A name-value pair\n * to associate with a file storage object.\n *\n * @readonly\n */\n get metadata() {\n return this.originalResponse.metadata;\n }\n /**\n * This header uniquely identifies the request\n * that was made and can be used for troubleshooting the request.\n *\n * @readonly\n */\n get requestId() {\n return this.originalResponse.requestId;\n }\n /**\n * If a client request id header is sent in the request, this header will be present in the\n * response with the same value.\n *\n * @readonly\n */\n get clientRequestId() {\n return this.originalResponse.clientRequestId;\n }\n /**\n * Indicates the version of the File service used\n * to execute the request.\n *\n * @readonly\n */\n get version() {\n return this.originalResponse.version;\n }\n /**\n * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned\n * when the blob was encrypted with a customer-provided key.\n *\n * @readonly\n */\n get encryptionKeySha256() {\n return this.originalResponse.encryptionKeySha256;\n }\n /**\n * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to\n * true, then the request returns a crc64 for the range, as long as the range size is less than\n * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is\n * specified in the same request, it will fail with 400(Bad Request)\n */\n get contentCrc64() {\n return this.originalResponse.contentCrc64;\n }\n /**\n * The response body as a browser Blob.\n * Always undefined in node.js.\n *\n * @readonly\n */\n get blobBody() {\n throw Error(`Quick query in browser is not supported yet.`);\n }\n /**\n * The response body as a node.js Readable stream.\n * Always undefined in the browser.\n *\n * @readonly\n */\n get readableStreamBody() {\n return undefined;\n }\n /**\n * The HTTP response.\n */\n get _response() {\n return this.originalResponse._response;\n }\n /**\n * Creates an instance of BlobQueryResponse.\n *\n * @param originalResponse -\n * @param options -\n */\n constructor(originalResponse, _options = {}) {\n this.originalResponse = originalResponse;\n }\n}\n//# sourceMappingURL=BlobQueryResponse.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { EncryptionAlgorithmAES25 } from \"./utils/constants\";\n/**\n * Represents the access tier on a blob.\n * For detailed information about block blob level tiering see {@link https://docs.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers|Hot, cool and archive storage tiers.}\n */\nexport var BlockBlobTier;\n(function (BlockBlobTier) {\n /**\n * Optimized for storing data that is accessed frequently.\n */\n BlockBlobTier[\"Hot\"] = \"Hot\";\n /**\n * Optimized for storing data that is infrequently accessed and stored for at least 30 days.\n */\n BlockBlobTier[\"Cool\"] = \"Cool\";\n /**\n * Optimized for storing data that is rarely accessed.\n */\n BlockBlobTier[\"Cold\"] = \"Cold\";\n /**\n * Optimized for storing data that is rarely accessed and stored for at least 180 days\n * with flexible latency requirements (on the order of hours).\n */\n BlockBlobTier[\"Archive\"] = \"Archive\";\n})(BlockBlobTier || (BlockBlobTier = {}));\n/**\n * Specifies the page blob tier to set the blob to. This is only applicable to page blobs on premium storage accounts.\n * Please see {@link https://docs.microsoft.com/azure/storage/storage-premium-storage#scalability-and-performance-targets|here}\n * for detailed information on the corresponding IOPS and throughput per PageBlobTier.\n */\nexport var PremiumPageBlobTier;\n(function (PremiumPageBlobTier) {\n /**\n * P4 Tier.\n */\n PremiumPageBlobTier[\"P4\"] = \"P4\";\n /**\n * P6 Tier.\n */\n PremiumPageBlobTier[\"P6\"] = \"P6\";\n /**\n * P10 Tier.\n */\n PremiumPageBlobTier[\"P10\"] = \"P10\";\n /**\n * P15 Tier.\n */\n PremiumPageBlobTier[\"P15\"] = \"P15\";\n /**\n * P20 Tier.\n */\n PremiumPageBlobTier[\"P20\"] = \"P20\";\n /**\n * P30 Tier.\n */\n PremiumPageBlobTier[\"P30\"] = \"P30\";\n /**\n * P40 Tier.\n */\n PremiumPageBlobTier[\"P40\"] = \"P40\";\n /**\n * P50 Tier.\n */\n PremiumPageBlobTier[\"P50\"] = \"P50\";\n /**\n * P60 Tier.\n */\n PremiumPageBlobTier[\"P60\"] = \"P60\";\n /**\n * P70 Tier.\n */\n PremiumPageBlobTier[\"P70\"] = \"P70\";\n /**\n * P80 Tier.\n */\n PremiumPageBlobTier[\"P80\"] = \"P80\";\n})(PremiumPageBlobTier || (PremiumPageBlobTier = {}));\nexport function toAccessTier(tier) {\n if (tier === undefined) {\n return undefined;\n }\n return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).\n}\nexport function ensureCpkIfSpecified(cpk, isHttps) {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n/**\n * Defines the known cloud audiences for Storage.\n */\nexport var StorageBlobAudience;\n(function (StorageBlobAudience) {\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Storage.\n */\n StorageBlobAudience[\"StorageOAuthScopes\"] = \"https://storage.azure.com/.default\";\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Disk.\n */\n StorageBlobAudience[\"DiskComputeOAuthScopes\"] = \"https://disk.compute.azure.com/.default\";\n})(StorageBlobAudience || (StorageBlobAudience = {}));\n/**\n *\n * To get OAuth audience for a storage account for blob service.\n */\nexport function getBlobServiceAccountAudience(storageAccountName) {\n return `https://${storageAccountName}.blob.core.windows.net/.default`;\n}\n//# sourceMappingURL=models.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Function that converts PageRange and ClearRange to a common Range object.\n * PageRange and ClearRange have start and end while Range offset and count\n * this function normalizes to Range.\n * @param response - Model PageBlob Range response\n */\nexport function rangeResponseFromModel(response) {\n const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({\n offset: x.start,\n count: x.end - x.start,\n }));\n const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({\n offset: x.start,\n count: x.end - x.start,\n }));\n return Object.assign(Object.assign({}, response), { pageRange,\n clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {\n pageRange,\n clearRange,\n } }) });\n}\n//# sourceMappingURL=PageBlobRangeResponse.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n//# sourceMappingURL=logger.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport class Poller {\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation) {\n /** controls whether to throw an error if the operation failed or was canceled. */\n this.resolveOnUnsuccessful = false;\n this.stopped = true;\n this.pollProgressCallbacks = [];\n this.operation = operation;\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n async startPolling(pollOptions = {}) {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n async pollOnce(options = {}) {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n fireProgress(state) {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n /**\n * Invokes the underlying operation's cancel method.\n */\n async cancelOnce(options = {}) {\n this.operation = await this.operation.cancel(options);\n }\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n poll(options = {}) {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = () => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n processUpdatedState() {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult());\n }\n }\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n async pollUntilDone(pollOptions = {}) {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback) {\n this.pollProgressCallbacks.push(callback);\n return () => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n /**\n * Returns true if the poller has finished polling.\n */\n isDone() {\n const state = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n /**\n * Stops the poller from continuing to poll.\n */\n stopPolling() {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n /**\n * Returns true if the poller is stopped.\n */\n isStopped() {\n return this.stopped;\n }\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n cancelOperation(options = {}) {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n }\n else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n getOperationState() {\n return this.operation.state;\n }\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult() {\n const state = this.operation.state;\n return state.result;\n }\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString() {\n return this.operation.toString();\n }\n}\n//# sourceMappingURL=poller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay } from \"@azure/core-util\";\nimport { Poller } from \"@azure/core-lro\";\n/**\n * This is the poller returned by {@link BlobClient.beginCopyFromURL}.\n * This can not be instantiated directly outside of this package.\n *\n * @hidden\n */\nexport class BlobBeginCopyFromUrlPoller extends Poller {\n constructor(options) {\n const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions, } = options;\n let state;\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,\n copySource,\n startCopyFromURLOptions }));\n super(operation);\n if (typeof onProgress === \"function\") {\n this.onProgress(onProgress);\n }\n this.intervalInMs = intervalInMs;\n }\n delay() {\n return delay(this.intervalInMs);\n }\n}\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst cancel = async function cancel(options = {}) {\n const state = this.state;\n const { copyId } = state;\n if (state.isCompleted) {\n return makeBlobBeginCopyFromURLPollOperation(state);\n }\n if (!copyId) {\n state.isCancelled = true;\n return makeBlobBeginCopyFromURLPollOperation(state);\n }\n // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call\n await state.blobClient.abortCopyFromURL(copyId, {\n abortSignal: options.abortSignal,\n });\n state.isCancelled = true;\n return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst update = async function update(options = {}) {\n const state = this.state;\n const { blobClient, copySource, startCopyFromURLOptions } = state;\n if (!state.isStarted) {\n state.isStarted = true;\n const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);\n // copyId is needed to abort\n state.copyId = result.copyId;\n if (result.copyStatus === \"success\") {\n state.result = result;\n state.isCompleted = true;\n }\n }\n else if (!state.isCompleted) {\n try {\n const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });\n const { copyStatus, copyProgress } = result;\n const prevCopyProgress = state.copyProgress;\n if (copyProgress) {\n state.copyProgress = copyProgress;\n }\n if (copyStatus === \"pending\" &&\n copyProgress !== prevCopyProgress &&\n typeof options.fireProgress === \"function\") {\n // trigger in setTimeout, or swallow error?\n options.fireProgress(state);\n }\n else if (copyStatus === \"success\") {\n state.result = result;\n state.isCompleted = true;\n }\n else if (copyStatus === \"failed\") {\n state.error = new Error(`Blob copy failed with reason: \"${result.copyStatusDescription || \"unknown\"}\"`);\n state.isCompleted = true;\n }\n }\n catch (err) {\n state.error = err;\n state.isCompleted = true;\n }\n }\n return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst toString = function toString() {\n return JSON.stringify({ state: this.state }, (key, value) => {\n // remove blobClient from serialized state since a client can't be hydrated from this info.\n if (key === \"blobClient\") {\n return undefined;\n }\n return value;\n });\n};\n/**\n * Creates a poll operation given the provided state.\n * @hidden\n */\nfunction makeBlobBeginCopyFromURLPollOperation(state) {\n return {\n state: Object.assign({}, state),\n cancel,\n toString,\n update,\n };\n}\n//# sourceMappingURL=BlobStartCopyFromUrlPoller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Generate a range string. For example:\n *\n * \"bytes=255-\" or \"bytes=0-511\"\n *\n * @param iRange -\n */\nexport function rangeToString(iRange) {\n if (iRange.offset < 0) {\n throw new RangeError(`Range.offset cannot be smaller than 0.`);\n }\n if (iRange.count && iRange.count <= 0) {\n throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);\n }\n return iRange.count\n ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`\n : `bytes=${iRange.offset}-`;\n}\n//# sourceMappingURL=Range.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// In browser, during webpack or browserify bundling, this module will be replaced by 'events'\n// https://github.com/Gozala/events\nimport { EventEmitter } from \"events\";\n/**\n * States for Batch.\n */\nvar BatchStates;\n(function (BatchStates) {\n BatchStates[BatchStates[\"Good\"] = 0] = \"Good\";\n BatchStates[BatchStates[\"Error\"] = 1] = \"Error\";\n})(BatchStates || (BatchStates = {}));\n/**\n * Batch provides basic parallel execution with concurrency limits.\n * Will stop execute left operations when one of the executed operation throws an error.\n * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.\n */\nexport class Batch {\n /**\n * Creates an instance of Batch.\n * @param concurrency -\n */\n constructor(concurrency = 5) {\n /**\n * Number of active operations under execution.\n */\n this.actives = 0;\n /**\n * Number of completed operations under execution.\n */\n this.completed = 0;\n /**\n * Offset of next operation to be executed.\n */\n this.offset = 0;\n /**\n * Operation array to be executed.\n */\n this.operations = [];\n /**\n * States of Batch. When an error happens, state will turn into error.\n * Batch will stop execute left operations.\n */\n this.state = BatchStates.Good;\n if (concurrency < 1) {\n throw new RangeError(\"concurrency must be larger than 0\");\n }\n this.concurrency = concurrency;\n this.emitter = new EventEmitter();\n }\n /**\n * Add a operation into queue.\n *\n * @param operation -\n */\n addOperation(operation) {\n this.operations.push(async () => {\n try {\n this.actives++;\n await operation();\n this.actives--;\n this.completed++;\n this.parallelExecute();\n }\n catch (error) {\n this.emitter.emit(\"error\", error);\n }\n });\n }\n /**\n * Start execute operations in the queue.\n *\n */\n async do() {\n if (this.operations.length === 0) {\n return Promise.resolve();\n }\n this.parallelExecute();\n return new Promise((resolve, reject) => {\n this.emitter.on(\"finish\", resolve);\n this.emitter.on(\"error\", (error) => {\n this.state = BatchStates.Error;\n reject(error);\n });\n });\n }\n /**\n * Get next operation to be executed. Return null when reaching ends.\n *\n */\n nextOperation() {\n if (this.offset < this.operations.length) {\n return this.operations[this.offset++];\n }\n return null;\n }\n /**\n * Start execute operations. One one the most important difference between\n * this method with do() is that do() wraps as an sync method.\n *\n */\n parallelExecute() {\n if (this.state === BatchStates.Error) {\n return;\n }\n if (this.completed >= this.operations.length) {\n this.emitter.emit(\"finish\");\n return;\n }\n while (this.actives < this.concurrency) {\n const operation = this.nextOperation();\n if (operation) {\n operation();\n }\n else {\n return;\n }\n }\n }\n}\n//# sourceMappingURL=Batch.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// This file is used as a shim of \"BufferScheduler\" for some browser bundlers\n// when trying to bundle \"BufferScheduler\"\n// \"BufferScheduler\" class is only available in Node.js runtime\nexport class BufferScheduler {\n}\n//# sourceMappingURL=BufferScheduler.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Convert a Browser Blob object into ArrayBuffer.\n *\n * @param blob -\n */\nexport async function blobToArrayBuffer(blob) {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onloadend = (ev) => {\n resolve(ev.target.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsArrayBuffer(blob);\n });\n}\n/**\n * Convert a Browser Blob object into string.\n *\n * @param blob -\n */\nexport async function blobToString(blob) {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onloadend = (ev) => {\n resolve(ev.target.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsText(blob);\n });\n}\nexport function streamToBuffer() {\n /* empty */\n}\nexport function streamToBuffer2() {\n /* empty */\n}\nexport function readStreamToLocalFile() {\n /* empty */\n}\nexport const fsStat = function stat() {\n /* empty */\n};\nexport const fsCreateReadStream = function createReadStream() {\n /* empty */\n};\n//# sourceMappingURL=utils.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { getDefaultProxySettings, } from \"@azure/core-rest-pipeline\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { isNode } from \"@azure/core-util\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { BlobDownloadResponse } from \"./BlobDownloadResponse\";\nimport { BlobQueryResponse } from \"./BlobQueryResponse\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { ensureCpkIfSpecified, toAccessTier, } from \"./models\";\nimport { rangeResponseFromModel, } from \"./PageBlobRangeResponse\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { BlobBeginCopyFromUrlPoller, } from \"./pollers/BlobStartCopyFromUrlPoller\";\nimport { rangeToString } from \"./Range\";\nimport { StorageClient } from \"./StorageClient\";\nimport { Batch } from \"./utils/Batch\";\nimport { BufferScheduler } from \"../../storage-common/src\";\nimport { BlobDoesNotUseCustomerSpecifiedEncryption, BlobUsesCustomerSpecifiedEncryptionMsg, BLOCK_BLOB_MAX_BLOCKS, BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES, BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES, DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES, DEFAULT_BLOCK_BUFFER_SIZE_BYTES, DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS, ETagAny, URLConstants, } from \"./utils/constants\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { appendToURLPath, appendToURLQuery, assertResponse, extractConnectionStringParts, ExtractPageRangeInfoItems, generateBlockID, getURLParameter, httpAuthorizationToString, isIpEndpointStyle, parseObjectReplicationRecord, setURLParameter, toBlobTags, toBlobTagsString, toQuerySerialization, toTags, } from \"./utils/utils.common\";\nimport { fsCreateReadStream, fsStat, readStreamToLocalFile, streamToBuffer, } from \"./utils/utils.node\";\nimport { generateBlobSASQueryParameters } from \"./sas/BlobSASSignatureValues\";\nimport { BlobLeaseClient } from \"./BlobLeaseClient\";\n/**\n * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,\n * append blob, or page blob.\n */\nexport class BlobClient extends StorageClient {\n /**\n * The name of the blob.\n */\n get name() {\n return this._name;\n }\n /**\n * The name of the storage container the blob is associated with.\n */\n get containerName() {\n return this._containerName;\n }\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n options = options || {};\n let pipeline;\n let url;\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n if (blobNameOrOptions && typeof blobNameOrOptions !== \"string\") {\n options = blobNameOrOptions;\n }\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n ({ blobName: this._name, containerName: this._containerName } =\n this.getBlobAndContainerNamesFromUrl());\n this.blobContext = this.storageClientContext.blob;\n this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);\n this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);\n }\n /**\n * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a Client to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp\n */\n withSnapshot(snapshot) {\n return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * Creates a new BlobClient object pointing to a version of this blob.\n * Provide \"\" will remove the versionId and return a Client to the base blob.\n *\n * @param versionId - The versionId.\n * @returns A new BlobClient object pointing to the version of this blob.\n */\n withVersion(versionId) {\n return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);\n }\n /**\n * Creates a AppendBlobClient object.\n *\n */\n getAppendBlobClient() {\n return new AppendBlobClient(this.url, this.pipeline);\n }\n /**\n * Creates a BlockBlobClient object.\n *\n */\n getBlockBlobClient() {\n return new BlockBlobClient(this.url, this.pipeline);\n }\n /**\n * Creates a PageBlobClient object.\n *\n */\n getPageBlobClient() {\n return new PageBlobClient(this.url, this.pipeline);\n }\n /**\n * Reads or downloads a blob from the system, including its metadata and properties.\n * You can also call Get Blob to read a snapshot.\n *\n * * In Node.js, data returns in a Readable stream readableStreamBody\n * * In browsers, data returns in a promise blobBody\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob\n *\n * @param offset - From which position of the blob to download, greater than or equal to 0\n * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined\n * @param options - Optional options to Blob Download operation.\n *\n *\n * Example usage (Node.js):\n *\n * ```js\n * // Download and convert a blob to a string\n * const downloadBlockBlobResponse = await blobClient.download();\n * const downloaded = await streamToBuffer(downloadBlockBlobResponse.readableStreamBody);\n * console.log(\"Downloaded blob content:\", downloaded.toString());\n *\n * async function streamToBuffer(readableStream) {\n * return new Promise((resolve, reject) => {\n * const chunks = [];\n * readableStream.on(\"data\", (data) => {\n * chunks.push(data instanceof Buffer ? data : Buffer.from(data));\n * });\n * readableStream.on(\"end\", () => {\n * resolve(Buffer.concat(chunks));\n * });\n * readableStream.on(\"error\", reject);\n * });\n * }\n * ```\n *\n * Example usage (browser):\n *\n * ```js\n * // Download and convert a blob to a string\n * const downloadBlockBlobResponse = await blobClient.download();\n * const downloaded = await blobToString(await downloadBlockBlobResponse.blobBody);\n * console.log(\n * \"Downloaded blob content\",\n * downloaded\n * );\n *\n * async function blobToString(blob: Blob): Promise {\n * const fileReader = new FileReader();\n * return new Promise((resolve, reject) => {\n * fileReader.onloadend = (ev: any) => {\n * resolve(ev.target!.result);\n * };\n * fileReader.onerror = reject;\n * fileReader.readAsText(blob);\n * });\n * }\n * ```\n */\n async download(offset = 0, count, options = {}) {\n options.conditions = options.conditions || {};\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlobClient-download\", options, async (updatedOptions) => {\n var _a;\n const res = assertResponse(await this.blobContext.download({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n requestOptions: {\n onDownloadProgress: isNode ? undefined : options.onProgress, // for Node.js, progress is reported by RetriableReadableStream\n },\n range: offset === 0 && !count ? undefined : rangeToString({ offset, count }),\n rangeGetContentMD5: options.rangeGetContentMD5,\n rangeGetContentCRC64: options.rangeGetContentCrc64,\n snapshot: options.snapshot,\n cpkInfo: options.customerProvidedKey,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });\n // Return browser response immediately\n if (!isNode) {\n return wrappedRes;\n }\n // We support retrying when download stream unexpected ends in Node.js runtime\n // Following code shouldn't be bundled into browser build, however some\n // bundlers may try to bundle following code and \"FileReadResponse.ts\".\n // In this case, \"FileDownloadResponse.browser.ts\" will be used as a shim of \"FileDownloadResponse.ts\"\n // The config is in package.json \"browser\" field\n if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {\n // TODO: Default value or make it a required parameter?\n options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;\n }\n if (res.contentLength === undefined) {\n throw new RangeError(`File download response doesn't contain valid content length header`);\n }\n if (!res.etag) {\n throw new RangeError(`File download response doesn't contain valid etag header`);\n }\n return new BlobDownloadResponse(wrappedRes, async (start) => {\n var _a;\n const updatedDownloadOptions = {\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: {\n ifMatch: options.conditions.ifMatch || res.etag,\n ifModifiedSince: options.conditions.ifModifiedSince,\n ifNoneMatch: options.conditions.ifNoneMatch,\n ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,\n ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions,\n },\n range: rangeToString({\n count: offset + res.contentLength - start,\n offset: start,\n }),\n rangeGetContentMD5: options.rangeGetContentMD5,\n rangeGetContentCRC64: options.rangeGetContentCrc64,\n snapshot: options.snapshot,\n cpkInfo: options.customerProvidedKey,\n };\n // Debug purpose only\n // console.log(\n // `Read from internal stream, range: ${\n // updatedOptions.range\n // }, options: ${JSON.stringify(updatedOptions)}`\n // );\n return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedDownloadOptions))).readableStreamBody;\n }, offset, res.contentLength, {\n maxRetryRequests: options.maxRetryRequests,\n onProgress: options.onProgress,\n });\n });\n }\n /**\n * Returns true if the Azure blob resource represented by this client exists; false otherwise.\n *\n * NOTE: use this function with care since an existing blob might be deleted by other clients or\n * applications. Vice versa new blobs might be added by other clients or applications after this\n * function completes.\n *\n * @param options - options to Exists operation.\n */\n async exists(options = {}) {\n return tracingClient.withSpan(\"BlobClient-exists\", options, async (updatedOptions) => {\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n await this.getProperties({\n abortSignal: options.abortSignal,\n customerProvidedKey: options.customerProvidedKey,\n conditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n });\n return true;\n }\n catch (e) {\n if (e.statusCode === 404) {\n // Expected exception when checking blob existence\n return false;\n }\n else if (e.statusCode === 409 &&\n (e.details.errorCode === BlobUsesCustomerSpecifiedEncryptionMsg ||\n e.details.errorCode === BlobDoesNotUseCustomerSpecifiedEncryption)) {\n // Expected exception when checking blob existence\n return true;\n }\n throw e;\n }\n });\n }\n /**\n * Returns all user-defined metadata, standard HTTP properties, and system properties\n * for the blob. It does not return the content of the blob.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-properties\n *\n * WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if\n * they originally contained uppercase characters. This differs from the metadata keys returned by\n * the methods of {@link ContainerClient} that list blobs using the `includeMetadata` option, which\n * will retain their original casing.\n *\n * @param options - Optional options to Get Properties operation.\n */\n async getProperties(options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlobClient-getProperties\", options, async (updatedOptions) => {\n var _a;\n const res = assertResponse(await this.blobContext.getProperties({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });\n });\n }\n /**\n * Marks the specified blob or snapshot for deletion. The blob is later deleted\n * during garbage collection. Note that in order to delete a blob, you must delete\n * all of its snapshots. You can delete both at the same time with the Delete\n * Blob operation.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n *\n * @param options - Optional options to Blob Delete operation.\n */\n async delete(options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"BlobClient-delete\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.blobContext.delete({\n abortSignal: options.abortSignal,\n deleteSnapshots: options.deleteSnapshots,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted\n * during garbage collection. Note that in order to delete a blob, you must delete\n * all of its snapshots. You can delete both at the same time with the Delete\n * Blob operation.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n *\n * @param options - Optional options to Blob Delete operation.\n */\n async deleteIfExists(options = {}) {\n return tracingClient.withSpan(\"BlobClient-deleteIfExists\", options, async (updatedOptions) => {\n var _a, _b;\n try {\n const res = assertResponse(await this.delete(updatedOptions));\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobNotFound\") {\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n throw e;\n }\n });\n }\n /**\n * Restores the contents and metadata of soft deleted blob and any associated\n * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29\n * or later.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob\n *\n * @param options - Optional options to Blob Undelete operation.\n */\n async undelete(options = {}) {\n return tracingClient.withSpan(\"BlobClient-undelete\", options, async (updatedOptions) => {\n return assertResponse(await this.blobContext.undelete({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Sets system properties on the blob.\n *\n * If no value provided, or no value provided for the specified blob HTTP headers,\n * these blob HTTP headers without a value will be cleared.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties\n *\n * @param blobHTTPHeaders - If no value provided, or no value provided for\n * the specified blob HTTP headers, these blob HTTP\n * headers without a value will be cleared.\n * A common header to set is `blobContentType`\n * enabling the browser to provide functionality\n * based on file type.\n * @param options - Optional options to Blob Set HTTP Headers operation.\n */\n async setHTTPHeaders(blobHTTPHeaders, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlobClient-setHTTPHeaders\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.blobContext.setHttpHeaders({\n abortSignal: options.abortSignal,\n blobHttpHeaders: blobHTTPHeaders,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n // cpkInfo: options.customerProvidedKey, // CPK is not included in Swagger, should change this back when this issue is fixed in Swagger.\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Sets user-defined metadata for the specified blob as one or more name-value pairs.\n *\n * If no option provided, or no metadata defined in the parameter, the blob\n * metadata will be removed.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata\n *\n * @param metadata - Replace existing metadata with this value.\n * If no value provided the existing metadata will be removed.\n * @param options - Optional options to Set Metadata operation.\n */\n async setMetadata(metadata, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlobClient-setMetadata\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.blobContext.setMetadata({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Sets tags on the underlying blob.\n * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters. Tag values must be between 0 and 256 characters.\n * Valid tag key and value characters include lower and upper case letters, digits (0-9),\n * space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_').\n *\n * @param tags -\n * @param options -\n */\n async setTags(tags, options = {}) {\n return tracingClient.withSpan(\"BlobClient-setTags\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.blobContext.setTags({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n tags: toBlobTags(tags),\n }));\n });\n }\n /**\n * Gets the tags associated with the underlying blob.\n *\n * @param options -\n */\n async getTags(options = {}) {\n return tracingClient.withSpan(\"BlobClient-getTags\", options, async (updatedOptions) => {\n var _a;\n const response = assertResponse(await this.blobContext.getTags({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });\n return wrappedResponse;\n });\n }\n /**\n * Get a {@link BlobLeaseClient} that manages leases on the blob.\n *\n * @param proposeLeaseId - Initial proposed lease Id.\n * @returns A new BlobLeaseClient object for managing leases on the blob.\n */\n getBlobLeaseClient(proposeLeaseId) {\n return new BlobLeaseClient(this, proposeLeaseId);\n }\n /**\n * Creates a read-only snapshot of a blob.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob\n *\n * @param options - Optional options to the Blob Create Snapshot operation.\n */\n async createSnapshot(options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlobClient-createSnapshot\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.blobContext.createSnapshot({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n metadata: options.metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Asynchronously copies a blob to a destination within the storage account.\n * This method returns a long running operation poller that allows you to wait\n * indefinitely until the copy is completed.\n * You can also cancel a copy before it is completed by calling `cancelOperation` on the poller.\n * Note that the onProgress callback will not be invoked if the operation completes in the first\n * request, and attempting to cancel a completed copy will result in an error being thrown.\n *\n * In version 2012-02-12 and later, the source for a Copy Blob operation can be\n * a committed blob in any Azure storage account.\n * Beginning with version 2015-02-21, the source for a Copy Blob operation can be\n * an Azure file in any Azure storage account.\n * Only storage accounts created on or after June 7th, 2012 allow the Copy Blob\n * operation to copy from another storage account.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob\n *\n * Example using automatic polling:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url');\n * const result = await copyPoller.pollUntilDone();\n * ```\n *\n * Example using manual polling:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url');\n * while (!poller.isDone()) {\n * await poller.poll();\n * }\n * const result = copyPoller.getResult();\n * ```\n *\n * Example using progress updates:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url', {\n * onProgress(state) {\n * console.log(`Progress: ${state.copyProgress}`);\n * }\n * });\n * const result = await copyPoller.pollUntilDone();\n * ```\n *\n * Example using a changing polling interval (default 15 seconds):\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url', {\n * intervalInMs: 1000 // poll blob every 1 second for copy progress\n * });\n * const result = await copyPoller.pollUntilDone();\n * ```\n *\n * Example using copy cancellation:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url');\n * // cancel operation after starting it.\n * try {\n * await copyPoller.cancelOperation();\n * // calls to get the result now throw PollerCancelledError\n * await copyPoller.getResult();\n * } catch (err) {\n * if (err.name === 'PollerCancelledError') {\n * console.log('The copy was cancelled.');\n * }\n * }\n * ```\n *\n * @param copySource - url to the source Azure Blob/File.\n * @param options - Optional options to the Blob Start Copy From URL operation.\n */\n async beginCopyFromURL(copySource, options = {}) {\n const client = {\n abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),\n getProperties: (...args) => this.getProperties(...args),\n startCopyFromURL: (...args) => this.startCopyFromURL(...args),\n };\n const poller = new BlobBeginCopyFromUrlPoller({\n blobClient: client,\n copySource,\n intervalInMs: options.intervalInMs,\n onProgress: options.onProgress,\n resumeFrom: options.resumeFrom,\n startCopyFromURLOptions: options,\n });\n // Trigger the startCopyFromURL call by calling poll.\n // Any errors from this method should be surfaced to the user.\n await poller.poll();\n return poller;\n }\n /**\n * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero\n * length and full metadata. Version 2012-02-12 and newer.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob\n *\n * @param copyId - Id of the Copy From URL operation.\n * @param options - Optional options to the Blob Abort Copy From URL operation.\n */\n async abortCopyFromURL(copyId, options = {}) {\n return tracingClient.withSpan(\"BlobClient-abortCopyFromURL\", options, async (updatedOptions) => {\n return assertResponse(await this.blobContext.abortCopyFromURL(copyId, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not\n * return a response until the copy is complete.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url\n *\n * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication\n * @param options -\n */\n async syncCopyFromURL(copySource, options = {}) {\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n return tracingClient.withSpan(\"BlobClient-syncCopyFromURL\", options, async (updatedOptions) => {\n var _a, _b, _c, _d, _e, _f, _g;\n return assertResponse(await this.blobContext.copyFromURL(copySource, {\n abortSignal: options.abortSignal,\n metadata: options.metadata,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n sourceModifiedAccessConditions: {\n sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n },\n sourceContentMD5: options.sourceContentMD5,\n copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n tier: toAccessTier(options.tier),\n blobTagsString: toBlobTagsString(options.tags),\n immutabilityPolicyExpiry: (_f = options.immutabilityPolicy) === null || _f === void 0 ? void 0 : _f.expiriesOn,\n immutabilityPolicyMode: (_g = options.immutabilityPolicy) === null || _g === void 0 ? void 0 : _g.policyMode,\n legalHold: options.legalHold,\n encryptionScope: options.encryptionScope,\n copySourceTags: options.copySourceTags,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Sets the tier on a blob. The operation is allowed on a page blob in a premium\n * storage account and on a block blob in a blob storage account (locally redundant\n * storage only). A premium page blob's tier determines the allowed size, IOPS,\n * and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive\n * storage type. This operation does not update the blob's ETag.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier\n *\n * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.\n * @param options - Optional options to the Blob Set Tier operation.\n */\n async setAccessTier(tier, options = {}) {\n return tracingClient.withSpan(\"BlobClient-setAccessTier\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.blobContext.setTier(toAccessTier(tier), {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n rehydratePriority: options.rehydratePriority,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n async downloadToBuffer(param1, param2, param3, param4 = {}) {\n var _a;\n let buffer;\n let offset = 0;\n let count = 0;\n let options = param4;\n if (param1 instanceof Buffer) {\n buffer = param1;\n offset = param2 || 0;\n count = typeof param3 === \"number\" ? param3 : 0;\n }\n else {\n offset = typeof param1 === \"number\" ? param1 : 0;\n count = typeof param2 === \"number\" ? param2 : 0;\n options = param3 || {};\n }\n let blockSize = (_a = options.blockSize) !== null && _a !== void 0 ? _a : 0;\n if (blockSize < 0) {\n throw new RangeError(\"blockSize option must be >= 0\");\n }\n if (blockSize === 0) {\n blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;\n }\n if (offset < 0) {\n throw new RangeError(\"offset option must be >= 0\");\n }\n if (count && count <= 0) {\n throw new RangeError(\"count option must be greater than 0\");\n }\n if (!options.conditions) {\n options.conditions = {};\n }\n return tracingClient.withSpan(\"BlobClient-downloadToBuffer\", options, async (updatedOptions) => {\n // Customer doesn't specify length, get it\n if (!count) {\n const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions }));\n count = response.contentLength - offset;\n if (count < 0) {\n throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);\n }\n }\n // Allocate the buffer of size = count if the buffer is not provided\n if (!buffer) {\n try {\n buffer = Buffer.alloc(count);\n }\n catch (error) {\n throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\\t ${error.message}`);\n }\n }\n if (buffer.length < count) {\n throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);\n }\n let transferProgress = 0;\n const batch = new Batch(options.concurrency);\n for (let off = offset; off < offset + count; off = off + blockSize) {\n batch.addOperation(async () => {\n // Exclusive chunk end position\n let chunkEnd = offset + count;\n if (off + blockSize < chunkEnd) {\n chunkEnd = off + blockSize;\n }\n const response = await this.download(off, chunkEnd - off, {\n abortSignal: options.abortSignal,\n conditions: options.conditions,\n maxRetryRequests: options.maxRetryRequestsPerBlock,\n customerProvidedKey: options.customerProvidedKey,\n tracingOptions: updatedOptions.tracingOptions,\n });\n const stream = response.readableStreamBody;\n await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);\n // Update progress after block is downloaded, in case of block trying\n // Could provide finer grained progress updating inside HTTP requests,\n // only if convenience layer download try is enabled\n transferProgress += chunkEnd - off;\n if (options.onProgress) {\n options.onProgress({ loadedBytes: transferProgress });\n }\n });\n }\n await batch.do();\n return buffer;\n });\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Downloads an Azure Blob to a local file.\n * Fails if the the given file path already exits.\n * Offset and count are optional, pass 0 and undefined respectively to download the entire blob.\n *\n * @param filePath -\n * @param offset - From which position of the block blob to download.\n * @param count - How much data to be downloaded. Will download to the end when passing undefined.\n * @param options - Options to Blob download options.\n * @returns The response data for blob download operation,\n * but with readableStreamBody set to undefined since its\n * content is already read and written into a local file\n * at the specified path.\n */\n async downloadToFile(filePath, offset = 0, count, options = {}) {\n return tracingClient.withSpan(\"BlobClient-downloadToFile\", options, async (updatedOptions) => {\n const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions }));\n if (response.readableStreamBody) {\n await readStreamToLocalFile(response.readableStreamBody, filePath);\n }\n // The stream is no longer accessible so setting it to undefined.\n response.blobDownloadStream = undefined;\n return response;\n });\n }\n getBlobAndContainerNamesFromUrl() {\n let containerName;\n let blobName;\n try {\n // URL may look like the following\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob?sasString\";\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob\";\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt?sasString\";\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt\";\n // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`\n // http://localhost:10001/devstoreaccount1/containername/blob\n const parsedUrl = new URL(this.url);\n if (parsedUrl.host.split(\".\")[1] === \"blob\") {\n // \"https://myaccount.blob.core.windows.net/containername/blob\".\n // .getPath() -> /containername/blob\n const pathComponents = parsedUrl.pathname.match(\"/([^/]*)(/(.*))?\");\n containerName = pathComponents[1];\n blobName = pathComponents[3];\n }\n else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob\n // .getPath() -> /devstoreaccount1/containername/blob\n const pathComponents = parsedUrl.pathname.match(\"/([^/]*)/([^/]*)(/(.*))?\");\n containerName = pathComponents[2];\n blobName = pathComponents[4];\n }\n else {\n // \"https://customdomain.com/containername/blob\".\n // .getPath() -> /containername/blob\n const pathComponents = parsedUrl.pathname.match(\"/([^/]*)(/(.*))?\");\n containerName = pathComponents[1];\n blobName = pathComponents[3];\n }\n // decode the encoded blobName, containerName - to get all the special characters that might be present in them\n containerName = decodeURIComponent(containerName);\n blobName = decodeURIComponent(blobName);\n // Azure Storage Server will replace \"\\\" with \"/\" in the blob names\n // doing the same in the SDK side so that the user doesn't have to replace \"\\\" instances in the blobName\n blobName = blobName.replace(/\\\\/g, \"/\");\n if (!containerName) {\n throw new Error(\"Provided containerName is invalid.\");\n }\n return { blobName, containerName };\n }\n catch (error) {\n throw new Error(\"Unable to extract blobName and containerName with provided information.\");\n }\n }\n /**\n * Asynchronously copies a blob to a destination within the storage account.\n * In version 2012-02-12 and later, the source for a Copy Blob operation can be\n * a committed blob in any Azure storage account.\n * Beginning with version 2015-02-21, the source for a Copy Blob operation can be\n * an Azure file in any Azure storage account.\n * Only storage accounts created on or after June 7th, 2012 allow the Copy Blob\n * operation to copy from another storage account.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob\n *\n * @param copySource - url to the source Azure Blob/File.\n * @param options - Optional options to the Blob Start Copy From URL operation.\n */\n async startCopyFromURL(copySource, options = {}) {\n return tracingClient.withSpan(\"BlobClient-startCopyFromURL\", options, async (updatedOptions) => {\n var _a, _b, _c;\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n return assertResponse(await this.blobContext.startCopyFromURL(copySource, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n metadata: options.metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n sourceModifiedAccessConditions: {\n sourceIfMatch: options.sourceConditions.ifMatch,\n sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,\n sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,\n sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,\n sourceIfTags: options.sourceConditions.tagConditions,\n },\n immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n legalHold: options.legalHold,\n rehydratePriority: options.rehydratePriority,\n tier: toAccessTier(options.tier),\n blobTagsString: toBlobTagsString(options.tags),\n sealBlob: options.sealBlob,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Only available for BlobClient constructed with a shared key credential.\n *\n * Generates a Blob Service Shared Access Signature (SAS) URI based on the client properties\n * and parameters passed in. The SAS is signed by the shared key credential of the client.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n *\n * @param options - Optional parameters.\n * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n */\n generateSasUrl(options) {\n return new Promise((resolve) => {\n if (!(this.credential instanceof StorageSharedKeyCredential)) {\n throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n }\n const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();\n resolve(appendToURLQuery(this.url, sas));\n });\n }\n /**\n * Delete the immutablility policy on the blob.\n *\n * @param options - Optional options to delete immutability policy on the blob.\n */\n async deleteImmutabilityPolicy(options = {}) {\n return tracingClient.withSpan(\"BlobClient-deleteImmutabilityPolicy\", options, async (updatedOptions) => {\n return assertResponse(await this.blobContext.deleteImmutabilityPolicy({\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Set immutability policy on the blob.\n *\n * @param options - Optional options to set immutability policy on the blob.\n */\n async setImmutabilityPolicy(immutabilityPolicy, options = {}) {\n return tracingClient.withSpan(\"BlobClient-setImmutabilityPolicy\", options, async (updatedOptions) => {\n return assertResponse(await this.blobContext.setImmutabilityPolicy({\n immutabilityPolicyExpiry: immutabilityPolicy.expiriesOn,\n immutabilityPolicyMode: immutabilityPolicy.policyMode,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Set legal hold on the blob.\n *\n * @param options - Optional options to set legal hold on the blob.\n */\n async setLegalHold(legalHoldEnabled, options = {}) {\n return tracingClient.withSpan(\"BlobClient-setLegalHold\", options, async (updatedOptions) => {\n return assertResponse(await this.blobContext.setLegalHold(legalHoldEnabled, {\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n}\n/**\n * AppendBlobClient defines a set of operations applicable to append blobs.\n */\nexport class AppendBlobClient extends BlobClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n // super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions) url = urlOrConnectionString;\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n // The second parameter is undefined. Use anonymous credential.\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n this.appendBlobContext = this.storageClientContext.appendBlob;\n }\n /**\n * Creates a new AppendBlobClient object identical to the source but with the\n * specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a Client to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.\n */\n withSnapshot(snapshot) {\n return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param options - Options to the Append Block Create operation.\n *\n *\n * Example usage:\n *\n * ```js\n * const appendBlobClient = containerClient.getAppendBlobClient(\"\");\n * await appendBlobClient.create();\n * ```\n */\n async create(options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"AppendBlobClient-create\", options, async (updatedOptions) => {\n var _a, _b, _c;\n return assertResponse(await this.appendBlobContext.create(0, {\n abortSignal: options.abortSignal,\n blobHttpHeaders: options.blobHTTPHeaders,\n leaseAccessConditions: options.conditions,\n metadata: options.metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n legalHold: options.legalHold,\n blobTagsString: toBlobTagsString(options.tags),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.\n * If the blob with the same name already exists, the content of the existing blob will remain unchanged.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param options -\n */\n async createIfNotExists(options = {}) {\n const conditions = { ifNoneMatch: ETagAny };\n return tracingClient.withSpan(\"AppendBlobClient-createIfNotExists\", options, async (updatedOptions) => {\n var _a, _b;\n try {\n const res = assertResponse(await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions })));\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobAlreadyExists\") {\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n throw e;\n }\n });\n }\n /**\n * Seals the append blob, making it read only.\n *\n * @param options -\n */\n async seal(options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"AppendBlobClient-seal\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.appendBlobContext.seal({\n abortSignal: options.abortSignal,\n appendPositionAccessConditions: options.conditions,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Commits a new block of data to the end of the existing append blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/append-block\n *\n * @param body - Data to be appended.\n * @param contentLength - Length of the body in bytes.\n * @param options - Options to the Append Block operation.\n *\n *\n * Example usage:\n *\n * ```js\n * const content = \"Hello World!\";\n *\n * // Create a new append blob and append data to the blob.\n * const newAppendBlobClient = containerClient.getAppendBlobClient(\"\");\n * await newAppendBlobClient.create();\n * await newAppendBlobClient.appendBlock(content, content.length);\n *\n * // Append data to an existing append blob.\n * const existingAppendBlobClient = containerClient.getAppendBlobClient(\"\");\n * await existingAppendBlobClient.appendBlock(content, content.length);\n * ```\n */\n async appendBlock(body, contentLength, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"AppendBlobClient-appendBlock\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.appendBlobContext.appendBlock(contentLength, body, {\n abortSignal: options.abortSignal,\n appendPositionAccessConditions: options.conditions,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n requestOptions: {\n onUploadProgress: options.onProgress,\n },\n transactionalContentMD5: options.transactionalContentMD5,\n transactionalContentCrc64: options.transactionalContentCrc64,\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * The Append Block operation commits a new block of data to the end of an existing append blob\n * where the contents are read from a source url.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url\n *\n * @param sourceURL -\n * The url to the blob that will be the source of the copy. A source blob in the same storage account can\n * be authenticated via Shared Key. However, if the source is a blob in another account, the source blob\n * must either be public or must be authenticated via a shared access signature. If the source blob is\n * public, no authentication is required to perform the operation.\n * @param sourceOffset - Offset in source to be appended\n * @param count - Number of bytes to be appended as a block\n * @param options -\n */\n async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"AppendBlobClient-appendBlockFromURL\", options, async (updatedOptions) => {\n var _a, _b, _c, _d, _e;\n return assertResponse(await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, {\n abortSignal: options.abortSignal,\n sourceRange: rangeToString({ offset: sourceOffset, count }),\n sourceContentMD5: options.sourceContentMD5,\n sourceContentCrc64: options.sourceContentCrc64,\n leaseAccessConditions: options.conditions,\n appendPositionAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n sourceModifiedAccessConditions: {\n sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n },\n copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n}\n/**\n * BlockBlobClient defines a set of operations applicable to block blobs.\n */\nexport class BlockBlobClient extends BlobClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n // super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n if (blobNameOrOptions && typeof blobNameOrOptions !== \"string\") {\n options = blobNameOrOptions;\n }\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n this.blockBlobContext = this.storageClientContext.blockBlob;\n this._blobContext = this.storageClientContext.blob;\n }\n /**\n * Creates a new BlockBlobClient object identical to the source but with the\n * specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a URL to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.\n */\n withSnapshot(snapshot) {\n return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Quick query for a JSON or CSV formatted blob.\n *\n * Example usage (Node.js):\n *\n * ```js\n * // Query and convert a blob to a string\n * const queryBlockBlobResponse = await blockBlobClient.query(\"select * from BlobStorage\");\n * const downloaded = (await streamToBuffer(queryBlockBlobResponse.readableStreamBody)).toString();\n * console.log(\"Query blob content:\", downloaded);\n *\n * async function streamToBuffer(readableStream) {\n * return new Promise((resolve, reject) => {\n * const chunks = [];\n * readableStream.on(\"data\", (data) => {\n * chunks.push(data instanceof Buffer ? data : Buffer.from(data));\n * });\n * readableStream.on(\"end\", () => {\n * resolve(Buffer.concat(chunks));\n * });\n * readableStream.on(\"error\", reject);\n * });\n * }\n * ```\n *\n * @param query -\n * @param options -\n */\n async query(query, options = {}) {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n if (!isNode) {\n throw new Error(\"This operation currently is only supported in Node.js.\");\n }\n return tracingClient.withSpan(\"BlockBlobClient-query\", options, async (updatedOptions) => {\n var _a;\n const response = assertResponse(await this._blobContext.query({\n abortSignal: options.abortSignal,\n queryRequest: {\n queryType: \"SQL\",\n expression: query,\n inputSerialization: toQuerySerialization(options.inputTextConfiguration),\n outputSerialization: toQuerySerialization(options.outputTextConfiguration),\n },\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n return new BlobQueryResponse(response, {\n abortSignal: options.abortSignal,\n onProgress: options.onProgress,\n onError: options.onError,\n });\n });\n }\n /**\n * Creates a new block blob, or updates the content of an existing block blob.\n * Updating an existing block blob overwrites any existing metadata on the blob.\n * Partial updates are not supported; the content of the existing blob is\n * overwritten with the new content. To perform a partial update of a block blob's,\n * use {@link stageBlock} and {@link commitBlockList}.\n *\n * This is a non-parallel uploading method, please use {@link uploadFile},\n * {@link uploadStream} or {@link uploadBrowserData} for better performance\n * with concurrency uploading.\n *\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function\n * which returns a new Readable stream whose offset is from data source beginning.\n * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a\n * string including non non-Base64/Hex-encoded characters.\n * @param options - Options to the Block Blob Upload operation.\n * @returns Response data for the Block Blob Upload operation.\n *\n * Example usage:\n *\n * ```js\n * const content = \"Hello world!\";\n * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);\n * ```\n */\n async upload(body, contentLength, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlockBlobClient-upload\", options, async (updatedOptions) => {\n var _a, _b, _c;\n return assertResponse(await this.blockBlobContext.upload(contentLength, body, {\n abortSignal: options.abortSignal,\n blobHttpHeaders: options.blobHTTPHeaders,\n leaseAccessConditions: options.conditions,\n metadata: options.metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n requestOptions: {\n onUploadProgress: options.onProgress,\n },\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n legalHold: options.legalHold,\n tier: toAccessTier(options.tier),\n blobTagsString: toBlobTagsString(options.tags),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Creates a new Block Blob where the contents of the blob are read from a given URL.\n * This API is supported beginning with the 2020-04-08 version. Partial updates\n * are not supported with Put Blob from URL; the content of an existing blob is overwritten with\n * the content of the new blob. To perform partial updates to a block blob’s contents using a\n * source URL, use {@link stageBlockFromURL} and {@link commitBlockList}.\n *\n * @param sourceURL - Specifies the URL of the blob. The value\n * may be a URL of up to 2 KB in length that specifies a blob.\n * The value should be URL-encoded as it would appear\n * in a request URI. The source blob must either be public\n * or must be authenticated via a shared access signature.\n * If the source blob is public, no authentication is required\n * to perform the operation. Here are some examples of source object URLs:\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=\n * @param options - Optional parameters.\n */\n async syncUploadFromURL(sourceURL, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlockBlobClient-syncUploadFromURL\", options, async (updatedOptions) => {\n var _a, _b, _c, _d, _e, _f;\n return assertResponse(await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {\n sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n sourceIfTags: (_f = options.sourceConditions) === null || _f === void 0 ? void 0 : _f.tagConditions,\n }, cpkInfo: options.customerProvidedKey, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), copySourceTags: options.copySourceTags, tracingOptions: updatedOptions.tracingOptions })));\n });\n }\n /**\n * Uploads the specified block to the block blob's \"staging area\" to be later\n * committed by a call to commitBlockList.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-block\n *\n * @param blockId - A 64-byte value that is base64-encoded\n * @param body - Data to upload to the staging area.\n * @param contentLength - Number of bytes to upload.\n * @param options - Options to the Block Blob Stage Block operation.\n * @returns Response data for the Block Blob Stage Block operation.\n */\n async stageBlock(blockId, body, contentLength, options = {}) {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlockBlobClient-stageBlock\", options, async (updatedOptions) => {\n return assertResponse(await this.blockBlobContext.stageBlock(blockId, contentLength, body, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n requestOptions: {\n onUploadProgress: options.onProgress,\n },\n transactionalContentMD5: options.transactionalContentMD5,\n transactionalContentCrc64: options.transactionalContentCrc64,\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * The Stage Block From URL operation creates a new block to be committed as part\n * of a blob where the contents are read from a URL.\n * This API is available starting in version 2018-03-28.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url\n *\n * @param blockId - A 64-byte value that is base64-encoded\n * @param sourceURL - Specifies the URL of the blob. The value\n * may be a URL of up to 2 KB in length that specifies a blob.\n * The value should be URL-encoded as it would appear\n * in a request URI. The source blob must either be public\n * or must be authenticated via a shared access signature.\n * If the source blob is public, no authentication is required\n * to perform the operation. Here are some examples of source object URLs:\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=\n * @param offset - From which position of the blob to download, greater than or equal to 0\n * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined\n * @param options - Options to the Block Blob Stage Block From URL operation.\n * @returns Response data for the Block Blob Stage Block From URL operation.\n */\n async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlockBlobClient-stageBlockFromURL\", options, async (updatedOptions) => {\n return assertResponse(await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n sourceContentMD5: options.sourceContentMD5,\n sourceContentCrc64: options.sourceContentCrc64,\n sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Writes a blob by specifying the list of block IDs that make up the blob.\n * In order to be written as part of a blob, a block must have been successfully written\n * to the server in a prior {@link stageBlock} operation. You can call {@link commitBlockList} to\n * update a blob by uploading only those blocks that have changed, then committing the new and existing\n * blocks together. Any blocks not specified in the block list and permanently deleted.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-block-list\n *\n * @param blocks - Array of 64-byte value that is base64-encoded\n * @param options - Options to the Block Blob Commit Block List operation.\n * @returns Response data for the Block Blob Commit Block List operation.\n */\n async commitBlockList(blocks, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"BlockBlobClient-commitBlockList\", options, async (updatedOptions) => {\n var _a, _b, _c;\n return assertResponse(await this.blockBlobContext.commitBlockList({ latest: blocks }, {\n abortSignal: options.abortSignal,\n blobHttpHeaders: options.blobHTTPHeaders,\n leaseAccessConditions: options.conditions,\n metadata: options.metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n legalHold: options.legalHold,\n tier: toAccessTier(options.tier),\n blobTagsString: toBlobTagsString(options.tags),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Returns the list of blocks that have been uploaded as part of a block blob\n * using the specified block list filter.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-block-list\n *\n * @param listType - Specifies whether to return the list of committed blocks,\n * the list of uncommitted blocks, or both lists together.\n * @param options - Options to the Block Blob Get Block List operation.\n * @returns Response data for the Block Blob Get Block List operation.\n */\n async getBlockList(listType, options = {}) {\n return tracingClient.withSpan(\"BlockBlobClient-getBlockList\", options, async (updatedOptions) => {\n var _a;\n const res = assertResponse(await this.blockBlobContext.getBlockList(listType, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n if (!res.committedBlocks) {\n res.committedBlocks = [];\n }\n if (!res.uncommittedBlocks) {\n res.uncommittedBlocks = [];\n }\n return res;\n });\n }\n // High level functions\n /**\n * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.\n *\n * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is\n * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.\n * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}\n * to commit the block list.\n *\n * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is\n * `blobContentType`, enabling the browser to provide\n * functionality based on file type.\n *\n * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView\n * @param options -\n */\n async uploadData(data, options = {}) {\n return tracingClient.withSpan(\"BlockBlobClient-uploadData\", options, async (updatedOptions) => {\n if (isNode) {\n let buffer;\n if (data instanceof Buffer) {\n buffer = data;\n }\n else if (data instanceof ArrayBuffer) {\n buffer = Buffer.from(data);\n }\n else {\n data = data;\n buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n }\n return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);\n }\n else {\n const browserBlob = new Blob([data]);\n return this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);\n }\n });\n }\n /**\n * ONLY AVAILABLE IN BROWSERS.\n *\n * Uploads a browser Blob/File/ArrayBuffer/ArrayBufferView object to block blob.\n *\n * When buffer length lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.\n * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call\n * {@link commitBlockList} to commit the block list.\n *\n * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is\n * `blobContentType`, enabling the browser to provide\n * functionality based on file type.\n *\n * @deprecated Use {@link uploadData} instead.\n *\n * @param browserData - Blob, File, ArrayBuffer or ArrayBufferView\n * @param options - Options to upload browser data.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadBrowserData(browserData, options = {}) {\n return tracingClient.withSpan(\"BlockBlobClient-uploadBrowserData\", options, async (updatedOptions) => {\n const browserBlob = new Blob([browserData]);\n return this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);\n });\n }\n /**\n *\n * Uploads data to block blob. Requires a bodyFactory as the data source,\n * which need to return a {@link HttpRequestBody} object with the offset and size provided.\n *\n * When data length is no more than the specified {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is\n * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.\n * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}\n * to commit the block list.\n *\n * @param bodyFactory -\n * @param size - size of the data to upload.\n * @param options - Options to Upload to Block Blob operation.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadSeekableInternal(bodyFactory, size, options = {}) {\n var _a, _b;\n let blockSize = (_a = options.blockSize) !== null && _a !== void 0 ? _a : 0;\n if (blockSize < 0 || blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {\n throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);\n }\n const maxSingleShotSize = (_b = options.maxSingleShotSize) !== null && _b !== void 0 ? _b : BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;\n if (maxSingleShotSize < 0 || maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {\n throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);\n }\n if (blockSize === 0) {\n if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {\n throw new RangeError(`${size} is too larger to upload to a block blob.`);\n }\n if (size > maxSingleShotSize) {\n blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);\n if (blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {\n blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;\n }\n }\n }\n if (!options.blobHTTPHeaders) {\n options.blobHTTPHeaders = {};\n }\n if (!options.conditions) {\n options.conditions = {};\n }\n return tracingClient.withSpan(\"BlockBlobClient-uploadSeekableInternal\", options, async (updatedOptions) => {\n if (size <= maxSingleShotSize) {\n return assertResponse(await this.upload(bodyFactory(0, size), size, updatedOptions));\n }\n const numBlocks = Math.floor((size - 1) / blockSize) + 1;\n if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {\n throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +\n `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);\n }\n const blockList = [];\n const blockIDPrefix = randomUUID();\n let transferProgress = 0;\n const batch = new Batch(options.concurrency);\n for (let i = 0; i < numBlocks; i++) {\n batch.addOperation(async () => {\n const blockID = generateBlockID(blockIDPrefix, i);\n const start = blockSize * i;\n const end = i === numBlocks - 1 ? size : start + blockSize;\n const contentLength = end - start;\n blockList.push(blockID);\n await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {\n abortSignal: options.abortSignal,\n conditions: options.conditions,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n });\n // Update progress after block is successfully uploaded to server, in case of block trying\n // TODO: Hook with convenience layer progress event in finer level\n transferProgress += contentLength;\n if (options.onProgress) {\n options.onProgress({\n loadedBytes: transferProgress,\n });\n }\n });\n }\n await batch.do();\n return this.commitBlockList(blockList, updatedOptions);\n });\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Uploads a local file in blocks to a block blob.\n *\n * When file size lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.\n * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList\n * to commit the block list.\n *\n * @param filePath - Full path of local file\n * @param options - Options to Upload to Block Blob operation.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadFile(filePath, options = {}) {\n return tracingClient.withSpan(\"BlockBlobClient-uploadFile\", options, async (updatedOptions) => {\n const size = (await fsStat(filePath)).size;\n return this.uploadSeekableInternal((offset, count) => {\n return () => fsCreateReadStream(filePath, {\n autoClose: true,\n end: count ? offset + count - 1 : Infinity,\n start: offset,\n });\n }, size, Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions }));\n });\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Uploads a Node.js Readable stream into block blob.\n *\n * PERFORMANCE IMPROVEMENT TIPS:\n * * Input stream highWaterMark is better to set a same value with bufferSize\n * parameter, which will avoid Buffer.concat() operations.\n *\n * @param stream - Node.js Readable stream\n * @param bufferSize - Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB\n * @param maxConcurrency - Max concurrency indicates the max number of buffers that can be allocated,\n * positive correlation with max uploading concurrency. Default value is 5\n * @param options - Options to Upload Stream to Block Blob operation.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {\n if (!options.blobHTTPHeaders) {\n options.blobHTTPHeaders = {};\n }\n if (!options.conditions) {\n options.conditions = {};\n }\n return tracingClient.withSpan(\"BlockBlobClient-uploadStream\", options, async (updatedOptions) => {\n let blockNum = 0;\n const blockIDPrefix = randomUUID();\n let transferProgress = 0;\n const blockList = [];\n const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {\n const blockID = generateBlockID(blockIDPrefix, blockNum);\n blockList.push(blockID);\n blockNum++;\n await this.stageBlock(blockID, body, length, {\n conditions: options.conditions,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n });\n // Update progress after block is successfully uploaded to server, in case of block trying\n transferProgress += length;\n if (options.onProgress) {\n options.onProgress({ loadedBytes: transferProgress });\n }\n }, \n // concurrency should set a smaller value than maxConcurrency, which is helpful to\n // reduce the possibility when a outgoing handler waits for stream data, in\n // this situation, outgoing handlers are blocked.\n // Outgoing queue shouldn't be empty.\n Math.ceil((maxConcurrency / 4) * 3));\n await scheduler.do();\n return assertResponse(await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions })));\n });\n }\n}\n/**\n * PageBlobClient defines a set of operations applicable to page blobs.\n */\nexport class PageBlobClient extends BlobClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n // super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n this.pageBlobContext = this.storageClientContext.pageBlob;\n }\n /**\n * Creates a new PageBlobClient object identical to the source but with the\n * specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a Client to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.\n */\n withSnapshot(snapshot) {\n return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * Creates a page blob of the specified length. Call uploadPages to upload data\n * data to a page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param size - size of the page blob.\n * @param options - Options to the Page Blob Create operation.\n * @returns Response data for the Page Blob Create operation.\n */\n async create(size, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"PageBlobClient-create\", options, async (updatedOptions) => {\n var _a, _b, _c;\n return assertResponse(await this.pageBlobContext.create(0, size, {\n abortSignal: options.abortSignal,\n blobHttpHeaders: options.blobHTTPHeaders,\n blobSequenceNumber: options.blobSequenceNumber,\n leaseAccessConditions: options.conditions,\n metadata: options.metadata,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n legalHold: options.legalHold,\n tier: toAccessTier(options.tier),\n blobTagsString: toBlobTagsString(options.tags),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Creates a page blob of the specified length. Call uploadPages to upload data\n * data to a page blob. If the blob with the same name already exists, the content\n * of the existing blob will remain unchanged.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param size - size of the page blob.\n * @param options -\n */\n async createIfNotExists(size, options = {}) {\n return tracingClient.withSpan(\"PageBlobClient-createIfNotExists\", options, async (updatedOptions) => {\n var _a, _b;\n try {\n const conditions = { ifNoneMatch: ETagAny };\n const res = assertResponse(await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions })));\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobAlreadyExists\") {\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n throw e;\n }\n });\n }\n /**\n * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-page\n *\n * @param body - Data to upload\n * @param offset - Offset of destination page blob\n * @param count - Content length of the body, also number of bytes to be uploaded\n * @param options - Options to the Page Blob Upload Pages operation.\n * @returns Response data for the Page Blob Upload Pages operation.\n */\n async uploadPages(body, offset, count, options = {}) {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"PageBlobClient-uploadPages\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.uploadPages(count, body, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n requestOptions: {\n onUploadProgress: options.onProgress,\n },\n range: rangeToString({ offset, count }),\n sequenceNumberAccessConditions: options.conditions,\n transactionalContentMD5: options.transactionalContentMD5,\n transactionalContentCrc64: options.transactionalContentCrc64,\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * The Upload Pages operation writes a range of pages to a page blob where the\n * contents are read from a URL.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url\n *\n * @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication\n * @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source page blob\n * @param destOffset - Offset of destination page blob\n * @param count - Number of bytes to be uploaded from source page blob\n * @param options -\n */\n async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return tracingClient.withSpan(\"PageBlobClient-uploadPagesFromURL\", options, async (updatedOptions) => {\n var _a, _b, _c, _d, _e;\n return assertResponse(await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), {\n abortSignal: options.abortSignal,\n sourceContentMD5: options.sourceContentMD5,\n sourceContentCrc64: options.sourceContentCrc64,\n leaseAccessConditions: options.conditions,\n sequenceNumberAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n sourceModifiedAccessConditions: {\n sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n },\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Frees the specified pages from the page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-page\n *\n * @param offset - Starting byte position of the pages to clear.\n * @param count - Number of bytes to clear.\n * @param options - Options to the Page Blob Clear Pages operation.\n * @returns Response data for the Page Blob Clear Pages operation.\n */\n async clearPages(offset = 0, count, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"PageBlobClient-clearPages\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.clearPages(0, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n range: rangeToString({ offset, count }),\n sequenceNumberAccessConditions: options.conditions,\n cpkInfo: options.customerProvidedKey,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Returns the list of valid page ranges for a page blob or snapshot of a page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param options - Options to the Page Blob Get Ranges operation.\n * @returns Response data for the Page Blob Get Ranges operation.\n */\n async getPageRanges(offset = 0, count, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"PageBlobClient-getPageRanges\", options, async (updatedOptions) => {\n var _a;\n const response = assertResponse(await this.pageBlobContext.getPageRanges({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n range: rangeToString({ offset, count }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n return rangeResponseFromModel(response);\n });\n }\n /**\n * getPageRangesSegment returns a single segment of page ranges starting from the\n * specified Marker. Use an empty Marker to start enumeration from the beginning.\n * After getting a segment, process it, and then call getPageRangesSegment again\n * (passing the the previously-returned Marker) to get the next segment.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n * @param options - Options to PageBlob Get Page Ranges Segment operation.\n */\n async listPageRangesSegment(offset = 0, count, marker, options = {}) {\n return tracingClient.withSpan(\"PageBlobClient-getPageRangesSegment\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.getPageRanges({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n range: rangeToString({ offset, count }),\n marker: marker,\n maxPageSize: options.maxPageSize,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Returns an AsyncIterableIterator for {@link PageBlobGetPageRangesResponseModel}\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param marker - A string value that identifies the portion of\n * the get of page ranges to be returned with the next getting operation. The\n * operation returns the ContinuationToken value within the response body if the\n * getting operation did not return all page ranges remaining within the current page.\n * The ContinuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of get\n * items. The marker value is opaque to the client.\n * @param options - Options to List Page Ranges operation.\n */\n listPageRangeItemSegments() {\n return __asyncGenerator(this, arguments, function* listPageRangeItemSegments_1(offset = 0, count, marker, options = {}) {\n let getPageRangeItemSegmentsResponse;\n if (!!marker || marker === undefined) {\n do {\n getPageRangeItemSegmentsResponse = yield __await(this.listPageRangesSegment(offset, count, marker, options));\n marker = getPageRangeItemSegmentsResponse.continuationToken;\n yield yield __await(yield __await(getPageRangeItemSegmentsResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator of {@link PageRangeInfo} objects\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param options - Options to List Page Ranges operation.\n */\n listPageRangeItems() {\n return __asyncGenerator(this, arguments, function* listPageRangeItems_1(offset = 0, count, options = {}) {\n var _a, e_1, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.listPageRangeItemSegments(offset, count, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const getPageRangesSegment = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(ExtractPageRangeInfoItems(getPageRangesSegment))));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list of page ranges for a page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * .byPage() returns an async iterable iterator to list of page ranges for a page blob.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * // Get the pageBlobClient before you run these snippets,\n * // Can be obtained from `blobServiceClient.getContainerClient(\"\").getPageBlobClient(\"\");`\n * let i = 1;\n * for await (const pageRange of pageBlobClient.listPageRanges()) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * let iter = pageBlobClient.listPageRanges();\n * let pageRangeItem = await iter.next();\n * while (!pageRangeItem.done) {\n * console.log(`Page range ${i++}: ${pageRangeItem.value.start} - ${pageRangeItem.value.end}, IsClear: ${pageRangeItem.value.isClear}`);\n * pageRangeItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of pageBlobClient.listPageRanges().byPage({ maxPageSize: 20 })) {\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = pageBlobClient.listPageRanges().byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 page ranges\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n *\n * // Passing next marker as continuationToken\n *\n * iterator = pageBlobClient.listPageRanges().byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints 10 page ranges\n * for (const blob of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param options - Options to the Page Blob Get Ranges operation.\n * @returns An asyncIterableIterator that supports paging.\n */\n listPageRanges(offset = 0, count, options = {}) {\n options.conditions = options.conditions || {};\n // AsyncIterableIterator to iterate over blobs\n const iter = this.listPageRangeItems(offset, count, options);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listPageRangeItemSegments(offset, count, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, options));\n },\n };\n }\n /**\n * Gets the collection of page ranges that differ between a specified snapshot and this page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page blob\n * @param count - Number of bytes to get ranges diff.\n * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n * @returns Response data for the Page Blob Get Page Range Diff operation.\n */\n async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"PageBlobClient-getPageRangesDiff\", options, async (updatedOptions) => {\n var _a;\n const result = assertResponse(await this.pageBlobContext.getPageRangesDiff({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n prevsnapshot: prevSnapshot,\n range: rangeToString({ offset, count }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n return rangeResponseFromModel(result);\n });\n }\n /**\n * getPageRangesDiffSegment returns a single segment of page ranges starting from the\n * specified Marker for difference between previous snapshot and the target page blob.\n * Use an empty Marker to start enumeration from the beginning.\n * After getting a segment, process it, and then call getPageRangesDiffSegment again\n * (passing the the previously-returned Marker) to get the next segment.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n * @param marker - A string value that identifies the portion of the get to be returned with the next get operation.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n */\n async listPageRangesDiffSegment(offset, count, prevSnapshotOrUrl, marker, options = {}) {\n return tracingClient.withSpan(\"PageBlobClient-getPageRangesDiffSegment\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.getPageRangesDiff({\n abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,\n leaseAccessConditions: options === null || options === void 0 ? void 0 : options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.conditions), { ifTags: (_a = options === null || options === void 0 ? void 0 : options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n prevsnapshot: prevSnapshotOrUrl,\n range: rangeToString({\n offset: offset,\n count: count,\n }),\n marker: marker,\n maxPageSize: options === null || options === void 0 ? void 0 : options.maxPageSize,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Returns an AsyncIterableIterator for {@link PageBlobGetPageRangesDiffResponseModel}\n *\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n * @param marker - A string value that identifies the portion of\n * the get of page ranges to be returned with the next getting operation. The\n * operation returns the ContinuationToken value within the response body if the\n * getting operation did not return all page ranges remaining within the current page.\n * The ContinuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of get\n * items. The marker value is opaque to the client.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n */\n listPageRangeDiffItemSegments(offset, count, prevSnapshotOrUrl, marker, options) {\n return __asyncGenerator(this, arguments, function* listPageRangeDiffItemSegments_1() {\n let getPageRangeItemSegmentsResponse;\n if (!!marker || marker === undefined) {\n do {\n getPageRangeItemSegmentsResponse = yield __await(this.listPageRangesDiffSegment(offset, count, prevSnapshotOrUrl, marker, options));\n marker = getPageRangeItemSegmentsResponse.continuationToken;\n yield yield __await(yield __await(getPageRangeItemSegmentsResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator of {@link PageRangeInfo} objects\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n */\n listPageRangeDiffItems(offset, count, prevSnapshotOrUrl, options) {\n return __asyncGenerator(this, arguments, function* listPageRangeDiffItems_1() {\n var _a, e_2, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.listPageRangeDiffItemSegments(offset, count, prevSnapshotOrUrl, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const getPageRangesSegment = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(ExtractPageRangeInfoItems(getPageRangesSegment))));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list of page ranges that differ between a specified snapshot and this page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * .byPage() returns an async iterable iterator to list of page ranges that differ between a specified snapshot and this page blob.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * // Get the pageBlobClient before you run these snippets,\n * // Can be obtained from `blobServiceClient.getContainerClient(\"\").getPageBlobClient(\"\");`\n * let i = 1;\n * for await (const pageRange of pageBlobClient.listPageRangesDiff()) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * let iter = pageBlobClient.listPageRangesDiff();\n * let pageRangeItem = await iter.next();\n * while (!pageRangeItem.done) {\n * console.log(`Page range ${i++}: ${pageRangeItem.value.start} - ${pageRangeItem.value.end}, IsClear: ${pageRangeItem.value.isClear}`);\n * pageRangeItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of pageBlobClient.listPageRangesDiff().byPage({ maxPageSize: 20 })) {\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = pageBlobClient.listPageRangesDiff().byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 page ranges\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n *\n * // Passing next marker as continuationToken\n *\n * iterator = pageBlobClient.listPageRangesDiff().byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints 10 page ranges\n * for (const blob of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Ranges operation.\n * @returns An asyncIterableIterator that supports paging.\n */\n listPageRangesDiff(offset, count, prevSnapshot, options = {}) {\n options.conditions = options.conditions || {};\n // AsyncIterableIterator to iterate over blobs\n const iter = this.listPageRangeDiffItems(offset, count, prevSnapshot, Object.assign({}, options));\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listPageRangeDiffItemSegments(offset, count, prevSnapshot, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, options));\n },\n };\n }\n /**\n * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page blob\n * @param count - Number of bytes to get ranges diff.\n * @param prevSnapshotUrl - URL of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n * @returns Response data for the Page Blob Get Page Range Diff operation.\n */\n async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"PageBlobClient-GetPageRangesDiffForManagedDisks\", options, async (updatedOptions) => {\n var _a;\n const response = assertResponse(await this.pageBlobContext.getPageRangesDiff({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n prevSnapshotUrl,\n range: rangeToString({ offset, count }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n return rangeResponseFromModel(response);\n });\n }\n /**\n * Resizes the page blob to the specified size (which must be a multiple of 512).\n * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties\n *\n * @param size - Target size\n * @param options - Options to the Page Blob Resize operation.\n * @returns Response data for the Page Blob Resize operation.\n */\n async resize(size, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"PageBlobClient-resize\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.resize(size, {\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Sets a page blob's sequence number.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties\n *\n * @param sequenceNumberAction - Indicates how the service should modify the blob's sequence number.\n * @param sequenceNumber - Required if sequenceNumberAction is max or update\n * @param options - Options to the Page Blob Update Sequence Number operation.\n * @returns Response data for the Page Blob Update Sequence Number operation.\n */\n async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"PageBlobClient-updateSequenceNumber\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, {\n abortSignal: options.abortSignal,\n blobSequenceNumber: sequenceNumber,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.\n * The snapshot is copied such that only the differential changes between the previously\n * copied snapshot are transferred to the destination.\n * The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual.\n * @see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob\n * @see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots\n *\n * @param copySource - Specifies the name of the source page blob snapshot. For example,\n * https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=\n * @param options - Options to the Page Blob Copy Incremental operation.\n * @returns Response data for the Page Blob Copy Incremental operation.\n */\n async startCopyIncremental(copySource, options = {}) {\n return tracingClient.withSpan(\"PageBlobClient-startCopyIncremental\", options, async (updatedOptions) => {\n var _a;\n return assertResponse(await this.pageBlobContext.copyIncremental(copySource, {\n abortSignal: options.abortSignal,\n modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n}\n//# sourceMappingURL=Clients.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { blobToString } from \"./utils/utils.browser\";\nexport async function getBodyAsText(batchResponse) {\n const blob = (await batchResponse.blobBody);\n return blobToString(blob);\n}\nexport function utf8ByteLength(str) {\n return new Blob([str]).size;\n}\n//# sourceMappingURL=BatchUtils.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { toHttpHeadersLike } from \"@azure/core-http-compat\";\nimport { HTTP_VERSION_1_1, HTTP_LINE_ENDING, HeaderConstants, HTTPURLConnection, } from \"./utils/constants\";\nimport { getBodyAsText } from \"./BatchUtils\";\nimport { logger } from \"./log\";\nconst HTTP_HEADER_DELIMITER = \": \";\nconst SPACE_DELIMITER = \" \";\nconst NOT_FOUND = -1;\n/**\n * Util class for parsing batch response.\n */\nexport class BatchResponseParser {\n constructor(batchResponse, subRequests) {\n if (!batchResponse || !batchResponse.contentType) {\n // In special case(reported), server may return invalid content-type which could not be parsed.\n throw new RangeError(\"batchResponse is malformed or doesn't contain valid content-type.\");\n }\n if (!subRequests || subRequests.size === 0) {\n // This should be prevent during coding.\n throw new RangeError(\"Invalid state: subRequests is not provided or size is 0.\");\n }\n this.batchResponse = batchResponse;\n this.subRequests = subRequests;\n this.responseBatchBoundary = this.batchResponse.contentType.split(\"=\")[1];\n this.perResponsePrefix = `--${this.responseBatchBoundary}${HTTP_LINE_ENDING}`;\n this.batchResponseEnding = `--${this.responseBatchBoundary}--`;\n }\n // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response\n async parseBatchResponse() {\n // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse\n // sub request's response.\n if (this.batchResponse._response.status !== HTTPURLConnection.HTTP_ACCEPTED) {\n throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`);\n }\n const responseBodyAsText = await getBodyAsText(this.batchResponse);\n const subResponses = responseBodyAsText\n .split(this.batchResponseEnding)[0] // string after ending is useless\n .split(this.perResponsePrefix)\n .slice(1); // string before first response boundary is useless\n const subResponseCount = subResponses.length;\n // Defensive coding in case of potential error parsing.\n // Note: subResponseCount == 1 is special case where sub request is invalid.\n // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.\n // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.\n if (subResponseCount !== this.subRequests.size && subResponseCount !== 1) {\n throw new Error(\"Invalid state: sub responses' count is not equal to sub requests' count.\");\n }\n const deserializedSubResponses = new Array(subResponseCount);\n let subResponsesSucceededCount = 0;\n let subResponsesFailedCount = 0;\n // Parse sub subResponses.\n for (let index = 0; index < subResponseCount; index++) {\n const subResponse = subResponses[index];\n const deserializedSubResponse = {};\n deserializedSubResponse.headers = toHttpHeadersLike(createHttpHeaders());\n const responseLines = subResponse.split(`${HTTP_LINE_ENDING}`);\n let subRespHeaderStartFound = false;\n let subRespHeaderEndFound = false;\n let subRespFailed = false;\n let contentId = NOT_FOUND;\n for (const responseLine of responseLines) {\n if (!subRespHeaderStartFound) {\n // Convention line to indicate content ID\n if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {\n contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);\n }\n // Http version line with status code indicates the start of sub request's response.\n // Example: HTTP/1.1 202 Accepted\n if (responseLine.startsWith(HTTP_VERSION_1_1)) {\n subRespHeaderStartFound = true;\n const tokens = responseLine.split(SPACE_DELIMITER);\n deserializedSubResponse.status = parseInt(tokens[1]);\n deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);\n }\n continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *\n }\n if (responseLine.trim() === \"\") {\n // Sub response's header start line already found, and the first empty line indicates header end line found.\n if (!subRespHeaderEndFound) {\n subRespHeaderEndFound = true;\n }\n continue; // Skip empty line\n }\n // Note: when code reach here, it indicates subRespHeaderStartFound == true\n if (!subRespHeaderEndFound) {\n if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {\n // Defensive coding to prevent from missing valuable lines.\n throw new Error(`Invalid state: find non-empty line '${responseLine}' without HTTP header delimiter '${HTTP_HEADER_DELIMITER}'.`);\n }\n // Parse headers of sub response.\n const tokens = responseLine.split(HTTP_HEADER_DELIMITER);\n deserializedSubResponse.headers.set(tokens[0], tokens[1]);\n if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {\n deserializedSubResponse.errorCode = tokens[1];\n subRespFailed = true;\n }\n }\n else {\n // Assemble body of sub response.\n if (!deserializedSubResponse.bodyAsText) {\n deserializedSubResponse.bodyAsText = \"\";\n }\n deserializedSubResponse.bodyAsText += responseLine;\n }\n } // Inner for end\n // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.\n // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it\n // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that\n // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.\n if (contentId !== NOT_FOUND &&\n Number.isInteger(contentId) &&\n contentId >= 0 &&\n contentId < this.subRequests.size &&\n deserializedSubResponses[contentId] === undefined) {\n deserializedSubResponse._request = this.subRequests.get(contentId);\n deserializedSubResponses[contentId] = deserializedSubResponse;\n }\n else {\n logger.error(`subResponses[${index}] is dropped as the Content-ID is not found or invalid, Content-ID: ${contentId}`);\n }\n if (subRespFailed) {\n subResponsesFailedCount++;\n }\n else {\n subResponsesSucceededCount++;\n }\n }\n return {\n subResponses: deserializedSubResponses,\n subResponsesSucceededCount: subResponsesSucceededCount,\n subResponsesFailedCount: subResponsesFailedCount,\n };\n }\n}\n//# sourceMappingURL=BatchResponseParser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar MutexLockStatus;\n(function (MutexLockStatus) {\n MutexLockStatus[MutexLockStatus[\"LOCKED\"] = 0] = \"LOCKED\";\n MutexLockStatus[MutexLockStatus[\"UNLOCKED\"] = 1] = \"UNLOCKED\";\n})(MutexLockStatus || (MutexLockStatus = {}));\n/**\n * An async mutex lock.\n */\nexport class Mutex {\n /**\n * Lock for a specific key. If the lock has been acquired by another customer, then\n * will wait until getting the lock.\n *\n * @param key - lock key\n */\n static async lock(key) {\n return new Promise((resolve) => {\n if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {\n this.keys[key] = MutexLockStatus.LOCKED;\n resolve();\n }\n else {\n this.onUnlockEvent(key, () => {\n this.keys[key] = MutexLockStatus.LOCKED;\n resolve();\n });\n }\n });\n }\n /**\n * Unlock a key.\n *\n * @param key -\n */\n static async unlock(key) {\n return new Promise((resolve) => {\n if (this.keys[key] === MutexLockStatus.LOCKED) {\n this.emitUnlockEvent(key);\n }\n delete this.keys[key];\n resolve();\n });\n }\n static onUnlockEvent(key, handler) {\n if (this.listeners[key] === undefined) {\n this.listeners[key] = [handler];\n }\n else {\n this.listeners[key].push(handler);\n }\n }\n static emitUnlockEvent(key) {\n if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {\n const handler = this.listeners[key].shift();\n setImmediate(() => {\n handler.call(this);\n });\n }\n }\n}\nMutex.keys = {};\nMutex.listeners = {};\n//# sourceMappingURL=Mutex.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/** Known values of {@link EncryptionAlgorithmType} that the service accepts. */\nexport var KnownEncryptionAlgorithmType;\n(function (KnownEncryptionAlgorithmType) {\n KnownEncryptionAlgorithmType[\"AES256\"] = \"AES256\";\n})(KnownEncryptionAlgorithmType || (KnownEncryptionAlgorithmType = {}));\n//# sourceMappingURL=generatedModels.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { randomUUID } from \"@azure/core-util\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { bearerTokenAuthenticationPolicy, createEmptyPipeline, createHttpHeaders, } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { BlobClient } from \"./Clients\";\nimport { Mutex } from \"./utils/Mutex\";\nimport { Pipeline } from \"./Pipeline\";\nimport { getURLPath, getURLPathAndQuery, iEqual } from \"./utils/utils.common\";\nimport { stringifyXML } from \"@azure/core-xml\";\nimport { HeaderConstants, BATCH_MAX_REQUEST, HTTP_VERSION_1_1, HTTP_LINE_ENDING, StorageOAuthScopes, } from \"./utils/constants\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { authorizeRequestOnTenantChallenge, serializationPolicy } from \"@azure/core-client\";\nimport { storageSharedKeyCredentialPolicy } from \"./policies/StorageSharedKeyCredentialPolicyV2\";\n/**\n * A BlobBatch represents an aggregated set of operations on blobs.\n * Currently, only `delete` and `setAccessTier` are supported.\n */\nexport class BlobBatch {\n constructor() {\n this.batch = \"batch\";\n this.batchRequest = new InnerBatchRequest();\n }\n /**\n * Get the value of Content-Type for a batch request.\n * The value must be multipart/mixed with a batch boundary.\n * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252\n */\n getMultiPartContentType() {\n return this.batchRequest.getMultipartContentType();\n }\n /**\n * Get assembled HTTP request body for sub requests.\n */\n getHttpRequestBody() {\n return this.batchRequest.getHttpRequestBody();\n }\n /**\n * Get sub requests that are added into the batch request.\n */\n getSubRequests() {\n return this.batchRequest.getSubRequests();\n }\n async addSubRequestInternal(subRequest, assembleSubRequestFunc) {\n await Mutex.lock(this.batch);\n try {\n this.batchRequest.preAddSubRequest(subRequest);\n await assembleSubRequestFunc();\n this.batchRequest.postAddSubRequest(subRequest);\n }\n finally {\n await Mutex.unlock(this.batch);\n }\n }\n setBatchType(batchType) {\n if (!this.batchType) {\n this.batchType = batchType;\n }\n if (this.batchType !== batchType) {\n throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`);\n }\n }\n async deleteBlob(urlOrBlobClient, credentialOrOptions, options) {\n let url;\n let credential;\n if (typeof urlOrBlobClient === \"string\" &&\n ((isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||\n credentialOrOptions instanceof AnonymousCredential ||\n isTokenCredential(credentialOrOptions))) {\n // First overload\n url = urlOrBlobClient;\n credential = credentialOrOptions;\n }\n else if (urlOrBlobClient instanceof BlobClient) {\n // Second overload\n url = urlOrBlobClient.url;\n credential = urlOrBlobClient.credential;\n options = credentialOrOptions;\n }\n else {\n throw new RangeError(\"Invalid arguments. Either url and credential, or BlobClient need be provided.\");\n }\n if (!options) {\n options = {};\n }\n return tracingClient.withSpan(\"BatchDeleteRequest-addSubRequest\", options, async (updatedOptions) => {\n this.setBatchType(\"delete\");\n await this.addSubRequestInternal({\n url: url,\n credential: credential,\n }, async () => {\n await new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions);\n });\n });\n }\n async setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options) {\n let url;\n let credential;\n let tier;\n if (typeof urlOrBlobClient === \"string\" &&\n ((isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||\n credentialOrTier instanceof AnonymousCredential ||\n isTokenCredential(credentialOrTier))) {\n // First overload\n url = urlOrBlobClient;\n credential = credentialOrTier;\n tier = tierOrOptions;\n }\n else if (urlOrBlobClient instanceof BlobClient) {\n // Second overload\n url = urlOrBlobClient.url;\n credential = urlOrBlobClient.credential;\n tier = credentialOrTier;\n options = tierOrOptions;\n }\n else {\n throw new RangeError(\"Invalid arguments. Either url and credential, or BlobClient need be provided.\");\n }\n if (!options) {\n options = {};\n }\n return tracingClient.withSpan(\"BatchSetTierRequest-addSubRequest\", options, async (updatedOptions) => {\n this.setBatchType(\"setAccessTier\");\n await this.addSubRequestInternal({\n url: url,\n credential: credential,\n }, async () => {\n await new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions);\n });\n });\n }\n}\n/**\n * Inner batch request class which is responsible for assembling and serializing sub requests.\n * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.\n */\nclass InnerBatchRequest {\n constructor() {\n this.operationCount = 0;\n this.body = \"\";\n const tempGuid = randomUUID();\n // batch_{batchid}\n this.boundary = `batch_${tempGuid}`;\n // --batch_{batchid}\n // Content-Type: application/http\n // Content-Transfer-Encoding: binary\n this.subRequestPrefix = `--${this.boundary}${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TYPE}: application/http${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TRANSFER_ENCODING}: binary`;\n // multipart/mixed; boundary=batch_{batchid}\n this.multipartContentType = `multipart/mixed; boundary=${this.boundary}`;\n // --batch_{batchid}--\n this.batchRequestEnding = `--${this.boundary}--`;\n this.subRequests = new Map();\n }\n /**\n * Create pipeline to assemble sub requests. The idea here is to use existing\n * credential and serialization/deserialization components, with additional policies to\n * filter unnecessary headers, assemble sub requests into request's body\n * and intercept request from going to wire.\n * @param credential - Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.\n */\n createPipeline(credential) {\n const corePipeline = createEmptyPipeline();\n corePipeline.addPolicy(serializationPolicy({\n stringifyXML,\n serializerOptions: {\n xml: {\n xmlCharKey: \"#\",\n },\n },\n }), { phase: \"Serialize\" });\n // Use batch header filter policy to exclude unnecessary headers\n corePipeline.addPolicy(batchHeaderFilterPolicy());\n // Use batch assemble policy to assemble request and intercept request from going to wire\n corePipeline.addPolicy(batchRequestAssemblePolicy(this), { afterPhase: \"Sign\" });\n if (isTokenCredential(credential)) {\n corePipeline.addPolicy(bearerTokenAuthenticationPolicy({\n credential,\n scopes: StorageOAuthScopes,\n challengeCallbacks: { authorizeRequestOnChallenge: authorizeRequestOnTenantChallenge },\n }), { phase: \"Sign\" });\n }\n else if (credential instanceof StorageSharedKeyCredential) {\n corePipeline.addPolicy(storageSharedKeyCredentialPolicy({\n accountName: credential.accountName,\n accountKey: credential.accountKey,\n }), { phase: \"Sign\" });\n }\n const pipeline = new Pipeline([]);\n // attach the v2 pipeline to this one\n pipeline._credential = credential;\n pipeline._corePipeline = corePipeline;\n return pipeline;\n }\n appendSubRequestToBody(request) {\n // Start to assemble sub request\n this.body += [\n this.subRequestPrefix, // sub request constant prefix\n `${HeaderConstants.CONTENT_ID}: ${this.operationCount}`, // sub request's content ID\n \"\", // empty line after sub request's content ID\n `${request.method.toString()} ${getURLPathAndQuery(request.url)} ${HTTP_VERSION_1_1}${HTTP_LINE_ENDING}`, // sub request start line with method\n ].join(HTTP_LINE_ENDING);\n for (const [name, value] of request.headers) {\n this.body += `${name}: ${value}${HTTP_LINE_ENDING}`;\n }\n this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line\n // No body to assemble for current batch request support\n // End to assemble sub request\n }\n preAddSubRequest(subRequest) {\n if (this.operationCount >= BATCH_MAX_REQUEST) {\n throw new RangeError(`Cannot exceed ${BATCH_MAX_REQUEST} sub requests in a single batch`);\n }\n // Fast fail if url for sub request is invalid\n const path = getURLPath(subRequest.url);\n if (!path || path === \"\") {\n throw new RangeError(`Invalid url for sub request: '${subRequest.url}'`);\n }\n }\n postAddSubRequest(subRequest) {\n this.subRequests.set(this.operationCount, subRequest);\n this.operationCount++;\n }\n // Return the http request body with assembling the ending line to the sub request body.\n getHttpRequestBody() {\n return `${this.body}${this.batchRequestEnding}${HTTP_LINE_ENDING}`;\n }\n getMultipartContentType() {\n return this.multipartContentType;\n }\n getSubRequests() {\n return this.subRequests;\n }\n}\nfunction batchRequestAssemblePolicy(batchRequest) {\n return {\n name: \"batchRequestAssemblePolicy\",\n async sendRequest(request) {\n batchRequest.appendSubRequestToBody(request);\n return {\n request,\n status: 200,\n headers: createHttpHeaders(),\n };\n },\n };\n}\nfunction batchHeaderFilterPolicy() {\n return {\n name: \"batchHeaderFilterPolicy\",\n async sendRequest(request, next) {\n let xMsHeaderName = \"\";\n for (const [name] of request.headers) {\n if (iEqual(name, HeaderConstants.X_MS_VERSION)) {\n xMsHeaderName = name;\n }\n }\n if (xMsHeaderName !== \"\") {\n request.headers.delete(xMsHeaderName); // The subrequests should not have the x-ms-version header.\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=BlobBatch.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BatchResponseParser } from \"./BatchResponseParser\";\nimport { utf8ByteLength } from \"./BatchUtils\";\nimport { BlobBatch } from \"./BlobBatch\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageContextClient } from \"./StorageContextClient\";\nimport { newPipeline, isPipelineLike, getCoreClientOptions, } from \"./Pipeline\";\nimport { assertResponse, getURLPath } from \"./utils/utils.common\";\n/**\n * A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n */\nexport class BlobBatchClient {\n constructor(url, credentialOrPipeline, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n let pipeline;\n if (isPipelineLike(credentialOrPipeline)) {\n pipeline = credentialOrPipeline;\n }\n else if (!credentialOrPipeline) {\n // no credential provided\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n pipeline = newPipeline(credentialOrPipeline, options);\n }\n const storageClientContext = new StorageContextClient(url, getCoreClientOptions(pipeline));\n const path = getURLPath(url);\n if (path && path !== \"/\") {\n // Container scoped.\n this.serviceOrContainerContext = storageClientContext.container;\n }\n else {\n this.serviceOrContainerContext = storageClientContext.service;\n }\n }\n /**\n * Creates a {@link BlobBatch}.\n * A BlobBatch represents an aggregated set of operations on blobs.\n */\n createBatch() {\n return new BlobBatch();\n }\n async deleteBlobs(urlsOrBlobClients, credentialOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n const batch = new BlobBatch();\n for (const urlOrBlobClient of urlsOrBlobClients) {\n if (typeof urlOrBlobClient === \"string\") {\n await batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options);\n }\n else {\n await batch.deleteBlob(urlOrBlobClient, credentialOrOptions);\n }\n }\n return this.submitBatch(batch);\n }\n async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n const batch = new BlobBatch();\n for (const urlOrBlobClient of urlsOrBlobClients) {\n if (typeof urlOrBlobClient === \"string\") {\n await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options);\n }\n else {\n await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions);\n }\n }\n return this.submitBatch(batch);\n }\n /**\n * Submit batch request which consists of multiple subrequests.\n *\n * Get `blobBatchClient` and other details before running the snippets.\n * `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`\n *\n * Example usage:\n *\n * ```js\n * let batchRequest = new BlobBatch();\n * await batchRequest.deleteBlob(urlInString0, credential0);\n * await batchRequest.deleteBlob(urlInString1, credential1, {\n * deleteSnapshots: \"include\"\n * });\n * const batchResp = await blobBatchClient.submitBatch(batchRequest);\n * console.log(batchResp.subResponsesSucceededCount);\n * ```\n *\n * Example using a lease:\n *\n * ```js\n * let batchRequest = new BlobBatch();\n * await batchRequest.setBlobAccessTier(blockBlobClient0, \"Cool\");\n * await batchRequest.setBlobAccessTier(blockBlobClient1, \"Cool\", {\n * conditions: { leaseId: leaseId }\n * });\n * const batchResp = await blobBatchClient.submitBatch(batchRequest);\n * console.log(batchResp.subResponsesSucceededCount);\n * ```\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n *\n * @param batchRequest - A set of Delete or SetTier operations.\n * @param options -\n */\n async submitBatch(batchRequest, options = {}) {\n if (!batchRequest || batchRequest.getSubRequests().size === 0) {\n throw new RangeError(\"Batch request should contain one or more sub requests.\");\n }\n return tracingClient.withSpan(\"BlobBatchClient-submitBatch\", options, async (updatedOptions) => {\n const batchRequestBody = batchRequest.getHttpRequestBody();\n // ServiceSubmitBatchResponseModel and ContainerSubmitBatchResponse are compatible for now.\n const rawBatchResponse = assertResponse(await this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, Object.assign({}, updatedOptions)));\n // Parse the sub responses result, if logic reaches here(i.e. the batch request succeeded with status code 202).\n const batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());\n const responseSummary = await batchResponseParser.parseBatchResponse();\n const res = {\n _response: rawBatchResponse._response,\n contentType: rawBatchResponse.contentType,\n errorCode: rawBatchResponse.errorCode,\n requestId: rawBatchResponse.requestId,\n clientRequestId: rawBatchResponse.clientRequestId,\n version: rawBatchResponse.version,\n subResponses: responseSummary.subResponses,\n subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,\n subResponsesFailedCount: responseSummary.subResponsesFailedCount,\n };\n return res;\n });\n }\n}\n//# sourceMappingURL=BlobBatchClient.js.map","import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { getDefaultProxySettings, } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { StorageClient } from \"./StorageClient\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { appendToURLPath, appendToURLQuery, assertResponse, BlobNameToString, ConvertInternalResponseOfListBlobFlat, ConvertInternalResponseOfListBlobHierarchy, EscapePath, extractConnectionStringParts, isIpEndpointStyle, parseObjectReplicationRecord, toTags, truncatedISO8061Date, } from \"./utils/utils.common\";\nimport { generateBlobSASQueryParameters } from \"./sas/BlobSASSignatureValues\";\nimport { BlobLeaseClient } from \"./BlobLeaseClient\";\nimport { AppendBlobClient, BlobClient, BlockBlobClient, PageBlobClient, } from \"./Clients\";\nimport { BlobBatchClient } from \"./BlobBatchClient\";\n/**\n * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.\n */\nexport class ContainerClient extends StorageClient {\n /**\n * The name of the container.\n */\n get containerName() {\n return this._containerName;\n }\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName parameter\");\n }\n super(url, pipeline);\n this._containerName = this.getContainerNameFromUrl();\n this.containerContext = this.storageClientContext.container;\n }\n /**\n * Creates a new container under the specified account. If the container with\n * the same name already exists, the operation fails.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container\n * Naming rules: @see https://learn.microsoft.com/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n *\n * @param options - Options to Container Create operation.\n *\n *\n * Example usage:\n *\n * ```js\n * const containerClient = blobServiceClient.getContainerClient(\"\");\n * const createContainerResponse = await containerClient.create();\n * console.log(\"Container was created successfully\", createContainerResponse.requestId);\n * ```\n */\n async create(options = {}) {\n return tracingClient.withSpan(\"ContainerClient-create\", options, async (updatedOptions) => {\n return assertResponse(await this.containerContext.create(updatedOptions));\n });\n }\n /**\n * Creates a new container under the specified account. If the container with\n * the same name already exists, it is not changed.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container\n * Naming rules: @see https://learn.microsoft.com/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n *\n * @param options -\n */\n async createIfNotExists(options = {}) {\n return tracingClient.withSpan(\"ContainerClient-createIfNotExists\", options, async (updatedOptions) => {\n var _a, _b;\n try {\n const res = await this.create(updatedOptions);\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"ContainerAlreadyExists\") {\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n else {\n throw e;\n }\n }\n });\n }\n /**\n * Returns true if the Azure container resource represented by this client exists; false otherwise.\n *\n * NOTE: use this function with care since an existing container might be deleted by other clients or\n * applications. Vice versa new containers with the same name might be added by other clients or\n * applications after this function completes.\n *\n * @param options -\n */\n async exists(options = {}) {\n return tracingClient.withSpan(\"ContainerClient-exists\", options, async (updatedOptions) => {\n try {\n await this.getProperties({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n return true;\n }\n catch (e) {\n if (e.statusCode === 404) {\n return false;\n }\n throw e;\n }\n });\n }\n /**\n * Creates a {@link BlobClient}\n *\n * @param blobName - A blob name\n * @returns A new BlobClient object for the given blob name.\n */\n getBlobClient(blobName) {\n return new BlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n }\n /**\n * Creates an {@link AppendBlobClient}\n *\n * @param blobName - An append blob name\n */\n getAppendBlobClient(blobName) {\n return new AppendBlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n }\n /**\n * Creates a {@link BlockBlobClient}\n *\n * @param blobName - A block blob name\n *\n *\n * Example usage:\n *\n * ```js\n * const content = \"Hello world!\";\n *\n * const blockBlobClient = containerClient.getBlockBlobClient(\"\");\n * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);\n * ```\n */\n getBlockBlobClient(blobName) {\n return new BlockBlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n }\n /**\n * Creates a {@link PageBlobClient}\n *\n * @param blobName - A page blob name\n */\n getPageBlobClient(blobName) {\n return new PageBlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n }\n /**\n * Returns all user-defined metadata and system properties for the specified\n * container. The data returned does not include the container's list of blobs.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-properties\n *\n * WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if\n * they originally contained uppercase characters. This differs from the metadata keys returned by\n * the `listContainers` method of {@link BlobServiceClient} using the `includeMetadata` option, which\n * will retain their original casing.\n *\n * @param options - Options to Container Get Properties operation.\n */\n async getProperties(options = {}) {\n if (!options.conditions) {\n options.conditions = {};\n }\n return tracingClient.withSpan(\"ContainerClient-getProperties\", options, async (updatedOptions) => {\n return assertResponse(await this.containerContext.getProperties(Object.assign(Object.assign({ abortSignal: options.abortSignal }, options.conditions), { tracingOptions: updatedOptions.tracingOptions })));\n });\n }\n /**\n * Marks the specified container for deletion. The container and any blobs\n * contained within it are later deleted during garbage collection.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container\n *\n * @param options - Options to Container Delete operation.\n */\n async delete(options = {}) {\n if (!options.conditions) {\n options.conditions = {};\n }\n return tracingClient.withSpan(\"ContainerClient-delete\", options, async (updatedOptions) => {\n return assertResponse(await this.containerContext.delete({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Marks the specified container for deletion if it exists. The container and any blobs\n * contained within it are later deleted during garbage collection.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container\n *\n * @param options - Options to Container Delete operation.\n */\n async deleteIfExists(options = {}) {\n return tracingClient.withSpan(\"ContainerClient-deleteIfExists\", options, async (updatedOptions) => {\n var _a, _b;\n try {\n const res = await this.delete(updatedOptions);\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"ContainerNotFound\") {\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n throw e;\n }\n });\n }\n /**\n * Sets one or more user-defined name-value pairs for the specified container.\n *\n * If no option provided, or no metadata defined in the parameter, the container\n * metadata will be removed.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata\n *\n * @param metadata - Replace existing metadata with this value.\n * If no value provided the existing metadata will be removed.\n * @param options - Options to Container Set Metadata operation.\n */\n async setMetadata(metadata, options = {}) {\n if (!options.conditions) {\n options.conditions = {};\n }\n if (options.conditions.ifUnmodifiedSince) {\n throw new RangeError(\"the IfUnmodifiedSince must have their default values because they are ignored by the blob service\");\n }\n return tracingClient.withSpan(\"ContainerClient-setMetadata\", options, async (updatedOptions) => {\n return assertResponse(await this.containerContext.setMetadata({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n metadata,\n modifiedAccessConditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Gets the permissions for the specified container. The permissions indicate\n * whether container data may be accessed publicly.\n *\n * WARNING: JavaScript Date will potentially lose precision when parsing startsOn and expiresOn strings.\n * For example, new Date(\"2018-12-31T03:44:23.8827891Z\").toISOString() will get \"2018-12-31T03:44:23.882Z\".\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-acl\n *\n * @param options - Options to Container Get Access Policy operation.\n */\n async getAccessPolicy(options = {}) {\n if (!options.conditions) {\n options.conditions = {};\n }\n return tracingClient.withSpan(\"ContainerClient-getAccessPolicy\", options, async (updatedOptions) => {\n const response = assertResponse(await this.containerContext.getAccessPolicy({\n abortSignal: options.abortSignal,\n leaseAccessConditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n const res = {\n _response: response._response,\n blobPublicAccess: response.blobPublicAccess,\n date: response.date,\n etag: response.etag,\n errorCode: response.errorCode,\n lastModified: response.lastModified,\n requestId: response.requestId,\n clientRequestId: response.clientRequestId,\n signedIdentifiers: [],\n version: response.version,\n };\n for (const identifier of response) {\n let accessPolicy = undefined;\n if (identifier.accessPolicy) {\n accessPolicy = {\n permissions: identifier.accessPolicy.permissions,\n };\n if (identifier.accessPolicy.expiresOn) {\n accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);\n }\n if (identifier.accessPolicy.startsOn) {\n accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);\n }\n }\n res.signedIdentifiers.push({\n accessPolicy,\n id: identifier.id,\n });\n }\n return res;\n });\n }\n /**\n * Sets the permissions for the specified container. The permissions indicate\n * whether blobs in a container may be accessed publicly.\n *\n * When you set permissions for a container, the existing permissions are replaced.\n * If no access or containerAcl provided, the existing container ACL will be\n * removed.\n *\n * When you establish a stored access policy on a container, it may take up to 30 seconds to take effect.\n * During this interval, a shared access signature that is associated with the stored access policy will\n * fail with status code 403 (Forbidden), until the access policy becomes active.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-acl\n *\n * @param access - The level of public access to data in the container.\n * @param containerAcl - Array of elements each having a unique Id and details of the access policy.\n * @param options - Options to Container Set Access Policy operation.\n */\n async setAccessPolicy(access, containerAcl, options = {}) {\n options.conditions = options.conditions || {};\n return tracingClient.withSpan(\"ContainerClient-setAccessPolicy\", options, async (updatedOptions) => {\n const acl = [];\n for (const identifier of containerAcl || []) {\n acl.push({\n accessPolicy: {\n expiresOn: identifier.accessPolicy.expiresOn\n ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)\n : \"\",\n permissions: identifier.accessPolicy.permissions,\n startsOn: identifier.accessPolicy.startsOn\n ? truncatedISO8061Date(identifier.accessPolicy.startsOn)\n : \"\",\n },\n id: identifier.id,\n });\n }\n return assertResponse(await this.containerContext.setAccessPolicy({\n abortSignal: options.abortSignal,\n access,\n containerAcl: acl,\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Get a {@link BlobLeaseClient} that manages leases on the container.\n *\n * @param proposeLeaseId - Initial proposed lease Id.\n * @returns A new BlobLeaseClient object for managing leases on the container.\n */\n getBlobLeaseClient(proposeLeaseId) {\n return new BlobLeaseClient(this, proposeLeaseId);\n }\n /**\n * Creates a new block blob, or updates the content of an existing block blob.\n *\n * Updating an existing block blob overwrites any existing metadata on the blob.\n * Partial updates are not supported; the content of the existing blob is\n * overwritten with the new content. To perform a partial update of a block blob's,\n * use {@link BlockBlobClient.stageBlock} and {@link BlockBlobClient.commitBlockList}.\n *\n * This is a non-parallel uploading method, please use {@link BlockBlobClient.uploadFile},\n * {@link BlockBlobClient.uploadStream} or {@link BlockBlobClient.uploadBrowserData} for better\n * performance with concurrency uploading.\n *\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param blobName - Name of the block blob to create or update.\n * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function\n * which returns a new Readable stream whose offset is from data source beginning.\n * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a\n * string including non non-Base64/Hex-encoded characters.\n * @param options - Options to configure the Block Blob Upload operation.\n * @returns Block Blob upload response data and the corresponding BlockBlobClient instance.\n */\n async uploadBlockBlob(blobName, body, contentLength, options = {}) {\n return tracingClient.withSpan(\"ContainerClient-uploadBlockBlob\", options, async (updatedOptions) => {\n const blockBlobClient = this.getBlockBlobClient(blobName);\n const response = await blockBlobClient.upload(body, contentLength, updatedOptions);\n return {\n blockBlobClient,\n response,\n };\n });\n }\n /**\n * Marks the specified blob or snapshot for deletion. The blob is later deleted\n * during garbage collection. Note that in order to delete a blob, you must delete\n * all of its snapshots. You can delete both at the same time with the Delete\n * Blob operation.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n *\n * @param blobName -\n * @param options - Options to Blob Delete operation.\n * @returns Block blob deletion response data.\n */\n async deleteBlob(blobName, options = {}) {\n return tracingClient.withSpan(\"ContainerClient-deleteBlob\", options, async (updatedOptions) => {\n let blobClient = this.getBlobClient(blobName);\n if (options.versionId) {\n blobClient = blobClient.withVersion(options.versionId);\n }\n return blobClient.delete(updatedOptions);\n });\n }\n /**\n * listBlobFlatSegment returns a single segment of blobs starting from the\n * specified Marker. Use an empty Marker to start enumeration from the beginning.\n * After getting a segment, process it, and then call listBlobsFlatSegment again\n * (passing the the previously-returned Marker) to get the next segment.\n * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs\n *\n * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n * @param options - Options to Container List Blob Flat Segment operation.\n */\n async listBlobFlatSegment(marker, options = {}) {\n return tracingClient.withSpan(\"ContainerClient-listBlobFlatSegment\", options, async (updatedOptions) => {\n const response = assertResponse(await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({ marker }, options), { tracingOptions: updatedOptions.tracingOptions })));\n const wrappedResponse = Object.assign(Object.assign({}, response), { _response: Object.assign(Object.assign({}, response._response), { parsedBody: ConvertInternalResponseOfListBlobFlat(response._response.parsedBody) }), segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInternal) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInternal), { name: BlobNameToString(blobItemInternal.name), tags: toTags(blobItemInternal.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInternal.objectReplicationMetadata) });\n return blobItem;\n }) }) });\n return wrappedResponse;\n });\n }\n /**\n * listBlobHierarchySegment returns a single segment of blobs starting from\n * the specified Marker. Use an empty Marker to start enumeration from the\n * beginning. After getting a segment, process it, and then call listBlobsHierarchicalSegment\n * again (passing the the previously-returned Marker) to get the next segment.\n * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs\n *\n * @param delimiter - The character or string used to define the virtual hierarchy\n * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n * @param options - Options to Container List Blob Hierarchy Segment operation.\n */\n async listBlobHierarchySegment(delimiter, marker, options = {}) {\n return tracingClient.withSpan(\"ContainerClient-listBlobHierarchySegment\", options, async (updatedOptions) => {\n var _a;\n const response = assertResponse(await this.containerContext.listBlobHierarchySegment(delimiter, Object.assign(Object.assign({ marker }, options), { tracingOptions: updatedOptions.tracingOptions })));\n const wrappedResponse = Object.assign(Object.assign({}, response), { _response: Object.assign(Object.assign({}, response._response), { parsedBody: ConvertInternalResponseOfListBlobHierarchy(response._response.parsedBody) }), segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInternal) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInternal), { name: BlobNameToString(blobItemInternal.name), tags: toTags(blobItemInternal.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInternal.objectReplicationMetadata) });\n return blobItem;\n }), blobPrefixes: (_a = response.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {\n const blobPrefix = Object.assign(Object.assign({}, blobPrefixInternal), { name: BlobNameToString(blobPrefixInternal.name) });\n return blobPrefix;\n }) }) });\n return wrappedResponse;\n });\n }\n /**\n * Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse\n *\n * @param marker - A string value that identifies the portion of\n * the list of blobs to be returned with the next listing operation. The\n * operation returns the ContinuationToken value within the response body if the\n * listing operation did not return all blobs remaining to be listed\n * with the current page. The ContinuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to list blobs operation.\n */\n listSegments(marker_1) {\n return __asyncGenerator(this, arguments, function* listSegments_1(marker, options = {}) {\n let listBlobsFlatSegmentResponse;\n if (!!marker || marker === undefined) {\n do {\n listBlobsFlatSegmentResponse = yield __await(this.listBlobFlatSegment(marker, options));\n marker = listBlobsFlatSegmentResponse.continuationToken;\n yield yield __await(yield __await(listBlobsFlatSegmentResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator of {@link BlobItem} objects\n *\n * @param options - Options to list blobs operation.\n */\n listItems() {\n return __asyncGenerator(this, arguments, function* listItems_1(options = {}) {\n var _a, e_1, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.listSegments(marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const listBlobsFlatSegmentResponse = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list all the blobs\n * under the specified account.\n *\n * .byPage() returns an async iterable iterator to list the blobs in pages.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * // Get the containerClient before you run these snippets,\n * // Can be obtained from `blobServiceClient.getContainerClient(\"\");`\n * let i = 1;\n * for await (const blob of containerClient.listBlobsFlat()) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * let iter = containerClient.listBlobsFlat();\n * let blobItem = await iter.next();\n * while (!blobItem.done) {\n * console.log(`Blob ${i++}: ${blobItem.value.name}`);\n * blobItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of containerClient.listBlobsFlat().byPage({ maxPageSize: 20 })) {\n * for (const blob of response.segment.blobItems) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = containerClient.listBlobsFlat().byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 blob names\n * for (const blob of response.segment.blobItems) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n *\n * // Passing next marker as continuationToken\n *\n * iterator = containerClient.listBlobsFlat().byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints 10 blob names\n * for (const blob of response.segment.blobItems) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * ```\n *\n * @param options - Options to list blobs.\n * @returns An asyncIterableIterator that supports paging.\n */\n listBlobsFlat(options = {}) {\n const include = [];\n if (options.includeCopy) {\n include.push(\"copy\");\n }\n if (options.includeDeleted) {\n include.push(\"deleted\");\n }\n if (options.includeMetadata) {\n include.push(\"metadata\");\n }\n if (options.includeSnapshots) {\n include.push(\"snapshots\");\n }\n if (options.includeVersions) {\n include.push(\"versions\");\n }\n if (options.includeUncommitedBlobs) {\n include.push(\"uncommittedblobs\");\n }\n if (options.includeTags) {\n include.push(\"tags\");\n }\n if (options.includeDeletedWithVersions) {\n include.push(\"deletedwithversions\");\n }\n if (options.includeImmutabilityPolicy) {\n include.push(\"immutabilitypolicy\");\n }\n if (options.includeLegalHold) {\n include.push(\"legalhold\");\n }\n if (options.prefix === \"\") {\n options.prefix = undefined;\n }\n const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));\n // AsyncIterableIterator to iterate over blobs\n const iter = this.listItems(updatedOptions);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));\n },\n };\n }\n /**\n * Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse\n *\n * @param delimiter - The character or string used to define the virtual hierarchy\n * @param marker - A string value that identifies the portion of\n * the list of blobs to be returned with the next listing operation. The\n * operation returns the ContinuationToken value within the response body if the\n * listing operation did not return all blobs remaining to be listed\n * with the current page. The ContinuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to list blobs operation.\n */\n listHierarchySegments(delimiter_1, marker_1) {\n return __asyncGenerator(this, arguments, function* listHierarchySegments_1(delimiter, marker, options = {}) {\n let listBlobsHierarchySegmentResponse;\n if (!!marker || marker === undefined) {\n do {\n listBlobsHierarchySegmentResponse = yield __await(this.listBlobHierarchySegment(delimiter, marker, options));\n marker = listBlobsHierarchySegmentResponse.continuationToken;\n yield yield __await(yield __await(listBlobsHierarchySegmentResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.\n *\n * @param delimiter - The character or string used to define the virtual hierarchy\n * @param options - Options to list blobs operation.\n */\n listItemsByHierarchy(delimiter_1) {\n return __asyncGenerator(this, arguments, function* listItemsByHierarchy_1(delimiter, options = {}) {\n var _a, e_2, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.listHierarchySegments(delimiter, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const listBlobsHierarchySegmentResponse = _c;\n const segment = listBlobsHierarchySegmentResponse.segment;\n if (segment.blobPrefixes) {\n for (const prefix of segment.blobPrefixes) {\n yield yield __await(Object.assign({ kind: \"prefix\" }, prefix));\n }\n }\n for (const blob of segment.blobItems) {\n yield yield __await(Object.assign({ kind: \"blob\" }, blob));\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list all the blobs by hierarchy.\n * under the specified account.\n *\n * .byPage() returns an async iterable iterator to list the blobs by hierarchy in pages.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * for await (const item of containerClient.listBlobsByHierarchy(\"/\")) {\n * if (item.kind === \"prefix\") {\n * console.log(`\\tBlobPrefix: ${item.name}`);\n * } else {\n * console.log(`\\tBlobItem: name - ${item.name}`);\n * }\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let iter = containerClient.listBlobsByHierarchy(\"/\", { prefix: \"prefix1/\" });\n * let entity = await iter.next();\n * while (!entity.done) {\n * let item = entity.value;\n * if (item.kind === \"prefix\") {\n * console.log(`\\tBlobPrefix: ${item.name}`);\n * } else {\n * console.log(`\\tBlobItem: name - ${item.name}`);\n * }\n * entity = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * console.log(\"Listing blobs by hierarchy by page\");\n * for await (const response of containerClient.listBlobsByHierarchy(\"/\").byPage()) {\n * const segment = response.segment;\n * if (segment.blobPrefixes) {\n * for (const prefix of segment.blobPrefixes) {\n * console.log(`\\tBlobPrefix: ${prefix.name}`);\n * }\n * }\n * for (const blob of response.segment.blobItems) {\n * console.log(`\\tBlobItem: name - ${blob.name}`);\n * }\n * }\n * ```\n *\n * Example using paging with a max page size:\n *\n * ```js\n * console.log(\"Listing blobs by hierarchy by page, specifying a prefix and a max page size\");\n *\n * let i = 1;\n * for await (const response of containerClient\n * .listBlobsByHierarchy(\"/\", { prefix: \"prefix2/sub1/\" })\n * .byPage({ maxPageSize: 2 })) {\n * console.log(`Page ${i++}`);\n * const segment = response.segment;\n *\n * if (segment.blobPrefixes) {\n * for (const prefix of segment.blobPrefixes) {\n * console.log(`\\tBlobPrefix: ${prefix.name}`);\n * }\n * }\n *\n * for (const blob of response.segment.blobItems) {\n * console.log(`\\tBlobItem: name - ${blob.name}`);\n * }\n * }\n * ```\n *\n * @param delimiter - The character or string used to define the virtual hierarchy\n * @param options - Options to list blobs operation.\n */\n listBlobsByHierarchy(delimiter, options = {}) {\n if (delimiter === \"\") {\n throw new RangeError(\"delimiter should contain one or more characters\");\n }\n const include = [];\n if (options.includeCopy) {\n include.push(\"copy\");\n }\n if (options.includeDeleted) {\n include.push(\"deleted\");\n }\n if (options.includeMetadata) {\n include.push(\"metadata\");\n }\n if (options.includeSnapshots) {\n include.push(\"snapshots\");\n }\n if (options.includeVersions) {\n include.push(\"versions\");\n }\n if (options.includeUncommitedBlobs) {\n include.push(\"uncommittedblobs\");\n }\n if (options.includeTags) {\n include.push(\"tags\");\n }\n if (options.includeDeletedWithVersions) {\n include.push(\"deletedwithversions\");\n }\n if (options.includeImmutabilityPolicy) {\n include.push(\"immutabilitypolicy\");\n }\n if (options.includeLegalHold) {\n include.push(\"legalhold\");\n }\n if (options.prefix === \"\") {\n options.prefix = undefined;\n }\n const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));\n // AsyncIterableIterator to iterate over blob prefixes and blobs\n const iter = this.listItemsByHierarchy(delimiter, updatedOptions);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n async next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));\n },\n };\n }\n /**\n * The Filter Blobs operation enables callers to list blobs in the container whose tags\n * match a given search expression.\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param marker - A string value that identifies the portion of\n * the list of blobs to be returned with the next listing operation. The\n * operation returns the continuationToken value within the response body if the\n * listing operation did not return all blobs remaining to be listed\n * with the current page. The continuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to find blobs by tags.\n */\n async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {\n return tracingClient.withSpan(\"ContainerClient-findBlobsByTagsSegment\", options, async (updatedOptions) => {\n const response = assertResponse(await this.containerContext.filterBlobs({\n abortSignal: options.abortSignal,\n where: tagFilterSqlExpression,\n marker,\n maxPageSize: options.maxPageSize,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {\n var _a;\n let tagValue = \"\";\n if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {\n tagValue = blob.tags.blobTagSet[0].value;\n }\n return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });\n }) });\n return wrappedResponse;\n });\n }\n /**\n * Returns an AsyncIterableIterator for ContainerFindBlobsByTagsSegmentResponse.\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param marker - A string value that identifies the portion of\n * the list of blobs to be returned with the next listing operation. The\n * operation returns the continuationToken value within the response body if the\n * listing operation did not return all blobs remaining to be listed\n * with the current page. The continuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to find blobs by tags.\n */\n findBlobsByTagsSegments(tagFilterSqlExpression_1, marker_1) {\n return __asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1(tagFilterSqlExpression, marker, options = {}) {\n let response;\n if (!!marker || marker === undefined) {\n do {\n response = yield __await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));\n response.blobs = response.blobs || [];\n marker = response.continuationToken;\n yield yield __await(response);\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator for blobs.\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param options - Options to findBlobsByTagsItems.\n */\n findBlobsByTagsItems(tagFilterSqlExpression_1) {\n return __asyncGenerator(this, arguments, function* findBlobsByTagsItems_1(tagFilterSqlExpression, options = {}) {\n var _a, e_3, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const segment = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(segment.blobs)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to find all blobs with specified tag\n * under the specified container.\n *\n * .byPage() returns an async iterable iterator to list the blobs in pages.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * let i = 1;\n * for await (const blob of containerClient.findBlobsByTags(\"tagkey='tagvalue'\")) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * const iter = containerClient.findBlobsByTags(\"tagkey='tagvalue'\");\n * let blobItem = await iter.next();\n * while (!blobItem.done) {\n * console.log(`Blob ${i++}: ${blobItem.value.name}`);\n * blobItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of containerClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 20 })) {\n * if (response.blobs) {\n * for (const blob of response.blobs) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = containerClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 blob names\n * if (response.blobs) {\n * for (const blob of response.blobs) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n * // Passing next marker as continuationToken\n * iterator = containerClient\n * .findBlobsByTags(\"tagkey='tagvalue'\")\n * .byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints blob names\n * if (response.blobs) {\n * for (const blob of response.blobs) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n * ```\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param options - Options to find blobs by tags.\n */\n findBlobsByTags(tagFilterSqlExpression, options = {}) {\n // AsyncIterableIterator to iterate over blobs\n const listSegmentOptions = Object.assign({}, options);\n const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));\n },\n };\n }\n getContainerNameFromUrl() {\n let containerName;\n try {\n // URL may look like the following\n // \"https://myaccount.blob.core.windows.net/mycontainer?sasString\";\n // \"https://myaccount.blob.core.windows.net/mycontainer\";\n // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`\n // http://localhost:10001/devstoreaccount1/containername\n const parsedUrl = new URL(this.url);\n if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n // \"https://myaccount.blob.core.windows.net/containername\".\n // \"https://customdomain.com/containername\".\n // .getPath() -> /containername\n containerName = parsedUrl.pathname.split(\"/\")[1];\n }\n else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername\n // .getPath() -> /devstoreaccount1/containername\n containerName = parsedUrl.pathname.split(\"/\")[2];\n }\n else {\n // \"https://customdomain.com/containername\".\n // .getPath() -> /containername\n containerName = parsedUrl.pathname.split(\"/\")[1];\n }\n // decode the encoded containerName - to get all the special characters that might be present in it\n containerName = decodeURIComponent(containerName);\n if (!containerName) {\n throw new Error(\"Provided containerName is invalid.\");\n }\n return containerName;\n }\n catch (error) {\n throw new Error(\"Unable to extract containerName with provided information.\");\n }\n }\n /**\n * Only available for ContainerClient constructed with a shared key credential.\n *\n * Generates a Blob Container Service Shared Access Signature (SAS) URI based on the client properties\n * and parameters passed in. The SAS is signed by the shared key credential of the client.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n *\n * @param options - Optional parameters.\n * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n */\n generateSasUrl(options) {\n return new Promise((resolve) => {\n if (!(this.credential instanceof StorageSharedKeyCredential)) {\n throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n }\n const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), this.credential).toString();\n resolve(appendToURLQuery(this.url, sas));\n });\n }\n /**\n * Creates a BlobBatchClient object to conduct batch operations.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n *\n * @returns A new BlobBatchClient object for this container.\n */\n getBlobBatchClient() {\n return new BlobBatchClient(this.url, this.pipeline);\n }\n}\n//# sourceMappingURL=ContainerClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the\n * values are set, this should be serialized with toString and set as the permissions field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class AccountSASPermissions {\n constructor() {\n /**\n * Permission to read resources and list queues and tables granted.\n */\n this.read = false;\n /**\n * Permission to write resources granted.\n */\n this.write = false;\n /**\n * Permission to delete blobs and files granted.\n */\n this.delete = false;\n /**\n * Permission to delete versions granted.\n */\n this.deleteVersion = false;\n /**\n * Permission to list blob containers, blobs, shares, directories, and files granted.\n */\n this.list = false;\n /**\n * Permission to add messages, table entities, and append to blobs granted.\n */\n this.add = false;\n /**\n * Permission to create blobs and files granted.\n */\n this.create = false;\n /**\n * Permissions to update messages and table entities granted.\n */\n this.update = false;\n /**\n * Permission to get and delete messages granted.\n */\n this.process = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Permission to filter blobs.\n */\n this.filter = false;\n /**\n * Permission to set immutability policy.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n }\n /**\n * Parse initializes the AccountSASPermissions fields from a string.\n *\n * @param permissions -\n */\n static parse(permissions) {\n const accountSASPermissions = new AccountSASPermissions();\n for (const c of permissions) {\n switch (c) {\n case \"r\":\n accountSASPermissions.read = true;\n break;\n case \"w\":\n accountSASPermissions.write = true;\n break;\n case \"d\":\n accountSASPermissions.delete = true;\n break;\n case \"x\":\n accountSASPermissions.deleteVersion = true;\n break;\n case \"l\":\n accountSASPermissions.list = true;\n break;\n case \"a\":\n accountSASPermissions.add = true;\n break;\n case \"c\":\n accountSASPermissions.create = true;\n break;\n case \"u\":\n accountSASPermissions.update = true;\n break;\n case \"p\":\n accountSASPermissions.process = true;\n break;\n case \"t\":\n accountSASPermissions.tag = true;\n break;\n case \"f\":\n accountSASPermissions.filter = true;\n break;\n case \"i\":\n accountSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n accountSASPermissions.permanentDelete = true;\n break;\n default:\n throw new RangeError(`Invalid permission character: ${c}`);\n }\n }\n return accountSASPermissions;\n }\n /**\n * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const accountSASPermissions = new AccountSASPermissions();\n if (permissionLike.read) {\n accountSASPermissions.read = true;\n }\n if (permissionLike.write) {\n accountSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n accountSASPermissions.delete = true;\n }\n if (permissionLike.deleteVersion) {\n accountSASPermissions.deleteVersion = true;\n }\n if (permissionLike.filter) {\n accountSASPermissions.filter = true;\n }\n if (permissionLike.tag) {\n accountSASPermissions.tag = true;\n }\n if (permissionLike.list) {\n accountSASPermissions.list = true;\n }\n if (permissionLike.add) {\n accountSASPermissions.add = true;\n }\n if (permissionLike.create) {\n accountSASPermissions.create = true;\n }\n if (permissionLike.update) {\n accountSASPermissions.update = true;\n }\n if (permissionLike.process) {\n accountSASPermissions.process = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n accountSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n accountSASPermissions.permanentDelete = true;\n }\n return accountSASPermissions;\n }\n /**\n * Produces the SAS permissions string for an Azure Storage account.\n * Call this method to set AccountSASSignatureValues Permissions field.\n *\n * Using this method will guarantee the resource types are in\n * an order accepted by the service.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n */\n toString() {\n // The order of the characters should be as specified here to ensure correctness:\n // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n // Use a string array instead of string concatenating += operator for performance\n const permissions = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.filter) {\n permissions.push(\"f\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.list) {\n permissions.push(\"l\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.update) {\n permissions.push(\"u\");\n }\n if (this.process) {\n permissions.push(\"p\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=AccountSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the\n * values are set, this should be serialized with toString and set as the resources field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but\n * the order of the resources is particular and this class guarantees correctness.\n */\nexport class AccountSASResourceTypes {\n constructor() {\n /**\n * Permission to access service level APIs granted.\n */\n this.service = false;\n /**\n * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.\n */\n this.container = false;\n /**\n * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.\n */\n this.object = false;\n }\n /**\n * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid resource type.\n *\n * @param resourceTypes -\n */\n static parse(resourceTypes) {\n const accountSASResourceTypes = new AccountSASResourceTypes();\n for (const c of resourceTypes) {\n switch (c) {\n case \"s\":\n accountSASResourceTypes.service = true;\n break;\n case \"c\":\n accountSASResourceTypes.container = true;\n break;\n case \"o\":\n accountSASResourceTypes.object = true;\n break;\n default:\n throw new RangeError(`Invalid resource type: ${c}`);\n }\n }\n return accountSASResourceTypes;\n }\n /**\n * Converts the given resource types to a string.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n */\n toString() {\n const resourceTypes = [];\n if (this.service) {\n resourceTypes.push(\"s\");\n }\n if (this.container) {\n resourceTypes.push(\"c\");\n }\n if (this.object) {\n resourceTypes.push(\"o\");\n }\n return resourceTypes.join(\"\");\n }\n}\n//# sourceMappingURL=AccountSASResourceTypes.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that service. Once all the\n * values are set, this should be serialized with toString and set as the services field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but\n * the order of the services is particular and this class guarantees correctness.\n */\nexport class AccountSASServices {\n constructor() {\n /**\n * Permission to access blob resources granted.\n */\n this.blob = false;\n /**\n * Permission to access file resources granted.\n */\n this.file = false;\n /**\n * Permission to access queue resources granted.\n */\n this.queue = false;\n /**\n * Permission to access table resources granted.\n */\n this.table = false;\n }\n /**\n * Creates an {@link AccountSASServices} from the specified services string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid service.\n *\n * @param services -\n */\n static parse(services) {\n const accountSASServices = new AccountSASServices();\n for (const c of services) {\n switch (c) {\n case \"b\":\n accountSASServices.blob = true;\n break;\n case \"f\":\n accountSASServices.file = true;\n break;\n case \"q\":\n accountSASServices.queue = true;\n break;\n case \"t\":\n accountSASServices.table = true;\n break;\n default:\n throw new RangeError(`Invalid service character: ${c}`);\n }\n }\n return accountSASServices;\n }\n /**\n * Converts the given services to a string.\n *\n */\n toString() {\n const services = [];\n if (this.blob) {\n services.push(\"b\");\n }\n if (this.table) {\n services.push(\"t\");\n }\n if (this.queue) {\n services.push(\"q\");\n }\n if (this.file) {\n services.push(\"f\");\n }\n return services.join(\"\");\n }\n}\n//# sourceMappingURL=AccountSASServices.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AccountSASPermissions } from \"./AccountSASPermissions\";\nimport { AccountSASResourceTypes } from \"./AccountSASResourceTypes\";\nimport { AccountSASServices } from \"./AccountSASServices\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual\n * REST request.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n * @param accountSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {\n const version = accountSASSignatureValues.version\n ? accountSASSignatureValues.version\n : SERVICE_VERSION;\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\") {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when provided 'x' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when provided 'y' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when provided 't' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.filter &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when provided 'f' permission.\");\n }\n if (accountSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());\n const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();\n const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();\n let stringToSign;\n if (version >= \"2020-12-06\") {\n stringToSign = [\n sharedKeyCredential.accountName,\n parsedPermissions,\n parsedServices,\n parsedResourceTypes,\n accountSASSignatureValues.startsOn\n ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)\n : \"\",\n truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),\n accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : \"\",\n accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : \"\",\n version,\n accountSASSignatureValues.encryptionScope ? accountSASSignatureValues.encryptionScope : \"\",\n \"\", // Account SAS requires an additional newline character\n ].join(\"\\n\");\n }\n else {\n stringToSign = [\n sharedKeyCredential.accountName,\n parsedPermissions,\n parsedServices,\n parsedResourceTypes,\n accountSASSignatureValues.startsOn\n ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)\n : \"\",\n truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),\n accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : \"\",\n accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : \"\",\n version,\n \"\", // Account SAS requires an additional newline character\n ].join(\"\\n\");\n }\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, accountSASSignatureValues.encryptionScope);\n}\n//# sourceMappingURL=AccountSASSignatureValues.js.map","import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { getDefaultProxySettings } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { ContainerClient, } from \"./ContainerClient\";\nimport { appendToURLPath, appendToURLQuery, extractConnectionStringParts, toTags, } from \"./utils/utils.common\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { truncatedISO8061Date, assertResponse } from \"./utils/utils.common\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { BlobBatchClient } from \"./BlobBatchClient\";\nimport { StorageClient } from \"./StorageClient\";\nimport { AccountSASPermissions } from \"./sas/AccountSASPermissions\";\nimport { generateAccountSASQueryParameters } from \"./sas/AccountSASSignatureValues\";\nimport { AccountSASServices } from \"./sas/AccountSASServices\";\n/**\n * A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you\n * to manipulate blob containers.\n */\nexport class BlobServiceClient extends StorageClient {\n /**\n *\n * Creates an instance of BlobServiceClient from connection string.\n *\n * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.\n * [ Note - Account connection string can only be used in NODE.JS runtime. ]\n * Account connection string example -\n * `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`\n * SAS connection string example -\n * `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`\n * @param options - Optional. Options to configure the HTTP pipeline.\n */\n static fromConnectionString(connectionString, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n options = options || {};\n const extractedCreds = extractConnectionStringParts(connectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n const pipeline = newPipeline(sharedKeyCredential, options);\n return new BlobServiceClient(extractedCreds.url, pipeline);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n const pipeline = newPipeline(new AnonymousCredential(), options);\n return new BlobServiceClient(extractedCreds.url + \"?\" + extractedCreds.accountSas, pipeline);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n constructor(url, credentialOrPipeline, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n let pipeline;\n if (isPipelineLike(credentialOrPipeline)) {\n pipeline = credentialOrPipeline;\n }\n else if ((isNode && credentialOrPipeline instanceof StorageSharedKeyCredential) ||\n credentialOrPipeline instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipeline)) {\n pipeline = newPipeline(credentialOrPipeline, options);\n }\n else {\n // The second parameter is undefined. Use anonymous credential\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n super(url, pipeline);\n this.serviceContext = this.storageClientContext.service;\n }\n /**\n * Creates a {@link ContainerClient} object\n *\n * @param containerName - A container name\n * @returns A new ContainerClient object for the given container name.\n *\n * Example usage:\n *\n * ```js\n * const containerClient = blobServiceClient.getContainerClient(\"\");\n * ```\n */\n getContainerClient(containerName) {\n return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);\n }\n /**\n * Create a Blob container. @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container\n *\n * @param containerName - Name of the container to create.\n * @param options - Options to configure Container Create operation.\n * @returns Container creation response and the corresponding container client.\n */\n async createContainer(containerName, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-createContainer\", options, async (updatedOptions) => {\n const containerClient = this.getContainerClient(containerName);\n const containerCreateResponse = await containerClient.create(updatedOptions);\n return {\n containerClient,\n containerCreateResponse,\n };\n });\n }\n /**\n * Deletes a Blob container.\n *\n * @param containerName - Name of the container to delete.\n * @param options - Options to configure Container Delete operation.\n * @returns Container deletion response.\n */\n async deleteContainer(containerName, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-deleteContainer\", options, async (updatedOptions) => {\n const containerClient = this.getContainerClient(containerName);\n return containerClient.delete(updatedOptions);\n });\n }\n /**\n * Restore a previously deleted Blob container.\n * This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.\n *\n * @param deletedContainerName - Name of the previously deleted container.\n * @param deletedContainerVersion - Version of the previously deleted container, used to uniquely identify the deleted container.\n * @param options - Options to configure Container Restore operation.\n * @returns Container deletion response.\n */\n async undeleteContainer(deletedContainerName, deletedContainerVersion, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-undeleteContainer\", options, async (updatedOptions) => {\n const containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);\n // Hack to access a protected member.\n const containerContext = containerClient[\"storageClientContext\"].container;\n const containerUndeleteResponse = assertResponse(await containerContext.restore({\n deletedContainerName,\n deletedContainerVersion,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n return { containerClient, containerUndeleteResponse };\n });\n }\n /**\n * Rename an existing Blob Container.\n *\n * @param sourceContainerName - The name of the source container.\n * @param destinationContainerName - The new name of the container.\n * @param options - Options to configure Container Rename operation.\n */\n /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */\n // @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.\n async renameContainer(sourceContainerName, destinationContainerName, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-renameContainer\", options, async (updatedOptions) => {\n var _a;\n const containerClient = this.getContainerClient(destinationContainerName);\n // Hack to access a protected member.\n const containerContext = containerClient[\"storageClientContext\"].container;\n const containerRenameResponse = assertResponse(await containerContext.rename(sourceContainerName, Object.assign(Object.assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId })));\n return { containerClient, containerRenameResponse };\n });\n }\n /**\n * Gets the properties of a storage account’s Blob service, including properties\n * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties\n *\n * @param options - Options to the Service Get Properties operation.\n * @returns Response data for the Service Get Properties operation.\n */\n async getProperties(options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-getProperties\", options, async (updatedOptions) => {\n return assertResponse(await this.serviceContext.getProperties({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Sets properties for a storage account’s Blob service endpoint, including properties\n * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties\n *\n * @param properties -\n * @param options - Options to the Service Set Properties operation.\n * @returns Response data for the Service Set Properties operation.\n */\n async setProperties(properties, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-setProperties\", options, async (updatedOptions) => {\n return assertResponse(await this.serviceContext.setProperties(properties, {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Retrieves statistics related to replication for the Blob service. It is only\n * available on the secondary location endpoint when read-access geo-redundant\n * replication is enabled for the storage account.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats\n *\n * @param options - Options to the Service Get Statistics operation.\n * @returns Response data for the Service Get Statistics operation.\n */\n async getStatistics(options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-getStatistics\", options, async (updatedOptions) => {\n return assertResponse(await this.serviceContext.getStatistics({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * The Get Account Information operation returns the sku name and account kind\n * for the specified account.\n * The Get Account Information operation is available on service versions beginning\n * with version 2018-03-28.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information\n *\n * @param options - Options to the Service Get Account Info operation.\n * @returns Response data for the Service Get Account Info operation.\n */\n async getAccountInfo(options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-getAccountInfo\", options, async (updatedOptions) => {\n return assertResponse(await this.serviceContext.getAccountInfo({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n });\n }\n /**\n * Returns a list of the containers under the specified account.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2\n *\n * @param marker - A string value that identifies the portion of\n * the list of containers to be returned with the next listing operation. The\n * operation returns the continuationToken value within the response body if the\n * listing operation did not return all containers remaining to be listed\n * with the current page. The continuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to the Service List Container Segment operation.\n * @returns Response data for the Service List Container Segment operation.\n */\n async listContainersSegment(marker, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-listContainersSegment\", options, async (updatedOptions) => {\n return assertResponse(await this.serviceContext.listContainersSegment(Object.assign(Object.assign({ abortSignal: options.abortSignal, marker }, options), { include: typeof options.include === \"string\" ? [options.include] : options.include, tracingOptions: updatedOptions.tracingOptions })));\n });\n }\n /**\n * The Filter Blobs operation enables callers to list blobs across all containers whose tags\n * match a given search expression. Filter blobs searches across all containers within a\n * storage account but can be scoped within the expression to a single container.\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param marker - A string value that identifies the portion of\n * the list of blobs to be returned with the next listing operation. The\n * operation returns the continuationToken value within the response body if the\n * listing operation did not return all blobs remaining to be listed\n * with the current page. The continuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to find blobs by tags.\n */\n async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-findBlobsByTagsSegment\", options, async (updatedOptions) => {\n const response = assertResponse(await this.serviceContext.filterBlobs({\n abortSignal: options.abortSignal,\n where: tagFilterSqlExpression,\n marker,\n maxPageSize: options.maxPageSize,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {\n var _a;\n let tagValue = \"\";\n if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {\n tagValue = blob.tags.blobTagSet[0].value;\n }\n return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });\n }) });\n return wrappedResponse;\n });\n }\n /**\n * Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param marker - A string value that identifies the portion of\n * the list of blobs to be returned with the next listing operation. The\n * operation returns the continuationToken value within the response body if the\n * listing operation did not return all blobs remaining to be listed\n * with the current page. The continuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to find blobs by tags.\n */\n findBlobsByTagsSegments(tagFilterSqlExpression_1, marker_1) {\n return __asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1(tagFilterSqlExpression, marker, options = {}) {\n let response;\n if (!!marker || marker === undefined) {\n do {\n response = yield __await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));\n response.blobs = response.blobs || [];\n marker = response.continuationToken;\n yield yield __await(response);\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator for blobs.\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param options - Options to findBlobsByTagsItems.\n */\n findBlobsByTagsItems(tagFilterSqlExpression_1) {\n return __asyncGenerator(this, arguments, function* findBlobsByTagsItems_1(tagFilterSqlExpression, options = {}) {\n var _a, e_1, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const segment = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(segment.blobs)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to find all blobs with specified tag\n * under the specified account.\n *\n * .byPage() returns an async iterable iterator to list the blobs in pages.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties\n *\n * Example using `for await` syntax:\n *\n * ```js\n * let i = 1;\n * for await (const blob of blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\")) {\n * console.log(`Blob ${i++}: ${container.name}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * const iter = blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\");\n * let blobItem = await iter.next();\n * while (!blobItem.done) {\n * console.log(`Blob ${i++}: ${blobItem.value.name}`);\n * blobItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 20 })) {\n * if (response.blobs) {\n * for (const blob of response.blobs) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 blob names\n * if (response.blobs) {\n * for (const blob of response.blobs) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n * // Passing next marker as continuationToken\n * iterator = blobServiceClient\n * .findBlobsByTags(\"tagkey='tagvalue'\")\n * .byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints blob names\n * if (response.blobs) {\n * for (const blob of response.blobs) {\n * console.log(`Blob ${i++}: ${blob.name}`);\n * }\n * }\n * ```\n *\n * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n * The given expression must evaluate to true for a blob to be returned in the results.\n * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n * however, only a subset of the OData filter syntax is supported in the Blob service.\n * @param options - Options to find blobs by tags.\n */\n findBlobsByTags(tagFilterSqlExpression, options = {}) {\n // AsyncIterableIterator to iterate over blobs\n const listSegmentOptions = Object.assign({}, options);\n const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));\n },\n };\n }\n /**\n * Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses\n *\n * @param marker - A string value that identifies the portion of\n * the list of containers to be returned with the next listing operation. The\n * operation returns the continuationToken value within the response body if the\n * listing operation did not return all containers remaining to be listed\n * with the current page. The continuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of list\n * items. The marker value is opaque to the client.\n * @param options - Options to list containers operation.\n */\n listSegments(marker_1) {\n return __asyncGenerator(this, arguments, function* listSegments_1(marker, options = {}) {\n let listContainersSegmentResponse;\n if (!!marker || marker === undefined) {\n do {\n listContainersSegmentResponse = yield __await(this.listContainersSegment(marker, options));\n listContainersSegmentResponse.containerItems =\n listContainersSegmentResponse.containerItems || [];\n marker = listContainersSegmentResponse.continuationToken;\n yield yield __await(yield __await(listContainersSegmentResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator for Container Items\n *\n * @param options - Options to list containers operation.\n */\n listItems() {\n return __asyncGenerator(this, arguments, function* listItems_1(options = {}) {\n var _a, e_2, _b, _c;\n let marker;\n try {\n for (var _d = true, _e = __asyncValues(this.listSegments(marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const segment = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(segment.containerItems)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list all the containers\n * under the specified account.\n *\n * .byPage() returns an async iterable iterator to list the containers in pages.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * let i = 1;\n * for await (const container of blobServiceClient.listContainers()) {\n * console.log(`Container ${i++}: ${container.name}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * const iter = blobServiceClient.listContainers();\n * let containerItem = await iter.next();\n * while (!containerItem.done) {\n * console.log(`Container ${i++}: ${containerItem.value.name}`);\n * containerItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of blobServiceClient.listContainers().byPage({ maxPageSize: 20 })) {\n * if (response.containerItems) {\n * for (const container of response.containerItems) {\n * console.log(`Container ${i++}: ${container.name}`);\n * }\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = blobServiceClient.listContainers().byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 container names\n * if (response.containerItems) {\n * for (const container of response.containerItems) {\n * console.log(`Container ${i++}: ${container.name}`);\n * }\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n * // Passing next marker as continuationToken\n * iterator = blobServiceClient\n * .listContainers()\n * .byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints 10 container names\n * if (response.containerItems) {\n * for (const container of response.containerItems) {\n * console.log(`Container ${i++}: ${container.name}`);\n * }\n * }\n * ```\n *\n * @param options - Options to list containers.\n * @returns An asyncIterableIterator that supports paging.\n */\n listContainers(options = {}) {\n if (options.prefix === \"\") {\n options.prefix = undefined;\n }\n const include = [];\n if (options.includeDeleted) {\n include.push(\"deleted\");\n }\n if (options.includeMetadata) {\n include.push(\"metadata\");\n }\n if (options.includeSystem) {\n include.push(\"system\");\n }\n // AsyncIterableIterator to iterate over containers\n const listSegmentOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include } : {}));\n const iter = this.listItems(listSegmentOptions);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));\n },\n };\n }\n /**\n * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).\n *\n * Retrieves a user delegation key for the Blob service. This is only a valid operation when using\n * bearer token authentication.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key\n *\n * @param startsOn - The start time for the user delegation SAS. Must be within 7 days of the current time\n * @param expiresOn - The end time for the user delegation SAS. Must be within 7 days of the current time\n */\n async getUserDelegationKey(startsOn, expiresOn, options = {}) {\n return tracingClient.withSpan(\"BlobServiceClient-getUserDelegationKey\", options, async (updatedOptions) => {\n const response = assertResponse(await this.serviceContext.getUserDelegationKey({\n startsOn: truncatedISO8061Date(startsOn, false),\n expiresOn: truncatedISO8061Date(expiresOn, false),\n }, {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }));\n const userDelegationKey = {\n signedObjectId: response.signedObjectId,\n signedTenantId: response.signedTenantId,\n signedStartsOn: new Date(response.signedStartsOn),\n signedExpiresOn: new Date(response.signedExpiresOn),\n signedService: response.signedService,\n signedVersion: response.signedVersion,\n value: response.value,\n };\n const res = Object.assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);\n return res;\n });\n }\n /**\n * Creates a BlobBatchClient object to conduct batch operations.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n *\n * @returns A new BlobBatchClient object for this service.\n */\n getBlobBatchClient() {\n return new BlobBatchClient(this.url, this.pipeline);\n }\n /**\n * Only available for BlobServiceClient constructed with a shared key credential.\n *\n * Generates a Blob account Shared Access Signature (SAS) URI based on the client properties\n * and parameters passed in. The SAS is signed by the shared key credential of the client.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas\n *\n * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not provided.\n * @param permissions - Specifies the list of permissions to be associated with the SAS.\n * @param resourceTypes - Specifies the resource types associated with the shared access signature.\n * @param options - Optional parameters.\n * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n */\n generateAccountSasUrl(expiresOn, permissions = AccountSASPermissions.parse(\"r\"), resourceTypes = \"sco\", options = {}) {\n if (!(this.credential instanceof StorageSharedKeyCredential)) {\n throw RangeError(\"Can only generate the account SAS when the client is initialized with a shared key credential\");\n }\n if (expiresOn === undefined) {\n const now = new Date();\n expiresOn = new Date(now.getTime() + 3600 * 1000);\n }\n const sas = generateAccountSASQueryParameters(Object.assign({ permissions,\n expiresOn,\n resourceTypes, services: AccountSASServices.parse(\"b\").toString() }, options), this.credential).toString();\n return appendToURLQuery(this.url, sas);\n }\n}\n//# sourceMappingURL=BlobServiceClient.js.map","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * \n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * \n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// \nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// \nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { numberInputToObject, rgbaToHex, rgbToHex, rgbToHsl, rgbToHsv } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { inputToRGB } from './format-input';\nimport { bound01, boundAlpha, clamp01 } from './util.js';\nvar TinyColor = /** @class */ (function () {\n function TinyColor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n var _a;\n // If input is already a tinycolor, return itself\n if (color instanceof TinyColor) {\n // eslint-disable-next-line no-constructor-return\n return color;\n }\n if (typeof color === 'number') {\n color = numberInputToObject(color);\n }\n this.originalInput = color;\n var rgb = inputToRGB(color);\n this.originalInput = color;\n this.r = rgb.r;\n this.g = rgb.g;\n this.b = rgb.b;\n this.a = rgb.a;\n this.roundA = Math.round(100 * this.a) / 100;\n this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format;\n this.gradientType = opts.gradientType;\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this.r < 1) {\n this.r = Math.round(this.r);\n }\n if (this.g < 1) {\n this.g = Math.round(this.g);\n }\n if (this.b < 1) {\n this.b = Math.round(this.b);\n }\n this.isValid = rgb.ok;\n }\n TinyColor.prototype.isDark = function () {\n return this.getBrightness() < 128;\n };\n TinyColor.prototype.isLight = function () {\n return !this.isDark();\n };\n /**\n * Returns the perceived brightness of the color, from 0-255.\n */\n TinyColor.prototype.getBrightness = function () {\n // http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n };\n /**\n * Returns the perceived luminance of a color, from 0-1.\n */\n TinyColor.prototype.getLuminance = function () {\n // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var R;\n var G;\n var B;\n var RsRGB = rgb.r / 255;\n var GsRGB = rgb.g / 255;\n var BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n };\n /**\n * Returns the alpha value of a color, from 0-1.\n */\n TinyColor.prototype.getAlpha = function () {\n return this.a;\n };\n /**\n * Sets the alpha value on the current color.\n *\n * @param alpha - The new alpha value. The accepted range is 0-1.\n */\n TinyColor.prototype.setAlpha = function (alpha) {\n this.a = boundAlpha(alpha);\n this.roundA = Math.round(100 * this.a) / 100;\n return this;\n };\n /**\n * Returns whether the color is monochrome.\n */\n TinyColor.prototype.isMonochrome = function () {\n var s = this.toHsl().s;\n return s === 0;\n };\n /**\n * Returns the object as a HSVA object.\n */\n TinyColor.prototype.toHsv = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n };\n /**\n * Returns the hsva values interpolated into a string with the following format:\n * \"hsva(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHsvString = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n var h = Math.round(hsv.h * 360);\n var s = Math.round(hsv.s * 100);\n var v = Math.round(hsv.v * 100);\n return this.a === 1 ? \"hsv(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%)\") : \"hsva(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a HSLA object.\n */\n TinyColor.prototype.toHsl = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n };\n /**\n * Returns the hsla values interpolated into a string with the following format:\n * \"hsla(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHslString = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n var h = Math.round(hsl.h * 360);\n var s = Math.round(hsl.s * 100);\n var l = Math.round(hsl.l * 100);\n return this.a === 1 ? \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\") : \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the hex value of the color.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHex = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n };\n /**\n * Returns the hex value of the color -with a # prefixed.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHexString = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return '#' + this.toHex(allow3Char);\n };\n /**\n * Returns the hex 8 value of the color.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8 = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n };\n /**\n * Returns the hex 8 value of the color -with a # prefixed.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8String = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return '#' + this.toHex8(allow4Char);\n };\n /**\n * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n */\n TinyColor.prototype.toHexShortString = function (allowShortChar) {\n if (allowShortChar === void 0) { allowShortChar = false; }\n return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toRgb = function () {\n return {\n r: Math.round(this.r),\n g: Math.round(this.g),\n b: Math.round(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA values interpolated into a string with the following format:\n * \"RGBA(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toRgbString = function () {\n var r = Math.round(this.r);\n var g = Math.round(this.g);\n var b = Math.round(this.b);\n return this.a === 1 ? \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\") : \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toPercentageRgb = function () {\n var fmt = function (x) { return \"\".concat(Math.round(bound01(x, 255) * 100), \"%\"); };\n return {\n r: fmt(this.r),\n g: fmt(this.g),\n b: fmt(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA relative values interpolated into a string\n */\n TinyColor.prototype.toPercentageRgbString = function () {\n var rnd = function (x) { return Math.round(bound01(x, 255) * 100); };\n return this.a === 1\n ? \"rgb(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%)\")\n : \"rgba(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%, \").concat(this.roundA, \")\");\n };\n /**\n * The 'real' name of the color -if there is one.\n */\n TinyColor.prototype.toName = function () {\n if (this.a === 0) {\n return 'transparent';\n }\n if (this.a < 1) {\n return false;\n }\n var hex = '#' + rgbToHex(this.r, this.g, this.b, false);\n for (var _i = 0, _a = Object.entries(names); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n if (hex === value) {\n return key;\n }\n }\n return false;\n };\n TinyColor.prototype.toString = function (format) {\n var formatSet = Boolean(format);\n format = format !== null && format !== void 0 ? format : this.format;\n var formattedString = false;\n var hasAlpha = this.a < 1 && this.a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this.a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n };\n TinyColor.prototype.toNumber = function () {\n return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n };\n TinyColor.prototype.clone = function () {\n return new TinyColor(this.toString());\n };\n /**\n * Lighten the color a given amount. Providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.lighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Brighten the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.brighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var rgb = this.toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return new TinyColor(rgb);\n };\n /**\n * Darken the color a given amount, from 0 to 100.\n * Providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.darken = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.tint = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('white', amount);\n };\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.shade = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('black', amount);\n };\n /**\n * Desaturate the color a given amount, from 0 to 100.\n * Providing 100 will is the same as calling greyscale\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.desaturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Saturate the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.saturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Completely desaturates a color into greyscale.\n * Same as calling `desaturate(100)`\n */\n TinyColor.prototype.greyscale = function () {\n return this.desaturate(100);\n };\n /**\n * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n * Values outside of this range will be wrapped into this range.\n */\n TinyColor.prototype.spin = function (amount) {\n var hsl = this.toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return new TinyColor(hsl);\n };\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n TinyColor.prototype.mix = function (color, amount) {\n if (amount === void 0) { amount = 50; }\n var rgb1 = this.toRgb();\n var rgb2 = new TinyColor(color).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n return new TinyColor(rgba);\n };\n TinyColor.prototype.analogous = function (results, slices) {\n if (results === void 0) { results = 6; }\n if (slices === void 0) { slices = 30; }\n var hsl = this.toHsl();\n var part = 360 / slices;\n var ret = [this];\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(new TinyColor(hsl));\n }\n return ret;\n };\n /**\n * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n */\n TinyColor.prototype.complement = function () {\n var hsl = this.toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return new TinyColor(hsl);\n };\n TinyColor.prototype.monochromatic = function (results) {\n if (results === void 0) { results = 6; }\n var hsv = this.toHsv();\n var h = hsv.h;\n var s = hsv.s;\n var v = hsv.v;\n var res = [];\n var modification = 1 / results;\n while (results--) {\n res.push(new TinyColor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n return res;\n };\n TinyColor.prototype.splitcomplement = function () {\n var hsl = this.toHsl();\n var h = hsl.h;\n return [\n this,\n new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n };\n /**\n * Compute how the color would appear on a background\n */\n TinyColor.prototype.onBackground = function (background) {\n var fg = this.toRgb();\n var bg = new TinyColor(background).toRgb();\n var alpha = fg.a + bg.a * (1 - fg.a);\n return new TinyColor({\n r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n a: alpha,\n });\n };\n /**\n * Alias for `polyad(3)`\n */\n TinyColor.prototype.triad = function () {\n return this.polyad(3);\n };\n /**\n * Alias for `polyad(4)`\n */\n TinyColor.prototype.tetrad = function () {\n return this.polyad(4);\n };\n /**\n * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n */\n TinyColor.prototype.polyad = function (n) {\n var hsl = this.toHsl();\n var h = hsl.h;\n var result = [this];\n var increment = 360 / n;\n for (var i = 1; i < n; i++) {\n result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n }\n return result;\n };\n /**\n * compare color vs current color\n */\n TinyColor.prototype.equals = function (color) {\n return this.toRgbString() === new TinyColor(color).toRgbString();\n };\n return TinyColor;\n}());\nexport { TinyColor };\n// kept for backwards compatability with v1\nexport function tinycolor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n return new TinyColor(color, opts);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateTestUser = void 0;\nconst sillyname_1 = __importDefault(require(\"sillyname\"));\nconst uuid_1 = require(\"uuid\");\n/**\n * Create a new user object with a unique id\n * ({@link https://en.wikipedia.org/wiki/Universally_unique_identifier | uuid}) and random name (FIRST LAST)\n *\n * @returns a user object with a name and id property\n */\nconst generateTestUser = () => {\n const user = {\n id: (0, uuid_1.v4)(),\n name: (0, sillyname_1.default)(),\n };\n return user;\n};\nexports.generateTestUser = generateTestUser;\n//# sourceMappingURL=generateTestUser.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateTestUser = exports.InsecureTokenProvider = void 0;\n/**\n * Utilities to use while developing and testing using a service client (for example, AzureClient or TinyliciousClient)\n * supplied by the Fluid Framework.\n *\n * @packageDocumentation\n */\nvar test_runtime_utils_1 = require(\"@fluidframework/test-runtime-utils\");\nObject.defineProperty(exports, \"InsecureTokenProvider\", { enumerable: true, get: function () { return test_runtime_utils_1.InsecureTokenProvider; } });\nvar generateTestUser_1 = require(\"./generateTestUser\");\nObject.defineProperty(exports, \"generateTestUser\", { enumerable: true, get: function () { return generateTestUser_1.generateTestUser; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shortCodeMap = void 0;\n// Auto-generated by policy-check in @fluidframework/build-tools.\nexports.shortCodeMap = {\n \"0x000\": \"nonzero isobuffer byte offset\",\n \"0x001\": \"unexpected isobuffer byte length\",\n \"0x003\": \"Primary to add to range < last primary!\",\n \"0x004\": \"Secondary to add to range < last secondary!\",\n \"0x005\": \"Target primary to retrieve < first range's primary!\",\n \"0x006\": \"Target primary to retrieve < last range's primary!\",\n \"0x007\": \"Target primary to update < first range's primary!\",\n \"0x008\": \"Target primary to update < last range's primary!\",\n \"0x009\": \"After update, target primary is not first range's primary!\",\n \"0x00a\": \"Running timer missing handler\",\n \"0x00b\": \"Handler executed without deferred\",\n \"0x00c\": \"messageId is incorrect from from the local client's ACK\",\n \"0x00d\": \"Missing message handler for message type\",\n \"0x00e\": \"Missing message handler for message type\",\n \"0x00f\": \"pendingMessageId is missing from the local client's operation\",\n \"0x010\": \"Received out of order storage op when there is an unackd clear message\",\n \"0x011\": \"pendingMessageId is missing from the local client's operation\",\n \"0x012\": \"pendingMessageId is missing from the local client's operation\",\n \"0x013\": \"Received out of order op when there is an unackd clear message\",\n \"0x014\": \"pendingMessageId is missing from the local client's operation\",\n \"0x015\": \"pendingMessageId is missing from the local client's clear operation\",\n \"0x016\": \"apply stashed op not implemented for custom value type ops\",\n \"0x017\": \"Trying to add invalid handle!\",\n \"0x018\": \"Trying to insert handle into position with already valid handle!\",\n \"0x019\": \"SharedMatrix.openUndo() supports at most a single IUndoConsumer.\",\n \"0x01a\": \"Trying to set out-of-bounds cell!\",\n \"0x01b\": \"Trying to set multiple out-of-bounds cells!\",\n \"0x01c\": \"The 'localSeq' of the vector submitting an op must >= the 'localSeq' of the other vector.\",\n \"0x01d\": \"Trying to submit message to runtime while detached!\",\n \"0x01e\": \"Row and col collab window 'localSeq' desynchronized!\",\n \"0x01f\": \"Row and col collab window 'collaborating' status desynchronized!\",\n \"0x020\": \"Unknown SharedMatrix 'op' type.\",\n \"0x021\": \"SharedMatrix message contents have unexpected type!\",\n \"0x022\": \"SharedMatrix row and/or col handles are invalid!\",\n \"0x023\": \"The 'localSeq' of pending write (if any) must be <= the localSeq of the currently processed op.\",\n \"0x024\": \"Start of PermutationSegment already allocated!\",\n \"0x025\": \"Trying to set start of PermutationSegment to invalid handle!\",\n \"0x026\": \"Trying to split segment at out-of-bounds position!\",\n \"0x027\": \"Trying to get handle of out-of-bounds position!\",\n \"0x028\": \"'localSeq' for op being resubmitted must be <= the 'localSeq' of the last submitted op.\",\n \"0x029\": \"Invalid handle at start of containing segment!\",\n \"0x02a\": \"On vector undo, unexpected 'currentOp' type/state!\",\n \"0x02b\": \"Must not nest calls to IRevertible.revert()\",\n \"0x02c\": \"On cellSet(), invalid row and/or column handles!\",\n \"0x02d\": \"Unexpected op type on range remove!\",\n \"0x02e\": \"Unexpected op type on range annotate!\",\n \"0x02f\": \"Unexpected op type on range insert!\",\n \"0x030\": \"Incoming remote op sequence# <= local collabWindow's currentSequence#\",\n \"0x031\": \"Incoming remote op minSequence# < local collabWindow's minSequence#\",\n \"0x032\": \"localSeq greater than collab window\",\n \"0x033\": \"Segment group undefined\",\n \"0x034\": \"Segment group not at head of merge tree pending queue\",\n \"0x035\": \"Segment group not at head of segment pending queue\",\n \"0x036\": \"Segment has no pending properties\",\n \"0x037\": \"Segment already has assigned sequence number\",\n \"0x038\": \"Incoming op sequence# < local collabWindow's currentSequence#\",\n \"0x039\": \"Incoming op sequence# < minSequence#\",\n \"0x03a\": \"Number of ops in 'resetOp' must match the number of segment groups provided.\",\n \"0x03b\": \"Number of ops in 'resetOp' must match the number of segment groups provided.\",\n \"0x03c\": \"Reset op has 'group' delta type!\",\n \"0x03d\": \"segmentGroup is array rather than singleton!\",\n \"0x03e\": \"minSeq mismatch between collab window and delta manager!\",\n \"0x03f\": \"New format should not emit catchup ops\",\n \"0x040\": \"Child count is not within [1,7] range!\",\n \"0x041\": \"Unexpected child ordinal length!\",\n \"0x043\": \"On ack, unexpected segmentGroup!\",\n \"0x044\": \"On annotate ack, missing segment property manager!\",\n \"0x045\": \"On insert, seq number already assigned!\",\n \"0x046\": \"On remove ack, missing removal info!\",\n \"0x048\": \"onMinGE()\",\n \"0x049\": \"Trying to reload from segments while collaborating!\",\n \"0x04f\": \"minSeq of collab window > target minSeq!\",\n \"0x050\": \"Next segment changes are undefined!\",\n \"0x051\": \"Too many children on merge block!\",\n \"0x054\": \"Sequence number less than minSeq!\",\n \"0x055\": \"Sequence number is not sorted!\",\n \"0x056\": \"Unexpected total for accumulation of all seglen adjustments!\",\n \"0x057\": \"Negative length after length adjustment!\",\n \"0x058\": \"Both overlapRemoveClients and clientPartials are set!\",\n \"0x059\": \"Client view exists but flat view does not!\",\n \"0x05a\": \"Mismatch between number of partial lengths on client and flat views!\",\n \"0x05b\": \"Flat view exists but client view does not!\",\n \"0x05c\": \"Trying to update more annotate props than do exist!\",\n \"0x05d\": \"emit: mismatch in segmentsTotalLength\",\n \"0x05e\": \"emit: mismatch in totalSegmentCount\",\n \"0x05f\": \"Missing blob header on legacy snapshot!\",\n \"0x060\": \"There should be only one blob with catch up ops\",\n \"0x061\": \"Mismatch in totalLength\",\n \"0x062\": \"Mismatch in totalSegmentCount\",\n \"0x063\": \"Mismatch in totalLength\",\n \"0x064\": \"Mismatch in totalSegmentCount\",\n \"0x065\": \"On removal info preservation, segment has invalid removed sequence number!\",\n \"0x066\": \"Corrupted preservation of segment metadata!\",\n \"0x067\": \"Missing clientId for removal!\",\n \"0x068\": \"On consensusOrderedCollection load, job tracking size > 0\",\n \"0x069\": \"On consensusOrderedCollection load, data size > 0\",\n \"0x06a\": \"Trying to submit message while detached!\",\n \"0x06b\": \"Loading snapshot into a non-empty collection\",\n \"0x06c\": \"Value should be undefined or non-empty\",\n \"0x06d\": \"SharedObjects contained in ConsensusRegisterCollection can no longer be deserialized as of 0.17\",\n \"0x06e\": \"Message's reference sequence number < op's reference sequence number!\",\n \"0x06f\": \"data missing for non-atomic inbound update!\",\n \"0x070\": \"sequence numbers are expected to be 0 when unattached\",\n \"0x071\": \"Versions should naturally be ordered by sequenceNumber\",\n \"0x072\": \"Unexpected local op when loading not finished\",\n \"0x073\": \"Sequence message not operation\",\n \"0x074\": \"Snapshot called when not fully loaded\",\n \"0x075\": \"SummarySerializer should be used for serializing data during summary.\",\n \"0x078\": \"Possible re-entrancy! Summary should not already be in progress.\",\n \"0x079\": \"Possible re-entrancy! Summary should have been in progress.\",\n \"0x07a\": \"Services should be there to attach delta handler\",\n \"0x07b\": \"Unexpected op\",\n \"0x07c\": \"Unexpected op type\",\n \"0x07d\": \"Unexpected op\",\n \"0x07e\": \"Unexpected op type\",\n \"0x07f\": \"clientId undefined\",\n \"0x080\": \"Invalid document service!\",\n \"0x081\": \"Document service already set!\",\n \"0x082\": \"Document storage service already set!\",\n \"0x083\": \"User selection status does not match replay controller use status!\",\n \"0x084\": \"On storage resolve, user selection already made!\",\n \"0x085\": \"On storage resolve, missing storage!\",\n \"0x086\": \"After storage resolve, user selection status still false!\",\n \"0x088\": \"Missing button ops button!\",\n \"0x089\": \"Stringified length of chunk contents > total starting length\",\n \"0x08a\": \"resetting ChunkedOpProcessor that never wrote back its contents\",\n \"0x08b\": \"Unexpected type on contents for fix of an attach!\",\n \"0x08c\": \"innerContent for fixing op contents is undefined!\",\n \"0x08d\": \"After sanitize, pending incomplete ops!\",\n \"0x08e\": \"Potentially missed initial messages\",\n \"0x08f\": \"No op handler is setup!\",\n \"0x090\": \"No signal handler is setup!\",\n \"0x091\": \"Retrieved ops' first sequence number has unexpected value!\",\n \"0x092\": \"version input for reading snapshot tree is null!\",\n \"0x093\": \"invalid version input for reading snapshot tree!\",\n \"0x094\": \"Missing snapshot tree!\",\n \"0x096\": \"Trying to remove valid tree IDs in removeNullTreeIds()!\",\n \"0x097\": \"Missing param from office.com URL parameter\",\n \"0x098\": \"OuterDocumentServiceFactoryProxy unavailable\",\n \"0x099\": \"OuterUrlResolverProxy unavailable\",\n \"0x09a\": \"'documentId' must be a defined, non-zero length string.\",\n \"0x09d\": \"Connection details should contain epoch\",\n \"0x09f\": \"No more socketIO refs to remove!\",\n \"0x0a0\": \"Unexpected socketIO references on timeout\",\n \"0x0a1\": \"Socket reference set unexpectedly does not point to this socket!\",\n \"0x0a2\": \"reentrancy not supported!\",\n \"0x0a4\": \"Unexpected blob encoding type\",\n \"0x0a5\": \"Trying to set ops when they are already set!\",\n \"0x0a8\": \"Docid should not contain slashes!!\",\n \"0x0ad\": \"Snapshot entry has both a tree value and a referenced id!\",\n \"0x0ae\": \"Tried to create rate limiter with 0 max requests!\",\n \"0x0b0\": \"Missing document snapshot tree!\",\n \"0x0b1\": \"Storage service not initialized\",\n \"0x0b2\": \"Missing orderer URL!\",\n \"0x0b7\": \"Pathname should be defined\",\n \"0x0b8\": \"'tenantId' and 'documentId' must be defined, non-zero length strings.\",\n \"0x0b9\": \"PathName should exist\",\n \"0x0ba\": \"Tenant id should exist\",\n \"0x0bb\": \"Document id should exist\",\n \"0x0bc\": \"Runtime has no DataObject!\",\n \"0x0bd\": \"Object runtime already has DataObject!\",\n \"0x0be\": \"Trying to initialize from existing while initProps is set!\",\n \"0x0bf\": \"set called recursively from the interception callback\",\n \"0x0c0\": \"set called recursively from the interception callback\",\n \"0x0c1\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c2\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c3\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c4\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c5\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c6\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c7\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c8\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0c9\": \"Interception wrapper methods called recursively from the interception callback\",\n \"0x0ca\": \"Trying to use legacy graph attach!\",\n \"0x0cd\": \"Container disconnected while waiting for ops!\",\n \"0x0cf\": \"disconnect event was not raised!\",\n \"0x0d1\": \"Container should be attached before close\",\n \"0x0d2\": \"resolved url should be valid Fluid url\",\n \"0x0d3\": \"Should only be called in detached container\",\n \"0x0d6\": \"Inbound queue should be empty when attaching\",\n \"0x0d9\": \"Attempting to connect() a closed DeltaManager\",\n \"0x0dd\": \"Existing context not disposed\",\n \"0x0de\": \"Mismatch in connection state while setting\",\n \"0x0df\": \"Missing active connection\",\n \"0x0e0\": \"lost minBlobSize policy\",\n \"0x0e2\": \"DeltaManager already has attached op handler!\",\n \"0x0e3\": \"Newly set op handler is null/undefined!\",\n \"0x0e4\": \"Lost old connection!\",\n \"0x0e6\": \"old connection exists on new connection setup\",\n \"0x0e7\": \"claims/connectionMode mismatch\",\n \"0x0e8\": \"readonly perf with write connection\",\n \"0x0e9\": \"messageBuffer is not empty on new connection\",\n \"0x0eb\": \"Missing connection for reconnect\",\n \"0x0ec\": \"Unexpected value for previously processed message's sequence number\",\n \"0x0ed\": \"non-system message have to have clientId\",\n \"0x0ee\": \"Not accounting local messages correctly\",\n \"0x0ef\": \"client seq# not growing\",\n \"0x0f0\": \"Incoming local client seq# > generated by this client\",\n \"0x0f2\": \"previouslyProcessedMessage\",\n \"0x0f3\": \"not positive\",\n \"0x0f4\": \"Nonzero pause-count on resume()\",\n \"0x0f6\": \"real blob ID exists\",\n \"0x0f7\": \"aggregate blob missing\",\n \"0x0f8\": \"blob from aggregate blob exists on its own\",\n \"0x0f9\": \"never read summary\",\n \"0x0fa\": \"virtual blob not found\",\n \"0x0fb\": \"logic err with aggregator\",\n \"0x0fc\": \"tree reuse at lower level\",\n \"0x0fd\": \"data stores are writing incremental summaries!\",\n \"0x0fe\": \"attachment is aggregate blob\",\n \"0x0ff\": \"duplicate aggregate blob\",\n \"0x100\": \"logic error\",\n \"0x101\": \"Unexpected tree entry type on flatten!\",\n \"0x102\": \"invalid level of concurrency\",\n \"0x103\": \"trying to parallel run while not working\",\n \"0x104\": \"undefined end point for parallel fetch\",\n \"0x105\": \"unexpected end point for parallel fetch\",\n \"0x107\": \"ending dispatch with remaining results to be sent\",\n \"0x108\": \"ending results dispatch but knew in advance about more requests\",\n \"0x109\": \"unexpected next chunk position\",\n \"0x10a\": \"cannot add parallel request while not working\",\n \"0x10b\": \"invalid parallel request range\",\n \"0x10c\": \"invalid parallel request start point\",\n \"0x10d\": \"invalid parallel request end point\",\n \"0x10e\": \"should not throw result if we knew about boundary in advance\",\n \"0x10f\": \"empty/partial chunks should not be returned by caching\",\n \"0x110\": \"callback should retry until valid fetch before it learns new boundary\",\n \"0x112\": \"cannot push onto queue if done\",\n \"0x113\": \"deferred queue should be empty\",\n \"0x114\": \"cannot pop if deferred\",\n \"0x115\": \"queue should not be done during pop\",\n \"0x116\": \"Missing handle on scheduler load\",\n \"0x117\": \"Trying to get missing clientId!\",\n \"0x118\": \"Bad client interactive check\",\n \"0x119\": \"This agent became inactive while releasing\",\n \"0x11a\": \"Unsuccessful registration\",\n \"0x11b\": \"Trying to clear tasks on inactive agent\",\n \"0x11c\": \"Detached object routing context\",\n \"0x11d\": \"task is already running\",\n \"0x11e\": \"client is undefined\",\n \"0x11f\": \"requesting unknown blobs\",\n \"0x120\": \"Undefined latency statistics (op send time)\",\n \"0x121\": \"Undefined inner contents type!\",\n \"0x122\": \"Message to unpack is not proper runtime message\",\n \"0x124\": \"inconsistent readonly property/event state\",\n \"0x125\": \"Unsafe to transition to read-only state!\",\n \"0x126\": \"Expected createSubRequest url to include a leading slash\",\n \"0x127\": \"dirty document event not set on replay\",\n \"0x12a\": \"Missing blob id on metadata\",\n \"0x12b\": \"did not get root data store\",\n \"0x12d\": \"Container Context should already be in attaching state\",\n \"0x12e\": \"Container Context should already be in attached state\",\n \"0x12f\": \"Container Runtime's summarize should always return a tree\",\n \"0x131\": \"Mismatch between new chunkId and expected chunkMap\",\n \"0x132\": \"sending ops in detached container\",\n \"0x133\": \"Container disconnected when trying to submit system message\",\n \"0x137\": \"Failed to get version from storage\",\n \"0x138\": \"Failed to get snapshot from storage\",\n \"0x139\": \"Undefined package path\",\n \"0x13a\": \"Data store ID contains slash\",\n \"0x13b\": \"datastore context is already in bound state\",\n \"0x13c\": \"undefined channel on datastore context\",\n \"0x13d\": \"Detached runtime creation on realize()\",\n \"0x13e\": \"Unexpected package path\",\n \"0x13f\": \"datastore context registry is already set\",\n \"0x140\": \"undefined channel on datastore context\",\n \"0x141\": \"Unexpected connected state\",\n \"0x142\": \"local store channel is not loaded\",\n \"0x143\": \"Channel should not be undefined when running GC\",\n \"0x144\": \"Channel should be loaded when updating used routes\",\n \"0x145\": \"Channel should be present when data store is loaded\",\n \"0x146\": \"Channel must exist when submitting message\",\n \"0x147\": \"Channel must exist on submitting signal\",\n \"0x148\": \"Detached runtime creation on runtime bind\",\n \"0x149\": \"Undefined channel deferral\",\n \"0x14a\": \"Undefined package path\",\n \"0x14b\": \"Channel must exist when resubmitting ops\",\n \"0x14c\": \"Channel must exist when rebasing ops\",\n \"0x14d\": \"Should move from detached to attaching\",\n \"0x14e\": \"Should move from attaching to attached\",\n \"0x14f\": \"There should be a channel when generating attach message\",\n \"0x150\": \"pkg should be available in local data store context\",\n \"0x152\": \"pkg should be available in local data store\",\n \"0x154\": \"runtime creation is already attached\",\n \"0x155\": \"channel deferral is already set\",\n \"0x156\": \"Unexpected factory for package path\",\n \"0x157\": \"datastore registry already attached\",\n \"0x158\": \"Creating store with existing ID\",\n \"0x159\": \"The given id was not found in notBoundContexts to delete\",\n \"0x15a\": \"Cannot find context to resolve to\",\n \"0x15b\": \"Expected this id to already be removed from notBoundContexts\",\n \"0x15c\": \"Cannot find deferred to resolve\",\n \"0x15d\": \"Creating store with existing ID\",\n \"0x15e\": \"Local object does not have matching attach message id\",\n \"0x15f\": \"Could not find unbound context to bind\",\n \"0x160\": \"There should be a store context for the op\",\n \"0x161\": \"There should be a store context for the op\",\n \"0x162\": \"There should be a store context for the op\",\n \"0x163\": \"Missing datastore for local signal\",\n \"0x165\": \"Summarizer cannot work if client has local changes\",\n \"0x166\": \"BaseSnapshot should be there as detached container loaded from snapshot\",\n \"0x167\": \"Used route does not belong to any known data store\",\n \"0x168\": \"Expected tree in snapshot not found\",\n \"0x169\": \"No pending message found for this remote message\",\n \"0x16b\": \"The pending batch state indicates we are already processing a batch\",\n \"0x16d\": \"There is no pending batch begin message\",\n \"0x16e\": \"Batch with single message should not have batch metadata\",\n \"0x16f\": \"Did not receive batch begin metadata\",\n \"0x170\": \"Did not receive batch end metadata\",\n \"0x171\": \"No pending state found for the remote message\",\n \"0x172\": \"The connection state is not consistent with the runtime\",\n \"0x173\": \"replayPendingStates called twice for same clientId!\",\n \"0x174\": \"initial states should be empty before replaying pending\",\n \"0x175\": \"Can only broadcast if summarizer starts in local state\",\n \"0x176\": \"Can only ack/nack if summarizer is in broadcasting state\",\n \"0x177\": \"Missing delta handler\",\n \"0x178\": \"Missing delta handler on attach\",\n \"0x179\": \"createChannel() with existing ID\",\n \"0x17a\": \"Channel should be loaded when created!!\",\n \"0x17b\": \"Channel to be binded should be in not bounded set\",\n \"0x17c\": \"Unexpected attach (local) channel OP\",\n \"0x17e\": \"Used route does not belong to any known context\",\n \"0x17f\": \"Not expecting detached channels during summarize\",\n \"0x180\": \"getAttachSummary should always return a tree\",\n \"0x181\": \"BaseSnapshot should be there as detached container loaded from snapshot\",\n \"0x182\": \"Data store should be attached to attach the channel.\",\n \"0x183\": \"There should be a channel context for the op\",\n \"0x184\": \"There should be a channel context for the op\",\n \"0x185\": \"Channel not found\",\n \"0x189\": \"Should always be remote because a local dds shouldn't generate ops before loading\",\n \"0x18a\": \"Channel should be loaded to resubmit ops\",\n \"0x18c\": \"Channel should be loaded to summarize\",\n \"0x18d\": \"Channel should be loaded to take snapshot\",\n \"0x18e\": \"Channel must not already be loaded when loading\",\n \"0x190\": \".attributes blob should be present\",\n \"0x192\": \"Channel should be there if loaded!!\",\n \"0x193\": \"Channel should be loaded to run GC\",\n \"0x194\": \"Remote channel must be loaded when rebasing op\",\n \"0x195\": \"Remote channel must not be local when processing op\",\n \"0x196\": \"Remote channel must be loaded when resubmitting op\",\n \"0x197\": \"Remote channel must not already be loaded when loading\",\n \"0x198\": \"Used route should always be an absolute route\",\n \"0x19a\": \"Invalid response value for Fluid object request\",\n \"0x19b\": \"Cannot not create response error on 200 status\",\n \"0x19c\": \"storage service path has trailing separator\",\n \"0x19d\": \"Handles should always have absolute paths\",\n \"0x19f\": \"wipSummaryLogger should not be set yet in startSummary\",\n \"0x1a0\": \"Already tracking a summary\",\n \"0x1a1\": \"summarize should not be called when not tracking the summary\",\n \"0x1a2\": \"wipSummaryLogger should have been set in startSummary or ctor\",\n \"0x1a3\": \"wipSummaryLogger should have been set in startSummary or ctor\",\n \"0x1a4\": \"Not tracking a summary\",\n \"0x1a5\": \"Tracked summary local paths not set\",\n \"0x1a6\": \"Not found pending summary, but this node has previously completed a summary\",\n \"0x1a7\": \"Pending summary reference sequence number should be consistent\",\n \"0x1a9\": \"When loading base summary, expected outstanding ops <= tracking sequence number\",\n \"0x1aa\": \"Out of order change recorded\",\n \"0x1ab\": \"Create SummarizerNode child already exists\",\n \"0x1ac\": \"Cannot create child from summary if parent does not have latest summary\",\n \"0x1ad\": \"Missing child summary tree\",\n \"0x1ae\": \"Child summary object is not a tree\",\n \"0x1af\": \"Outstanding ops blob missing, but base summary tree exists\",\n \"0x1b0\": \"Base summary tree missing, but outstanding ops blob exists\",\n \"0x1b1\": \"wip used routes should be set if tracking a summary\",\n \"0x1b2\": \"Getting GC data should not be called when GC is disabled!\",\n \"0x1b3\": \"GC data cannot be retrieved without getGCDataFn\",\n \"0x1b4\": \"We should not already be tracking used routes when to track a new summary\",\n \"0x1b5\": \"We should have been tracking used routes\",\n \"0x1b6\": \"Create SummarizerNode child already exists\",\n \"0x1b7\": \"Bad session state for processing quorum messages\",\n \"0x1b8\": \"Bad session state for processing quorum messages\",\n \"0x1b9\": \"Unexpected value for sequence number of first message in file\",\n \"0x1ba\": \"should not return empty buckets\",\n \"0x1bb\": \"Unexpected sequence number on first of messages to save\",\n \"0x1bc\": \"Unexpected sequence number on last of messages to save\",\n \"0x1bd\": \"Stopped writing at unexpected sequence number\",\n \"0x1c5\": \"snapshot should be set before retrieving it\",\n \"0x1c6\": \"snapshot should be set before retrieving it\",\n \"0x1c7\": \"snapshot should be set before retrieving it as expanded string\",\n \"0x1c8\": \"Mismatch between document sequence number and current op number\",\n \"0x1c9\": \"Leftover documents after replay!\",\n \"0x1ca\": \"replay-to target is <= current op in replay cycle\",\n \"0x1cb\": \"Bad window to verify snapshot\",\n \"0x1cc\": \"Unexpected previous snapshot op number\",\n \"0x1ce\": \"clientId not found\",\n \"0x1cf\": \"clientId not found\",\n \"0x1d0\": \"sequenceNumber not found\",\n \"0x1d3\": \"Missing client id on disconnect\",\n \"0x1d5\": \"Invalid snapshot format version\",\n \"0x1d6\": \"Parent summary object is not a tree\",\n \"0x1d8\": \"Should only transition from Connecting state\",\n \"0x1d9\": \"addRequestCore() should break into smaller chunks\",\n \"0x1da\": \"Client id should be set if connected\",\n \"0x1db\": \"epoch exists\",\n \"0x1dc\": \"all entries have to have epoch\",\n \"0x1dd\": \"no epoch\",\n \"0x1de\": \"Not an ODSP resolved url\",\n \"0x1e0\": \"Protocol and App summary trees should be present\",\n \"0x1e2\": \"Caller must ensure 'isAttached()' before calling 'sendSetCellOp'.\",\n \"0x1e4\": \"Unexpected serializable type\",\n \"0x1e5\": \"Storage token should not be null\",\n \"0x1e6\": \"Epoch should be present in response\",\n \"0x1e7\": \"caching was not performed!\",\n \"0x1e8\": \"reentrancy\",\n \"0x1e9\": \"Pending ops\",\n \"0x1ea\": \"Prefetch snapshot only available for odsp!\",\n \"0x1eb\": \"Snapshot should be prefetched!\",\n \"0x1ec\": \"No refresh token provided.\",\n \"0x1ed\": \"Share link should be present\",\n \"0x1ef\": \"services must be defined\",\n \"0x1f0\": \"Unexpected mismatch in readonly\",\n \"0x1f5\": \"Attached state should have storage\",\n \"0x1f6\": \"Negative client sequence number not allowed\",\n \"0x1f7\": \"Previous client should always be defined\",\n \"0x1f8\": \"local BlobAttach op with no pending blob\",\n \"0x1fc\": \"summary is not a tree\",\n \"0x1fe\": \"isolated channels subtree should exist in remote datastore snapshot\",\n \"0x1ff\": \"isolated channels subtree should exist in local datastore snapshot\",\n \"0x200\": \"Returned odsp snapshot is malformed. No trees!\",\n \"0x201\": \"Returned odsp snapshot is malformed. No blobs!\",\n \"0x203\": \"Summary handle is undefined\",\n \"0x205\": \"attach() called more than once\",\n \"0x207\": \"Channel should be defined\",\n \"0x208\": \"Factory should be undefined before loading\",\n \"0x209\": \"Factory Type should be defined\",\n \"0x20a\": \"register for event on disposed object\",\n \"0x20b\": \"mismatch\",\n \"0x20c\": \"connection disposed\",\n \"0x20d\": \"double connection listener\",\n \"0x20e\": \"double tracked listener\",\n \"0x20f\": \"Driver min read version should >= to server minReadVersion\",\n \"0x210\": \"Snapshot should be created with minReadVersion or above\",\n \"0x219\": \"1 root should be there\",\n \"0x21b\": \"Snapshot id should be provided\",\n \"0x21c\": \"Seq number should be provided\",\n \"0x21d\": \"body is not string\",\n \"0x21e\": \"improper boundary format\",\n \"0x220\": \"socket key collision\",\n \"0x221\": \"Root tree should contain the id\",\n \"0x222\": \"Root tree should contain the id!!\",\n \"0x223\": \"unexpected end of buffer\",\n \"0x224\": \"Skip length should be positive\",\n \"0x225\": \"Data should be there\",\n \"0x226\": \"Should write complete data\",\n \"0x227\": \"Data should be there\",\n \"0x22b\": \"Should be a pair\",\n \"0x22c\": \"reading pairs\",\n \"0x231\": \"Number should be an integer\",\n \"0x232\": \"Payload should not be negative\",\n \"0x233\": \"Unexpected data at the end of buffer\",\n \"0x234\": \"has joinOpTimer\",\n \"0x235\": \"no joinOpTimer\",\n \"0x236\": \"In all cases it should be already installed\",\n \"0x237\": \"Snapshot should exist\",\n \"0x238\": \"called only in connected state\",\n \"0x239\": \"called only in disconnected state\",\n \"0x23a\": \"seq#'s\",\n \"0x23b\": \"we are not packing at the right level\",\n \"0x23c\": \"we are not packing at the right level\",\n \"0x23d\": \"pending is undefined\",\n \"0x23e\": \"pending is undefined\",\n \"0x23f\": \"pending undefined\",\n \"0x240\": \"Binary format snapshot only for odsp driver!!\",\n \"0x241\": \"disconnect should result in stopSequenceNumberUpdate() call\",\n \"0x242\": \"has timer\",\n \"0x243\": \"stopSequenceNumberUpdate should be called as result of sending any op!\",\n \"0x244\": \"Socket is closed, but connection is not!\",\n \"0x245\": \"tracked listener\",\n \"0x246\": \"checking consistency of socket & _disposed flags\",\n \"0x247\": \"Use addTrackedListener instead\",\n \"0x248\": \"should not subscribe to forwarded events\",\n \"0x24c\": \"Cannot call `flush()` from `orderSequentially`'s callback\",\n \"0x24e\": \"assertion for type narrowing\",\n \"0x250\": \"serialized container with attachment blobs must be rehydrated with detached blob storage\",\n \"0x251\": \"creation summary has to have seq=0 && handle === undefined\",\n \"0x252\": \"redirect table can only be set in detached container\",\n \"0x253\": \"redirect table already exists\",\n \"0x254\": \"unrecognized id in redirect table\",\n \"0x255\": \"detached blob id absent in redirect table\",\n \"0x256\": \"storage undefined in attached container\",\n \"0x257\": \"This is not summarizing container\",\n \"0x258\": \"connected\",\n \"0x259\": \"Container disconnected when trying to submit system message\",\n \"0x25b\": \"Caller is responsible for checking lock\",\n \"0x25d\": \"We should never connect as 'read'\",\n \"0x25e\": \"no reason to call fail if all promises have been completed\",\n \"0x25f\": \"retryAfterSeconds\",\n \"0x260\": \"Disposed should mean disconnected!\",\n \"0x261\": \"Expected: off\",\n \"0x262\": \"Old summarizer is still working!\",\n \"0x263\": \"Expected: starting\",\n \"0x264\": \"Expected: Not Off\",\n \"0x266\": \"lastKnownSeqNumber should never be below last processed sequence number\",\n \"0x267\": \"lastObservedSeqNumber should be updated first\",\n \"0x268\": \"There can't be pending fetch that early in boot sequence!\",\n \"0x269\": \"pending ops are not dropped\",\n \"0x26a\": \"not closed\",\n \"0x26b\": \"initial state\",\n \"0x26c\": \"handler should be installed\",\n \"0x26d\": \"wrong start\",\n \"0x26e\": \"wrong start\",\n \"0x26f\": \"continuous and no duplicates\",\n \"0x270\": \"All requested ops fetched\",\n \"0x272\": \"empty request\",\n \"0x273\": \"Invalid document id from parsed URL\",\n \"0x274\": \"type check\",\n \"0x275\": \"Root tree should contain the id\",\n \"0x278\": \"API is not supported for non-connecting or closed container\",\n \"0x27b\": \"reentrancy may result in incorrect behavior\",\n \"0x280\": \"Validate first op seq number\",\n \"0x281\": \"Unreferenced if present should be true\",\n \"0x282\": \"Headers should be present now\",\n \"0x283\": \"Length of data len should fit in the bytes from the map\",\n \"0x284\": \"Length of id should fit in the bytes from the map\",\n \"0x285\": \"Start code should not undefined\",\n \"0x286\": \"End code should not undefined\",\n \"0x287\": \"key must exist in the map\",\n \"0x288\": \"All properties should exist\",\n \"0x289\": \"logic error\",\n \"0x28a\": \"can't be disposed - Callers need to ensure that!\",\n \"0x292\": \"Unexpected undefined result from getFileLinkCore\",\n \"0x293\": \"initial state\",\n \"0x294\": \"can't have op processing paused if we are processing an op\",\n \"0x295\": \"there should be no pending batch if we have no ops\",\n \"0x296\": \"we should never start processing incomplete batch!\",\n \"0x297\": \"always called from resumed state\",\n \"0x298\": \"we have something in the queue that generates this event\",\n \"0x299\": \"non-synchronized state\",\n \"0x29a\": \"System message in the middle of batch!\",\n \"0x29b\": \"system op in a batch?\",\n \"0x29c\": \"we should be processing ops when there is no active batch\",\n \"0x29d\": \"we should be processing ops when there is no active batch\",\n \"0x29e\": \"there can't be active batch\",\n \"0x29f\": \"we should be processing ops when there is no active batch\",\n \"0x2a0\": \"batch presence was validated above\",\n \"0x2a1\": \"logic error\",\n \"0x2a2\": \"Batch is interrupted by other client op. Should be caught by trackPending()\",\n \"0x2a3\": \"container should be closed on any error\",\n \"0x2a5\": \"join timer\",\n \"0x2a6\": \"waitingForLeaveOp should imply writeConnection (we need to be ready to flush pending ops)\",\n \"0x2a7\": \"Container is not attached\",\n \"0x2a8\": \"Expected data store snapshot tree in base snapshot\",\n \"0x2a9\": \"GC nodes for data store not in GC blob\",\n \"0x2ac\": \"Connected when timeout waiting for leave from previous session fired!\",\n \"0x2ad\": \"GC blob missing from snapshot\",\n \"0x2ae\": \"node id should always be an absolute route\",\n \"0x2af\": \"Child GC data should have been initialized\",\n \"0x2b0\": \"Used route should always be an absolute route\",\n \"0x2b1\": \"This should have be initiallized when generate GC nodes above\",\n \"0x2b2\": \"Two entries for the same GC node with different unreferenced timestamp\",\n \"0x2b3\": \"logic error\",\n \"0x2b4\": \"not connected on sending ops!\",\n \"0x2b5\": \"logic error\",\n \"0x2b6\": \"Missing data store context\",\n \"0x2b8\": \"Chunk should be set in map\",\n \"0x2ba\": \"batchBegin must fire before batchEnd\",\n \"0x2bb\": \"Instrumented token fetcher with throwOnNullToken = true should never return null\",\n \"0x2bc\": \"Instrumented token fetcher with throwOnNullToken =true should never return null\",\n \"0x2bd\": \"We should not see a pending FlushMode until we see a flush when processing a batch\",\n \"0x2be\": \"LocalReferences array contains a gap\",\n \"0x2bf\": \"both removedClientIds and removedSeq should be set or not set\",\n \"0x2c0\": \"ID must be created before adding interval to collection\",\n \"0x2c1\": \"Creating an interval collection that already exists?\",\n \"0x2c2\": \"Create Version should be equal to currentReadVersion\",\n \"0x2c4\": \"client should not be summarizer before container is created\",\n \"0x2c5\": \"Attempting to connect() a closed Container\",\n \"0x2c6\": \"Attempting to connect() a container that is not attached\",\n \"0x2c7\": \"Attempting to disconnect() a closed Container\",\n \"0x2c8\": \"outboundPushEventTime should be undefined\",\n \"0x2c9\": \"durationNetwork should be undefined\",\n \"0x2ca\": \"durationOutboundBatching should be undefined\",\n \"0x2cb\": \"submitOpEventTime should be undefined\",\n \"0x2cc\": \"OpTimeSittingInboundQueue should be undefined\",\n \"0x2cd\": \"durationNetwork should be undefined\",\n \"0x2ce\": \"msnTrackingTimestamp should not be undefined\",\n \"0x2cf\": \"undefined channel on datastore context\",\n \"0x2d0\": \"Data store should be globally visible to attach channels.\",\n \"0x2d1\": \"Data store should be locally visible before it can become globally visible.\",\n \"0x2d2\": \"Data store should be globally visible when its attached.\",\n \"0x2d3\": \"Local channel must be globally visible when processing op\",\n \"0x2d4\": \"Local channel must be globally visible when resubmitting op\",\n \"0x2d5\": \"Invalid blob node id in unused routes.\",\n \"0x2d7\": \"No data store with specified id\",\n \"0x2d8\": \"Empty change event should not be emitted.\",\n \"0x2da\": \"Unknown SharedMatrix 'op' type.\",\n \"0x2db\": \"Applying op must generate a pending segment\",\n \"0x2dc\": \"Cannot find code proposal\",\n \"0x2dd\": \"Cannot find blob for a given id\",\n \"0x2de\": \"Package path requested for unsupported node type.\",\n \"0x2df\": \"transient references cannot be bound to segments\",\n \"0x2e0\": \"lref not a Local Reference\",\n \"0x2e1\": \"Support for plain value types removed.\",\n \"0x2e2\": \"Must only wait for leave message when clientId in quorum\",\n \"0x2e3\": \"Must have a valid protocol handler instance\",\n \"0x2e4\": \"there should be service config for active connection\",\n \"0x2e5\": \"Must have a base snapshot\",\n \"0x2e6\": \"Must have a base snapshot\",\n \"0x2e7\": \"Must serialize base snapshot blobs before getting runtime state\",\n \"0x2e8\": \"There should be a store context for the op\",\n \"0x2e9\": \"Must call getLocalState() after applying initial states\",\n \"0x2ea\": \"Configuration state should be enabled\",\n \"0x2eb\": \"Summary not supported with configuration disabled\",\n \"0x2ec\": \"Blob must be present in blobsContents\",\n \"0x2ed\": \"There should be a channel context for the op\",\n \"0x2ee\": \"Channel should be loaded to rollback ops\",\n \"0x2ef\": \"Local channel must be globally visible when rolling back op\",\n \"0x2f0\": \"Remote channel must be loaded when rolling back op\",\n \"0x2f1\": \"slideReferences from a segment which has not been removed and acked\",\n \"0x2f2\": \"Ref not in the segment localRefs\",\n \"0x2f3\": \"Ref not in the segment localRefs\",\n \"0x2f4\": \"localRefs must be allocated\",\n \"0x2f5\": \"op create references must be SlideOnRemove\",\n \"0x2f6\": \"SlideOnRemove references must be op created\",\n \"0x2f8\": \"Unexpected accept op, nothing pending\",\n \"0x2f9\": \"Unexpected accept op, client not in expectedSignoffs\",\n \"0x2fa\": \"Unexpected pending message received\",\n \"0x2fb\": \"pendingMessageId does not match\",\n \"0x2fc\": \"Invalid localOpMetadata for clear\",\n \"0x2fd\": \"pendingMessageId does not match\",\n \"0x2fe\": \"Invalid localOpMetadata in submit\",\n \"0x2ff\": \"Unexpected pending message received\",\n \"0x300\": \"localSeq greater than collab window\",\n \"0x301\": \"Either seq or localSeq should be defined\",\n \"0x302\": \"No segment found\",\n \"0x303\": \"Invalid offset\",\n \"0x304\": \"Id cannot contain slashes\",\n \"0x305\": \"registerDependent on disposed Dependee\",\n \"0x306\": \"invalidateDependents on disposed Dependee\",\n \"0x307\": \"endInitialization should be called exactly once\",\n \"0x308\": \"onDispose should be set when disposing\",\n \"0x309\": \"Cannot unregister dependees on a disposed SimpleObservingDependent.\",\n \"0x30a\": \"shouldClientJoinWrite should imply this is a writeConnection\",\n \"0x30b\": \"Must have a valid protocol handler instance\",\n \"0x30c\": \"Id cannot contain slashes\",\n \"0x30d\": \"Id cannot contain slashes\",\n \"0x30e\": \"Id cannot contain slashes. DataStoreContext should have validated this.\",\n \"0x30f\": \"Channel context ID cannot contain slashes\",\n \"0x310\": \"Channel context ID cannot contain slashes\",\n \"0x311\": \"expected id to exist on interval\",\n \"0x312\": \"snapshot should be parsed\",\n \"0x313\": \"Specified user was not of type \\\"TinyliciousUser\\\".\",\n \"0x314\": \"Container properly closed\",\n \"0x315\": \"re-entrancy\",\n \"0x316\": \"There should be a cached promise of in-progress aliasing\",\n \"0x317\": \"dataStoreFactory is undefined\",\n \"0x318\": \"resolvedUrl is undefined\",\n \"0x319\": \"No delta connection server associated with specified document ID\",\n \"0x31a\": \"resolvedUrl is undefined\",\n \"0x31b\": \"container1.resolvedUrl is undefined\",\n \"0x31c\": \"rightDiv is undefined\",\n \"0x31d\": \"options are not of type \\\"IRouterliciousRouteOptions\\\" as expected\",\n \"0x31e\": \"options.tenantId is undefined\",\n \"0x320\": \"options.tenantId is undefined\",\n \"0x322\": \"options.fluidHost is undefined\",\n \"0x324\": \"options.server is undefined\",\n \"0x325\": \"options.odspAccessToken is undefined\",\n \"0x326\": \"lockResolver is undefined\",\n \"0x327\": \"options.server is undefined\",\n \"0x328\": \"options.server is undefined\",\n \"0x329\": \"browser.umd property is undefined\",\n \"0x32a\": \"pendingMessageId does not match\",\n \"0x32b\": \"Invalid localOpMetadata for clear\",\n \"0x32c\": \"pendingMessageId does not match\",\n \"0x32d\": \"Invalid localOpMetadata in submit\",\n \"0x32e\": \"Unexpected pending message received\",\n \"0x32f\": \"Invalid localOpMetadata for sub directory op\",\n \"0x330\": \"Unexpected pending message received\",\n \"0x331\": \"Unexpected pending message received\",\n \"0x332\": \"Unexpected pending message received\",\n \"0x333\": \"PathShared.splice can only insert detached ranges\",\n \"0x334\": \"Anchor must not be double freed\",\n \"0x335\": \"ObjectForest.getRoot only valid for existing roots\",\n \"0x336\": \"ObjectForest must only be given its own Anchors\",\n \"0x337\": \"ObjectForest must only be given its own Cursor type\",\n \"0x338\": \"ObjectForest must only be given its own Cursor\",\n \"0x339\": \"Anchor must not be double freed\",\n \"0x33a\": \"Anchor must not be double freed\",\n \"0x33b\": \"Cursor must not be freed\",\n \"0x33c\": \"Cursor must not be freed\",\n \"0x33d\": \"Cursor must be current to be used\",\n \"0x33e\": \"Cursor must be current to be used\",\n \"0x33f\": \"Cursor must not be double freed\",\n \"0x340\": \"Cursor must be current to be used\",\n \"0x341\": \"Cursor must be current to be used\",\n \"0x342\": \"Invalid usage. \\\"blobid\\\" should always be null\",\n \"0x343\": \"Invalid usage. \\\"count\\\" should always be 1\",\n \"0x344\": \"this.pendingConnection should be undefined\",\n \"0x345\": \"this.pendingConnection is undefined when trying to cancel\",\n \"0x346\": \"inboundQueuePausedFromInit should be true\"\n};\n//# sourceMappingURL=assertionShortCodesMap.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateUser = exports.generateToken = void 0;\nconst jsrsasign_1 = require(\"jsrsasign\");\nconst uuid_1 = require(\"uuid\");\n/**\n * IMPORTANT: This function is duplicated in ./azure/packages/azure-service-utils/src/generateToken.ts. There is no need\n * for different implementations, so they should be kept in sync if changes are needed.\n *\n * The reason they are duplicated is because we don't want the core Fluid libraries depending on the Azure libraries\n * (enforced by layer-check), but both need to expose this function. The test-runtime-utils library is a test lib, which\n * layer-check (correctly) reuires only be used as a dev dependency. But in the azure case, we want the function\n * exported, so it needs to be sourced from either the package itself or a non-dev dependency.\n *\n * The previous solution to this was to import the function from azure-service-utils into test-runtime-utils, but that\n * no longer works because the azure packages are in a separate release group.\n *\n * If a token needs to be generated on the client side, you should re-use this function. If you need service-side token\n * generation, you should use the function available in the server-services-client package in order to avoid\n * interdependencies between service and client packages.\n */\n/**\n * Generates a {@link https://en.wikipedia.org/wiki/JSON_Web_Token | JSON Web Token} (JWT)\n * to authorize access to a Routerlicious-based Fluid service.\n *\n * @remarks Note: this function uses a browser friendly auth library\n * ({@link https://www.npmjs.com/package/jsrsasign | jsrsasign}) and may only be used in client (browser) context.\n * It is **not** Node.js-compatible.\n *\n * @param tenantId - See {@link @fluidframework/protocol-definitions#ITokenClaims.tenantId}\n * @param key - API key to authenticate user. Must be {@link https://en.wikipedia.org/wiki/UTF-8 | UTF-8}-encoded.\n * @param scopes - See {@link @fluidframework/protocol-definitions#ITokenClaims.scopes}\n * @param documentId - See {@link @fluidframework/protocol-definitions#ITokenClaims.documentId}.\n * If not specified, the token will not be associated with a document, and an empty string will be used.\n * @param user - User with whom generated tokens will be associated.\n * If not specified, the token will not be associated with a user, and a randomly generated mock user will be\n * used instead.\n * See {@link @fluidframework/protocol-definitions#ITokenClaims.user}\n * @param lifetime - Used to generate the {@link @fluidframework/protocol-definitions#ITokenClaims.exp | expiration}.\n * Expiration = now + lifetime.\n * Expressed in seconds.\n * Default: 3600 (1 hour).\n * @param ver - See {@link @fluidframework/protocol-definitions#ITokenClaims.ver}.\n * Default: `1.0`.\n */\nfunction generateToken(tenantId, key, scopes, documentId, user, lifetime = 60 * 60, ver = \"1.0\") {\n let userClaim = (user) ? user : generateUser();\n if (userClaim.id === \"\" || userClaim.id === undefined) {\n userClaim = generateUser();\n }\n // Current time in seconds\n const now = Math.round(Date.now() / 1000);\n const docId = documentId !== null && documentId !== void 0 ? documentId : \"\";\n const claims = {\n documentId: docId,\n scopes,\n tenantId,\n user: userClaim,\n iat: now,\n exp: now + lifetime,\n ver,\n jti: (0, uuid_1.v4)(),\n };\n const utf8Key = { utf8: key };\n return jsrsasign_1.KJUR.jws.JWS.sign(null, JSON.stringify({ alg: \"HS256\", typ: \"JWT\" }), claims, utf8Key);\n}\nexports.generateToken = generateToken;\n/**\n * Generates an arbitrary (\"random\") {@link @fluidframework/protocol-definitions#IUser} by generating a\n * random UUID for its {@link @fluidframework/protocol-definitions#IUser.id} and `name` properties.\n */\nfunction generateUser() {\n const randomUser = {\n id: (0, uuid_1.v4)(),\n name: (0, uuid_1.v4)(),\n };\n return randomUser;\n}\nexports.generateUser = generateUser;\n//# sourceMappingURL=generateToken.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./insecureTokenProvider\"), exports);\n__exportStar(require(\"./mocksDataStoreContext\"), exports);\n__exportStar(require(\"./mockDeltas\"), exports);\n__exportStar(require(\"./mockHandle\"), exports);\n__exportStar(require(\"./mocks\"), exports);\n__exportStar(require(\"./mocksForReconnection\"), exports);\n__exportStar(require(\"./mockStorage\"), exports);\n__exportStar(require(\"./validateAssertionError\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InsecureTokenProvider = void 0;\nconst protocol_definitions_1 = require(\"@fluidframework/protocol-definitions\");\nconst generateToken_1 = require(\"./generateToken\");\n/**\n * Provides an in memory implementation of {@link @fluidframework/routerlicious-driver#ITokenProvider} that can be\n * used to insecurely connect to the Fluid Relay.\n *\n * As the name implies, this is not secure and should not be used in production.\n * It simply makes examples where authentication is not relevant easier to bootstrap.\n */\nclass InsecureTokenProvider {\n constructor(\n /**\n * Private server tenantKey for generating tokens.\n */\n tenantKey, \n /**\n * User with whom generated tokens will be associated.\n */\n user, \n /**\n * Optional. Override of scopes. If a param is not provided, InsecureTokenProvider\n * will use the default scopes which are document read, write and summarizer write.\n *\n * @param scopes - See {@link @fluidframework/protocol-definitions#ITokenClaims.scopes}\n *\n * @defaultValue - [ ScopeType.DocRead, ScopeType.DocWrite, ScopeType.SummaryWrite ]\n */\n scopes) {\n this.tenantKey = tenantKey;\n this.user = user;\n this.scopes = scopes;\n }\n /**\n * {@inheritDoc @fluidframework/routerlicious-driver#ITokenProvider.fetchOrdererToken}\n */\n async fetchOrdererToken(tenantId, documentId) {\n var _a;\n return {\n fromCache: true,\n jwt: (0, generateToken_1.generateToken)(tenantId, this.tenantKey, (_a = this.scopes) !== null && _a !== void 0 ? _a : [\n protocol_definitions_1.ScopeType.DocRead,\n protocol_definitions_1.ScopeType.DocWrite,\n protocol_definitions_1.ScopeType.SummaryWrite,\n ], documentId, this.user),\n };\n }\n /**\n * {@inheritDoc @fluidframework/routerlicious-driver#ITokenProvider.fetchStorageToken}\n */\n async fetchStorageToken(tenantId, documentId) {\n var _a;\n return {\n fromCache: true,\n jwt: (0, generateToken_1.generateToken)(tenantId, this.tenantKey, (_a = this.scopes) !== null && _a !== void 0 ? _a : [\n protocol_definitions_1.ScopeType.DocRead,\n protocol_definitions_1.ScopeType.DocWrite,\n protocol_definitions_1.ScopeType.SummaryWrite,\n ], documentId, this.user),\n };\n }\n}\nexports.InsecureTokenProvider = InsecureTokenProvider;\n//# sourceMappingURL=insecureTokenProvider.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MockDeltaManager = exports.MockDeltaQueue = void 0;\nconst events_1 = require(\"events\");\nconst common_utils_1 = require(\"@fluidframework/common-utils\");\n/**\n * Mock implementation of IDeltaQueue for testing that does nothing\n */\nclass MockDeltaQueue extends events_1.EventEmitter {\n constructor() {\n super();\n this.queue = [];\n this.pauseCount = 0;\n this.processCallback = () => { };\n }\n get disposed() { return undefined; }\n get paused() {\n return this.pauseCount !== 0;\n }\n get length() { return this.queue.length; }\n get idle() {\n return this.queue.length === 0;\n }\n process() {\n void Promise.resolve().then(() => {\n while (this.pauseCount === 0 && this.length > 0) {\n const el = this.pop();\n (0, common_utils_1.assert)(el !== undefined, \"this is impossible due to the above length check\");\n this.processCallback(el);\n }\n });\n }\n push(el) {\n this.queue.push(el);\n this.emit(\"push\", el);\n this.process();\n }\n pop() {\n return this.queue.shift();\n }\n async pause() {\n this.pauseCount++;\n return;\n }\n resume() {\n this.pauseCount--;\n this.process();\n }\n peek() {\n return this.queue[0];\n }\n toArray() {\n return this.queue;\n }\n dispose() { }\n async waitTillProcessingDone() {\n throw new Error(\"NYI\");\n }\n}\nexports.MockDeltaQueue = MockDeltaQueue;\n/**\n * Mock implementation of IDeltaManager for testing that creates mock DeltaQueues for testing\n */\nclass MockDeltaManager extends common_utils_1.TypedEventEmitter {\n constructor() {\n super();\n this.readOnlyInfo = { readonly: false };\n this.clientType = undefined;\n this.clientDetails = undefined;\n this._inbound = undefined;\n this._inboundSignal = undefined;\n this._outbound = undefined;\n this.minimumSequenceNumber = 0;\n this.lastSequenceNumber = 0;\n this.lastKnownSeqNumber = 0;\n this.initialSequenceNumber = 0;\n this.hasCheckpointSequenceNumber = false;\n this._inbound = new MockDeltaQueue();\n this._outbound = new MockDeltaQueue();\n this._inboundSignal = new MockDeltaQueue();\n }\n get disposed() { return undefined; }\n get IDeltaSender() { return this; }\n get inbound() {\n return this._inbound;\n }\n get outbound() {\n return this._outbound;\n }\n get inboundSignal() {\n return this._inboundSignal;\n }\n get version() {\n return undefined;\n }\n get maxMessageSize() {\n return 0;\n }\n get serviceConfiguration() {\n return undefined;\n }\n get active() {\n return true;\n }\n close() { }\n submitSignal(content) { }\n flush() { }\n submit(type, contents, batch = false, localOpMetadata) {\n return 0;\n }\n dispose() { }\n}\nexports.MockDeltaManager = MockDeltaManager;\n//# sourceMappingURL=mockDeltas.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MockHandle = void 0;\nconst container_definitions_1 = require(\"@fluidframework/container-definitions\");\n/**\n * Mock implementation of IFluidHandle.\n */\nclass MockHandle {\n constructor(value, path = `mock-handle-${Math.random().toString(36).slice(2)}`, absolutePath = `/${path}`) {\n this.value = value;\n this.path = path;\n this.absolutePath = absolutePath;\n this.graphAttachState = container_definitions_1.AttachState.Detached;\n }\n get IFluidHandle() { return this; }\n get isAttached() { return this.graphAttachState === container_definitions_1.AttachState.Attached; }\n async get() { return this.value; }\n attachGraph() { this.graphAttachState = container_definitions_1.AttachState.Attached; }\n bind() { throw Error(\"MockHandle.bind() unimplemented.\"); }\n}\nexports.MockHandle = MockHandle;\n//# sourceMappingURL=mockHandle.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MockStorage = void 0;\nconst common_utils_1 = require(\"@fluidframework/common-utils\");\nconst runtime_utils_1 = require(\"@fluidframework/runtime-utils\");\n/**\n * Mock implementation of IChannelStorageService based on ITree input.\n */\nclass MockStorage {\n constructor(tree) {\n this.tree = tree;\n }\n static createFromSummary(summaryTree) {\n const tree = (0, runtime_utils_1.convertSummaryTreeToITree)(summaryTree);\n return new MockStorage(tree);\n }\n static readBlobCore(tree, paths) {\n if (tree) {\n for (const entry of tree.entries) {\n if (entry.path === paths[0]) {\n if (entry.type === \"Blob\") {\n // eslint-disable-next-line prefer-rest-params\n (0, common_utils_1.assert)(paths.length === 1, JSON.stringify(Object.assign({}, arguments)));\n return entry.value;\n }\n if (entry.type === \"Tree\") {\n return MockStorage.readBlobCore(entry.value, paths.slice(1));\n }\n return undefined;\n }\n }\n return undefined;\n }\n }\n async readBlob(path) {\n const blob = MockStorage.readBlobCore(this.tree, path.split(\"/\"));\n (0, common_utils_1.assert)(blob !== undefined, `Blob does not exist: ${path}`);\n return (0, common_utils_1.stringToBuffer)(blob.contents, blob.encoding);\n }\n async contains(path) {\n return MockStorage.readBlobCore(this.tree, path.split(\"/\")) !== undefined;\n }\n async list(path) {\n return (0, runtime_utils_1.listBlobsAtTreePath)(this.tree, path);\n }\n}\nexports.MockStorage = MockStorage;\n//# sourceMappingURL=mockStorage.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MockSharedObjectServices = exports.MockObjectStorageService = exports.MockEmptyDeltaConnection = exports.MockFluidDataStoreRuntime = exports.MockQuorumClients = exports.MockContainerRuntimeFactory = exports.MockContainerRuntime = exports.MockDeltaConnection = void 0;\nconst events_1 = require(\"events\");\nconst common_utils_1 = require(\"@fluidframework/common-utils\");\nconst container_definitions_1 = require(\"@fluidframework/container-definitions\");\nconst telemetry_utils_1 = require(\"@fluidframework/telemetry-utils\");\nconst protocol_definitions_1 = require(\"@fluidframework/protocol-definitions\");\nconst runtime_utils_1 = require(\"@fluidframework/runtime-utils\");\nconst uuid_1 = require(\"uuid\");\nconst mockDeltas_1 = require(\"./mockDeltas\");\n/**\n * Mock implementation of IDeltaConnection for testing\n */\nclass MockDeltaConnection {\n constructor(submitFn, dirtyFn) {\n this.submitFn = submitFn;\n this.dirtyFn = dirtyFn;\n this._connected = true;\n }\n get connected() {\n return this._connected;\n }\n attach(handler) {\n this.handler = handler;\n handler.setConnectionState(this.connected);\n }\n submit(messageContent, localOpMetadata) {\n return this.submitFn(messageContent, localOpMetadata);\n }\n dirty() {\n this.dirtyFn();\n }\n setConnectionState(connected) {\n var _a;\n this._connected = connected;\n (_a = this.handler) === null || _a === void 0 ? void 0 : _a.setConnectionState(connected);\n }\n process(message, local, localOpMetadata) {\n var _a;\n (_a = this.handler) === null || _a === void 0 ? void 0 : _a.process(message, local, localOpMetadata);\n }\n reSubmit(content, localOpMetadata) {\n var _a;\n (_a = this.handler) === null || _a === void 0 ? void 0 : _a.reSubmit(content, localOpMetadata);\n }\n}\nexports.MockDeltaConnection = MockDeltaConnection;\n/**\n * Mock implementation of ContainerRuntime for testing basic submitting and processing of messages.\n * If test specific logic is required, extend this class and add the logic there. For an example, take a look\n * at MockContainerRuntimeForReconnection.\n */\nclass MockContainerRuntime {\n constructor(dataStoreRuntime, factory) {\n var _a;\n this.dataStoreRuntime = dataStoreRuntime;\n this.factory = factory;\n this.clientSequenceNumber = 0;\n this.deltaConnections = [];\n this.pendingMessages = [];\n this.deltaManager = new mockDeltas_1.MockDeltaManager();\n // Set FluidDataStoreRuntime's deltaManager to ours so that they are in sync.\n this.dataStoreRuntime.deltaManager = this.deltaManager;\n this.dataStoreRuntime.quorum = factory.quorum;\n // FluidDataStoreRuntime already creates a clientId, reuse that so they are in sync.\n this.clientId = (_a = this.dataStoreRuntime.clientId) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();\n factory.quorum.addMember(this.clientId, {});\n }\n createDeltaConnection() {\n const deltaConnection = new MockDeltaConnection((messageContent, localOpMetadata) => this.submit(messageContent, localOpMetadata), () => this.dirty());\n this.deltaConnections.push(deltaConnection);\n return deltaConnection;\n }\n submit(messageContent, localOpMetadata) {\n const clientSequenceNumber = this.clientSequenceNumber++;\n const msg = {\n clientId: this.clientId,\n clientSequenceNumber,\n contents: messageContent,\n referenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n type: protocol_definitions_1.MessageType.Operation,\n };\n this.factory.pushMessage(msg);\n this.addPendingMessage(messageContent, localOpMetadata, clientSequenceNumber);\n return clientSequenceNumber;\n }\n dirty() { }\n process(message) {\n this.deltaManager.lastSequenceNumber = message.sequenceNumber;\n this.deltaManager.lastMessage = message;\n this.deltaManager.minimumSequenceNumber = message.minimumSequenceNumber;\n const [local, localOpMetadata] = this.processInternal(message);\n this.deltaConnections.forEach((dc) => {\n dc.process(message, local, localOpMetadata);\n });\n }\n addPendingMessage(content, localOpMetadata, clientSequenceNumber) {\n const pendingMessage = {\n content,\n clientSequenceNumber,\n localOpMetadata,\n };\n this.pendingMessages.push(pendingMessage);\n }\n processInternal(message) {\n let localOpMetadata;\n const local = this.clientId === message.clientId;\n if (local) {\n const pendingMessage = this.pendingMessages.shift();\n (0, common_utils_1.assert)((pendingMessage === null || pendingMessage === void 0 ? void 0 : pendingMessage.clientSequenceNumber) === message.clientSequenceNumber, \"Unexpected client sequence number from message\");\n localOpMetadata = pendingMessage.localOpMetadata;\n }\n return [local, localOpMetadata];\n }\n}\nexports.MockContainerRuntime = MockContainerRuntime;\n/**\n * Factory to create MockContainerRuntime for testing basic submitting and processing of messages.\n * This also acts as a very basic server that stores the messages from all the MockContainerRuntimes and\n * processes them when asked.\n * If test specific logic is required, extend this class and add the logic there. For an example, take a look\n * at MockContainerRuntimeFactoryForReconnection.\n */\nclass MockContainerRuntimeFactory {\n constructor() {\n this.sequenceNumber = 0;\n this.minSeq = new Map();\n this.quorum = new MockQuorumClients();\n /**\n * The MockContainerRuntimes we produce will push messages into this queue as they are submitted.\n * This is playing the role of the orderer, establishing a single universal order for the messages generated.\n * They are held in this queue until we explicitly choose to process them, at which time they are \"broadcast\" to\n * each of the runtimes.\n */\n this.messages = [];\n this.runtimes = [];\n }\n get outstandingMessageCount() {\n return this.messages.length;\n }\n getMinSeq() {\n let minimumSequenceNumber;\n for (const [client, clientSequenceNumber] of this.minSeq) {\n // We have to make sure, a client is part of the quorum, when\n // we compute the msn. We assume that the quoarum accurately\n // represents the currently connected clients. In some tests\n // for reconnects, we will remove clients from the quorum\n // to indicate they are currently not connected. In that case,\n // they must no longer contribute to the msn computation.\n if (this.quorum.getMember(client) !== undefined) {\n minimumSequenceNumber =\n minimumSequenceNumber === undefined\n ? clientSequenceNumber\n : Math.min(minimumSequenceNumber, clientSequenceNumber);\n }\n }\n return minimumSequenceNumber !== null && minimumSequenceNumber !== void 0 ? minimumSequenceNumber : 0;\n }\n createContainerRuntime(dataStoreRuntime) {\n const containerRuntime = new MockContainerRuntime(dataStoreRuntime, this);\n this.runtimes.push(containerRuntime);\n return containerRuntime;\n }\n pushMessage(msg) {\n if (msg.clientId && msg.referenceSequenceNumber !== undefined && !this.minSeq.has(msg.clientId)) {\n this.minSeq.set(msg.clientId, msg.referenceSequenceNumber);\n }\n this.messages.push(msg);\n }\n /**\n * Process one of the queued messages. Throws if no messages are queued.\n */\n processOneMessage() {\n if (this.messages.length === 0) {\n throw new Error(\"Tried to process a message that did not exist\");\n }\n let msg = this.messages.shift();\n // Explicitly JSON clone the value to match the behavior of going thru the wire.\n msg = JSON.parse(JSON.stringify(msg));\n this.minSeq.set(msg.clientId, msg.referenceSequenceNumber);\n msg.sequenceNumber = ++this.sequenceNumber;\n msg.minimumSequenceNumber = this.getMinSeq();\n for (const runtime of this.runtimes) {\n runtime.process(msg);\n }\n }\n /**\n * Process a given number of queued messages. Throws if there are fewer messages queued than requested.\n * @param count - the number of messages to process\n */\n processSomeMessages(count) {\n if (count > this.messages.length) {\n throw new Error(\"Tried to process more messages than exist\");\n }\n for (let i = 0; i < count; i++) {\n this.processOneMessage();\n }\n }\n /**\n * Process all remaining messages in the queue.\n */\n processAllMessages() {\n while (this.messages.length > 0) {\n this.processOneMessage();\n }\n }\n}\nexports.MockContainerRuntimeFactory = MockContainerRuntimeFactory;\nclass MockQuorumClients {\n constructor(...members) {\n var _a;\n this.eventEmitter = new events_1.EventEmitter();\n this.disposed = false;\n this.members = new Map((_a = members) !== null && _a !== void 0 ? _a : []);\n }\n addMember(id, client) {\n this.members.set(id, client);\n this.eventEmitter.emit(\"addMember\", id, client);\n }\n removeMember(id) {\n if (this.members.delete(id)) {\n this.eventEmitter.emit(\"removeMember\", id);\n }\n }\n getMembers() {\n return this.members;\n }\n getMember(clientId) {\n return this.getMembers().get(clientId);\n }\n dispose() {\n throw new Error(\"Method not implemented.\");\n }\n addListener(event, listener) {\n throw new Error(\"Method not implemented.\");\n }\n on(event, listener) {\n switch (event) {\n case \"afterOn\":\n this.eventEmitter.on(event, listener);\n return this;\n case \"addMember\":\n case \"removeMember\":\n this.eventEmitter.on(event, listener);\n this.eventEmitter.emit(\"afterOn\", event);\n return this;\n default:\n throw new Error(\"Method not implemented.\");\n }\n }\n once(event, listener) {\n throw new Error(\"Method not implemented.\");\n }\n prependListener(event, listener) {\n throw new Error(\"Method not implemented.\");\n }\n prependOnceListener(event, listener) {\n throw new Error(\"Method not implemented.\");\n }\n removeListener(event, listener) {\n this.eventEmitter.removeListener(event, listener);\n return this;\n }\n off(event, listener) {\n this.eventEmitter.off(event, listener);\n return this;\n }\n removeAllListeners(event) {\n throw new Error(\"Method not implemented.\");\n }\n setMaxListeners(n) {\n throw new Error(\"Method not implemented.\");\n }\n getMaxListeners() {\n throw new Error(\"Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n listeners(event) {\n throw new Error(\"Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n rawListeners(event) {\n throw new Error(\"Method not implemented.\");\n }\n emit(event, ...args) {\n throw new Error(\"Method not implemented.\");\n }\n eventNames() {\n throw new Error(\"Method not implemented.\");\n }\n listenerCount(type) {\n throw new Error(\"Method not implemented.\");\n }\n}\nexports.MockQuorumClients = MockQuorumClients;\n/**\n * Mock implementation of IRuntime for testing that does nothing\n */\nclass MockFluidDataStoreRuntime extends events_1.EventEmitter {\n constructor() {\n super(...arguments);\n this.documentId = undefined;\n this.id = (0, uuid_1.v4)();\n this.existing = undefined;\n this.options = {};\n this.clientId = (0, uuid_1.v4)();\n this.path = \"\";\n this.connected = true;\n this.deltaManager = new mockDeltas_1.MockDeltaManager();\n this.loader = undefined;\n this.logger = telemetry_utils_1.DebugLogger.create(\"fluid:MockFluidDataStoreRuntime\");\n this.quorum = new MockQuorumClients();\n this._local = false;\n this._disposed = false;\n }\n get IFluidHandleContext() { return this; }\n get rootRoutingContext() { return this; }\n get channelsRoutingContext() { return this; }\n get objectsRoutingContext() { return this; }\n get IFluidRouter() { return this; }\n get absolutePath() {\n return `/${this.id}`;\n }\n get local() {\n return this._local;\n }\n set local(local) {\n this._local = local;\n }\n get disposed() { return this._disposed; }\n dispose() {\n this._disposed = true;\n }\n async getChannel(id) {\n return null;\n }\n createChannel(id, type) {\n return null;\n }\n get isAttached() {\n return !this.local;\n }\n get attachState() {\n return this.local ? container_definitions_1.AttachState.Detached : container_definitions_1.AttachState.Attached;\n }\n bindChannel(channel) {\n return;\n }\n attachGraph() {\n return;\n }\n bindToContext() {\n return;\n }\n bind(handle) {\n return;\n }\n getQuorum() {\n return this.quorum;\n }\n getAudience() {\n return null;\n }\n save(message) {\n return;\n }\n async close() {\n return;\n }\n async uploadBlob(blob) {\n return null;\n }\n async getBlob(blobId) {\n return null;\n }\n submitMessage(type, content) {\n return null;\n }\n submitSignal(type, content) {\n return null;\n }\n process(message, local) {\n return;\n }\n processSignal(message, local) {\n return;\n }\n updateMinSequenceNumber(value) {\n return;\n }\n setConnectionState(connected, clientId) {\n return;\n }\n async resolveHandle(request) {\n return this.request(request);\n }\n async request(request) {\n return null;\n }\n addedGCOutboundReference(srcHandle, outboundHandle) { }\n async summarize(fullTree, trackState) {\n const stats = (0, runtime_utils_1.mergeStats)();\n stats.treeNodeCount++;\n return {\n summary: {\n type: protocol_definitions_1.SummaryType.Tree,\n tree: {},\n },\n stats,\n };\n }\n async getGCData() {\n return {\n gcNodes: {},\n };\n }\n updateUsedRoutes(usedRoutes, gcTimestamp) { }\n getAttachSnapshot() {\n return [];\n }\n getAttachSummary() {\n const stats = (0, runtime_utils_1.mergeStats)();\n stats.treeNodeCount++;\n return {\n summary: {\n type: protocol_definitions_1.SummaryType.Tree,\n tree: {},\n },\n stats,\n };\n }\n setAttachState(attachState) {\n return;\n }\n async waitAttached() {\n return;\n }\n async requestDataStore(request) {\n return null;\n }\n reSubmit(content, localOpMetadata) {\n return;\n }\n async applyStashedOp(content) {\n return;\n }\n rollback(message, localOpMetadata) {\n return;\n }\n}\nexports.MockFluidDataStoreRuntime = MockFluidDataStoreRuntime;\n/**\n * Mock implementation of IDeltaConnection\n */\nclass MockEmptyDeltaConnection {\n constructor() {\n this.connected = false;\n }\n attach(handler) {\n }\n submit(messageContent) {\n (0, common_utils_1.assert)(false, \"Throw submit error on mock empty delta connection\");\n return 0;\n }\n dirty() { }\n}\nexports.MockEmptyDeltaConnection = MockEmptyDeltaConnection;\n/**\n * Mock implementation of IChannelStorageService\n */\nclass MockObjectStorageService {\n constructor(contents) {\n this.contents = contents;\n }\n async readBlob(path) {\n return (0, common_utils_1.stringToBuffer)(this.contents[path], \"utf8\");\n }\n async contains(path) {\n return this.contents[path] !== undefined;\n }\n async list(path) {\n const pathPartsLength = (0, runtime_utils_1.getNormalizedObjectStoragePathParts)(path).length;\n return Object.keys(this.contents)\n .filter((key) => key.startsWith(path)\n && key.split(\"/\").length === pathPartsLength + 1);\n }\n}\nexports.MockObjectStorageService = MockObjectStorageService;\n/**\n * Mock implementation of IChannelServices\n */\nclass MockSharedObjectServices {\n constructor(contents) {\n this.deltaConnection = new MockEmptyDeltaConnection();\n this.objectStorage = new MockObjectStorageService(contents);\n }\n static createFromSummary(summaryTree) {\n const contents = {};\n for (const [key, value] of Object.entries(summaryTree.tree)) {\n (0, common_utils_1.assert)(value.type === protocol_definitions_1.SummaryType.Blob, \"Unexpected summary type on mock createFromSummary\");\n contents[key] = value.content;\n }\n return new MockSharedObjectServices(contents);\n }\n}\nexports.MockSharedObjectServices = MockSharedObjectServices;\n//# sourceMappingURL=mocks.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MockFluidDataStoreContext = void 0;\nconst telemetry_utils_1 = require(\"@fluidframework/telemetry-utils\");\nconst uuid_1 = require(\"uuid\");\nclass MockFluidDataStoreContext {\n constructor(id = (0, uuid_1.v4)(), existing = false, logger = telemetry_utils_1.DebugLogger.create(\"fluid:MockFluidDataStoreContext\")) {\n this.id = id;\n this.existing = existing;\n this.logger = logger;\n /**\n * @deprecated This field is currently unused and will be removed in an\n * upcoming breaking change\n */\n this.documentId = undefined;\n this.isLocalDataStore = true;\n this.packagePath = undefined;\n this.options = undefined;\n this.clientId = (0, uuid_1.v4)();\n this.clientDetails = undefined;\n this.connected = true;\n this.deltaManager = undefined;\n this.containerRuntime = undefined;\n this.storage = undefined;\n this.IFluidDataStoreRegistry = undefined;\n this.IFluidHandleContext = undefined;\n /**\n * Indicates the attachment state of the data store to a host service.\n */\n this.attachState = undefined;\n this.scope = undefined;\n }\n on(event, listener) {\n switch (event) {\n case \"attaching\":\n case \"attached\":\n return this;\n default:\n throw new Error(\"Method not implemented.\");\n }\n }\n once(event, listener) {\n return this;\n }\n off(event, listener) {\n throw new Error(\"Method not implemented.\");\n }\n getQuorum() {\n return undefined;\n }\n getAudience() {\n return undefined;\n }\n submitMessage(type, content, localOpMetadata) {\n throw new Error(\"Method not implemented.\");\n }\n submitSignal(type, content) {\n throw new Error(\"Method not implemented.\");\n }\n bindToContext() {\n throw new Error(\"Method not implemented.\");\n }\n setChannelDirty(address) {\n throw new Error(\"Method not implemented.\");\n }\n async getAbsoluteUrl(relativeUrl) {\n throw new Error(\"Method not implemented.\");\n }\n getCreateChildSummarizerNodeFn(id, createParam) {\n throw new Error(\"Method not implemented.\");\n }\n async uploadBlob(blob) {\n throw new Error(\"Method not implemented.\");\n }\n async getInitialGCSummaryDetails() {\n throw new Error(\"Method not implemented.\");\n }\n async getBaseGCDetails() {\n throw new Error(\"Method not implemented.\");\n }\n}\nexports.MockFluidDataStoreContext = MockFluidDataStoreContext;\n//# sourceMappingURL=mocksDataStoreContext.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MockContainerRuntimeFactoryForReconnection = exports.MockContainerRuntimeForReconnection = void 0;\nconst uuid_1 = require(\"uuid\");\nconst common_utils_1 = require(\"@fluidframework/common-utils\");\nconst mocks_1 = require(\"./mocks\");\n/**\n * Specalized implementation of MockContainerRuntime for testing ops during reconnection.\n */\nclass MockContainerRuntimeForReconnection extends mocks_1.MockContainerRuntime {\n constructor(dataStoreRuntime, factory) {\n super(dataStoreRuntime, factory);\n /**\n * Contains messages from other clients that were sequenced while this runtime was marked as disconnected.\n */\n this.pendingRemoteMessages = [];\n this._connected = true;\n }\n get connected() {\n return this._connected;\n }\n set connected(connected) {\n if (this._connected === connected) {\n return;\n }\n this._connected = connected;\n if (connected) {\n for (const remoteMessage of this.pendingRemoteMessages) {\n this.process(remoteMessage);\n }\n this.pendingRemoteMessages.length = 0;\n this.clientSequenceNumber = 0;\n // We should get a new clientId on reconnection.\n this.clientId = (0, uuid_1.v4)();\n // Update the clientId in FluidDataStoreRuntime.\n this.dataStoreRuntime.clientId = this.clientId;\n this.factory.quorum.addMember(this.clientId, {});\n // On reconnection, ask the DDSes to resubmit pending messages.\n this.reSubmitMessages();\n }\n else {\n const factory = this.factory;\n // On disconnection, clear any outstanding messages for this client because it will be resent.\n factory.clearOutstandingClientMessages(this.clientId);\n this.factory.quorum.removeMember(this.clientId);\n }\n // Let the DDSes know that the connection state changed.\n this.deltaConnections.forEach((dc) => {\n dc.setConnectionState(this.connected);\n });\n }\n process(message) {\n if (this.connected) {\n super.process(message);\n }\n else {\n this.pendingRemoteMessages.push(message);\n }\n }\n submit(messageContent, localOpMetadata) {\n // Submit messages only if we are connection, otherwise, just add it to the pending queue.\n if (this.connected) {\n return super.submit(messageContent, localOpMetadata);\n }\n this.addPendingMessage(messageContent, localOpMetadata, -1);\n return -1;\n }\n reSubmitMessages() {\n let messageCount = this.pendingMessages.length;\n while (messageCount > 0) {\n const pendingMessage = this.pendingMessages.shift();\n (0, common_utils_1.assert)(pendingMessage !== undefined, \"this is impossible due to the above length check\");\n this.deltaConnections.forEach((dc) => {\n dc.reSubmit(pendingMessage.content, pendingMessage.localOpMetadata);\n });\n messageCount--;\n }\n }\n}\nexports.MockContainerRuntimeForReconnection = MockContainerRuntimeForReconnection;\n/**\n * Specalized implementation of MockContainerRuntimeFactory for testing ops during reconnection.\n */\nclass MockContainerRuntimeFactoryForReconnection extends mocks_1.MockContainerRuntimeFactory {\n createContainerRuntime(dataStoreRuntime) {\n const containerRuntime = new MockContainerRuntimeForReconnection(dataStoreRuntime, this);\n this.runtimes.push(containerRuntime);\n return containerRuntime;\n }\n clearOutstandingClientMessages(clientId) {\n // Delete all the messages for client with the given clientId.\n this.messages = this.messages.filter((message) => {\n return message.clientId !== clientId;\n });\n }\n}\nexports.MockContainerRuntimeFactoryForReconnection = MockContainerRuntimeFactoryForReconnection;\n//# sourceMappingURL=mocksForReconnection.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateAssertionError = void 0;\nconst assertionShortCodesMap_1 = require(\"./assertionShortCodesMap\");\n/**\n * Validates that an error thrown by our assert() function has the expected message, or a\n * short code that corresponds to that message.\n *\n * @remarks\n * The main use case for this is so tests that expect specific assert() calls to fail can\n * always do comparisons based on the original string message, and work whether they run\n * before the policy-check tool replaces those strings with short codes, or after. Note that\n * it either returns true or throws an error (the behavior expected by NodeJS' `assert.throws()`).\n *\n * @param error - The error object thrown by our `assert()` function. Its `message` property could\n * be a short code, or the original string message coded into the `asert()`.\n * @param expectedErrorMessage - The message that the error object should match (either explicitly,\n * or because it contains a short code which maps to that message).\n * @returns - `true` if the message in the error object that was passed in matches the expected\n * message. Otherwise it throws an error.\n */\nfunction validateAssertionError(error, expectedErrorMsg) {\n var _a;\n const mappedMsg = (_a = assertionShortCodesMap_1.shortCodeMap[error.message]) !== null && _a !== void 0 ? _a : error.message;\n if (mappedMsg !== expectedErrorMsg) {\n // This throws an Error instead of an AssertionError because AssertionError would require a dependency on the\n // node assert library, which we don't want to do for this library because it's used in the browser.\n throw new Error(`Unexpected assertion thrown: ${error.message} ('${mappedMsg}')`);\n }\n return true;\n}\nexports.validateAssertionError = validateAssertionError;\n//# sourceMappingURL=validateAssertionError.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A browser friendly version of the node assert library. Use this instead of the 'assert' package, which has a big\n * impact on bundle sizes.\n * @param condition - The condition that should be true, if the condition is false an error will be thrown.\n * @param message - The message to include in the error when the condition does not hold.\n * A number should not be specificed manually. Run policy-check to get shortcode number assigned.\n */\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(typeof message === \"number\" ? `0x${message.toString(16).padStart(3, \"0\")}` : message);\n }\n}\n//# sourceMappingURL=assert.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer } from \"./indexNode\";\nexport const fromBase64ToUtf8 = (input) => IsoBuffer.from(input, \"base64\").toString(\"utf-8\");\nexport const fromUtf8ToBase64 = (input) => IsoBuffer.from(input, \"utf8\").toString(\"base64\");\n/**\n * Convenience function to convert unknown encoding to utf8 that avoids\n * buffer copies/encode ops when no conversion is needed\n * @param input - The source string to convert\n * @param encoding - The source string's encoding\n */\nexport const toUtf8 = (input, encoding) => {\n switch (encoding) {\n case \"utf8\":\n case \"utf-8\":\n return input;\n default:\n return IsoBuffer.from(input, encoding).toString();\n }\n};\n//# sourceMappingURL=base64Encoding.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as base64js from \"base64-js\";\nimport { assert } from \"./assert\";\n/**\n * Converts a Uint8Array to a string of the provided encoding\n * Useful when the array might be an IsoBuffer\n * @param arr - The array to convert\n * @param encoding - Optional target encoding; only \"utf8\" and \"base64\" are\n * supported, with \"utf8\" being default\n * @returns The converted string\n */\nexport function Uint8ArrayToString(arr, encoding) {\n switch (encoding) {\n case \"base64\": {\n return base64js.fromByteArray(arr);\n }\n case \"utf8\":\n case \"utf-8\":\n case undefined: {\n return new TextDecoder().decode(arr);\n }\n default: {\n throw new Error(\"invalid/unsupported encoding\");\n }\n }\n}\n/**\n * Convert base64 or utf8 string to array buffer\n * @param encoding - input string's encoding\n */\nexport const stringToBuffer = (input, encoding) => IsoBuffer.from(input, encoding).buffer;\n/**\n * Convert binary blob to string format\n *\n * @param blob - the binary blob\n * @param encoding - output string's encoding\n * @returns the blob in string format\n */\nexport const bufferToString = (blob, encoding) => IsoBuffer.from(blob).toString(encoding);\n/**\n * Determines if an object is an array buffer\n * Will detect and reject TypedArrays, like Uint8Array.\n * Reason - they can be viewport into Array, they can be accepted, but caller has to deal with\n * math properly (i.e. take into account byteOffset at minimum).\n * For example, construction of new TypedArray can be in the form of new TypedArray(typedArray) or\n * new TypedArray(buffer, byteOffset, length), but passing TypedArray will result in fist path (and\n * ignoring byteOffice, length)\n * @param obj - The object to determine if it is an ArrayBuffer\n */\nexport function isArrayBuffer(obj) {\n const maybe = obj;\n return obj instanceof ArrayBuffer\n || (typeof maybe === \"object\"\n && maybe !== null\n && typeof maybe.byteLength === \"number\"\n && typeof maybe.slice === \"function\"\n && maybe.byteOffset === undefined\n && maybe.buffer === undefined);\n}\n/**\n * Minimal implementation of Buffer for our usages in the browser environment.\n */\nexport class IsoBuffer extends Uint8Array {\n /**\n * Convert the buffer to a string.\n * Only supports encoding the whole string (unlike the Node Buffer equivalent)\n * and only utf8 and base64 encodings\n * @param encoding\n */\n toString(encoding) {\n return Uint8ArrayToString(this, encoding);\n }\n /**\n * @param value - string | ArrayBuffer\n * @param encodingOrOffset - string | number\n * @param length - number\n */\n static from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return IsoBuffer.fromString(value, encodingOrOffset);\n // Capture any typed arrays, including Uint8Array (and thus - IsoBuffer!)\n }\n else if (value !== null && typeof value === \"object\" && isArrayBuffer(value.buffer)) {\n // Support currently for full array, no view ports! (though it can be added in future)\n assert(value.byteOffset === 0, 0x000 /* \"nonzero isobuffer byte offset\" */);\n assert(value.byteLength === value.buffer.byteLength, 0x001 /* \"unexpected isobuffer byte length\" */);\n return IsoBuffer.fromArrayBuffer(value.buffer, encodingOrOffset, length);\n }\n else if (isArrayBuffer(value)) {\n return IsoBuffer.fromArrayBuffer(value, encodingOrOffset, length);\n }\n else {\n throw new TypeError();\n }\n }\n static fromArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n const offset = byteOffset !== null && byteOffset !== void 0 ? byteOffset : 0;\n const validLength = byteLength !== null && byteLength !== void 0 ? byteLength : arrayBuffer.byteLength - offset;\n if (offset < 0 ||\n offset > arrayBuffer.byteLength ||\n validLength < 0 ||\n validLength + offset > arrayBuffer.byteLength) {\n throw new RangeError();\n }\n return new IsoBuffer(arrayBuffer, offset, validLength);\n }\n static fromString(str, encoding) {\n switch (encoding) {\n case \"base64\": {\n const sanitizedString = this.sanitizeBase64(str);\n const encoded = base64js.toByteArray(sanitizedString);\n return new IsoBuffer(encoded.buffer);\n }\n case \"utf8\":\n case \"utf-8\":\n case undefined: {\n const encoded = new TextEncoder().encode(str);\n return new IsoBuffer(encoded.buffer);\n }\n default: {\n throw new Error(\"invalid/unsupported encoding\");\n }\n }\n }\n static isBuffer(obj) {\n throw new Error(\"unimplemented\");\n }\n /**\n * Sanitize a base64 string to provide to base64-js library. base64-js\n * is not as tolerant of the same malformed base64 as Node's Buffer is.\n * @param str\n */\n static sanitizeBase64(str) {\n let sanitizedStr = str;\n // Remove everything after padding - Node buffer ignores everything\n // after any padding whereas base64-js does not\n sanitizedStr = sanitizedStr.split(\"=\")[0];\n // Remove invalid characters - Node buffer strips invalid characters\n // whereas base64-js replaces them with \"A\"\n sanitizedStr = sanitizedStr.replace(/[^\\w+-/]/g, \"\");\n // Check for missing padding - Node buffer tolerates missing padding\n // whereas base64-js does not\n if (sanitizedStr.length % 4 !== 0) {\n const paddingArray = [\"\", \"===\", \"==\", \"=\"];\n sanitizedStr += paddingArray[sanitizedStr.length % 4];\n }\n return sanitizedStr;\n }\n}\n//# sourceMappingURL=bufferBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as base64js from \"base64-js\";\nimport { IsoBuffer } from \"./bufferBrowser\";\nasync function digestBuffer(file, algorithm) {\n const hash = await crypto.subtle.digest(algorithm, file);\n return new Uint8Array(hash);\n}\nfunction encodeDigest(hashArray, encoding) {\n // eslint-disable-next-line default-case\n switch (encoding) {\n case \"hex\": {\n const hashHex = Array.prototype.map.call(hashArray, (byte) => {\n return byte.toString(16).padStart(2, \"0\");\n }).join(\"\");\n return hashHex;\n }\n case \"base64\": {\n return base64js.fromByteArray(hashArray);\n }\n }\n}\n/**\n * Hash a file. Consistent within a session, but should not be persisted and\n * is not consistent with git.\n * If called under an insecure context for a browser, this will fallback to\n * using the node implementation.\n *\n * @param file - The contents of the file in a buffer\n * @param algorithm - The hash algorithm to use, artificially constrained by what is used internally\n * @param hashEncoding - The encoding of the returned hash, also artificially constrained\n * @returns The hash of the content of the buffer\n */\nexport async function hashFile(file, algorithm = \"SHA-1\", hashEncoding = \"hex\") {\n // Handle insecure contexts (e.g. running with local services)\n // by deferring to Node version, which uses a hash polyfill\n // When packed, this chunk will show as \"FluidFramework-HashFallback\" separately\n // from the main chunk and will be of non-trivial size. It will not be served\n // under normal circumstances.\n if (crypto.subtle === undefined) {\n return import(\n /* webpackChunkName: \"FluidFramework-HashFallback\" */\n \"./hashFileNode\").then(async (m) => m.hashFile(file, algorithm, hashEncoding));\n }\n // This is split up this way to facilitate testing (see the test for more info)\n const hashArray = await digestBuffer(file, algorithm);\n return encodeDigest(hashArray, hashEncoding);\n}\n/**\n * Create a github hash (Github hashes the string with blob and size)\n * Must be called under secure context for browsers\n *\n * @param file - The contents of the file in a buffer\n * @returns The sha1 hash of the content of the buffer with the `blob` prefix and size\n */\nexport async function gitHashFile(file) {\n const size = file.byteLength;\n const filePrefix = `blob ${size.toString()}${String.fromCharCode(0)}`;\n const hashBuffer = IsoBuffer.from(filePrefix + file.toString());\n // hashFile uses sha1; if that changes this will need to change too\n return hashFile(hashBuffer);\n}\n//# sourceMappingURL=hashFileBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Manages a queue of work to be batch processed at next javascript turn of execution\n */\nexport class BatchManager {\n /**\n * Creates an instance of BatchManager.\n * @param process - callback to process the work\n */\n constructor(process, maxBatchSize = 100) {\n this.process = process;\n this.maxBatchSize = maxBatchSize;\n this.pendingWork = new Map();\n }\n /**\n * Queue up a work item to be processed\n *\n * @param id - id of the batch to add the work item to\n * @param work - the work item to be added\n */\n add(id, work) {\n if (!this.pendingWork.has(id)) {\n this.pendingWork.set(id, []);\n }\n this.pendingWork.get(id)\n .push(work);\n if (this.pendingWork.get(id).length >= this.maxBatchSize) {\n if (this.pendingTimer !== undefined) {\n clearTimeout(this.pendingTimer);\n }\n this.pendingTimer = undefined;\n this.startWork();\n }\n else if (this.pendingTimer === undefined) {\n this.pendingTimer = setTimeout(() => {\n this.pendingTimer = undefined;\n this.startWork();\n }, 0);\n }\n }\n /**\n * Process all the pending work item synchronously now\n */\n drain() {\n this.startWork();\n }\n startWork() {\n // Clear the internal flags first to avoid issues in case any of the pending work calls back into\n // the batch manager. We could also do this with a second setImmediate call but avoiding in order\n // to process the work quicker.\n const pendingWork = this.pendingWork;\n this.pendingWork = new Map();\n // TODO log to influx how much pending work there is. We want to limit the size of a batch\n for (const [id, batch] of pendingWork) {\n this.process(id, batch);\n }\n }\n}\n//# sourceMappingURL=batchManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport function doIfNotDisposed(disposable, f) {\n return (...args) => {\n if (disposable.disposed) {\n throw new Error(\"Already disposed\");\n }\n else {\n return f(...args);\n }\n };\n}\n//# sourceMappingURL=disposal.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"./typedEventEmitter\";\n/**\n * Base class used for forwarding events from a source EventEmitter.\n * This can be useful when all arbitrary listeners need to be removed,\n * but the primary source needs to stay intact.\n */\nexport class EventForwarder extends TypedEventEmitter {\n constructor(source) {\n super();\n this.isDisposed = false;\n this.forwardingEvents = new Map();\n if (source !== undefined) {\n // NewListener event is raised whenever someone starts listening to this events, so\n // we keep track of events being listened to, and start forwarding from the source\n // event emitter per event listened to on this\n const removeListenerHandler = (event) => this.unforwardEvent(source, event);\n const newListenerHandler = (event) => this.forwardEvent(source, event);\n this.on(EventForwarder.removeListenerEvent, removeListenerHandler);\n this.on(EventForwarder.newListenerEvent, newListenerHandler);\n }\n }\n static isEmitterEvent(event) {\n return event === EventForwarder.newListenerEvent || event === EventForwarder.removeListenerEvent;\n }\n get disposed() { return this.isDisposed; }\n dispose() {\n this.isDisposed = true;\n for (const listenerRemovers of this.forwardingEvents.values()) {\n for (const listenerRemover of listenerRemovers.values()) {\n try {\n listenerRemover();\n }\n catch (_a) {\n // Should be fine because of removeAllListeners below\n }\n }\n }\n this.removeAllListeners();\n this.forwardingEvents.clear();\n }\n forwardEvent(source, ...events) {\n for (const event of events) {\n if (source !== undefined && event !== undefined && !EventForwarder.isEmitterEvent(event)) {\n let sources = this.forwardingEvents.get(event);\n if (sources === undefined) {\n sources = new Map();\n this.forwardingEvents.set(event, sources);\n }\n if (!sources.has(source)) {\n const listener = (...args) => this.emit(event, ...args);\n sources.set(source, () => source.off(event, listener));\n source.on(event, listener);\n }\n }\n }\n }\n unforwardEvent(source, ...events) {\n for (const event of events) {\n if (event !== undefined && !EventForwarder.isEmitterEvent(event)) {\n const sources = this.forwardingEvents.get(event);\n if (sources === null || sources === void 0 ? void 0 : sources.has(source)) {\n if (this.listenerCount(event) === 0) {\n const listenerRemover = sources.get(source);\n if (listenerRemover !== undefined) {\n listenerRemover();\n }\n sources.delete(source);\n if (sources.size === 0) {\n this.forwardingEvents.delete(event);\n }\n }\n }\n }\n }\n }\n}\nEventForwarder.newListenerEvent = \"newListener\";\nEventForwarder.removeListenerEvent = \"removeListener\";\n//# sourceMappingURL=eventForwarder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A comparer for numbers\n */\nexport const NumberComparer = {\n /**\n * The compare function for numbers,\n * @returns difference of the two number\n */\n compare: (a, b) => a - b,\n /**\n * The minimum value of a javascript number, which is Number.MIN_VALUE\n */\n min: Number.MIN_VALUE,\n};\n/**\n * Ordered Heap data structure implementation\n */\nexport class Heap {\n /**\n * Creates an instance of Heap with comparer\n * @param comp - a comparer that specify how elements are ordered\n */\n constructor(comp) {\n this.comp = comp;\n this.L = [{ value: comp.min, position: 0 }];\n }\n /**\n * Return the smallest element in the heap as determined by the order of the comparer\n *\n * @returns heap node containing the smallest element\n */\n peek() {\n return this.L[1];\n }\n /**\n * Get and remove the smallest element in the heap as determined by the order of the comparer\n *\n * @returns the smallest value in the heap\n */\n get() {\n this.swap(1, this.count());\n const x = this.L.pop();\n this.fixdown(1);\n return x.value;\n }\n /**\n * Add a value to the heap\n *\n * @param x - value to add\n * @returns the heap node that contains the value\n */\n add(x) {\n const node = { value: x, position: this.L.length };\n this.L.push(node);\n this.fixup(this.count());\n return node;\n }\n /**\n * Allows for heap to be updated after a node's value changes\n */\n update(node) {\n const k = node.position;\n if (this.isGreaterThanParent(k)) {\n this.fixup(k);\n }\n else {\n this.fixdown(k);\n }\n }\n /**\n * Removes the given node from the heap\n *\n * @param node - the node to remove from the heap\n */\n remove(node) {\n // Move the node we want to remove to the end of the array\n const position = node.position;\n this.swap(node.position, this.L.length - 1);\n this.L.splice(this.L.length - 1);\n // Update the swapped node assuming we didn't remove the end of the list\n if (position !== this.L.length) {\n this.update(this.L[position]);\n }\n }\n /**\n * Get the number of elements in the Heap\n *\n * @returns the number of elements in the Heap\n */\n count() {\n return this.L.length - 1;\n }\n fixup(pos) {\n let k = pos;\n while (this.isGreaterThanParent(k)) {\n const parent = k >> 1;\n this.swap(k, parent);\n k = parent;\n }\n }\n isGreaterThanParent(k) {\n return k > 1 && (this.comp.compare(this.L[k >> 1].value, this.L[k].value) > 0);\n }\n fixdown(pos) {\n let k = pos;\n while ((k << 1) <= this.count()) {\n let j = k << 1;\n if ((j < this.count()) && (this.comp.compare(this.L[j].value, this.L[j + 1].value) > 0)) {\n j++;\n }\n if (this.comp.compare(this.L[k].value, this.L[j].value) <= 0) {\n break;\n }\n this.swap(k, j);\n k = j;\n }\n }\n swap(k, j) {\n const tmp = this.L[k];\n this.L[k] = this.L[j];\n this.L[k].position = k;\n this.L[j] = tmp;\n this.L[j].position = j;\n }\n}\n//# sourceMappingURL=heap.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Handles garbage collection of expiring cache entries.\n * Not exported.\n */\nclass GarbageCollector {\n constructor(expiry, cleanup) {\n this.expiry = expiry;\n this.cleanup = cleanup;\n this.gcTimeouts = new Map();\n }\n /**\n * Schedule GC for the given key, as applicable\n */\n schedule(key) {\n if (this.expiry.policy !== \"indefinite\") {\n this.gcTimeouts.set(key, setTimeout(() => { this.cleanup(key); this.cancel(key); }, this.expiry.durationMs));\n }\n }\n /**\n * Cancel any pending GC for the given key\n */\n cancel(key) {\n const timeout = this.gcTimeouts.get(key);\n if (timeout !== undefined) {\n clearTimeout(timeout);\n this.gcTimeouts.delete(key);\n }\n }\n /**\n * Update any pending GC for the given key, as applicable\n */\n update(key) {\n // Cancel/reschedule new GC if the policy is sliding\n if (this.expiry.policy === \"sliding\") {\n this.cancel(key);\n this.schedule(key);\n }\n }\n}\n/**\n* A specialized cache for async work, allowing you to safely cache the promised result of some async work\n* without fear of running it multiple times or losing track of errors.\n*/\nexport class PromiseCache {\n /**\n * Create the PromiseCache with the given options, with the following defaults:\n *\n * expiry: indefinite, removeOnError: true for all errors\n */\n constructor({ expiry = { policy: \"indefinite\" }, removeOnError = () => true, } = {}) {\n this.cache = new Map();\n this.removeOnError = removeOnError;\n this.gc = new GarbageCollector(expiry, (key) => this.remove(key));\n }\n /**\n * Check if there's anything cached at the given key\n */\n has(key) {\n return this.cache.has(key);\n }\n /**\n * Get the Promise for the given key, or undefined if it's not found.\n * Extend expiry if applicable.\n */\n get(key) {\n if (this.has(key)) {\n this.gc.update(key);\n }\n return this.cache.get(key);\n }\n /**\n * Remove the Promise for the given key, returning true if it was found and removed\n */\n remove(key) {\n this.gc.cancel(key);\n return this.cache.delete(key);\n }\n /**\n * Try to add the result of the given asyncFn, without overwriting an existing cache entry at that key.\n * Returns a Promise for the added or existing async work being done at that key.\n * @param key - key name where to store the async work\n * @param asyncFn - the async work to do and store, if not already in progress under the given key\n */\n async addOrGet(key, asyncFn) {\n // NOTE: Do not await the Promise returned by asyncFn!\n // Let the caller do so once we return or after a subsequent call to get\n let promise = this.get(key);\n if (promise === undefined) {\n // Wrap in an async lambda in case asyncFn disabled @typescript-eslint/promise-function-async\n const safeAsyncFn = async () => asyncFn();\n // Start the async work and put the Promise in the cache\n promise = safeAsyncFn();\n this.cache.set(key, promise);\n // If asyncFn throws, we may remove the Promise from the cache\n promise.catch((error) => {\n if (this.removeOnError(error)) {\n this.remove(key);\n }\n });\n this.gc.schedule(key);\n }\n return promise;\n }\n /**\n * Try to add the result of the given asyncFn, without overwriting an existing cache entry at that key.\n * Returns false if the cache already contained an entry at that key, and true otherwise.\n * @param key - key name where to store the async work\n * @param asyncFn - the async work to do and store, if not already in progress under the given key\n */\n add(key, asyncFn) {\n const alreadyPresent = this.has(key);\n // We are blindly adding the Promise to the cache here, which introduces a Promise in this scope.\n // Swallow Promise rejections here, since whoever gets this out of the cache to use it will await/catch.\n this.addOrGet(key, asyncFn)\n .catch(() => { });\n return !alreadyPresent;\n }\n /**\n * Try to add the given value, without overwriting an existing cache entry at that key.\n * Returns a Promise for the added or existing async work being done at that key.\n * @param key - key name where to store the async work\n * @param value - value to store\n */\n async addValueOrGet(key, value) {\n return this.addOrGet(key, async () => value);\n }\n /**\n * Try to add the given value, without overwriting an existing cache entry at that key.\n * Returns false if the cache already contained an entry at that key, and true otherwise.\n * @param key - key name where to store the value\n * @param value - value to store\n */\n addValue(key, value) {\n return this.add(key, async () => value);\n }\n}\n//# sourceMappingURL=promiseCache.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n// eslint-disable-next-line import/no-internal-modules\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { assert } from \"./assert\";\n/**\n * Helper class that keeps track of the relation between two ranges in a 1:N fashion. Primary\n * is continuous and always maps to a single value in secondary above the base value. The range\n * defines an increasing step function.\n *\n * Used by deli to keep track of the branch map\n */\nexport class RangeTracker {\n constructor(primary, secondary) {\n if (typeof primary === \"number\") {\n this.ranges = [{ length: 0, primary, secondary }];\n this.lastPrimary = primary;\n this.lastSecondary = secondary;\n }\n else {\n this.ranges = cloneDeep(primary.ranges);\n this.lastPrimary = primary.lastPrimary;\n this.lastSecondary = primary.lastSecondary;\n }\n }\n get base() {\n return this.ranges[0].primary;\n }\n /**\n * Getter for the last primary that was added\n *\n * @returns last primary that was added\n */\n get primaryHead() {\n return this.lastPrimary;\n }\n /**\n * Getter for the last secondary that was added\n *\n * @returns last secondary that was added\n */\n get secondaryHead() {\n return this.lastSecondary;\n }\n /**\n * Returns a serialized form of the RangeTracker\n */\n serialize() {\n return {\n lastPrimary: this.lastPrimary,\n lastSecondary: this.lastSecondary,\n ranges: cloneDeep(this.ranges),\n };\n }\n /**\n * Add a primary, secondary pair to the range\n *\n * @param primary - the primary number in the range\n * @param secondary - the secondary number in the range\n */\n add(primary, secondary) {\n // Both values must continuously be increasing - we won't always track the last value we saw so we do so\n // below to check invariants\n assert(primary >= this.lastPrimary, 0x003 /* \"Primary to add to range < last primary!\" */);\n if (this.lastSecondary !== undefined) {\n assert(secondary >= this.lastSecondary, 0x004 /* \"Secondary to add to range < last secondary!\" */);\n }\n this.lastPrimary = primary;\n this.lastSecondary = secondary;\n // Get quicker references to the head of the range\n const head = this.ranges[this.ranges.length - 1];\n const primaryHead = head.primary + head.length;\n const secondaryHead = head.secondary + head.length;\n // Same secondary indicates this is not a true inflection point - we can ignore it\n if (secondary === secondaryHead) {\n return;\n }\n // New secondary - need to update the ranges\n if (primary === primaryHead) {\n // Technically this code path has us supporting N:N ranges. But we simply overwrite duplicate values to\n // preserve 1:N since you can only lookup from the primary to a secondary\n if (head.length === 0) {\n // No range represented - we can simply update secondary with the overwritten value\n head.secondary = secondary;\n }\n else {\n // The values in the range before this one are valid - but we need to create a new one for this update\n head.length--;\n this.ranges.push({ length: 0, primary, secondary });\n }\n }\n else {\n if (primaryHead + 1 === primary && secondaryHead + 1 === secondary) {\n // Extend the length if both increase by the same amount\n head.length++;\n }\n else {\n // Insert a new node\n this.ranges.push({ length: 0, primary, secondary });\n }\n }\n }\n /**\n * Get the closest range to the primary\n *\n * @param primary - the primary value to look for\n * @returns the closest range to the primary\n */\n get(primary) {\n assert(primary >= this.ranges[0].primary, 0x005 /* \"Target primary to retrieve < first range's primary!\" */);\n // Find the first range where the starting position is greater than the primary. Our target range is\n // the one before it.\n let index = 1;\n for (; index < this.ranges.length; index++) {\n if (primary < this.ranges[index].primary) {\n break;\n }\n }\n assert(primary >= this.ranges[index - 1].primary, 0x006 /* \"Target primary to retrieve < last range's primary!\" */);\n // If the difference is within the stored range use it - otherwise add in the length - 1 as the highest\n // stored secondary value to use.\n const closestRange = this.ranges[index - 1];\n return Math.min(primary - closestRange.primary, closestRange.length) + closestRange.secondary;\n }\n /**\n * Update the range of primary\n *\n * @param primary - the primary value to update\n */\n updateBase(primary) {\n assert(primary >= this.ranges[0].primary, 0x007 /* \"Target primary to update < first range's primary!\" */);\n // Walk the ranges looking for the first one that is greater than the primary. Primary is then within the\n // previous index by definition (since it's less than the current index's primary but greather than the\n // previous index's primary) and we know primary must be greater than the base.\n let index = 1;\n for (; index < this.ranges.length; index++) {\n if (primary < this.ranges[index].primary) {\n break;\n }\n }\n assert(primary >= this.ranges[index - 1].primary, 0x008 /* \"Target primary to update < last range's primary!\" */);\n // Update the last range values\n const range = this.ranges[index - 1];\n const delta = primary - range.primary;\n range.secondary = range.secondary + Math.min(delta, range.length);\n range.length = Math.max(range.length - delta, 0);\n range.primary = primary;\n // And remove unnecessary ranges\n this.ranges = index - 1 > 0 ? this.ranges.slice(index - 1) : this.ranges;\n // Assert that the lowest value is now the input to this method\n assert(primary === this.ranges[0].primary, 0x009 /* \"After update, target primary is not first range's primary!\" */);\n }\n}\n//# sourceMappingURL=rangeTracker.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A rate limiter to make sure that a client can only request help for one task within a time window.\n */\nexport class RateLimiter {\n /**\n * Creates a rate limiter that keep track of the request it has made\n *\n * @param windowMSec - time in millisecond, use to filter out messages\n * for a clientId if the last request falls within this time window\n */\n constructor(windowMSec) {\n this.windowMSec = windowMSec;\n this.requestMap = new Map();\n }\n /**\n * Filter out the messages that had already been requested within the time window\n *\n * @param clientId - the clientId who want to send the message\n * @param messages - the message we want to send\n * @returns the message we approved to send that hasn't been sent recently\n */\n filter(clientId, messages) {\n const approvedList = [];\n const currentTime = Date.now();\n for (const message of messages) {\n const key = `${clientId}/${message}`;\n if (!this.requestMap.has(key)) {\n this.requestMap.set(key, currentTime);\n approvedList.push(message);\n }\n else if (this.requestMap.get(key) + this.windowMSec > currentTime) {\n continue;\n }\n else {\n this.requestMap.set(key, currentTime);\n approvedList.push(message);\n }\n }\n return approvedList;\n }\n}\n//# sourceMappingURL=rateLimiter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Wrapper for JSON.parse to translate all exception to return undefined\n *\n * @param json - the JSON string to parse\n * @returns the result JSON.parse is successful, undefined if exception happens\n */\nexport function safelyParseJSON(json) {\n let parsed;\n try {\n parsed = JSON.parse(json);\n }\n catch (e) {\n //\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parsed;\n}\n//# sourceMappingURL=safeParser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"./assert\";\nimport { Deferred } from \"./promises\";\n/**\n * This class is a thin wrapper over setTimeout and clearTimeout which\n * makes it simpler to keep track of recurring timeouts with the same\n * or similar handlers and timeouts.\n */\nexport class Timer {\n constructor(defaultTimeout, defaultHandler, getCurrentTick = () => Date.now()) {\n this.defaultTimeout = defaultTimeout;\n this.defaultHandler = defaultHandler;\n this.getCurrentTick = getCurrentTick;\n }\n /**\n * Returns true if the timer is running.\n */\n get hasTimer() {\n return !!this.runningState;\n }\n /**\n * Calls setTimeout and tracks the resulting timeout.\n * @param ms - overrides default timeout in ms\n * @param handler - overrides default handler\n */\n start(ms = this.defaultTimeout, handler = this.defaultHandler) {\n this.startCore(ms, handler, ms);\n }\n /**\n * Calls clearTimeout on the underlying timeout if running.\n */\n clear() {\n if (!this.runningState) {\n return;\n }\n clearTimeout(this.runningState.timeout);\n this.runningState = undefined;\n }\n /**\n * Restarts the timer with the new handler and duration.\n * If a new handler is passed, the original handler may\n * never execute.\n * This is a potentially more efficient way to clear and start\n * a new timer.\n * @param ms - overrides previous or default timeout in ms\n * @param handler - overrides previous or default handler\n */\n restart(ms, handler) {\n var _a, _b;\n if (!this.runningState) {\n // If restart is called first, it behaves as a call to start\n this.start(ms, handler);\n }\n else {\n const duration = ms !== null && ms !== void 0 ? ms : this.runningState.intendedDuration;\n const handlerToUse = (_b = handler !== null && handler !== void 0 ? handler : (_a = this.runningState.restart) === null || _a === void 0 ? void 0 : _a.handler) !== null && _b !== void 0 ? _b : this.runningState.handler;\n const remainingTime = this.calculateRemainingTime(this.runningState);\n if (duration < remainingTime) {\n // If remaining time exceeds restart duration, do a hard restart.\n // The existing timeout time is too long.\n this.start(duration, handlerToUse);\n }\n else if (duration === remainingTime) {\n // The existing timeout time is perfect, just update handler and data.\n this.runningState.handler = handlerToUse;\n this.runningState.restart = undefined;\n this.runningState.intendedDuration = duration;\n }\n else {\n // If restart duration exceeds remaining time, set restart info.\n // Existing timeout will start a new timeout for remaining time.\n this.runningState.restart = {\n startTick: this.getCurrentTick(),\n duration,\n handler: handlerToUse,\n };\n }\n }\n }\n startCore(duration, handler, intendedDuration) {\n this.clear();\n this.runningState = {\n startTick: this.getCurrentTick(),\n duration,\n intendedDuration,\n handler,\n timeout: setTimeout(() => this.handler(), duration),\n };\n }\n handler() {\n assert(!!this.runningState, 0x00a /* \"Running timer missing handler\" */);\n const restart = this.runningState.restart;\n if (restart !== undefined) {\n // Restart with remaining time\n const remainingTime = this.calculateRemainingTime(restart);\n this.startCore(remainingTime, () => restart.handler(), restart.duration);\n }\n else {\n // Run clear first, in case the handler decides to start again\n const handler = this.runningState.handler;\n this.clear();\n handler();\n }\n }\n calculateRemainingTime(runningTimeout) {\n const elapsedTime = this.getCurrentTick() - runningTimeout.startTick;\n return runningTimeout.duration - elapsedTime;\n }\n}\n/**\n * This class is a wrapper over setTimeout and clearTimeout which\n * makes it simpler to keep track of recurring timeouts with the\n * same handlers and timeouts, while also providing a promise that\n * resolves when it times out.\n */\nexport class PromiseTimer {\n constructor(defaultTimeout, defaultHandler) {\n this.timer = new Timer(defaultTimeout, () => this.wrapHandler(defaultHandler));\n }\n get hasTimer() {\n return this.timer.hasTimer;\n }\n async start(ms, handler) {\n this.clear();\n this.deferred = new Deferred();\n this.timer.start(ms, handler ? () => this.wrapHandler(handler) : undefined);\n return this.deferred.promise;\n }\n clear() {\n this.timer.clear();\n if (this.deferred) {\n this.deferred.resolve({ timerResult: \"cancel\" });\n this.deferred = undefined;\n }\n }\n wrapHandler(handler) {\n handler();\n assert(!!this.deferred, 0x00b /* \"Handler executed without deferred\" */);\n this.deferred.resolve({ timerResult: \"timeout\" });\n this.deferred = undefined;\n }\n}\n//# sourceMappingURL=timer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"./indexNode\";\n/**\n * Helper class for tracing performance of events\n * Time measurements are in milliseconds as a floating point with a decimal\n */\nexport class Trace {\n constructor(startTick) {\n this.startTick = startTick;\n this.lastTick = startTick;\n }\n static start() {\n const startTick = performance.now();\n return new Trace(startTick);\n }\n trace() {\n const tick = performance.now();\n const event = {\n totalTimeElapsed: tick - this.startTick,\n duration: tick - this.lastTick,\n tick,\n };\n this.lastTick = tick;\n return event;\n }\n}\n//# sourceMappingURL=trace.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Returns a promise that resolves after timeMs\n * @param timeMs - time in milliseconds to wait\n */\nexport const delay = async (timeMs) => new Promise((resolve) => setTimeout(() => resolve(), timeMs));\n//# sourceMappingURL=delay.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Convert Uint8Array array to ArrayBuffer\n * @param array - array to convert to ArrayBuffer\n */\nexport function Uint8ArrayToArrayBuffer(array) {\n if (array.byteOffset === 0 && array.byteLength === array.buffer.byteLength) {\n return array.buffer;\n }\n return array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength);\n}\n//# sourceMappingURL=bufferShared.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Helper class for lazy initialized values. Ensures the value is only generated once, and remain immutable\n */\nexport class Lazy {\n /**\n * Instantiates an instance of Lazy\n * @param valueGenerator - the function that will generate the value when value is accessed the first time\n */\n constructor(valueGenerator) {\n this.valueGenerator = valueGenerator;\n this._evaluated = false;\n }\n /**\n * Return true if the value as been generated, otherwise false\n */\n get evaluated() {\n return this._evaluated;\n }\n /**\n * Get the value. If this is the first call the value will be generated\n */\n get value() {\n if (!this._evaluated) {\n this._evaluated = true;\n this._value = this.valueGenerator();\n }\n return this._value;\n }\n}\n//# sourceMappingURL=lazy.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Null logger\n * It can be used in places where logger instance is required, but events should be not send over.\n */\nexport class BaseTelemetryNullLogger {\n /**\n * Send an event with the logger\n *\n * @param event - the event to send\n */\n send(event) {\n return;\n }\n}\n/**\n * Null logger\n * It can be used in places where logger instance is required, but events should be not send over.\n */\nexport class TelemetryNullLogger {\n send(event) {\n }\n sendTelemetryEvent(event, error) {\n }\n sendErrorEvent(event, error) {\n }\n sendPerformanceEvent(event, error) {\n }\n}\nexport function extractLogSafeErrorProperties(error) {\n const isRegularObject = (value) => {\n return value !== null && !Array.isArray(value) && typeof value === \"object\";\n };\n const removeMessageFromStack = (stack, errorName) => {\n const stackFrames = stack.split(\"\\n\");\n stackFrames.shift(); // Remove \"[ErrorName]: [ErrorMessage]\"\n if (errorName !== undefined) {\n stackFrames.unshift(errorName); // Add \"[ErrorName]\"\n }\n return stackFrames.join(\"\\n\");\n };\n const message = (typeof (error === null || error === void 0 ? void 0 : error.message) === \"string\")\n ? error.message\n : String(error);\n const safeProps = {\n message,\n };\n if (isRegularObject(error)) {\n const { errorType, stack, name } = error;\n if (typeof errorType === \"string\") {\n safeProps.errorType = errorType;\n }\n if (typeof stack === \"string\") {\n const errorName = (typeof name === \"string\") ? name : undefined;\n safeProps.stack = removeMessageFromStack(stack, errorName);\n }\n }\n return safeProps;\n}\n//# sourceMappingURL=logger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport const performance = window.performance;\n//# sourceMappingURL=performanceBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A deferred creates a promise and the ability to resolve or reject it\n */\nexport class Deferred {\n constructor() {\n this.completed = false;\n this.p = new Promise((resolve, reject) => {\n this.res = resolve;\n this.rej = reject;\n });\n }\n /**\n * Returns whether the underlying promise has been completed\n */\n get isCompleted() {\n return this.completed;\n }\n /**\n * Retrieves the underlying promise for the deferred\n *\n * @returns the underlying promise\n */\n get promise() {\n return this.p;\n }\n /**\n * Resolves the promise\n *\n * @param value - the value to resolve the promise with\n */\n resolve(value) {\n if (this.res !== undefined) {\n this.completed = true;\n this.res(value);\n }\n }\n /**\n * Rejects the promise\n *\n * @param value - the value to reject the promise with\n */\n reject(error) {\n if (this.rej !== undefined) {\n this.completed = true;\n this.rej(error);\n }\n }\n}\n/**\n * A lazy evaluated promise. The execute function is delayed until\n * the promise is used, e.g. await, then, catch ...\n * The execute function is only called once.\n * All calls are then proxied to the promise returned by the execute method.\n */\nexport class LazyPromise {\n constructor(execute) {\n this.execute = execute;\n }\n get [Symbol.toStringTag]() {\n return this.getPromise()[Symbol.toStringTag];\n }\n async then(onfulfilled, onrejected) {\n return this.getPromise().then(...arguments);\n }\n async catch(onrejected) {\n return this.getPromise().catch(...arguments);\n }\n async finally(onfinally) {\n return this.getPromise().finally(...arguments);\n }\n async getPromise() {\n if (this.result === undefined) {\n this.result = this.execute();\n }\n return this.result;\n }\n}\n//# sourceMappingURL=promises.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { EventEmitter } from \"events\";\n/**\n * Event Emitter helper class the supports emitting typed events\n */\nexport class TypedEventEmitter extends EventEmitter {\n constructor() {\n super();\n this.addListener = super.addListener.bind(this);\n this.on = super.on.bind(this);\n this.once = super.once.bind(this);\n this.prependListener = super.prependListener.bind(this);\n this.prependOnceListener = super.prependOnceListener.bind(this);\n this.removeListener = super.removeListener.bind(this);\n this.off = super.off.bind(this);\n }\n}\n//# sourceMappingURL=typedEventEmitter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This function can be used to assert at compile time that a given value has type never.\n * One common usage is in the default case of a switch block,\n * to ensure that all cases are explicitly handled.\n */\nexport function unreachableCase(_, message = \"Unreachable Case\") {\n throw new Error(message);\n}\n//# sourceMappingURL=unreachable.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Check if the package.json defines a Fluid package\n * @param pkg - the package json data to check if it is a Fluid package.\n */\nexport const isFluidPackage = (pkg) => typeof pkg === \"object\"\n && typeof (pkg === null || pkg === void 0 ? void 0 : pkg.name) === \"string\"\n && typeof (pkg === null || pkg === void 0 ? void 0 : pkg.fluid) === \"object\";\nexport const isFluidCodeDetails = (details) => {\n const maybeCodeDetails = details;\n return typeof maybeCodeDetails === \"object\"\n && (typeof (maybeCodeDetails === null || maybeCodeDetails === void 0 ? void 0 : maybeCodeDetails.package) === \"string\" || isFluidPackage(maybeCodeDetails === null || maybeCodeDetails === void 0 ? void 0 : maybeCodeDetails.package))\n && ((maybeCodeDetails === null || maybeCodeDetails === void 0 ? void 0 : maybeCodeDetails.config) === undefined || typeof (maybeCodeDetails === null || maybeCodeDetails === void 0 ? void 0 : maybeCodeDetails.config) === \"object\");\n};\nexport const IFluidCodeDetailsComparer = \"IFluidCodeDetailsComparer\";\n//# sourceMappingURL=fluidPackage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { isFluidPackage } from \"./fluidPackage\";\n/**\n * Determines if any object is an IFluidBrowserPackage\n * @param maybePkg - The object to check for compatibility with IFluidBrowserPackage\n */\nexport const isFluidBrowserPackage = (maybePkg) => {\n var _a, _b, _c, _d, _e, _f;\n return isFluidPackage(maybePkg)\n && typeof ((_c = (_b = (_a = maybePkg === null || maybePkg === void 0 ? void 0 : maybePkg.fluid) === null || _a === void 0 ? void 0 : _a.browser) === null || _b === void 0 ? void 0 : _b.umd) === null || _c === void 0 ? void 0 : _c.library) === \"string\"\n && Array.isArray((_f = (_e = (_d = maybePkg === null || maybePkg === void 0 ? void 0 : maybePkg.fluid) === null || _d === void 0 ? void 0 : _d.browser) === null || _e === void 0 ? void 0 : _e.umd) === null || _f === void 0 ? void 0 : _f.files);\n};\n//# sourceMappingURL=browserPackage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Different error types the Container may report out to the Host\n */\nexport var ContainerErrorType;\n(function (ContainerErrorType) {\n /**\n * Some error, most likely an exception caught by runtime and propagated to container as critical error\n */\n ContainerErrorType[\"genericError\"] = \"genericError\";\n /**\n * Throttling error from server. Server is busy and is asking not to reconnect for some time\n */\n ContainerErrorType[\"throttlingError\"] = \"throttlingError\";\n /**\n * Data loss error detected by Container / DeltaManager. Likely points to storage issue.\n */\n ContainerErrorType[\"dataCorruptionError\"] = \"dataCorruptionError\";\n /**\n * Error encountered when processing an operation. May correlate with data corruption.\n */\n ContainerErrorType[\"dataProcessingError\"] = \"dataProcessingError\";\n /**\n * Error indicating an API is being used improperly resulting in an invalid operation.\n */\n ContainerErrorType[\"usageError\"] = \"usageError\";\n /**\n * Error indicating an client session has expired. Currently this only happens when GC is allowed on a document and\n * aids in safely deleting unused objects.\n */\n ContainerErrorType[\"clientSessionExpiredError\"] = \"clientSessionExpiredError\";\n})(ContainerErrorType || (ContainerErrorType = {}));\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Accepted header keys for requests coming to the Loader\n */\nexport var LoaderHeader;\n(function (LoaderHeader) {\n /**\n * Override the Loader's default caching behavior for this container.\n */\n LoaderHeader[\"cache\"] = \"fluid-cache\";\n LoaderHeader[\"clientDetails\"] = \"fluid-client-details\";\n /**\n * Start the container in a paused, unconnected state. Defaults to false\n */\n LoaderHeader[\"loadMode\"] = \"loadMode\";\n LoaderHeader[\"reconnect\"] = \"fluid-reconnect\";\n LoaderHeader[\"sequenceNumber\"] = \"fluid-sequence-number\";\n /**\n * One of the following:\n * null or \"null\": use ops, no snapshots\n * undefined: fetch latest snapshot\n * otherwise, version sha to load snapshot\n */\n LoaderHeader[\"version\"] = \"version\";\n})(LoaderHeader || (LoaderHeader = {}));\n//# sourceMappingURL=loader.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The attachment state of some Fluid data (e.g. a container or data store), denoting whether it is uploaded to the\n * service. The transition from detached to attached state is a one-way transition.\n */\nexport var AttachState;\n(function (AttachState) {\n /**\n * In detached state, the data is only present on the local client's machine. It has not yet been uploaded\n * to the service.\n */\n AttachState[\"Detached\"] = \"Detached\";\n /**\n * In attaching state, the data has started the upload to the service, but has not yet completed.\n */\n AttachState[\"Attaching\"] = \"Attaching\";\n /**\n * In attached state, the data has completed upload to the service. It can be accessed by other clients after\n * reaching attached state.\n */\n AttachState[\"Attached\"] = \"Attached\";\n})(AttachState || (AttachState = {}));\n// Represents the bind state of the entity.\nexport var BindState;\n(function (BindState) {\n BindState[\"NotBound\"] = \"NotBound\";\n BindState[\"Binding\"] = \"Binding\";\n BindState[\"Bound\"] = \"Bound\";\n})(BindState || (BindState = {}));\nexport const IRuntimeFactory = \"IRuntimeFactory\";\n//# sourceMappingURL=runtime.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport const IFluidTokenProvider = \"IFluidTokenProvider\";\n//# sourceMappingURL=tokenProvider.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport var MessageType;\n(function (MessageType) {\n // Empty operation message. Used to send an updated reference sequence number.\n MessageType[\"NoOp\"] = \"noop\";\n // System message sent to indicate a new client has joined the collaboration\n MessageType[\"ClientJoin\"] = \"join\";\n // System message sent to indicate a client has left the collaboration\n MessageType[\"ClientLeave\"] = \"leave\";\n // Proposes a new consensus value\n MessageType[\"Propose\"] = \"propose\";\n // Message used to reject a pending proposal\n MessageType[\"Reject\"] = \"reject\";\n // Summary op\n MessageType[\"Summarize\"] = \"summarize\";\n // Summary op written\n MessageType[\"SummaryAck\"] = \"summaryAck\";\n // Summary op write failure\n MessageType[\"SummaryNack\"] = \"summaryNack\";\n // Channel operation.\n MessageType[\"Operation\"] = \"op\";\n // Message to indicate the need of a remote agent for a document.\n MessageType[\"RemoteHelp\"] = \"remoteHelp\";\n // Message to indicate that no active clients are present.\n MessageType[\"NoClient\"] = \"noClient\";\n // Message to indicate successful round trip.\n MessageType[\"RoundTrip\"] = \"tripComplete\";\n // Service specific control messages that are never sequenced.\n MessageType[\"Control\"] = \"control\";\n})(MessageType || (MessageType = {}));\n/**\n * Type of the Nack.\n * InvalidScopeError: Client's token is not valid for the intended op.\n * ThrottlingError: Retryable after retryAfter number.\n * BadRequestError: Clients op is invalid and should retry immediately with a valid op.\n * LimitExceededError: Service is having issues. Client should not retry.\n */\nexport var NackErrorType;\n(function (NackErrorType) {\n NackErrorType[\"ThrottlingError\"] = \"ThrottlingError\";\n NackErrorType[\"InvalidScopeError\"] = \"InvalidScopeError\";\n NackErrorType[\"BadRequestError\"] = \"BadRequestError\";\n NackErrorType[\"LimitExceededError\"] = \"LimitExceededError\";\n})(NackErrorType || (NackErrorType = {}));\n//# sourceMappingURL=protocol.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport var ScopeType;\n(function (ScopeType) {\n ScopeType[\"DocRead\"] = \"doc:read\";\n ScopeType[\"DocWrite\"] = \"doc:write\";\n ScopeType[\"SummaryWrite\"] = \"summary:write\";\n})(ScopeType || (ScopeType = {}));\n//# sourceMappingURL=scopes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport var FileMode;\n(function (FileMode) {\n FileMode[\"File\"] = \"100644\";\n FileMode[\"Executable\"] = \"100755\";\n FileMode[\"Directory\"] = \"040000\";\n FileMode[\"Symlink\"] = \"120000\";\n})(FileMode || (FileMode = {}));\n/**\n * Type of entries that can be stored in a tree\n */\nexport var TreeEntry;\n(function (TreeEntry) {\n TreeEntry[\"Blob\"] = \"Blob\";\n TreeEntry[\"Tree\"] = \"Tree\";\n TreeEntry[\"Attachment\"] = \"Attachment\";\n})(TreeEntry || (TreeEntry = {}));\n//# sourceMappingURL=storage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Type tag used to distinguish different types of nodes in a {@link ISummaryTree}.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var SummaryType;\n(function (SummaryType) {\n /**\n * Represents a sub-tree in the summary.\n */\n SummaryType.Tree = 1;\n /**\n * Represents a blob of data that is added to the summary.\n * Such as the user data that is added to the DDS or metadata added by runtime\n * such as data store / channel attributes.\n */\n SummaryType.Blob = 2;\n /**\n * Path to a summary tree object from the last successful summary.\n */\n SummaryType.Handle = 3;\n /**\n * Unique identifier to larger blobs uploaded outside of the summary.\n * Ex. DDS has large images or video that will be uploaded by the BlobManager and\n * receive an Id that can be used in the summary.\n */\n SummaryType.Attachment = 4;\n})(SummaryType || (SummaryType = {}));\n//# sourceMappingURL=summary.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisibilityState = exports.FlushMode = void 0;\n/**\n * Runtime flush mode handling\n */\nvar FlushMode;\n(function (FlushMode) {\n /**\n * In Immediate flush mode the runtime will immediately send all operations to the driver layer.\n */\n FlushMode[FlushMode[\"Immediate\"] = 0] = \"Immediate\";\n /**\n * When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n * batch at the end of the turn. The flush call on the runtime can be used to force send the current batch.\n */\n FlushMode[FlushMode[\"TurnBased\"] = 1] = \"TurnBased\";\n})(FlushMode = exports.FlushMode || (exports.FlushMode = {}));\n/**\n * This tells the visibility state of a Fluid object. It basically tracks whether the object is not visible, visible\n * locally within the container only or visible globally to all clients.\n */\nexports.VisibilityState = {\n /** Indicates that the object is not visible. This is the state when an object is first created. */\n NotVisible: \"NotVisible\",\n /**\n * Indicates that the object is visible locally within the container. This is the state when an object is attached\n * to the container's graph but the container itself isn't globally visible. The object's state goes from not\n * visible to locally visible.\n */\n LocallyVisible: \"LocallyVisible\",\n /**\n * Indicates that the object is visible globally to all clients. This is the state of an object in 2 scenarios:\n * 1. It is attached to the container's graph when the container is globally visible. The object's state goes from\n * not visible to globally visible.\n * 2. When a container becomes globally visible, all locally visible objects go from locally visible to globally\n * visible.\n */\n GloballyVisible: \"GloballyVisible\",\n};\n//# sourceMappingURL=dataStoreContext.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IFluidDataStoreFactory = void 0;\nexports.IFluidDataStoreFactory = \"IFluidDataStoreFactory\";\n//# sourceMappingURL=dataStoreFactory.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IFluidDataStoreRegistry = void 0;\nexports.IFluidDataStoreRegistry = \"IFluidDataStoreRegistry\";\n//# sourceMappingURL=dataStoreRegistry.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.gcBlobKey = void 0;\n// The key to use for storing garbage collection blob in summary.\nexports.gcBlobKey = \"gc\";\n//# sourceMappingURL=garbageCollection.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./dataStoreFactory\"), exports);\n__exportStar(require(\"./dataStoreRegistry\"), exports);\n__exportStar(require(\"./dataStoreContext\"), exports);\n__exportStar(require(\"./garbageCollection\"), exports);\n__exportStar(require(\"./protocol\"), exports);\n__exportStar(require(\"./summary\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=protocol.js.map","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.totalBlobSizePropertyName = exports.blobCountPropertyName = exports.channelsTreeName = exports.CreateSummarizerNodeSource = void 0;\nvar CreateSummarizerNodeSource;\n(function (CreateSummarizerNodeSource) {\n CreateSummarizerNodeSource[CreateSummarizerNodeSource[\"FromSummary\"] = 0] = \"FromSummary\";\n CreateSummarizerNodeSource[CreateSummarizerNodeSource[\"FromAttach\"] = 1] = \"FromAttach\";\n CreateSummarizerNodeSource[CreateSummarizerNodeSource[\"Local\"] = 2] = \"Local\";\n})(CreateSummarizerNodeSource = exports.CreateSummarizerNodeSource || (exports.CreateSummarizerNodeSource = {}));\nexports.channelsTreeName = \".channels\";\nexports.blobCountPropertyName = \"BlobCount\";\nexports.totalBlobSizePropertyName = \"TotalBlobSize\";\n//# sourceMappingURL=summary.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Generates the absolute path for a Fluid object given its path and its parent routeContext.\n * @param path - The path to the Fluid object relative to the route context.\n * @param routeContext - The route context that contains the Fluid object.\n * @returns The absolute path to the Fluid object from the root of the Container.\n */\nexport function generateHandleContextPath(path, routeContext) {\n if (path === \"\") {\n // The `path` is empty.\n // If the routeContext does not exist, this is the root.\n // If the routeContext exists, the absolute path is the same as that of the routeContext.\n return routeContext === undefined ? \"\" : routeContext.absolutePath;\n }\n else {\n // Remove beginning and trailing slashes, if any, from the path.\n let normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n normalizedPath = normalizedPath.endsWith(\"/\") ? normalizedPath.slice(0, -1) : normalizedPath;\n // If the routeContext does not exist, path is the absolute path.\n // If the routeContext exists, absolute path is routeContext's absolute path plus the path.\n return routeContext === undefined\n ? `/${normalizedPath}`\n : `${routeContext.absolutePath === \"/\" ? \"\" : routeContext.absolutePath}/${normalizedPath}`;\n }\n}\n//# sourceMappingURL=dataStoreHandleContextUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/common-utils\";\nimport { generateErrorWithStack } from \"@fluidframework/telemetry-utils\";\nexport function exceptionToResponse(err) {\n const status = 500;\n if (err !== null && typeof err === \"object\" && err.errorFromRequestFluidObject === true) {\n const responseErr = err;\n return {\n mimeType: \"text/plain\",\n status: responseErr.code,\n value: responseErr.message,\n get stack() { return responseErr.stack; },\n };\n }\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n return {\n mimeType: \"text/plain\",\n status,\n value: `${err}`,\n get stack() { var _a; return (_a = (err === null || err === void 0 ? void 0 : err.stack)) !== null && _a !== void 0 ? _a : errWithStack.stack; },\n };\n}\nexport function responseToException(response, request) {\n const message = response.value;\n const errWithStack = generateErrorWithStack();\n const responseErr = {\n errorFromRequestFluidObject: true,\n message,\n name: \"Error\",\n code: response.status,\n get stack() { var _a; return (_a = response.stack) !== null && _a !== void 0 ? _a : errWithStack.stack; },\n };\n return responseErr;\n}\nexport async function requestFluidObject(router, url) {\n const request = typeof url === \"string\" ? { url } : url;\n const response = await router.request(request);\n if (response.status !== 200 || response.mimeType !== \"fluid/object\") {\n throw responseToException(response, request);\n }\n assert(response.value, 0x19a /* \"Invalid response value for Fluid object request\" */);\n return response.value;\n}\nexport const create404Response = (request) => createResponseError(404, \"not found\", request);\nexport function createResponseError(status, value, request) {\n var _a;\n assert(status !== 200, 0x19b /* \"Cannot not create response error on 200 status\" */);\n // Omit query string which could contain personal data (aka \"PII\")\n const urlNoQuery = (_a = request.url) === null || _a === void 0 ? void 0 : _a.split(\"?\")[0];\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n return {\n mimeType: \"text/plain\",\n status,\n value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,\n get stack() { return errWithStack.stack; },\n };\n}\nexport function createDataStoreFactory(type, factory) {\n return {\n type,\n get IFluidDataStoreFactory() { return this; },\n get IFluidDataStoreRegistry() { return this; },\n instantiateDataStore: async (context, existing) => (await factory).instantiateDataStore(context, existing),\n get: async (name) => { var _a; return (_a = (await factory).IFluidDataStoreRegistry) === null || _a === void 0 ? void 0 : _a.get(name); },\n };\n}\n//# sourceMappingURL=dataStoreHelpers.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/common-utils\";\n/**\n * Returns a new IChannelStorageService that resolves the given `path` as root.\n */\nexport class ObjectStoragePartition {\n constructor(storage, path) {\n this.storage = storage;\n this.path = path;\n // `path` must not include the trailing separator.\n assert(!path.endsWith(\"/\"), 0x19c /* \"storage service path has trailing separator\" */);\n }\n async readBlob(path) {\n return this.storage.readBlob(`${this.path}/${path}`);\n }\n async contains(path) {\n return this.storage.contains(`${this.path}/${path}`);\n }\n async list(path) {\n return this.storage.list(`${this.path}/${path}`);\n }\n}\n//# sourceMappingURL=objectstoragepartition.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport function getNormalizedObjectStoragePathParts(path) {\n let normalizePath = path;\n if (normalizePath.startsWith(\"/\")) {\n normalizePath = normalizePath.substr(1);\n }\n if (normalizePath.endsWith(\"/\")) {\n normalizePath = normalizePath.substr(0, normalizePath.length - 1);\n }\n if (normalizePath.length > 0) {\n return normalizePath.split(\"/\");\n }\n return [];\n}\nexport async function listBlobsAtTreePath(inputTree, path) {\n const pathParts = getNormalizedObjectStoragePathParts(path);\n let tree = inputTree;\n while ((tree === null || tree === void 0 ? void 0 : tree.entries) !== undefined && pathParts.length > 0) {\n const part = pathParts.shift();\n const treeEntry = tree.entries.find((value) => {\n if (value.type === \"Tree\" && value.path === part) {\n return true;\n }\n else {\n return false;\n }\n });\n // this check is largely superfluous due to the same check being done\n // immediately above. the type system, however, is not aware of this.\n // so we must redundantly determine that the entry's type is \"Tree\"\n if ((treeEntry === null || treeEntry === void 0 ? void 0 : treeEntry.type) === \"Tree\") {\n tree = treeEntry.value;\n }\n else {\n tree = undefined;\n }\n }\n if ((tree === null || tree === void 0 ? void 0 : tree.entries) === undefined || pathParts.length !== 0) {\n throw new Error(\"path does not exist\");\n }\n return tree.entries.filter((e) => e.type === \"Blob\").map((e) => e.path);\n}\n//# sourceMappingURL=objectstorageutils.js.map","/**\n * The Request Parser takes an IRequest provides parsing and sub request creation\n */\nexport class RequestParser {\n constructor(request) {\n this.request = request;\n const queryStartIndex = this.request.url.indexOf(\"?\");\n if (queryStartIndex >= 0) {\n this.query = this.request.url.substring(queryStartIndex);\n }\n else {\n this.query = \"\";\n }\n }\n /**\n * Splits the path of the url and decodes each path part\n * @param url - the url to get path parts of\n */\n static getPathParts(url) {\n const queryStartIndex = url.indexOf(\"?\");\n return url\n .substring(0, queryStartIndex < 0 ? url.length : queryStartIndex)\n .split(\"/\")\n .reduce((pv, cv) => {\n if (cv !== undefined && cv.length > 0) {\n pv.push(decodeURIComponent(cv));\n }\n return pv;\n }, []);\n }\n static create(request) {\n // Perf optimizations.\n if (request instanceof RequestParser) {\n return request;\n }\n return new RequestParser(request);\n }\n get url() {\n return this.request.url;\n }\n get headers() {\n return this.request.headers;\n }\n /**\n * Returns the decoded path parts of the request's url\n */\n get pathParts() {\n if (this.requestPathParts === undefined) {\n this.requestPathParts = RequestParser.getPathParts(this.url);\n }\n return this.requestPathParts;\n }\n /**\n * Returns true if it's a terminating path, i.e. no more elements after `elements` entries and empty query.\n * @param elements - number of elements in path\n */\n isLeaf(elements) {\n return this.query === \"\" && this.pathParts.length === elements;\n }\n /**\n * Creates a sub request starting at a specific path part of this request's url\n * The sub request url always has a leading slash, and always include query params if original url has any\n * e.g. original url is /a/b/?queryParams, createSubRequest(0) is /a/b/?queryParams\n * createSubRequest(1) is /b/?queryParams\n * createSubRequest(2) is /?queryParams\n * createSubRequest(n) where n is bigger than parts length, e.g. 2, or n is less than 0 will throw an exception\n *\n * note: query params are not counted towards path parts.\n *\n * @param startingPathIndex - The index of the first path part of the sub request\n */\n createSubRequest(startingPathIndex) {\n const pathLen = this.pathParts.length;\n if (startingPathIndex < 0 || startingPathIndex > pathLen) {\n throw new Error(\"incorrect sub-request\");\n }\n if (startingPathIndex === pathLen && this.url.includes(\"?\")) {\n return {\n url: `/${this.query}`,\n headers: this.headers,\n };\n }\n const path = `/${this.pathParts.slice(startingPathIndex).join(\"/\")}`;\n return {\n url: this.query === \"\" ? path : `${path}/${this.query}`,\n headers: this.headers,\n };\n }\n}\n//# sourceMappingURL=requestParser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport class RuntimeFactoryHelper {\n get IRuntimeFactory() { return this; }\n async instantiateRuntime(context, existing) {\n const fromExisting = existing === undefined\n ? context.existing === true\n : existing;\n const runtime = await this.preInitialize(context, fromExisting);\n if (fromExisting) {\n await this.instantiateFromExisting(runtime);\n }\n else {\n await this.instantiateFirstTime(runtime);\n }\n await this.hasInitialized(runtime);\n return runtime;\n }\n async instantiateFirstTime(_runtime) { }\n async instantiateFromExisting(_runtime) { }\n async hasInitialized(_runtime) { }\n}\n//# sourceMappingURL=runtimeFactoryHelper.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FileMode, TreeEntry, SummaryType, } from \"@fluidframework/protocol-definitions\";\nimport { unreachableCase } from \"@fluidframework/common-utils\";\n/**\n * Take a summary object and returns its git mode.\n *\n * @param value - summary object\n * @returns the git mode of summary object\n */\nexport function getGitMode(value) {\n const type = value.type === SummaryType.Handle ? value.handleType : value.type;\n switch (type) {\n case SummaryType.Blob:\n case SummaryType.Attachment:\n return FileMode.File;\n case SummaryType.Tree:\n return FileMode.Directory;\n default:\n unreachableCase(type, `Unknown type: ${type}`);\n }\n}\n/**\n * Take a summary object and returns its type.\n *\n * @param value - summary object\n * @returns the type of summary object\n */\nexport function getGitType(value) {\n const type = value.type === SummaryType.Handle ? value.handleType : value.type;\n switch (type) {\n case SummaryType.Blob:\n case SummaryType.Attachment:\n return \"blob\";\n case SummaryType.Tree:\n return \"tree\";\n default:\n unreachableCase(type, `Unknown type: ${type}`);\n }\n}\n/**\n * Build a tree hierarchy base on a flat tree\n *\n * @param flatTree - a flat tree\n * @param blobsShaToPathCache - Map with blobs sha as keys and values as path of the blob.\n * @param removeAppTreePrefix - Remove `.app/` from beginning of paths when present\n * @returns the hierarchical tree\n */\nexport function buildHierarchy(flatTree, blobsShaToPathCache = new Map(), removeAppTreePrefix = false) {\n const lookup = {};\n const root = { id: flatTree.sha, blobs: {}, trees: {} };\n lookup[\"\"] = root;\n for (const entry of flatTree.tree) {\n const entryPath = removeAppTreePrefix ? entry.path.replace(/^\\.app\\//, \"\") : entry.path;\n const lastIndex = entryPath.lastIndexOf(\"/\");\n const entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));\n const entryPathBase = entryPath.slice(lastIndex + 1);\n // The flat output is breadth-first so we can assume we see tree nodes prior to their contents\n const node = lookup[entryPathDir];\n // Add in either the blob or tree\n if (entry.type === \"tree\") {\n const newTree = { id: entry.sha, blobs: {}, commits: {}, trees: {} };\n node.trees[decodeURIComponent(entryPathBase)] = newTree;\n lookup[entryPath] = newTree;\n }\n else if (entry.type === \"blob\") {\n node.blobs[decodeURIComponent(entryPathBase)] = entry.sha;\n blobsShaToPathCache.set(entry.sha, `/${entryPath}`);\n }\n else {\n throw new Error(\"Unknown entry type!!\");\n }\n }\n return root;\n}\n/**\n * Basic implementation of a blob ITreeEntry\n */\nexport class BlobTreeEntry {\n /**\n * Creates a blob ITreeEntry\n * @param path - path of entry\n * @param contents - blob contents\n * @param encoding - encoding of contents; defaults to utf-8\n */\n constructor(path, contents, encoding = \"utf-8\") {\n this.path = path;\n this.mode = FileMode.File;\n this.type = TreeEntry.Blob;\n this.value = { contents, encoding };\n }\n}\n/**\n * Basic implementation of a tree ITreeEntry\n */\nexport class TreeTreeEntry {\n /**\n * Creates a tree ITreeEntry\n * @param path - path of entry\n * @param value - subtree\n */\n constructor(path, value) {\n this.path = path;\n this.value = value;\n this.mode = FileMode.Directory;\n this.type = TreeEntry.Tree;\n }\n}\n/**\n * Basic implementation of an attachment ITreeEntry\n */\nexport class AttachmentTreeEntry {\n /**\n * Creates an attachment ITreeEntry\n * @param path - path of entry\n * @param id - id of external blob attachment\n */\n constructor(path, id) {\n this.path = path;\n this.id = id;\n this.mode = FileMode.File;\n this.type = TreeEntry.Attachment;\n this.value = { id };\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function addBlobToTree(tree, blobName, content) {\n tree.entries.push({\n mode: FileMode.File,\n path: blobName,\n type: TreeEntry.Blob,\n value: {\n contents: JSON.stringify(content),\n encoding: \"utf-8\",\n },\n });\n}\n//# sourceMappingURL=blobs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString, fromBase64ToUtf8, IsoBuffer, Uint8ArrayToString, unreachableCase, } from \"@fluidframework/common-utils\";\nimport { AttachmentTreeEntry, BlobTreeEntry, TreeTreeEntry } from \"@fluidframework/protocol-base\";\nimport { SummaryType, TreeEntry, } from \"@fluidframework/protocol-definitions\";\n/**\n * Combines summary stats by adding their totals together.\n * Returns empty stats if called without args.\n * @param stats - stats to merge\n */\nexport function mergeStats(...stats) {\n const results = {\n treeNodeCount: 0,\n blobNodeCount: 0,\n handleNodeCount: 0,\n totalBlobSize: 0,\n unreferencedBlobSize: 0,\n };\n for (const stat of stats) {\n results.treeNodeCount += stat.treeNodeCount;\n results.blobNodeCount += stat.blobNodeCount;\n results.handleNodeCount += stat.handleNodeCount;\n results.totalBlobSize += stat.totalBlobSize;\n results.unreferencedBlobSize += stat.unreferencedBlobSize;\n }\n return results;\n}\nexport function utf8ByteLength(str) {\n // returns the byte length of an utf8 string\n let s = str.length;\n for (let i = str.length - 1; i >= 0; i--) {\n const code = str.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff) {\n s++;\n }\n else if (code > 0x7ff && code <= 0xffff) {\n s += 2;\n }\n if (code >= 0xDC00 && code <= 0xDFFF) {\n i--; // trail surrogate\n }\n }\n return s;\n}\nexport function getBlobSize(content) {\n if (typeof content === \"string\") {\n return utf8ByteLength(content);\n }\n else {\n return content.byteLength;\n }\n}\nfunction calculateStatsCore(summaryObject, stats) {\n switch (summaryObject.type) {\n case SummaryType.Tree: {\n stats.treeNodeCount++;\n for (const value of Object.values(summaryObject.tree)) {\n calculateStatsCore(value, stats);\n }\n return;\n }\n case SummaryType.Handle: {\n stats.handleNodeCount++;\n return;\n }\n case SummaryType.Blob: {\n stats.blobNodeCount++;\n stats.totalBlobSize += getBlobSize(summaryObject.content);\n return;\n }\n default: return;\n }\n}\nexport function calculateStats(summary) {\n const stats = mergeStats();\n calculateStatsCore(summary, stats);\n return stats;\n}\nexport function addBlobToSummary(summary, key, content) {\n const blob = {\n type: SummaryType.Blob,\n content,\n };\n summary.summary.tree[key] = blob;\n summary.stats.blobNodeCount++;\n summary.stats.totalBlobSize += getBlobSize(content);\n}\nexport function addTreeToSummary(summary, key, summarizeResult) {\n summary.summary.tree[key] = summarizeResult.summary;\n summary.stats = mergeStats(summary.stats, summarizeResult.stats);\n}\nexport function addSummarizeResultToSummary(summary, key, summarizeResult) {\n summary.summary.tree[key] = summarizeResult.summary;\n summary.stats = mergeStats(summary.stats, summarizeResult.stats);\n}\nexport class SummaryTreeBuilder {\n constructor() {\n this.attachmentCounter = 0;\n this.summaryTree = {};\n this.summaryStats = mergeStats();\n this.summaryStats.treeNodeCount++;\n }\n get summary() {\n return {\n type: SummaryType.Tree,\n tree: Object.assign({}, this.summaryTree),\n };\n }\n get stats() {\n return Object.assign({}, this.summaryStats);\n }\n addBlob(key, content) {\n // Prevent cloning by directly referencing underlying private properties\n addBlobToSummary({\n summary: {\n type: SummaryType.Tree,\n tree: this.summaryTree,\n },\n stats: this.summaryStats,\n }, key, content);\n }\n addHandle(key, handleType, handle) {\n this.summaryTree[key] = {\n type: SummaryType.Handle,\n handleType,\n handle,\n };\n this.summaryStats.handleNodeCount++;\n }\n addWithStats(key, summarizeResult) {\n this.summaryTree[key] = summarizeResult.summary;\n this.summaryStats = mergeStats(this.summaryStats, summarizeResult.stats);\n }\n addAttachment(id) {\n this.summaryTree[this.attachmentCounter++] = { id, type: SummaryType.Attachment };\n }\n getSummaryTree() {\n return { summary: this.summary, stats: this.stats };\n }\n}\n/**\n * Converts snapshot ITree to ISummaryTree format and tracks stats.\n * @param snapshot - snapshot in ITree format\n * @param fullTree - true to never use handles, even if id is specified\n */\nexport function convertToSummaryTreeWithStats(snapshot, fullTree = false) {\n const builder = new SummaryTreeBuilder();\n for (const entry of snapshot.entries) {\n switch (entry.type) {\n case TreeEntry.Blob: {\n const blob = entry.value;\n let content;\n if (blob.encoding === \"base64\") {\n content = IsoBuffer.from(blob.contents, \"base64\");\n }\n else {\n content = blob.contents;\n }\n builder.addBlob(entry.path, content);\n break;\n }\n case TreeEntry.Tree: {\n const subtree = convertToSummaryTree(entry.value, fullTree);\n builder.addWithStats(entry.path, subtree);\n break;\n }\n case TreeEntry.Attachment: {\n const id = entry.value.id;\n builder.addAttachment(id);\n break;\n }\n default:\n throw new Error(\"Unexpected TreeEntry type\");\n }\n }\n const summaryTree = builder.getSummaryTree();\n summaryTree.summary.unreferenced = snapshot.unreferenced;\n return summaryTree;\n}\n/**\n * Converts snapshot ITree to ISummaryTree format and tracks stats.\n * @param snapshot - snapshot in ITree format\n * @param fullTree - true to never use handles, even if id is specified\n */\nexport function convertToSummaryTree(snapshot, fullTree = false) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (snapshot.id && !fullTree) {\n const stats = mergeStats();\n stats.handleNodeCount++;\n return {\n summary: {\n handle: snapshot.id,\n handleType: SummaryType.Tree,\n type: SummaryType.Handle,\n },\n stats,\n };\n }\n else {\n return convertToSummaryTreeWithStats(snapshot, fullTree);\n }\n}\n/**\n * Converts ISnapshotTree to ISummaryTree format and tracks stats. This snapshot tree was\n * was taken by serialize api in detached container.\n * @param snapshot - snapshot in ISnapshotTree format\n */\nexport function convertSnapshotTreeToSummaryTree(snapshot) {\n const builder = new SummaryTreeBuilder();\n for (const [path, id] of Object.entries(snapshot.blobs)) {\n let decoded;\n if (snapshot.blobsContents !== undefined) {\n const content = snapshot.blobsContents[id];\n if (content !== undefined) {\n decoded = bufferToString(content, \"utf-8\");\n }\n // 0.44 back-compat We still put contents in same blob for back-compat so need to add blob\n // only for blobPath -> blobId mapping and not for blobId -> blob value contents.\n }\n else if (snapshot.blobs[id] !== undefined) {\n decoded = fromBase64ToUtf8(snapshot.blobs[id]);\n }\n if (decoded !== undefined) {\n builder.addBlob(path, decoded);\n }\n }\n for (const [key, tree] of Object.entries(snapshot.trees)) {\n const subtree = convertSnapshotTreeToSummaryTree(tree);\n builder.addWithStats(key, subtree);\n }\n const summaryTree = builder.getSummaryTree();\n summaryTree.summary.unreferenced = snapshot.unreferenced;\n return summaryTree;\n}\n/**\n * Converts ISummaryTree to ITree format. This is needed for back-compat while we get rid of snapshot.\n * @param summaryTree - summary tree in ISummaryTree format\n */\nexport function convertSummaryTreeToITree(summaryTree) {\n const entries = [];\n for (const [key, value] of Object.entries(summaryTree.tree)) {\n switch (value.type) {\n case SummaryType.Blob: {\n let parsedContent;\n let encoding = \"utf-8\";\n if (typeof value.content === \"string\") {\n parsedContent = value.content;\n }\n else {\n parsedContent = Uint8ArrayToString(value.content, \"base64\");\n encoding = \"base64\";\n }\n entries.push(new BlobTreeEntry(key, parsedContent, encoding));\n break;\n }\n case SummaryType.Tree: {\n entries.push(new TreeTreeEntry(key, convertSummaryTreeToITree(value)));\n break;\n }\n case SummaryType.Attachment: {\n entries.push(new AttachmentTreeEntry(key, value.id));\n break;\n }\n case SummaryType.Handle: {\n throw new Error(\"Should not have Handle type in summary tree\");\n }\n default:\n unreachableCase(value, \"Unexpected summary tree type\");\n }\n }\n return {\n entries,\n unreferenced: summaryTree.unreferenced,\n };\n}\nexport class TelemetryContext {\n constructor() {\n this.telemetry = new Map();\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.set}\n */\n set(prefix, property, value) {\n this.telemetry.set(`${prefix}${property}`, value);\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.get}\n */\n get(prefix, property) {\n return this.telemetry.get(`${prefix}${property}`);\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.serialize}\n */\n serialize() {\n const jsonObject = {};\n this.telemetry.forEach((value, key) => {\n jsonObject[key] = value;\n });\n return JSON.stringify(jsonObject);\n }\n}\n//# sourceMappingURL=summaryUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/common-utils\";\nimport { SummaryType, } from \"@fluidframework/protocol-definitions\";\nimport { channelsTreeName } from \"@fluidframework/runtime-definitions\";\nimport { SummaryTreeBuilder } from \"../summaryUtils\";\nconst baseSummaryTreeKey = \"_baseSummary\";\nconst outstandingOpsBlobKey = \"_outstandingOps\";\nconst maxDecodeDepth = 100;\n/** Path for nodes in a tree with escaped special characters */\nexport class EscapedPath {\n constructor(path) {\n this.path = path;\n }\n static create(path) {\n return new EscapedPath(encodeURIComponent(path));\n }\n static createAndConcat(pathParts) {\n var _a;\n let ret = EscapedPath.create((_a = pathParts[0]) !== null && _a !== void 0 ? _a : \"\");\n for (let i = 1; i < pathParts.length; i++) {\n ret = ret.concat(EscapedPath.create(pathParts[i]));\n }\n return ret;\n }\n toString() {\n return this.path;\n }\n concat(path) {\n return new EscapedPath(`${this.path}/${path.path}`);\n }\n}\n/** Information about a summary relevant to a specific node in the tree */\nexport class SummaryNode {\n constructor(summary) {\n this.summary = summary;\n }\n /** Creates an instance that is valid for the root with specific basePath and localPath */\n static createForRoot(referenceSequenceNumber) {\n return new SummaryNode({\n referenceSequenceNumber,\n basePath: undefined,\n localPath: EscapedPath.create(\"\"), // root hard-coded to \"\"\n });\n }\n /** Summary reference sequence number, i.e. last sequence number seen when it was created */\n get referenceSequenceNumber() {\n return this.summary.referenceSequenceNumber;\n }\n /** Full path to parent node, or undefined if this is the root */\n get basePath() {\n return this.summary.basePath;\n }\n /** Relative path to this node from its parent node */\n get localPath() {\n return this.summary.localPath;\n }\n /** Relative path from this node to its node innermost base summary */\n get additionalPath() {\n return this.summary.additionalPath;\n }\n set additionalPath(additionalPath) {\n this.summary.additionalPath = additionalPath;\n }\n /** Gets the full path to this node, to be used when sending a handle */\n get fullPath() {\n var _a, _b;\n return (_b = (_a = this.basePath) === null || _a === void 0 ? void 0 : _a.concat(this.localPath)) !== null && _b !== void 0 ? _b : this.localPath;\n }\n /**\n * Gets the full path to this node's innermost base summary.\n * The children nodes can use this as their basePath to determine their path.\n */\n get fullPathForChildren() {\n return this.additionalPath !== undefined\n ? this.fullPath.concat(this.additionalPath)\n : this.fullPath;\n }\n /**\n * Creates a new node within the same summary for a child of this node.\n * @param id - id of the child node\n */\n createForChild(id) {\n return new SummaryNode({\n referenceSequenceNumber: this.referenceSequenceNumber,\n basePath: this.fullPathForChildren,\n localPath: EscapedPath.create(id),\n });\n }\n}\n/**\n * Checks if the snapshot is created by referencing a previous successful\n * summary plus outstanding ops. If so, it will recursively \"decode\" it until\n * it gets to the last successful summary (the base summary) and returns that\n * as well as a function for fetching the outstanding ops. Also returns the\n * full path to the previous base summary for child summarizer nodes to use as\n * their base path when necessary.\n * @param snapshot - snapshot tree to decode\n */\nexport function decodeSummary(snapshot, logger) {\n let baseSummary = snapshot;\n const pathParts = [];\n const opsBlobs = [];\n for (let i = 0;; i++) {\n if (i > maxDecodeDepth) {\n logger.sendTelemetryEvent({\n eventName: \"DecodeSummaryMaxDepth\",\n maxDecodeDepth,\n });\n }\n const outstandingOpsBlob = baseSummary.blobs[outstandingOpsBlobKey];\n const newBaseSummary = baseSummary.trees[baseSummaryTreeKey];\n if (outstandingOpsBlob === undefined && newBaseSummary === undefined) {\n return {\n baseSummary,\n pathParts,\n async getOutstandingOps(readAndParseBlob) {\n let outstandingOps = [];\n for (const opsBlob of opsBlobs) {\n const newOutstandingOps = await readAndParseBlob(opsBlob);\n if (outstandingOps.length > 0 && newOutstandingOps.length > 0) {\n const latestSeq = outstandingOps[outstandingOps.length - 1].sequenceNumber;\n const newEarliestSeq = newOutstandingOps[0].sequenceNumber;\n if (newEarliestSeq <= latestSeq) {\n logger.sendTelemetryEvent({\n eventName: \"DuplicateOutstandingOps\",\n // eslint-disable-next-line max-len\n message: `newEarliestSeq <= latestSeq in decodeSummary: ${newEarliestSeq} <= ${latestSeq}`,\n });\n while (newOutstandingOps.length > 0\n && newOutstandingOps[0].sequenceNumber <= latestSeq) {\n newOutstandingOps.shift();\n }\n }\n }\n outstandingOps = outstandingOps.concat(newOutstandingOps);\n }\n return outstandingOps;\n },\n };\n }\n assert(!!outstandingOpsBlob, 0x1af /* \"Outstanding ops blob missing, but base summary tree exists\" */);\n assert(newBaseSummary !== undefined, 0x1b0 /* \"Base summary tree missing, but outstanding ops blob exists\" */);\n baseSummary = newBaseSummary;\n pathParts.push(baseSummaryTreeKey);\n opsBlobs.unshift(outstandingOpsBlob);\n }\n}\n/**\n * Creates a summary tree which is a handle of the previous successfully acked summary\n * and a blob of the outstanding ops since that summary. If there is no acked summary yet,\n * it will create with the tree found in the initial attach op and the blob of outstanding ops.\n * @param summaryParam - information about last acked summary and paths to encode if from summary,\n * otherwise the initial summary from the attach op.\n * @param outstandingOps - outstanding ops since last acked summary\n */\nexport function encodeSummary(summaryParam, outstandingOps) {\n let additionalPath = EscapedPath.create(baseSummaryTreeKey);\n const builder = new SummaryTreeBuilder();\n builder.addBlob(outstandingOpsBlobKey, JSON.stringify(outstandingOps));\n if (summaryParam.fromSummary) {\n // Create using handle of latest acked summary\n const summaryNode = summaryParam.summaryNode;\n if (summaryNode.additionalPath !== undefined) {\n additionalPath = additionalPath.concat(summaryNode.additionalPath);\n }\n builder.addHandle(baseSummaryTreeKey, SummaryType.Tree, summaryNode.fullPath.path);\n }\n else {\n // Create using initial summary from attach op\n builder.addWithStats(baseSummaryTreeKey, summaryParam.initialSummary);\n }\n const summary = builder.getSummaryTree();\n return Object.assign(Object.assign({}, summary), { additionalPath });\n}\n/**\n * Checks if the summary contains .channels subtree where the children subtrees\n * would be located if exists.\n * @param baseSummary - summary to check\n */\nexport function parseSummaryForSubtrees(baseSummary) {\n // New versions of snapshots have child nodes isolated in .channels subtree\n const channelsSubtree = baseSummary.trees[channelsTreeName];\n if (channelsSubtree !== undefined) {\n return {\n childrenTree: channelsSubtree,\n childrenPathPart: channelsTreeName,\n };\n }\n return {\n childrenTree: baseSummary,\n childrenPathPart: undefined,\n };\n}\n/**\n * Checks if the summary contains .channels subtree where the children subtrees\n * would be located if exists.\n * @param baseSummary - summary to check\n */\nexport function parseSummaryTreeForSubtrees(summary) {\n // New versions of snapshots have child nodes isolated in .channels subtree\n const channelsSubtree = summary.tree[channelsTreeName];\n if (channelsSubtree !== undefined) {\n return {\n childrenTree: channelsSubtree,\n childrenPathPart: channelsTreeName,\n };\n }\n return {\n childrenTree: summary,\n childrenPathPart: undefined,\n };\n}\n//# sourceMappingURL=summarizerNodeUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { CreateSummarizerNodeSource, } from \"@fluidframework/runtime-definitions\";\nimport { SummaryType, } from \"@fluidframework/protocol-definitions\";\nimport { assert, unreachableCase } from \"@fluidframework/common-utils\";\nimport { mergeStats, convertToSummaryTree, calculateStats } from \"../summaryUtils\";\nimport { decodeSummary, encodeSummary, EscapedPath, parseSummaryForSubtrees, parseSummaryTreeForSubtrees, SummaryNode, } from \"./summarizerNodeUtils\";\n/**\n * Encapsulates the summarizing work and state of an individual tree node in the\n * summary tree. It tracks changes and allows for optimizations when unchanged, or\n * can allow for fallback summaries to be generated when an error is encountered.\n * Usage is for the root node to call startSummary first to begin tracking a WIP\n * (work in progress) summary. Then all nodes will call summarize to summaries their\n * individual parts. Once completed and uploaded to storage, the root node will call\n * completeSummary or clearSummary to clear the WIP summary tracking state if something\n * went wrong. The SummarizerNodes will track all pending summaries that have been\n * recorded by the completeSummary call. When one of them is acked, the root node should\n * call refreshLatestSummary to inform the tree of SummarizerNodes of the new baseline\n * latest successful summary.\n */\nexport class SummarizerNode {\n /**\n * Do not call constructor directly.\n * Use createRootSummarizerNode to create root node, or createChild to create child nodes.\n */\n constructor(defaultLogger, summarizeInternalFn, config, _changeSequenceNumber, \n /** Undefined means created without summary */\n _latestSummary, initialSummary, wipSummaryLogger) {\n var _a;\n this.defaultLogger = defaultLogger;\n this.summarizeInternalFn = summarizeInternalFn;\n this._changeSequenceNumber = _changeSequenceNumber;\n this._latestSummary = _latestSummary;\n this.initialSummary = initialSummary;\n this.wipSummaryLogger = wipSummaryLogger;\n this.children = new Map();\n this.pendingSummaries = new Map();\n this.outstandingOps = [];\n this.wipSkipRecursion = false;\n this.canReuseHandle = (_a = config.canReuseHandle) !== null && _a !== void 0 ? _a : true;\n // BUGBUG: Seeing issues with differential summaries.\n // this will disable them, and throw instead\n // while we continue to investigate\n this.throwOnError = true; // config.throwOnFailure ?? false;\n this.trackingSequenceNumber = this._changeSequenceNumber;\n }\n /**\n * The reference sequence number of the most recent acked summary.\n * Returns 0 if there is not yet an acked summary.\n */\n get referenceSequenceNumber() {\n var _a, _b;\n return (_b = (_a = this._latestSummary) === null || _a === void 0 ? void 0 : _a.referenceSequenceNumber) !== null && _b !== void 0 ? _b : 0;\n }\n startSummary(referenceSequenceNumber, summaryLogger) {\n assert(this.wipSummaryLogger === undefined, 0x19f /* \"wipSummaryLogger should not be set yet in startSummary\" */);\n assert(this.wipReferenceSequenceNumber === undefined, 0x1a0 /* \"Already tracking a summary\" */);\n this.wipSummaryLogger = summaryLogger;\n for (const child of this.children.values()) {\n child.startSummary(referenceSequenceNumber, this.wipSummaryLogger);\n }\n this.wipReferenceSequenceNumber = referenceSequenceNumber;\n }\n async summarize(fullTree, trackState = true, telemetryContext) {\n assert(this.isTrackingInProgress(), 0x1a1 /* \"summarize should not be called when not tracking the summary\" */);\n assert(this.wipSummaryLogger !== undefined, 0x1a2 /* \"wipSummaryLogger should have been set in startSummary or ctor\" */);\n // Try to reuse the tree if unchanged\n if (this.canReuseHandle && !fullTree && !this.hasChanged()) {\n const latestSummary = this._latestSummary;\n if (latestSummary !== undefined) {\n this.wipLocalPaths = {\n localPath: latestSummary.localPath,\n additionalPath: latestSummary.additionalPath,\n };\n this.wipSkipRecursion = true;\n const stats = mergeStats();\n stats.handleNodeCount++;\n return {\n summary: {\n type: SummaryType.Handle,\n handle: latestSummary.fullPath.path,\n handleType: SummaryType.Tree,\n },\n stats,\n };\n }\n }\n try {\n const result = await this.summarizeInternalFn(fullTree, true, telemetryContext);\n this.wipLocalPaths = { localPath: EscapedPath.create(result.id) };\n if (result.pathPartsForChildren !== undefined) {\n this.wipLocalPaths.additionalPath = EscapedPath.createAndConcat(result.pathPartsForChildren);\n }\n return { summary: result.summary, stats: result.stats };\n }\n catch (error) {\n if (this.throwOnError || this.trackingSequenceNumber < this._changeSequenceNumber) {\n throw error;\n }\n const latestSummary = this._latestSummary;\n const initialSummary = this.initialSummary;\n let encodeParam;\n let localPath;\n if (latestSummary !== undefined) {\n // Create using handle of latest acked summary\n encodeParam = {\n fromSummary: true,\n summaryNode: latestSummary,\n };\n localPath = latestSummary.localPath;\n }\n else if ((initialSummary === null || initialSummary === void 0 ? void 0 : initialSummary.summary) !== undefined) {\n // Create using initial summary from attach op\n encodeParam = {\n fromSummary: false,\n initialSummary: initialSummary.summary,\n };\n localPath = EscapedPath.create(initialSummary.id);\n }\n else {\n // No base summary to reference\n throw error;\n }\n this.wipSummaryLogger.sendErrorEvent({\n eventName: \"SummarizingWithBasePlusOps\",\n }, error);\n const summary = encodeSummary(encodeParam, this.outstandingOps);\n this.wipLocalPaths = {\n localPath,\n additionalPath: summary.additionalPath,\n };\n this.wipSkipRecursion = true;\n return { summary: summary.summary, stats: summary.stats };\n }\n }\n /**\n * Complete the WIP summary for the given proposalHandle\n */\n completeSummary(proposalHandle) {\n this.completeSummaryCore(proposalHandle, undefined, false);\n }\n /**\n * Recursive implementation for completeSummary, with additional internal-only parameters\n */\n completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion) {\n assert(this.wipSummaryLogger !== undefined, 0x1a3 /* \"wipSummaryLogger should have been set in startSummary or ctor\" */);\n assert(this.wipReferenceSequenceNumber !== undefined, 0x1a4 /* \"Not tracking a summary\" */);\n let localPathsToUse = this.wipLocalPaths;\n if (parentSkipRecursion) {\n const latestSummary = this._latestSummary;\n if (latestSummary !== undefined) {\n // This case the parent node created a failure summary or was reused.\n // This node and all children should only try to reference their path\n // by its last known good state in the actual summary tree.\n // If parent fails or is reused, the child summarize is not called so\n // it did not get a chance to change its paths.\n // In this case, essentially only propagate the new summary ref seq num.\n localPathsToUse = {\n localPath: latestSummary.localPath,\n additionalPath: latestSummary.additionalPath,\n };\n }\n else {\n // This case the child is added after the latest non-failure summary.\n // This node and all children should consider themselves as still not\n // having a successful summary yet.\n // We cannot \"reuse\" this node if unchanged since that summary, because\n // handles will be unable to point to that node. It never made it to the\n // tree itself, and only exists as an attach op in the _outstandingOps.\n this.clearSummary();\n return;\n }\n }\n // This should come from wipLocalPaths in normal cases, or from the latestSummary\n // if parentIsFailure or parentIsReused is true.\n // If there is no latestSummary, clearSummary and return before reaching this code.\n assert(!!localPathsToUse, 0x1a5 /* \"Tracked summary local paths not set\" */);\n const summary = new SummaryNode(Object.assign(Object.assign({}, localPathsToUse), { referenceSequenceNumber: this.wipReferenceSequenceNumber, basePath: parentPath }));\n const fullPathForChildren = summary.fullPathForChildren;\n for (const child of this.children.values()) {\n child.completeSummaryCore(proposalHandle, fullPathForChildren, this.wipSkipRecursion || parentSkipRecursion);\n }\n // Note that this overwrites existing pending summary with\n // the same proposalHandle. If proposalHandle is something like\n // a hash or unique identifier, this should be fine. If storage\n // can return the same proposalHandle for a different summary,\n // this should still be okay, because we should be proposing the\n // newer one later which would have to overwrite the previous one.\n this.pendingSummaries.set(proposalHandle, summary);\n this.clearSummary();\n }\n clearSummary() {\n this.wipReferenceSequenceNumber = undefined;\n this.wipLocalPaths = undefined;\n this.wipSkipRecursion = false;\n this.wipSummaryLogger = undefined;\n for (const child of this.children.values()) {\n child.clearSummary();\n }\n }\n /**\n * Refreshes the latest summary tracked by this node. If we have a pending summary for the given proposal handle,\n * it becomes the latest summary. If the current summary is already ahead (e.g., loaded from a service summary),\n * we skip the update. Otherwise, we get the snapshot by calling `getSnapshot` and update latest\n * summary based off of that.\n * @returns A RefreshSummaryResult type which returns information based on the following three scenarios:\n * 1. The latest summary was not udpated.\n * 2. The latest summary was updated and the summary corresponding to the params was being tracked.\n * 3. The latest summary was updated but the summary corresponding to the params was not tracked. In this\n * case, the latest summary is updated based on the downloaded snapshot which is also returned.\n */\n async refreshLatestSummary(proposalHandle, summaryRefSeq, getSnapshot, readAndParseBlob, correlatedSummaryLogger) {\n if (proposalHandle !== undefined) {\n const maybeSummaryNode = this.pendingSummaries.get(proposalHandle);\n if (maybeSummaryNode !== undefined) {\n this.refreshLatestSummaryFromPending(proposalHandle, maybeSummaryNode.referenceSequenceNumber);\n return { latestSummaryUpdated: true, wasSummaryTracked: true };\n }\n }\n // If we have seen a summary same or later as the current one, ignore it.\n if (this.referenceSequenceNumber >= summaryRefSeq) {\n return { latestSummaryUpdated: false };\n }\n const snapshotTree = await getSnapshot();\n await this.refreshLatestSummaryFromSnapshot(summaryRefSeq, snapshotTree, undefined, EscapedPath.create(\"\"), correlatedSummaryLogger, readAndParseBlob);\n return { latestSummaryUpdated: true, wasSummaryTracked: false, snapshot: snapshotTree };\n }\n /**\n * Called when we get an ack from the server for a summary we've just sent. Updates the reference state of this node\n * from the state in the pending summary queue.\n * @param proposalHandle - Handle for the current proposal.\n * @param referenceSequenceNumber - reference sequence number of sent summary.\n */\n refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber) {\n const summaryNode = this.pendingSummaries.get(proposalHandle);\n if (summaryNode === undefined) {\n // This should only happen if parent skipped recursion AND no prior summary existed.\n assert(this._latestSummary === undefined, 0x1a6 /* \"Not found pending summary, but this node has previously completed a summary\" */);\n return;\n }\n else {\n assert(referenceSequenceNumber === summaryNode.referenceSequenceNumber, 0x1a7 /* Pending summary reference sequence number should be consistent */);\n // Clear earlier pending summaries\n this.pendingSummaries.delete(proposalHandle);\n }\n this.refreshLatestSummaryCore(referenceSequenceNumber);\n this._latestSummary = summaryNode;\n // Propagate update to all child nodes\n for (const child of this.children.values()) {\n child.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);\n }\n }\n async refreshLatestSummaryFromSnapshot(referenceSequenceNumber, snapshotTree, basePath, localPath, correlatedSummaryLogger, readAndParseBlob) {\n // Possible re-entrancy. If we have already seen a summary later than this one, ignore it.\n if (this.referenceSequenceNumber >= referenceSequenceNumber) {\n return;\n }\n this.refreshLatestSummaryCore(referenceSequenceNumber);\n const { baseSummary, pathParts } = decodeSummary(snapshotTree, correlatedSummaryLogger);\n this._latestSummary = new SummaryNode({\n referenceSequenceNumber,\n basePath,\n localPath,\n });\n const { childrenTree, childrenPathPart } = parseSummaryForSubtrees(baseSummary);\n if (childrenPathPart !== undefined) {\n pathParts.push(childrenPathPart);\n }\n if (pathParts.length > 0) {\n this._latestSummary.additionalPath = EscapedPath.createAndConcat(pathParts);\n }\n // Propagate update to all child nodes\n const pathForChildren = this._latestSummary.fullPathForChildren;\n await Promise.all(Array.from(this.children)\n .filter(([id]) => {\n // Assuming subtrees missing from snapshot are newer than the snapshot,\n // but might be nice to assert this using earliest seq for node.\n return childrenTree.trees[id] !== undefined;\n }).map(async ([id, child]) => {\n return child.refreshLatestSummaryFromSnapshot(referenceSequenceNumber, childrenTree.trees[id], pathForChildren, EscapedPath.create(id), correlatedSummaryLogger, readAndParseBlob);\n }));\n }\n refreshLatestSummaryCore(referenceSequenceNumber) {\n for (const [key, value] of this.pendingSummaries) {\n if (value.referenceSequenceNumber < referenceSequenceNumber) {\n this.pendingSummaries.delete(key);\n }\n }\n // Clear earlier outstanding ops\n while (this.outstandingOps.length > 0\n && this.outstandingOps[0].sequenceNumber <= referenceSequenceNumber) {\n this.outstandingOps.shift();\n }\n }\n loadBaseSummaryWithoutDifferential(snapshot) {\n // Check base summary to see if it has any additional path parts\n // separating child SummarizerNodes. Checks for .channels subtrees.\n const { childrenPathPart } = parseSummaryForSubtrees(snapshot);\n if (childrenPathPart !== undefined && this._latestSummary !== undefined) {\n this._latestSummary.additionalPath = EscapedPath.create(childrenPathPart);\n }\n }\n async loadBaseSummary(snapshot, readAndParseBlob) {\n const decodedSummary = decodeSummary(snapshot, this.defaultLogger);\n const outstandingOps = await decodedSummary.getOutstandingOps(readAndParseBlob);\n const { childrenPathPart } = parseSummaryForSubtrees(decodedSummary.baseSummary);\n if (childrenPathPart !== undefined) {\n decodedSummary.pathParts.push(childrenPathPart);\n }\n if (decodedSummary.pathParts.length > 0 && this._latestSummary !== undefined) {\n this._latestSummary.additionalPath = EscapedPath.createAndConcat(decodedSummary.pathParts);\n }\n // Defensive assertion: tracking number should already exceed this number.\n // This is probably a little excessive; can remove when stable.\n if (outstandingOps.length > 0) {\n const newOpsLatestSeq = outstandingOps[outstandingOps.length - 1].sequenceNumber;\n assert(newOpsLatestSeq <= this.trackingSequenceNumber, 0x1a9 /* \"When loading base summary, expected outstanding ops <= tracking sequence number\" */);\n }\n return {\n baseSummary: decodedSummary.baseSummary,\n outstandingOps,\n };\n }\n recordChange(op) {\n const lastOp = this.outstandingOps[this.outstandingOps.length - 1];\n if (lastOp !== undefined) {\n assert(lastOp.sequenceNumber < op.sequenceNumber, 0x1aa /* Out of order change recorded */);\n }\n this.invalidate(op.sequenceNumber);\n this.trackingSequenceNumber = op.sequenceNumber;\n this.outstandingOps.push(op);\n }\n invalidate(sequenceNumber) {\n if (sequenceNumber > this._changeSequenceNumber) {\n this._changeSequenceNumber = sequenceNumber;\n }\n }\n /**\n * True if a change has been recorded with sequence number exceeding\n * the latest successfully acked summary reference sequence number.\n * False implies that the previous summary can be reused.\n */\n hasChanged() {\n return this._changeSequenceNumber > this.referenceSequenceNumber;\n }\n get latestSummary() {\n return this._latestSummary;\n }\n createChild(\n /** Summarize function */\n summarizeInternalFn, \n /** Initial id or path part of this node */\n id, \n /**\n * Information needed to create the node.\n * If it is from a base summary, it will assert that a summary has been seen.\n * Attach information if it is created from an attach op.\n */\n createParam, config = {}) {\n assert(!this.children.has(id), 0x1ab /* \"Create SummarizerNode child already exists\" */);\n const createDetails = this.getCreateDetailsForChild(id, createParam);\n const child = new SummarizerNode(this.defaultLogger, summarizeInternalFn, config, createDetails.changeSequenceNumber, createDetails.latestSummary, createDetails.initialSummary, this.wipSummaryLogger);\n // There may be additional state that has to be updated in this child. For example, if a summary is being\n // tracked, the child's summary tracking state needs to be updated too. Same goes for pendingSummaries we might\n // have outstanding on the parent in case we realize nodes in between Summary Op and Summary Ack.\n this.maybeUpdateChildState(child);\n this.children.set(id, child);\n return child;\n }\n getChild(id) {\n return this.children.get(id);\n }\n /**\n * Returns the details needed to create a child node.\n * @param id - Initial id or path part of the child node.\n * @param createParam - Information needed to create the node.\n * @returns the details needed to create the child node.\n */\n getCreateDetailsForChild(id, createParam) {\n var _a;\n let initialSummary;\n let latestSummary;\n let changeSequenceNumber;\n const parentLatestSummary = this._latestSummary;\n switch (createParam.type) {\n case CreateSummarizerNodeSource.FromAttach: {\n if (parentLatestSummary !== undefined\n && createParam.sequenceNumber <= parentLatestSummary.referenceSequenceNumber) {\n // Prioritize latest summary if it was after this node was attached.\n latestSummary = parentLatestSummary.createForChild(id);\n }\n else {\n const summary = convertToSummaryTree(createParam.snapshot);\n initialSummary = {\n sequenceNumber: createParam.sequenceNumber,\n id,\n summary,\n };\n }\n changeSequenceNumber = createParam.sequenceNumber;\n break;\n }\n case CreateSummarizerNodeSource.FromSummary: {\n if (this.initialSummary === undefined) {\n assert(!!parentLatestSummary, 0x1ac /* \"Cannot create child from summary if parent does not have latest summary\" */);\n }\n // fallthrough to local\n }\n case CreateSummarizerNodeSource.Local: {\n const parentInitialSummary = this.initialSummary;\n if (parentInitialSummary !== undefined) {\n let childSummary;\n if (parentInitialSummary.summary !== undefined) {\n const { childrenTree } = parseSummaryTreeForSubtrees(parentInitialSummary.summary.summary);\n assert(childrenTree.type === SummaryType.Tree, 0x1d6 /* \"Parent summary object is not a tree\" */);\n childSummary = childrenTree.tree[id];\n }\n if (createParam.type === CreateSummarizerNodeSource.FromSummary) {\n // Locally created would not have differential subtree.\n assert(!!childSummary, 0x1ad /* \"Missing child summary tree\" */);\n }\n let childSummaryWithStats;\n if (childSummary !== undefined) {\n assert(childSummary.type === SummaryType.Tree, 0x1ae /* \"Child summary object is not a tree\" */);\n childSummaryWithStats = {\n summary: childSummary,\n stats: calculateStats(childSummary),\n };\n }\n initialSummary = {\n sequenceNumber: parentInitialSummary.sequenceNumber,\n id,\n summary: childSummaryWithStats,\n };\n }\n latestSummary = parentLatestSummary === null || parentLatestSummary === void 0 ? void 0 : parentLatestSummary.createForChild(id);\n changeSequenceNumber = (_a = parentLatestSummary === null || parentLatestSummary === void 0 ? void 0 : parentLatestSummary.referenceSequenceNumber) !== null && _a !== void 0 ? _a : -1;\n break;\n }\n default: {\n const type = createParam.type;\n unreachableCase(createParam, `Unexpected CreateSummarizerNodeSource: ${type}`);\n }\n }\n return {\n initialSummary,\n latestSummary,\n changeSequenceNumber,\n };\n }\n /**\n * Updates the state of the child if required. For example, if a summary is currently being tracked, the child's\n * summary tracking state needs to be updated too.\n * Also, in case a child node gets realized in between Summary Op and Summary Ack, let's initialize the child's\n * pending summary as well.\n * @param child - The child node whose state is to be updated.\n */\n maybeUpdateChildState(child) {\n // If we are tracking a summary, this child was created after the tracking started. So, we need to update the\n // child's tracking state as well.\n if (this.isTrackingInProgress()) {\n child.wipReferenceSequenceNumber = this.wipReferenceSequenceNumber;\n }\n // In case we have pending summaries on the parent, let's initialize it on the child.\n if (child._latestSummary !== undefined) {\n for (const [key, value] of this.pendingSummaries.entries()) {\n const newLatestSummaryNode = new SummaryNode({\n referenceSequenceNumber: value.referenceSequenceNumber,\n basePath: child._latestSummary.basePath,\n localPath: child._latestSummary.localPath,\n });\n child.addPendingSummary(key, newLatestSummaryNode);\n }\n }\n }\n addPendingSummary(key, summary) {\n this.pendingSummaries.set(key, summary);\n }\n /**\n * Tells whether summary tracking is in progress. True if \"startSummary\" API is called before summarize.\n */\n isTrackingInProgress() {\n return this.wipReferenceSequenceNumber !== undefined;\n }\n}\n/**\n * Creates a root summarizer node.\n * @param logger - Logger to use within SummarizerNode\n * @param summarizeInternalFn - Function to generate summary\n * @param changeSequenceNumber - Sequence number of latest change to new node/subtree\n * @param referenceSequenceNumber - Reference sequence number of last acked summary,\n * or undefined if not loaded from summary\n * @param config - Configure behavior of summarizer node\n */\nexport const createRootSummarizerNode = (logger, summarizeInternalFn, changeSequenceNumber, referenceSequenceNumber, config = {}) => new SummarizerNode(logger, summarizeInternalFn, config, changeSequenceNumber, referenceSequenceNumber === undefined ? undefined : SummaryNode.createForRoot(referenceSequenceNumber));\n//# sourceMappingURL=summarizerNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/common-utils\";\n/**\n * Trims the leading and trailing slashes from the given string.\n * @param str - A string that may contain leading and / or trailing slashes.\n * @returns A new string without leading and trailing slashes.\n */\nexport function trimLeadingAndTrailingSlashes(str) {\n return str.replace(/^\\/+|\\/+$/g, \"\");\n}\n/**\n * Trims the leading slashes from the given string.\n * @param str - A string that may contain leading slashes.\n * @returns A new string without leading slashes.\n */\nexport function trimLeadingSlashes(str) {\n return str.replace(/^\\/+/g, \"\");\n}\n/**\n * Trims the trailing slashes from the given string.\n * @param str - A string that may contain trailing slashes.\n * @returns A new string without trailing slashes.\n */\nexport function trimTrailingSlashes(str) {\n return str.replace(/\\/+$/g, \"\");\n}\n/**\n * Helper function that clones the GC data.\n * @param gcData - The GC data to clone.\n * @returns a clone of the given GC data.\n */\nexport function cloneGCData(gcData) {\n const clonedGCNodes = {};\n for (const [id, outboundRoutes] of Object.entries(gcData.gcNodes)) {\n clonedGCNodes[id] = Array.from(outboundRoutes);\n }\n return {\n gcNodes: clonedGCNodes,\n };\n}\n/**\n * Helper function that unpacks the GC details of the children from a given node's GC details.\n * @param gcDetails - The GC details of a node.\n * @returns A map of GC details of each children of the the given node.\n */\nexport function unpackChildNodesGCDetails(gcDetails) {\n const childGCDetailsMap = new Map();\n // If GC data is not available, bail out.\n if (gcDetails.gcData === undefined) {\n return childGCDetailsMap;\n }\n // Remove the node's self GC nodes, if any, and generate the children GC nodes.\n const gcNodes = gcDetails.gcData.gcNodes;\n delete gcNodes[\"/\"];\n for (const [id, outboundRoutes] of Object.entries(gcNodes)) {\n assert(id.startsWith(\"/\"), 0x2ae /* \"node id should always be an absolute route\" */);\n const childId = id.split(\"/\")[1];\n let childGCNodeId = id.slice(childId.length + 1);\n // GC node id always begins with \"/\". Handle the special case where a child's id in the parent's GC nodes is\n // of format `/root`. In this case, the childId is root and childGCNodeId is \"\". Make childGCNodeId = \"/\".\n if (childGCNodeId === \"\") {\n childGCNodeId = \"/\";\n }\n let childGCDetails = childGCDetailsMap.get(childId);\n if (childGCDetails === undefined) {\n childGCDetails = { gcData: { gcNodes: {} }, usedRoutes: [] };\n }\n // gcData should not undefined as its always at least initialized as empty above.\n assert(childGCDetails.gcData !== undefined, 0x2af /* \"Child GC data should have been initialized\" */);\n childGCDetails.gcData.gcNodes[childGCNodeId] = [...new Set(outboundRoutes)];\n childGCDetailsMap.set(childId, childGCDetails);\n }\n if (gcDetails.usedRoutes === undefined) {\n return childGCDetailsMap;\n }\n // Remove the node's self used route, if any, and generate the children used routes.\n const usedRoutes = gcDetails.usedRoutes.filter((route) => route !== \"\" && route !== \"/\");\n for (const route of usedRoutes) {\n assert(route.startsWith(\"/\"), 0x2b0 /* \"Used route should always be an absolute route\" */);\n const childId = route.split(\"/\")[1];\n const childUsedRoute = route.slice(childId.length + 1);\n const childGCDetails = childGCDetailsMap.get(childId);\n assert((childGCDetails === null || childGCDetails === void 0 ? void 0 : childGCDetails.usedRoutes) !== undefined, 0x2b1 /* \"This should have be initiallized when generate GC nodes above\" */);\n childGCDetails.usedRoutes.push(childUsedRoute);\n childGCDetailsMap.set(childId, childGCDetails);\n }\n return childGCDetailsMap;\n}\n/**\n * Helper function that unpacks the used routes of children from a given node's used routes.\n * @param usedRoutes - The used routes of a node.\n * @returns A map of used routes of each children of the the given node.\n */\nexport function unpackChildNodesUsedRoutes(usedRoutes) {\n // Remove the node's self used route, if any, and generate the children used routes.\n const filteredUsedRoutes = usedRoutes.filter((route) => route !== \"\" && route !== \"/\");\n const childUsedRoutesMap = new Map();\n for (const route of filteredUsedRoutes) {\n assert(route.startsWith(\"/\"), 0x198 /* \"Used route should always be an absolute route\" */);\n const childId = route.split(\"/\")[1];\n const childUsedRoute = route.slice(childId.length + 1);\n const childUsedRoutes = childUsedRoutesMap.get(childId);\n if (childUsedRoutes !== undefined) {\n childUsedRoutes.push(childUsedRoute);\n }\n else {\n childUsedRoutesMap.set(childId, [childUsedRoute]);\n }\n }\n return childUsedRoutesMap;\n}\n/**\n * Removes the given route from the outbound routes of all the given GC nodes, and any duplicates\n * @param gcNodes - The nodes from which the route is to be removed.\n * @param outboundRoute - The route to be removed.\n */\nexport function removeRouteFromAllNodes(gcNodes, outboundRoute) {\n const channels = Object.entries(gcNodes);\n for (const [nodeId, outboundRoutes] of channels) {\n // Remove route from channel to parent for each channel\n const outboundRoutesSet = new Set(outboundRoutes);\n outboundRoutesSet.delete(outboundRoute);\n gcNodes[nodeId] = [...outboundRoutesSet];\n }\n}\n/**\n * Concatenates the given GC states and returns the concatenated GC state.\n */\nexport function concatGarbageCollectionStates(gcState1, gcState2) {\n var _a;\n const combinedGCNodes = {};\n for (const [nodeId, nodeData] of Object.entries(gcState1.gcNodes)) {\n combinedGCNodes[nodeId] = {\n outboundRoutes: Array.from(nodeData.outboundRoutes),\n unreferencedTimestampMs: nodeData.unreferencedTimestampMs,\n };\n }\n for (const [nodeId, nodeData] of Object.entries(gcState2.gcNodes)) {\n let combinedNodedata = combinedGCNodes[nodeId];\n if (combinedNodedata === undefined) {\n combinedNodedata = {\n outboundRoutes: Array.from(nodeData.outboundRoutes),\n unreferencedTimestampMs: nodeData.unreferencedTimestampMs,\n };\n }\n else {\n // Validate that same node doesn't have different unreferenced timestamp.\n if (nodeData.unreferencedTimestampMs !== undefined\n && combinedNodedata.unreferencedTimestampMs !== undefined) {\n assert(nodeData.unreferencedTimestampMs === combinedNodedata.unreferencedTimestampMs, 0x2b2 /* \"Two entries for the same GC node with different unreferenced timestamp\" */);\n }\n combinedNodedata = {\n outboundRoutes: [...new Set([...nodeData.outboundRoutes, ...combinedNodedata.outboundRoutes])],\n unreferencedTimestampMs: (_a = nodeData.unreferencedTimestampMs) !== null && _a !== void 0 ? _a : combinedNodedata.unreferencedTimestampMs,\n };\n }\n combinedGCNodes[nodeId] = combinedNodedata;\n }\n return { gcNodes: combinedGCNodes };\n}\n/**\n * Concatenates the given GC datas and returns the concatenated GC data.\n */\nexport function concatGarbageCollectionData(gcData1, gcData2) {\n const combinedGCData = cloneGCData(gcData1);\n for (const [id, routes] of Object.entries(gcData2.gcNodes)) {\n if (combinedGCData.gcNodes[id] === undefined) {\n combinedGCData.gcNodes[id] = Array.from(routes);\n }\n else {\n const combinedRoutes = [...routes, ...combinedGCData.gcNodes[id]];\n combinedGCData.gcNodes[id] = [...new Set(combinedRoutes)];\n }\n }\n return combinedGCData;\n}\nexport class GCDataBuilder {\n constructor() {\n this.gcNodesSet = {};\n }\n get gcNodes() {\n const gcNodes = {};\n for (const [nodeId, outboundRoutes] of Object.entries(this.gcNodesSet)) {\n gcNodes[nodeId] = [...outboundRoutes];\n }\n return gcNodes;\n }\n addNode(id, outboundRoutes) {\n this.gcNodesSet[id] = new Set(outboundRoutes);\n }\n /**\n * Adds the given GC nodes. It does the following:\n * - Normalizes the ids of the given nodes.\n * - Prefixes the given `prefixId` to the given nodes' ids.\n * - Adds the outbound routes of the nodes against the normalized and prefixed id.\n */\n prefixAndAddNodes(prefixId, gcNodes) {\n for (const [id, outboundRoutes] of Object.entries(gcNodes)) {\n // Remove any leading slashes from the id.\n let normalizedId = trimLeadingSlashes(id);\n // Prefix the given id to the normalized id.\n normalizedId = `/${prefixId}/${normalizedId}`;\n // Remove any trailing slashes from the normalized id. Note that the trailing slashes are removed after\n // adding the prefix for handling the special case where id is \"/\".\n normalizedId = trimTrailingSlashes(normalizedId);\n // Add the outbound routes against the normalized and prefixed id without duplicates.\n this.gcNodesSet[normalizedId] = new Set(outboundRoutes);\n }\n }\n addNodes(gcNodes) {\n for (const [id, outboundRoutes] of Object.entries(gcNodes)) {\n this.gcNodesSet[id] = new Set(outboundRoutes);\n }\n }\n /**\n * Adds the given outbound route to the outbound routes of all GC nodes.\n */\n addRouteToAllNodes(outboundRoute) {\n for (const outboundRoutes of Object.values(this.gcNodesSet)) {\n outboundRoutes.add(outboundRoute);\n }\n }\n getGCData() {\n return {\n gcNodes: this.gcNodes,\n };\n }\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, LazyPromise } from \"@fluidframework/common-utils\";\nimport { cloneGCData } from \"@fluidframework/garbage-collector\";\nimport { gcBlobKey, } from \"@fluidframework/runtime-definitions\";\nimport { SummarizerNode } from \"./summarizerNode\";\nimport { SummaryNode, } from \"./summarizerNodeUtils\";\n// Extend SummaryNode to add used routes tracking to it.\nclass SummaryNodeWithGC extends SummaryNode {\n constructor(serializedUsedRoutes, summary) {\n super(summary);\n this.serializedUsedRoutes = serializedUsedRoutes;\n }\n}\n/**\n * Extends the functionality of SummarizerNode to manage this node's garbage collection data:\n * - Adds a new API `getGCData` to return GC data of this node.\n * - Caches the result of `getGCData` to be used if nothing changes between summaries.\n * - Manages the used routes of this node. These are used to identify if this node is referenced in the document\n * and to determine if the node's used state changed since last summary.\n * - Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls\n * directly into summarizeInternal method.\n */\nexport class SummarizerNodeWithGC extends SummarizerNode {\n /**\n * Do not call constructor directly.\n * Use createRootSummarizerNodeWithGC to create root node, or createChild to create child nodes.\n */\n constructor(logger, summarizeFn, config, changeSequenceNumber, \n /** Undefined means created without summary */\n latestSummary, initialSummary, wipSummaryLogger, getGCDataFn, getBaseGCDetailsFn) {\n super(logger, async (fullTree, _trackState, telemetryContext) => summarizeFn(fullTree, true /* trackState */, telemetryContext), config, changeSequenceNumber, latestSummary, initialSummary, wipSummaryLogger);\n this.summarizeFn = summarizeFn;\n this.getGCDataFn = getGCDataFn;\n // Keeps track of whether we have loaded the base details to ensure that we on;y do it once.\n this.baseGCDetailsLoaded = false;\n // Set used routes to have self route by default. This makes the node referenced by default. This is done to ensure\n // that this node is not marked as collected when running GC has been disabled. Once, the option to disable GC is\n // removed (from runGC flag in IContainerRuntimeOptions), this should be changed to be have no routes by default.\n this.usedRoutes = [\"\"];\n this.gcDisabled = config.gcDisabled === true;\n this.baseGCDetailsP = new LazyPromise(async () => {\n var _a;\n return (_a = (await (getBaseGCDetailsFn === null || getBaseGCDetailsFn === void 0 ? void 0 : getBaseGCDetailsFn()))) !== null && _a !== void 0 ? _a : { usedRoutes: [] };\n });\n }\n /**\n * @deprecated - Renamed to getBaseGCDetails.\n */\n getGCSummaryDetails() {\n return this.getBaseGCDetails();\n }\n // Returns the GC details to be added to this node's summary and is used to initialize new nodes' GC state.\n getBaseGCDetails() {\n return {\n gcData: this.gcData,\n usedRoutes: this.usedRoutes,\n unrefTimestamp: this.unreferencedTimestampMs,\n };\n }\n /**\n * Loads state from this node's initial GC summary details. This contains the following data from the last summary\n * seen by the server for this client:\n * - usedRoutes: This is used to figure out if the used state of this node changed since last summary.\n * - gcData: The garbage collection data of this node that is required for running GC.\n */\n async loadBaseGCDetails() {\n var _a;\n const baseGCDetails = await this.baseGCDetailsP;\n // Possible race - If there were parallel calls to loadBaseGCDetails, we want to make sure that we only update\n // the state from the base details only once.\n if (this.baseGCDetailsLoaded) {\n return;\n }\n this.baseGCDetailsLoaded = true;\n // If the GC details has GC data, initialize our GC data from it.\n if (baseGCDetails.gcData !== undefined) {\n this.gcData = cloneGCData(baseGCDetails.gcData);\n }\n // Sort the used routes because we compare them with the current used routes to check if they changed between\n // summaries. Both are sorted so that the order of elements is the same.\n this.referenceUsedRoutes = (_a = baseGCDetails.usedRoutes) === null || _a === void 0 ? void 0 : _a.sort();\n this.unreferencedTimestampMs = baseGCDetails.unrefTimestamp;\n }\n async summarize(fullTree, trackState = true, telemetryContext) {\n // If GC is not disabled and we are tracking a summary, GC should have run and updated the used routes for this\n // summary by calling updateUsedRoutes which sets wipSerializedUsedRoutes.\n if (!this.gcDisabled && this.isTrackingInProgress()) {\n assert(this.wipSerializedUsedRoutes !== undefined, 0x1b1 /* \"wip used routes should be set if tracking a summary\" */);\n }\n // If trackState is true, get summary from base summarizer node which tracks summary state.\n // If trackState is false, get summary from summarizeInternal.\n return trackState\n ? super.summarize(fullTree, true /* trackState */, telemetryContext)\n : this.summarizeFn(fullTree, trackState, telemetryContext);\n }\n /**\n * Returns the GC data of this node. If nothing has changed since last summary, it tries to reuse the data from\n * the previous summary. Else, it gets new GC data from the underlying Fluid object.\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n assert(!this.gcDisabled, 0x1b2 /* \"Getting GC data should not be called when GC is disabled!\" */);\n assert(this.getGCDataFn !== undefined, 0x1b3 /* \"GC data cannot be retrieved without getGCDataFn\" */);\n // Load GC details from the initial summary, if not already loaded. If this is the first time this function is\n // called and the node's data has not changed since last summary, the GC data in initial details is returned.\n await this.loadBaseGCDetails();\n // If there is no new data since last summary and we have GC data from the previous run, return it. We may not\n // have data from previous GC run for clients with older summary format before GC was added. They won't have\n // GC details in their initial summary.\n if (!fullGC && !this.hasDataChanged() && this.gcData !== undefined) {\n return cloneGCData(this.gcData);\n }\n const gcData = await this.getGCDataFn(fullGC);\n this.gcData = cloneGCData(gcData);\n return gcData;\n }\n /**\n * Called during the start of a summary. Updates the work-in-progress used routes.\n */\n startSummary(referenceSequenceNumber, summaryLogger) {\n // If GC is disabled, skip setting wip used routes since we should not track GC state.\n if (!this.gcDisabled) {\n assert(this.wipSerializedUsedRoutes === undefined, 0x1b4 /* \"We should not already be tracking used routes when to track a new summary\" */);\n }\n super.startSummary(referenceSequenceNumber, summaryLogger);\n }\n /**\n * Called after summary has been uploaded to the server. Add the work-in-progress state to the pending\n * summary queue. We track this until we get an ack from the server for this summary.\n */\n completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion) {\n let wipSerializedUsedRoutes;\n // If GC is disabled, don't set wip used routes.\n if (!this.gcDisabled) {\n wipSerializedUsedRoutes = this.wipSerializedUsedRoutes;\n assert(wipSerializedUsedRoutes !== undefined, 0x1b5 /* \"We should have been tracking used routes\" */);\n }\n super.completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion);\n // If GC is disabled, skip setting pending summary with GC state.\n if (!this.gcDisabled) {\n const summaryNode = this.pendingSummaries.get(proposalHandle);\n if (summaryNode !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const summaryNodeWithGC = new SummaryNodeWithGC(wipSerializedUsedRoutes, summaryNode);\n this.pendingSummaries.set(proposalHandle, summaryNodeWithGC);\n }\n }\n }\n /**\n * Clears the work-in-progress state.\n */\n clearSummary() {\n this.wipSerializedUsedRoutes = undefined;\n super.clearSummary();\n }\n /**\n * Called when we get an ack from the server for a summary we sent. Update the reference state of this node\n * from the state in the pending summary queue.\n */\n refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber) {\n // If GC is disabled, skip setting referenced used routes since we are not tracking GC state.\n if (!this.gcDisabled) {\n const summaryNode = this.pendingSummaries.get(proposalHandle);\n if (summaryNode !== undefined) {\n this.referenceUsedRoutes = JSON.parse(summaryNode.serializedUsedRoutes);\n }\n }\n return super.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);\n }\n /**\n * Called when we need to upload the reference state from the given summary. Read the GC blob and get the state\n * to upload from it.\n */\n async refreshLatestSummaryFromSnapshot(referenceSequenceNumber, snapshotTree, basePath, localPath, correlatedSummaryLogger, readAndParseBlob) {\n // If GC is disabled, skip setting referenced used routes since we are not tracking GC state.\n if (!this.gcDisabled) {\n const gcDetailsBlob = snapshotTree.blobs[gcBlobKey];\n if (gcDetailsBlob !== undefined) {\n const gcDetails = await readAndParseBlob(gcDetailsBlob);\n // Possible re-entrancy. If we have already seen a summary later than this one, ignore it.\n if (this.referenceSequenceNumber >= referenceSequenceNumber) {\n return;\n }\n this.referenceUsedRoutes = gcDetails.usedRoutes;\n }\n }\n return super.refreshLatestSummaryFromSnapshot(referenceSequenceNumber, snapshotTree, basePath, localPath, correlatedSummaryLogger, readAndParseBlob);\n }\n /**\n * Override the createChild method to return an instance of SummarizerNodeWithGC.\n */\n createChild(\n /** Summarize function */\n summarizeInternalFn, \n /** Initial id or path part of this node */\n id, \n /**\n * Information needed to create the node.\n * If it is from a base summary, it will assert that a summary has been seen.\n * Attach information if it is created from an attach op.\n */\n createParam, config = {}, getGCDataFn, getBaseGCDetailsFn) {\n var _a;\n assert(!this.children.has(id), 0x1b6 /* \"Create SummarizerNode child already exists\" */);\n const createDetails = this.getCreateDetailsForChild(id, createParam);\n const child = new SummarizerNodeWithGC(this.defaultLogger, summarizeInternalFn, Object.assign(Object.assign({}, config), { \n // Propagate our gcDisabled state to the child if its not explicity specified in child's config.\n gcDisabled: (_a = config.gcDisabled) !== null && _a !== void 0 ? _a : this.gcDisabled }), createDetails.changeSequenceNumber, createDetails.latestSummary, createDetails.initialSummary, this.wipSummaryLogger, getGCDataFn, getBaseGCDetailsFn);\n // There may be additional state that has to be updated in this child. For example, if a summary is being\n // tracked, the child's summary tracking state needs to be updated too.\n this.maybeUpdateChildState(child);\n this.children.set(id, child);\n return child;\n }\n /**\n * Deletes the child node with the given id.\n */\n deleteChild(id) {\n this.children.delete(id);\n }\n /**\n * Override the getChild method to return an instance of SummarizerNodeWithGC.\n */\n getChild(id) {\n return this.children.get(id);\n }\n isReferenced() {\n return this.usedRoutes.includes(\"\") || this.usedRoutes.includes(\"/\");\n }\n updateUsedRoutes(usedRoutes, gcTimestamp) {\n // Sort the given routes before updating. This will ensure that the routes compared in hasUsedStateChanged()\n // are in the same order.\n this.usedRoutes = usedRoutes.sort();\n // If GC is not disabled and we are tracking a summary, update the work-in-progress used routes so that it can\n // be tracked for this summary.\n if (!this.gcDisabled && this.isTrackingInProgress()) {\n this.wipSerializedUsedRoutes = JSON.stringify(this.usedRoutes);\n }\n if (this.isReferenced()) {\n this.unreferencedTimestampMs = undefined;\n return;\n }\n // If this node just became unreferenced, update its unreferencedTimestampMs.\n if (this.unreferencedTimestampMs === undefined) {\n this.unreferencedTimestampMs = gcTimestamp;\n }\n }\n /**\n * Override the hasChanged method. If this node data or its used state changed, the node is considered changed.\n */\n hasChanged() {\n return this.hasDataChanged() || this.hasUsedStateChanged();\n }\n /**\n * This tells whether the data in this node has changed or not.\n */\n hasDataChanged() {\n return super.hasChanged();\n }\n /**\n * This tells whether the used state of this node has changed since last successful summary. If the used routes\n * of this node changed, its used state is considered changed. Basically, if this node or any of its child nodes\n * was previously used and became unused (or vice versa), its used state has changed.\n */\n hasUsedStateChanged() {\n // If GC is disabled, we are not tracking used state, return false.\n if (this.gcDisabled) {\n return false;\n }\n return this.referenceUsedRoutes === undefined ||\n JSON.stringify(this.usedRoutes) !== JSON.stringify(this.referenceUsedRoutes);\n }\n}\n/**\n * Creates a root summarizer node with GC functionality built-in.\n * @param logger - Logger to use within SummarizerNode\n * @param summarizeInternalFn - Function to generate summary\n * @param changeSequenceNumber - Sequence number of latest change to new node/subtree\n * @param referenceSequenceNumber - Reference sequence number of last acked summary,\n * or undefined if not loaded from summary\n * @param config - Configure behavior of summarizer node\n * @param getGCDataFn - Function to get the GC data of this node\n * @param baseGCDetailsP - Function to get the initial GC details of this node\n */\nexport const createRootSummarizerNodeWithGC = (logger, summarizeInternalFn, changeSequenceNumber, referenceSequenceNumber, config = {}, getGCDataFn, getBaseGCDetailsFn) => new SummarizerNodeWithGC(logger, summarizeInternalFn, config, changeSequenceNumber, referenceSequenceNumber === undefined ? undefined : SummaryNode.createForRoot(referenceSequenceNumber), undefined /* initialSummary */, undefined /* wipSummaryLogger */, getGCDataFn, getBaseGCDetailsFn);\n//# sourceMappingURL=summarizerNodeWithGc.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Fetches the sequence number of the snapshot tree by examining the protocol.\n * @param tree - snapshot tree to examine\n * @param readAndParseBlob - function to read blob contents from storage\n * and parse the result from JSON.\n */\nexport async function seqFromTree(tree, readAndParseBlob) {\n const attributesHash = tree.trees[\".protocol\"].blobs.attributes;\n const attrib = await readAndParseBlob(attributesHash);\n return attrib.sequenceNumber;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { v4 as uuid } from \"uuid\";\nimport { hasErrorInstanceId, isFluidError, isValidLegacyError, } from \"./fluidErrorBase\";\n/** @returns true if value is an object but neither null nor an array */\nconst isRegularObject = (value) => {\n return value !== null && !Array.isArray(value) && typeof value === \"object\";\n};\n/** Inspect the given error for common \"safe\" props and return them */\nexport function extractLogSafeErrorProperties(error, sanitizeStack) {\n const removeMessageFromStack = (stack, errorName) => {\n if (!sanitizeStack) {\n return stack;\n }\n const stackFrames = stack.split(\"\\n\");\n stackFrames.shift(); // Remove \"[ErrorName]: [ErrorMessage]\"\n if (errorName !== undefined) {\n stackFrames.unshift(errorName); // Add \"[ErrorName]\"\n }\n return stackFrames.join(\"\\n\");\n };\n const message = (typeof (error === null || error === void 0 ? void 0 : error.message) === \"string\")\n ? error.message\n : String(error);\n const safeProps = {\n message,\n };\n if (isRegularObject(error)) {\n const { errorType, stack, name } = error;\n if (typeof errorType === \"string\") {\n safeProps.errorType = errorType;\n }\n if (typeof stack === \"string\") {\n const errorName = (typeof name === \"string\") ? name : undefined;\n safeProps.stack = removeMessageFromStack(stack, errorName);\n }\n }\n return safeProps;\n}\n/** type guard for ILoggingError interface */\nexport const isILoggingError = (x) => typeof (x === null || x === void 0 ? void 0 : x.getTelemetryProperties) === \"function\";\n/** Copy props from source onto target, but do not overwrite an existing prop that matches */\nfunction copyProps(target, source) {\n for (const key of Object.keys(source)) {\n if (target[key] === undefined) {\n target[key] = source[key];\n }\n }\n}\n/** For backwards compatibility with pre-errorInstanceId valid errors */\nfunction patchLegacyError(legacyError) {\n const patchMe = legacyError;\n if (patchMe.errorInstanceId === undefined) {\n patchMe.errorInstanceId = uuid();\n }\n}\n/**\n * Normalize the given error yielding a valid Fluid Error\n * @returns A valid Fluid Error with any provided annotations applied\n * @param error - The error to normalize\n * @param annotations - Annotations to apply to the normalized error\n */\nexport function normalizeError(error, annotations = {}) {\n var _a;\n // Back-compat, while IFluidErrorBase is rolled out\n if (isValidLegacyError(error)) {\n patchLegacyError(error);\n }\n if (isFluidError(error)) {\n // We can simply add the telemetry props to the error and return it\n error.addTelemetryProperties((_a = annotations.props) !== null && _a !== void 0 ? _a : {});\n return error;\n }\n // We have to construct a new Fluid Error, copying safe properties over\n const { message, stack } = extractLogSafeErrorProperties(error, false /* sanitizeStack */);\n const fluidError = new NormalizedExternalError({\n message,\n stack,\n });\n // We need to preserve these properties which are used in a non-typesafe way throughout driver code (see #8743)\n // Anywhere they are set should be on a valid Fluid Error that would have been returned above,\n // but we can't prove it with the types, so adding this defensive measure.\n if (typeof error === \"object\" && error !== null) {\n const { canRetry, retryAfterSeconds } = error;\n Object.assign(normalizeError, { canRetry, retryAfterSeconds });\n }\n if (typeof (error) !== \"object\") {\n // This is only interesting for non-objects\n fluidError.addTelemetryProperties({ typeofError: typeof (error) });\n }\n const originalErrorTelemetryProps = isILoggingError(error) ? error.getTelemetryProperties() : {};\n fluidError.addTelemetryProperties(Object.assign(Object.assign(Object.assign({}, originalErrorTelemetryProps), annotations.props), { untrustedOrigin: 1 }));\n return fluidError;\n}\nlet stackPopulatedOnCreation;\n/**\n * The purpose of this function is to provide ability to capture stack context quickly.\n * Accessing new Error().stack is slow, and the slowest part is accessing stack property itself.\n * There are scenarios where we generate error with stack, but error is handled in most cases and\n * stack property is not accessed.\n * For such cases it's better to not read stack property right away, but rather delay it until / if it's needed\n * Some browsers will populate stack right away, others require throwing Error, so we do auto-detection on the fly.\n * @returns Error object that has stack populated.\n */\nexport function generateErrorWithStack() {\n const err = new Error(\"<>\");\n if (stackPopulatedOnCreation === undefined) {\n stackPopulatedOnCreation = (err.stack !== undefined);\n }\n if (stackPopulatedOnCreation) {\n return err;\n }\n try {\n throw err;\n }\n catch (e) {\n return e;\n }\n}\nexport function generateStack() {\n return generateErrorWithStack().stack;\n}\n/**\n * Create a new error using newErrorFn, wrapping and caused by the given unknown error.\n * Copies the inner error's stack, errorInstanceId and telemetry props over to the new error if present\n * @param innerError - An error from untrusted/unknown origins\n * @param newErrorFn - callback that will create a new error given the original error's message\n * @returns A new error object \"wrapping\" the given error\n */\nexport function wrapError(innerError, newErrorFn) {\n const { message, stack, } = extractLogSafeErrorProperties(innerError, false /* sanitizeStack */);\n const newError = newErrorFn(message);\n if (stack !== undefined) {\n overwriteStack(newError, stack);\n }\n // Mark external errors with untrustedOrigin flag\n if (isExternalError(innerError)) {\n newError.addTelemetryProperties({ untrustedOrigin: 1 });\n }\n // Reuse errorInstanceId\n if (hasErrorInstanceId(innerError)) {\n newError.overwriteErrorInstanceId(innerError.errorInstanceId);\n // For \"back-compat\" in the logs\n newError.addTelemetryProperties({ innerErrorInstanceId: innerError.errorInstanceId });\n }\n // Lastly, copy over all other telemetry properties. Note these will not overwrite existing properties\n // This will include the untrustedOrigin property if the inner error itself was created from an external error\n if (isILoggingError(innerError)) {\n newError.addTelemetryProperties(innerError.getTelemetryProperties());\n }\n return newError;\n}\n/** The same as wrapError, but also logs the innerError, including the wrapping error's instance id */\nexport function wrapErrorAndLog(innerError, newErrorFn, logger) {\n const newError = wrapError(innerError, newErrorFn);\n // This will match innerError.errorInstanceId if present (see wrapError)\n const errorInstanceId = newError.errorInstanceId;\n // For \"back-compat\" in the logs\n const wrappedByErrorInstanceId = errorInstanceId;\n logger.sendTelemetryEvent({\n eventName: \"WrapError\",\n errorInstanceId,\n wrappedByErrorInstanceId,\n }, innerError);\n return newError;\n}\nfunction overwriteStack(error, stack) {\n // supposedly setting stack on an Error can throw.\n try {\n Object.assign(error, { stack });\n }\n catch (errorSettingStack) {\n error.addTelemetryProperties({ stack2: stack });\n }\n}\n/**\n * True for any error object that is an (optionally normalized) external error\n * False for any error we created and raised within the FF codebase, or wrapped in a well-known error type\n */\nexport function isExternalError(e) {\n return !isValidLegacyError(e) ||\n (e.getTelemetryProperties().untrustedOrigin === 1 &&\n e.errorType === NormalizedExternalError.normalizedErrorType);\n}\n/**\n * Type guard to identify if a particular value (loosely) appears to be a tagged telemetry property\n */\nexport function isTaggedTelemetryPropertyValue(x) {\n return (typeof (x === null || x === void 0 ? void 0 : x.value) !== \"object\" && typeof (x === null || x === void 0 ? void 0 : x.tag) === \"string\");\n}\n/**\n * Walk an object's enumerable properties to find those fit for telemetry.\n */\nfunction getValidTelemetryProps(obj, keysToOmit) {\n const props = {};\n for (const key of Object.keys(obj)) {\n if (keysToOmit.has(key)) {\n continue;\n }\n const val = obj[key];\n switch (typeof val) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n case \"undefined\":\n props[key] = val;\n break;\n default: {\n if (isTaggedTelemetryPropertyValue(val)) {\n props[key] = val;\n }\n else {\n // We don't support logging arbitrary objects\n props[key] = \"REDACTED (arbitrary object)\";\n }\n break;\n }\n }\n }\n return props;\n}\n/**\n * Borrowed from\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#examples}\n * Avoids runtime errors with circular references.\n * Not ideal, as will cut values that are not necessarily circular references.\n * Could be improved by implementing Node's util.inspect() for browser (minus all the coloring code)\n*/\nexport const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return \"\";\n }\n seen.add(value);\n }\n return value;\n };\n};\n/**\n * Base class for \"trusted\" errors we create, whose properties can generally be logged to telemetry safely.\n * All properties set on the object, or passed in (via the constructor or addTelemetryProperties),\n * will be logged in accordance with their tag, if present.\n *\n * PLEASE take care to avoid setting sensitive data on this object without proper tagging!\n */\nexport class LoggingError extends Error {\n /**\n * Create a new LoggingError\n * @param message - Error message to use for Error base class\n * @param props - telemetry props to include on the error for when it's logged\n * @param omitPropsFromLogging - properties by name to omit from telemetry props\n */\n constructor(message, props, omitPropsFromLogging = new Set()) {\n super(message);\n this.omitPropsFromLogging = omitPropsFromLogging;\n this._errorInstanceId = uuid();\n /** Back-compat to appease isFluidError typeguard in old code that may handle this error */\n // @ts-expect-error - This field shouldn't be referenced in the current version, but needs to exist at runtime.\n this.fluidErrorCode = \"-\";\n // Don't log this list itself, or the private _errorInstanceId\n omitPropsFromLogging.add(\"omitPropsFromLogging\");\n omitPropsFromLogging.add(\"_errorInstanceId\");\n if (props) {\n this.addTelemetryProperties(props);\n }\n }\n get errorInstanceId() { return this._errorInstanceId; }\n overwriteErrorInstanceId(id) { this._errorInstanceId = id; }\n /**\n * Add additional properties to be logged\n */\n addTelemetryProperties(props) {\n copyProps(this, props);\n }\n /**\n * Get all properties fit to be logged to telemetry for this error\n */\n getTelemetryProperties() {\n const taggableProps = getValidTelemetryProps(this, this.omitPropsFromLogging);\n // Include non-enumerable props that are not returned by getValidTelemetryProps\n return Object.assign(Object.assign({}, taggableProps), { stack: this.stack, message: this.message, errorInstanceId: this._errorInstanceId });\n }\n}\n/** The Error class used when normalizing an external error */\nclass NormalizedExternalError extends LoggingError {\n constructor(errorProps) {\n super(errorProps.message);\n this.errorType = NormalizedExternalError.normalizedErrorType;\n if (errorProps.stack !== undefined) {\n overwriteStack(this, errorProps.stack);\n }\n }\n}\n// errorType \"genericError\" is used as a default value throughout the code.\n// Note that this matches ContainerErrorType/DriverErrorType's genericError\nNormalizedExternalError.normalizedErrorType = \"genericError\";\n//# sourceMappingURL=errorLogging.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nconst hasTelemetryPropFunctions = (x) => typeof (x === null || x === void 0 ? void 0 : x.getTelemetryProperties) === \"function\" &&\n typeof (x === null || x === void 0 ? void 0 : x.addTelemetryProperties) === \"function\";\nexport const hasErrorInstanceId = (x) => typeof (x === null || x === void 0 ? void 0 : x.errorInstanceId) === \"string\";\n/** type guard for IFluidErrorBase interface */\nexport function isFluidError(e) {\n return typeof (e === null || e === void 0 ? void 0 : e.errorType) === \"string\" &&\n typeof (e === null || e === void 0 ? void 0 : e.message) === \"string\" &&\n hasErrorInstanceId(e) &&\n hasTelemetryPropFunctions(e);\n}\n/** type guard for old standard of valid/known errors */\nexport function isValidLegacyError(e) {\n return typeof (e === null || e === void 0 ? void 0 : e.errorType) === \"string\" &&\n typeof (e === null || e === void 0 ? void 0 : e.message) === \"string\" &&\n hasTelemetryPropFunctions(e);\n}\n//# sourceMappingURL=fluidErrorBase.js.map","import { Lazy } from \"@fluidframework/common-utils\";\n/**\n * Creates a base configuration provider based on `sessionStorage`\n *\n * @returns A lazy initialized base configuration provider with `sessionStorage` as the underlying config store\n */\nexport const sessionStorageConfigProvider = new Lazy(() => inMemoryConfigProvider(safeSessionStorage()));\nconst NullConfigProvider = {\n getRawConfig: () => undefined,\n};\n/**\n * Creates a base configuration provider based on the supplied `Storage` instance\n *\n * @param storage - instance of `Storage` to be used as storage media for the config\n * @returns A base configuration provider with\n * the supplied `Storage` instance as the underlying config store\n */\nexport const inMemoryConfigProvider = (storage) => {\n if (storage !== undefined && storage !== null) {\n return new CachedConfigProvider({\n getRawConfig: (name) => {\n var _a, _b;\n try {\n return (_b = stronglyTypedParse((_a = storage.getItem(name)) !== null && _a !== void 0 ? _a : undefined)) === null || _b === void 0 ? void 0 : _b.raw;\n }\n catch (_c) { }\n return undefined;\n },\n });\n }\n return NullConfigProvider;\n};\nfunction isPrimitiveType(type) {\n switch (type) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n return true;\n default:\n return false;\n }\n}\n/**\n * Takes any supported config type, and returns the value with a strong type. If the type of\n * the config is not a supported type undefined will be returned.\n * The user of this function should cache the result to avoid duplicated work.\n *\n * Strings will be attempted to be parsed and coerced into a strong config type.\n * if it is not possible to parsed and coerce a string to a strong config type the original string\n * will be return with a string type for the consumer to handle further if necessary.\n */\nfunction stronglyTypedParse(input) {\n let output = input;\n let defaultReturn;\n // we do special handling for strings to try and coerce\n // them into a config type if we can. This makes it easy\n // for config sources like sessionStorage which only\n // holds strings\n if (typeof input === \"string\") {\n try {\n output = JSON.parse(input);\n // we succeeded in parsing, but we don't support parsing\n // for any object as we can't do it type safely\n // so in this case, the default return will be string\n // rather than undefined, and the consumer\n // can parse, as we don't want to provide\n // a false sense of security by just\n // casting.\n defaultReturn = { raw: input, string: input };\n }\n catch (_a) { }\n }\n if (output === undefined) {\n return defaultReturn;\n }\n const outputType = typeof output;\n if (isPrimitiveType(outputType)) {\n return Object.assign(Object.assign({}, defaultReturn), { raw: input, [outputType]: output });\n }\n if (Array.isArray(output)) {\n const firstType = typeof output[0];\n // ensure the first elements is a primitive type\n if (!isPrimitiveType(firstType)) {\n return defaultReturn;\n }\n // ensue all the elements types are homogeneous\n // aka they all have the same type as the first\n for (const v of output) {\n if (typeof v !== firstType) {\n return defaultReturn;\n }\n }\n return Object.assign(Object.assign({}, defaultReturn), { raw: input, [`${firstType}[]`]: output });\n }\n return defaultReturn;\n}\n/** Referencing the `sessionStorage` variable can throw in some environments such as Node */\nconst safeSessionStorage = () => {\n try {\n return sessionStorage !== null ? sessionStorage : undefined;\n }\n catch (_a) {\n return undefined;\n }\n};\n/**\n * Implementation of {@link IConfigProvider} which contains nested {@link IConfigProviderBase} instances\n */\nexport class CachedConfigProvider {\n constructor(...orderedBaseProviders) {\n this.configCache = new Map();\n this.orderedBaseProviders = [];\n const knownProviders = new Set();\n const candidateProviders = [...orderedBaseProviders];\n while (candidateProviders.length > 0) {\n const baseProvider = candidateProviders.shift();\n if (baseProvider !== undefined\n && isConfigProviderBase(baseProvider)\n && !knownProviders.has(baseProvider)) {\n knownProviders.add(baseProvider);\n if (baseProvider instanceof CachedConfigProvider) {\n candidateProviders.push(...baseProvider.orderedBaseProviders);\n }\n else {\n this.orderedBaseProviders.push(baseProvider);\n }\n }\n }\n }\n getBoolean(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a.boolean;\n }\n getNumber(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a.number;\n }\n getString(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a.string;\n }\n getBooleanArray(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a[\"boolean[]\"];\n }\n getNumberArray(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a[\"number[]\"];\n }\n getStringArray(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a[\"string[]\"];\n }\n getRawConfig(name) {\n var _a;\n return (_a = this.getCacheEntry(name)) === null || _a === void 0 ? void 0 : _a.raw;\n }\n getCacheEntry(name) {\n if (!this.configCache.has(name)) {\n for (const provider of this.orderedBaseProviders) {\n const parsed = stronglyTypedParse(provider === null || provider === void 0 ? void 0 : provider.getRawConfig(name));\n if (parsed !== undefined) {\n this.configCache.set(name, parsed);\n return parsed;\n }\n }\n // configs are immutable, if the first lookup returned no results, all lookups should\n this.configCache.set(name, { raw: undefined });\n }\n return this.configCache.get(name);\n }\n}\nexport function loggerIsMonitoringContext(obj) {\n const maybeConfig = obj;\n return isConfigProviderBase(maybeConfig === null || maybeConfig === void 0 ? void 0 : maybeConfig.config) && (maybeConfig === null || maybeConfig === void 0 ? void 0 : maybeConfig.logger) !== undefined;\n}\nexport function loggerToMonitoringContext(logger) {\n if (loggerIsMonitoringContext(logger)) {\n return logger;\n }\n return mixinMonitoringContext(logger, sessionStorageConfigProvider.value);\n}\nexport function mixinMonitoringContext(logger, ...configs) {\n if (loggerIsMonitoringContext(logger)) {\n throw new Error(\"Logger is already a monitoring context\");\n }\n /**\n * this is the tricky bit we use for now to smuggle monitoring context around.\n * To the logger we mixin both config and itself, so mc.logger === logger as it is self-referential.\n * We then expose it as a Monitoring context, so via types we hide the outer logger methods.\n * To layers that expect just a logger we can pass mc.logger, but this is still a MonitoringContext\n * so if a deeper layer then converts that logger to a monitoring context it can find the smuggled properties\n * of the MonitoringContext and get the config provider.\n */\n const mc = logger;\n mc.config = new CachedConfigProvider(...configs);\n mc.logger = logger;\n return mc;\n}\nfunction isConfigProviderBase(obj) {\n const maybeConfig = obj;\n return typeof (maybeConfig === null || maybeConfig === void 0 ? void 0 : maybeConfig.getRawConfig) === \"function\";\n}\n//# sourceMappingURL=config.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { BaseTelemetryNullLogger, performance } from \"@fluidframework/common-utils\";\nimport { CachedConfigProvider, loggerIsMonitoringContext, mixinMonitoringContext, } from \"./config\";\nimport { isILoggingError, extractLogSafeErrorProperties, generateStack, } from \"./errorLogging\";\n/**\n * Broad classifications to be applied to individual properties as they're prepared to be logged to telemetry.\n * Please do not modify existing entries for backwards compatibility.\n */\nexport var TelemetryDataTag;\n(function (TelemetryDataTag) {\n /**\n * Data containing terms from code packages that may have been dynamically loaded\n * @deprecated 1.0, will be removed in next release (see issue #6603). Use `TelemetryDataTag.CodeArtifact` instead.\n */\n TelemetryDataTag[\"PackageData\"] = \"PackageData\";\n /** Data containing terms or IDs from code packages that may have been dynamically loaded */\n TelemetryDataTag[\"CodeArtifact\"] = \"CodeArtifact\";\n /** Personal data of a variety of classifications that pertains to the user */\n TelemetryDataTag[\"UserData\"] = \"UserData\";\n})(TelemetryDataTag || (TelemetryDataTag = {}));\n/**\n * TelemetryLogger class contains various helper telemetry methods,\n * encoding in one place schemas for various types of Fluid telemetry events.\n * Creates sub-logger that appends properties to all events\n */\nexport class TelemetryLogger {\n constructor(namespace, properties) {\n this.namespace = namespace;\n this.properties = properties;\n }\n static formatTick(tick) {\n return Math.floor(tick);\n }\n /**\n * Attempts to parse number from string.\n * If fails,returns original string.\n * Used to make telemetry data typed (and support math operations, like comparison),\n * in places where we do expect numbers (like contentsize/duration property in http header)\n */\n static numberFromString(str) {\n if (str === undefined || str === null) {\n return undefined;\n }\n const num = Number(str);\n return Number.isNaN(num) ? str : num;\n }\n static sanitizePkgName(name) {\n return name.replace(\"@\", \"\").replace(\"/\", \"-\");\n }\n /**\n * Take an unknown error object and add the appropriate info from it to the event. Message and stack will be copied\n * over from the error object, along with other telemetry properties if it's an ILoggingError.\n * @param event - Event being logged\n * @param error - Error to extract info from\n * @param fetchStack - Whether to fetch the current callstack if error.stack is undefined\n */\n static prepareErrorObject(event, error, fetchStack) {\n const { message, errorType, stack } = extractLogSafeErrorProperties(error, true /* sanitizeStack */);\n // First, copy over error message, stack, and errorType directly (overwrite if present on event)\n event.stack = stack;\n event.error = message; // Note that the error message goes on the 'error' field\n event.errorType = errorType;\n if (isILoggingError(error)) {\n // Add any other telemetry properties from the LoggingError\n const telemetryProp = error.getTelemetryProperties();\n for (const key of Object.keys(telemetryProp)) {\n if (event[key] !== undefined) {\n // Don't overwrite existing properties on the event\n continue;\n }\n event[key] = telemetryProp[key];\n }\n }\n // Collect stack if we were not able to extract it from error\n if (event.stack === undefined && fetchStack) {\n event.stack = generateStack();\n }\n }\n /**\n * Send a telemetry event with the logger\n *\n * @param event - the event to send\n * @param error - optional error object to log\n */\n sendTelemetryEvent(event, error) {\n var _a;\n this.sendTelemetryEventCore(Object.assign(Object.assign({}, event), { category: (_a = event.category) !== null && _a !== void 0 ? _a : \"generic\" }), error);\n }\n /**\n * Send a telemetry event with the logger\n *\n * @param event - the event to send\n * @param error - optional error object to log\n */\n sendTelemetryEventCore(event, error) {\n const newEvent = Object.assign({}, event);\n if (error !== undefined) {\n TelemetryLogger.prepareErrorObject(newEvent, error, false);\n }\n // Will include Nan & Infinity, but probably we do not care\n if (typeof newEvent.duration === \"number\") {\n newEvent.duration = TelemetryLogger.formatTick(newEvent.duration);\n }\n this.send(newEvent);\n }\n /**\n * Send an error telemetry event with the logger\n *\n * @param event - the event to send\n * @param error - optional error object to log\n */\n sendErrorEvent(event, error) {\n this.sendTelemetryEventCore(Object.assign(Object.assign({ \n // ensure the error field has some value,\n // this can and will be overridden by event, or error\n error: event.eventName }, event), { category: \"error\" }), error);\n }\n /**\n * Send a performance telemetry event with the logger\n *\n * @param event - Event to send\n * @param error - optional error object to log\n */\n sendPerformanceEvent(event, error) {\n var _a;\n const perfEvent = Object.assign(Object.assign({}, event), { category: (_a = event.category) !== null && _a !== void 0 ? _a : \"performance\" });\n this.sendTelemetryEventCore(perfEvent, error);\n }\n prepareEvent(event) {\n const includeErrorProps = event.category === \"error\" || event.error !== undefined;\n const newEvent = Object.assign({}, event);\n if (this.namespace !== undefined) {\n newEvent.eventName = `${this.namespace}${TelemetryLogger.eventNamespaceSeparator}${newEvent.eventName}`;\n }\n if (this.properties) {\n const properties = [];\n properties.push(this.properties.all);\n if (includeErrorProps) {\n properties.push(this.properties.error);\n }\n for (const props of properties) {\n if (props !== undefined) {\n for (const key of Object.keys(props)) {\n if (event[key] !== undefined) {\n continue;\n }\n const getterOrValue = props[key];\n // If this throws, hopefully it is handled elsewhere\n const value = typeof getterOrValue === \"function\" ? getterOrValue() : getterOrValue;\n if (value !== undefined) {\n newEvent[key] = value;\n }\n }\n }\n }\n }\n return newEvent;\n }\n}\nTelemetryLogger.eventNamespaceSeparator = \":\";\n/**\n * @deprecated 0.56, remove TaggedLoggerAdapter once its usage is removed from\n * container-runtime. Issue: #8191\n * TaggedLoggerAdapter class can add tag handling to your logger.\n */\nexport class TaggedLoggerAdapter {\n constructor(logger) {\n this.logger = logger;\n }\n send(eventWithTagsMaybe) {\n const newEvent = {\n category: eventWithTagsMaybe.category,\n eventName: eventWithTagsMaybe.eventName,\n };\n for (const key of Object.keys(eventWithTagsMaybe)) {\n const taggableProp = eventWithTagsMaybe[key];\n const { value, tag } = (typeof taggableProp === \"object\")\n ? taggableProp\n : { value: taggableProp, tag: undefined };\n switch (tag) {\n case undefined:\n // No tag means we can log plainly\n newEvent[key] = value;\n break;\n case TelemetryDataTag.PackageData:\n // For Microsoft applications, PackageData is safe for now\n // (we don't load 3P code in 1P apps)\n newEvent[key] = value;\n break;\n case TelemetryDataTag.UserData:\n // Strip out anything tagged explicitly as PII.\n // Alternate strategy would be to hash these props\n newEvent[key] = \"REDACTED (UserData)\";\n break;\n default:\n // If we encounter a tag we don't recognize\n // then we must assume we should scrub.\n newEvent[key] = \"REDACTED (unknown tag)\";\n break;\n }\n }\n this.logger.send(newEvent);\n }\n}\n/**\n * ChildLogger class contains various helper telemetry methods,\n * encoding in one place schemas for various types of Fluid telemetry events.\n * Creates sub-logger that appends properties to all events\n */\nexport class ChildLogger extends TelemetryLogger {\n constructor(baseLogger, namespace, properties) {\n super(namespace, properties);\n this.baseLogger = baseLogger;\n // propagate the monitoring context\n if (loggerIsMonitoringContext(baseLogger)) {\n mixinMonitoringContext(this, new CachedConfigProvider(baseLogger.config));\n }\n }\n /**\n * Create child logger\n * @param baseLogger - Base logger to use to output events. If undefined, proper child logger\n * is created, but it does not sends telemetry events anywhere.\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param propertyGetters - Getters to add additional properties to all events\n */\n static create(baseLogger, namespace, properties) {\n // if we are creating a child of a child, rather than nest, which will increase\n // the callstack overhead, just generate a new logger that includes everything from the previous\n if (baseLogger instanceof ChildLogger) {\n const combinedProperties = {};\n for (const extendedProps of [baseLogger.properties, properties]) {\n if (extendedProps !== undefined) {\n if (extendedProps.all !== undefined) {\n combinedProperties.all = Object.assign(Object.assign({}, combinedProperties.all), extendedProps.all);\n }\n if (extendedProps.error !== undefined) {\n combinedProperties.error = Object.assign(Object.assign({}, combinedProperties.error), extendedProps.error);\n }\n }\n }\n const combinedNamespace = baseLogger.namespace === undefined\n ? namespace\n : namespace === undefined\n ? baseLogger.namespace\n : `${baseLogger.namespace}${TelemetryLogger.eventNamespaceSeparator}${namespace}`;\n return new ChildLogger(baseLogger.baseLogger, combinedNamespace, combinedProperties);\n }\n return new ChildLogger(baseLogger ? baseLogger : new BaseTelemetryNullLogger(), namespace, properties);\n }\n /**\n * Send an event with the logger\n *\n * @param event - the event to send\n */\n send(event) {\n this.baseLogger.send(this.prepareEvent(event));\n }\n}\n/**\n * Multi-sink logger\n * Takes multiple ITelemetryBaseLogger objects (sinks) and logs all events into each sink\n * Implements ITelemetryBaseLogger (through static create() method)\n */\nexport class MultiSinkLogger extends TelemetryLogger {\n /**\n * Create multiple sink logger (i.e. logger that sends events to multiple sinks)\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param propertyGetters - Getters to add additional properties to all events\n */\n constructor(namespace, properties) {\n super(namespace, properties);\n this.loggers = [];\n }\n /**\n * Add logger to send all events to\n * @param logger - Logger to add\n */\n addLogger(logger) {\n if (logger !== undefined && logger !== null) {\n this.loggers.push(logger);\n }\n }\n /**\n * Send an event to the loggers\n *\n * @param event - the event to send to all the registered logger\n */\n send(event) {\n const newEvent = this.prepareEvent(event);\n this.loggers.forEach((logger) => {\n logger.send(newEvent);\n });\n }\n}\n/**\n * Helper class to log performance events\n */\nexport class PerformanceEvent {\n constructor(logger, event, markers = { end: true, cancel: \"generic\" }) {\n this.logger = logger;\n this.markers = markers;\n this.startTime = performance.now();\n this.event = Object.assign({}, event);\n if (this.markers.start) {\n this.reportEvent(\"start\");\n }\n if (typeof window === \"object\" && window != null && window.performance) {\n this.startMark = `${event.eventName}-start`;\n window.performance.mark(this.startMark);\n }\n }\n static start(logger, event, markers) {\n return new PerformanceEvent(logger, event, markers);\n }\n static timedExec(logger, event, callback, markers) {\n const perfEvent = PerformanceEvent.start(logger, event, markers);\n try {\n const ret = callback(perfEvent);\n perfEvent.autoEnd();\n return ret;\n }\n catch (error) {\n perfEvent.cancel(undefined, error);\n throw error;\n }\n }\n static async timedExecAsync(logger, event, callback, markers) {\n const perfEvent = PerformanceEvent.start(logger, event, markers);\n try {\n const ret = await callback(perfEvent);\n perfEvent.autoEnd();\n return ret;\n }\n catch (error) {\n perfEvent.cancel(undefined, error);\n throw error;\n }\n }\n get duration() { return performance.now() - this.startTime; }\n reportProgress(props, eventNameSuffix = \"update\") {\n this.reportEvent(eventNameSuffix, props);\n }\n autoEnd() {\n // Event might have been cancelled or ended in the callback\n if (this.event && this.markers.end) {\n this.reportEvent(\"end\");\n }\n this.performanceEndMark();\n this.event = undefined;\n }\n end(props) {\n this.reportEvent(\"end\", props);\n this.performanceEndMark();\n this.event = undefined;\n }\n performanceEndMark() {\n if (this.startMark && this.event) {\n const endMark = `${this.event.eventName}-end`;\n window.performance.mark(endMark);\n window.performance.measure(`${this.event.eventName}`, this.startMark, endMark);\n this.startMark = undefined;\n }\n }\n cancel(props, error) {\n if (this.markers.cancel !== undefined) {\n this.reportEvent(\"cancel\", Object.assign({ category: this.markers.cancel }, props), error);\n }\n this.event = undefined;\n }\n /**\n * Report the event, if it hasn't already been reported.\n */\n reportEvent(eventNameSuffix, props, error) {\n // There are strange sequences involving multiple Promise chains\n // where the event can be cancelled and then later a callback is invoked\n // and the caller attempts to end directly, e.g. issue #3936. Just return.\n if (!this.event) {\n return;\n }\n const event = Object.assign(Object.assign({}, this.event), props);\n event.eventName = `${event.eventName}_${eventNameSuffix}`;\n if (eventNameSuffix !== \"start\") {\n event.duration = this.duration;\n }\n this.logger.sendPerformanceEvent(event, error);\n }\n}\n/**\n * Logger that is useful for UT\n * It can be used in places where logger instance is required, but events should be not send over.\n */\nexport class TelemetryUTLogger {\n send(event) {\n }\n sendTelemetryEvent(event, error) {\n }\n sendErrorEvent(event, error) {\n this.reportError(\"errorEvent in UT logger!\", event, error);\n }\n sendPerformanceEvent(event, error) {\n }\n logGenericError(eventName, error) {\n this.reportError(`genericError in UT logger!`, { eventName }, error);\n }\n logException(event, exception) {\n this.reportError(\"exception in UT logger!\", event, exception);\n }\n debugAssert(condition, event) {\n this.reportError(\"debugAssert in UT logger!\");\n }\n shipAssert(condition, event) {\n this.reportError(\"shipAssert in UT logger!\");\n }\n reportError(message, event, err) {\n const error = new Error(message);\n error.error = error;\n error.event = event;\n // report to console as exception can be eaten\n console.error(message);\n console.error(error);\n throw error;\n }\n}\n//# sourceMappingURL=logger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluidframework/common-utils\";\nimport { debug as registerDebug } from \"debug\";\nimport { TelemetryLogger, MultiSinkLogger, ChildLogger } from \"./logger\";\n/**\n * Implementation of debug logger\n */\nexport class DebugLogger extends TelemetryLogger {\n constructor(debug, debugErr, properties) {\n super(undefined, properties);\n this.debug = debug;\n this.debugErr = debugErr;\n }\n /**\n * Create debug logger - all events are output to debug npm library\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param propertyGetters - Getters to add additional properties to all events\n */\n static create(namespace, properties) {\n // Setup base logger upfront, such that host can disable it (if needed)\n const debug = registerDebug(namespace);\n const debugErr = registerDebug(namespace);\n debugErr.log = console.error.bind(console);\n debugErr.enabled = true;\n return new DebugLogger(debug, debugErr, properties);\n }\n /**\n * Mix in debug logger with another logger.\n * Returned logger will output events to both newly created debug logger, as well as base logger\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param propertyGetters - Getters to add additional properties to all events\n * @param baseLogger - Base logger to output events (in addition to debug logger being created). Can be undefined.\n */\n static mixinDebugLogger(namespace, baseLogger, properties) {\n if (!baseLogger) {\n return DebugLogger.create(namespace, properties);\n }\n const multiSinkLogger = new MultiSinkLogger(undefined, properties);\n multiSinkLogger.addLogger(DebugLogger.create(namespace, this.tryGetBaseLoggerProps(baseLogger)));\n multiSinkLogger.addLogger(ChildLogger.create(baseLogger, namespace));\n return multiSinkLogger;\n }\n static tryGetBaseLoggerProps(baseLogger) {\n if (baseLogger instanceof TelemetryLogger) {\n return baseLogger.properties;\n }\n return undefined;\n }\n /**\n * Send an event to debug loggers\n *\n * @param event - the event to send\n */\n send(event) {\n const newEvent = this.prepareEvent(event);\n const isError = newEvent.category === \"error\";\n let logger = isError ? this.debugErr : this.debug;\n // Use debug's coloring schema for base of the event\n const index = event.eventName.lastIndexOf(TelemetryLogger.eventNamespaceSeparator);\n const name = event.eventName.substring(index + 1);\n if (index > 0) {\n logger = logger.extend(event.eventName.substring(0, index));\n }\n newEvent.eventName = undefined;\n let tick = \"\";\n tick = `tick=${TelemetryLogger.formatTick(performance.now())}`;\n // Extract stack to put it last, but also to avoid escaping '\\n' in it by JSON.stringify below\n const stack = newEvent.stack ? newEvent.stack : \"\";\n newEvent.stack = undefined;\n // Watch out for circular references - they can come from two sources\n // 1) error object - we do not control it and should remove it and retry\n // 2) properties supplied by telemetry caller - that's a bug that should be addressed!\n let payload;\n try {\n payload = JSON.stringify(newEvent);\n }\n catch (error) {\n newEvent.error = undefined;\n payload = JSON.stringify(newEvent);\n }\n if (payload === \"{}\") {\n payload = \"\";\n }\n // Force errors out, to help with diagnostics\n if (isError) {\n logger.enabled = true;\n }\n // Print multi-line.\n logger(`${name} ${payload} ${tick} ${stack}`);\n }\n}\n//# sourceMappingURL=debugLogger.js.map","import { TypedEventEmitter } from \"@fluidframework/common-utils\";\n/**\n * Event Emitter helper class\n * Any exceptions thrown by listeners will be caught and raised through \"error\" event.\n * Any exception thrown by \"error\" listeners will propagate to the caller.\n */\nexport class EventEmitterWithErrorHandling extends TypedEventEmitter {\n constructor(errorHandler) {\n super();\n this.errorHandler = errorHandler;\n }\n emit(event, ...args) {\n try {\n return super.emit(event, ...args);\n }\n catch (error) {\n this.errorHandler(event, error);\n return true;\n }\n }\n}\n//# sourceMappingURL=eventEmitterWithErrorHandling.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport const connectedEventName = \"connected\";\nexport const disconnectedEventName = \"disconnected\";\nexport function safeRaiseEvent(emitter, logger, event, ...args) {\n try {\n emitter.emit(event, ...args);\n }\n catch (error) {\n logger.sendErrorEvent({ eventName: \"RaiseEventError\", event }, error);\n }\n}\nexport function raiseConnectedEvent(logger, emitter, connected, clientId) {\n try {\n if (connected) {\n emitter.emit(connectedEventName, clientId);\n }\n else {\n emitter.emit(disconnectedEventName);\n }\n }\n catch (error) {\n logger.sendErrorEvent({ eventName: \"RaiseConnectedEventError\" }, error);\n }\n}\n//# sourceMappingURL=events.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TelemetryLogger } from \"./logger\";\n/**\n * The MockLogger records events sent to it, and then can walk back over those events\n * searching for a set of expected events to match against the logged events.\n */\nexport class MockLogger extends TelemetryLogger {\n constructor() {\n super();\n this.events = [];\n }\n clear() {\n this.events = [];\n }\n send(event) {\n this.events.push(event);\n }\n /**\n * Search events logged since the last time matchEvents was called, looking for the given expected\n * events in order.\n * @param expectedEvents - events in order that are expected to appear in the recorded log.\n * These event objects may be subsets of the logged events.\n * Note: category is ommitted from the type because it's usually uninteresting and tedious to type.\n */\n matchEvents(expectedEvents) {\n const matchedExpectedEventCount = this.getMatchedEventsCount(expectedEvents);\n // How many expected events were left over? Hopefully none.\n const unmatchedExpectedEventCount = expectedEvents.length - matchedExpectedEventCount;\n return unmatchedExpectedEventCount === 0;\n }\n /** Asserts that matchEvents is true, and prints the actual/expected output if not */\n assertMatch(expectedEvents, message) {\n const actualEvents = this.events;\n if (!this.matchEvents(expectedEvents)) {\n throw new Error(`${message}\nexpected:\n${JSON.stringify(expectedEvents)}\n\nactual:\n${JSON.stringify(actualEvents)}`);\n }\n }\n /**\n * Search events logged since the last time matchEvents was called, looking for any of the given\n * expected events.\n * @param expectedEvents - events that are expected to appear in the recorded log.\n * These event objects may be subsets of the logged events.\n * Note: category is ommitted from the type because it's usually uninteresting and tedious to type.\n * @returns if any of the expected events is found.\n */\n matchAnyEvent(expectedEvents) {\n const matchedExpectedEventCount = this.getMatchedEventsCount(expectedEvents);\n return matchedExpectedEventCount > 0;\n }\n /** Asserts that matchAnyEvent is true, and prints the actual/expected output if not */\n assertMatchAny(expectedEvents, message) {\n const actualEvents = this.events;\n if (!this.matchAnyEvent(expectedEvents)) {\n throw new Error(`${message}\nexpected:\n${JSON.stringify(expectedEvents)}\n\nactual:\n${JSON.stringify(actualEvents)}`);\n }\n }\n getMatchedEventsCount(expectedEvents) {\n let iExpectedEvent = 0;\n this.events.forEach((event) => {\n if (iExpectedEvent < expectedEvents.length &&\n MockLogger.eventsMatch(event, expectedEvents[iExpectedEvent])) {\n // We found the next expected event; increment\n ++iExpectedEvent;\n }\n });\n // Remove the events so far; next call will just compare subsequent events from here\n this.events = [];\n // Return the count of matched events.\n return iExpectedEvent;\n }\n /**\n * Ensure the expected event is a strict subset of the actual event\n */\n static eventsMatch(actual, expected) {\n const masked = Object.assign(Object.assign({}, actual), expected);\n return JSON.stringify(masked) === JSON.stringify(actual);\n }\n}\n//# sourceMappingURL=mockLogger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Utility counter which will send event only if the provided value\n * is above a configured threshold\n */\nexport class ThresholdCounter {\n constructor(threshold, logger, thresholdMultiple = threshold) {\n this.threshold = threshold;\n this.logger = logger;\n this.thresholdMultiple = thresholdMultiple;\n }\n /**\n * Sends the value if it's above the treshold.\n */\n send(eventName, value) {\n if (value < this.threshold) {\n return;\n }\n this.logger.sendPerformanceEvent({\n eventName,\n value,\n });\n }\n /**\n * Sends the value if it's above the treshold\n * and a multiple of the threshold.\n *\n * To be used in scenarios where we'd like to record a\n * threshold violation while reducing telemetry noise.\n */\n sendIfMultiple(eventName, value) {\n if (value === this.thresholdMultiple) {\n this.logger.sendPerformanceEvent({\n eventName,\n value,\n });\n // reduce number of \"multiple\" events.\n this.thresholdMultiple = this.thresholdMultiple * 2;\n }\n }\n}\n//# sourceMappingURL=thresholdCounter.js.map","/**\n * Like assert, but logs only if the condition is false, rather than throwing\n * @param condition - The condition to attest too\n * @param logger - The logger to log with\n * @param event - The string or event to log\n * @returns - The outcome of the condition\n */\nexport function logIfFalse(condition, logger, event) {\n if (condition) {\n return true;\n }\n const newEvent = typeof event === \"string\"\n ? { eventName: event, category: \"error\" }\n : Object.assign({ category: \"error\" }, event);\n logger.send(newEvent);\n return false;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluidframework/common-utils\";\n/**\n * Helper class that executes a specified code block and writes an\n * {@link @fluidframework/common-definitions#ITelemetryPerformanceEvent} to a specified logger every time a specified\n * number of executions is reached (or when the class is disposed). The `duration` field in the telemetry event is\n * the duration of the latest execution (sample) of the specified function. See the documentation of the\n * `includeAggregateMetrics` parameter for additional details that can be included.\n */\nexport class SampledTelemetryHelper {\n /**\n * @param eventBase -\n * Custom properties to include in the telemetry performance event when it is written.\n * @param logger -\n * The logger to use to write the telemetry performance event.\n * @param sampleThreshold -\n * Telemetry performance events will be generated every time we hit this many executions of the code block.\n * @param includeAggregateMetrics -\n * If set to `true`, the telemetry performance event will include aggregated metrics (total duration, min duration,\n * max duration) for all the executions in between generated events.\n * @param perBucketProperties -\n * Map of strings that represent different buckets (which can be specified when calling the 'measure' method), to\n * properties which should be added to the telemetry event for that bucket. If a bucket being measured does not\n * have an entry in this map, no additional properties will be added to its telemetry events. The following keys are\n * reserved for use by this class: \"duration\", \"count\", \"totalDuration\", \"minDuration\", \"maxDuration\". If any of\n * them is specified as a key in one of the ITelemetryProperties objects in this map, that key-value pair will be\n * ignored.\n */\n constructor(eventBase, logger, sampleThreshold, includeAggregateMetrics = false, perBucketProperties = new Map()) {\n this.eventBase = eventBase;\n this.logger = logger;\n this.sampleThreshold = sampleThreshold;\n this.includeAggregateMetrics = includeAggregateMetrics;\n this.perBucketProperties = perBucketProperties;\n this.disposed = false;\n this.measurementsMap = new Map();\n }\n /**\n * @param codeToMeasure -\n * The code to be executed and measured.\n * @param bucket -\n * A key to track executions of the code block separately. Each different value of this parameter has a separate\n * set of executions and metrics tracked by the class. If no such distinction needs to be made, do not provide a\n * value.\n * @returns Whatever the passed-in code block returns.\n */\n measure(codeToMeasure, bucket = \"\") {\n var _a, _b, _c;\n const start = performance.now();\n const returnValue = codeToMeasure();\n const duration = performance.now() - start;\n let m = this.measurementsMap.get(bucket);\n if (m === undefined) {\n m = { count: 0, duration: -1 };\n this.measurementsMap.set(bucket, m);\n }\n m.count++;\n m.duration = duration;\n if (this.includeAggregateMetrics) {\n m.totalDuration = ((_a = m.totalDuration) !== null && _a !== void 0 ? _a : 0) + duration;\n m.minDuration = Math.min((_b = m.minDuration) !== null && _b !== void 0 ? _b : duration, duration);\n m.maxDuration = Math.max((_c = m.maxDuration) !== null && _c !== void 0 ? _c : 0, duration);\n }\n if (m.count >= this.sampleThreshold) {\n this.flushBucket(bucket);\n }\n return returnValue;\n }\n flushBucket(bucket) {\n const measurements = this.measurementsMap.get(bucket);\n if (measurements === undefined) {\n return;\n }\n if (measurements.count !== 0) {\n const bucketProperties = this.perBucketProperties.get(bucket);\n const telemetryEvent = Object.assign(Object.assign(Object.assign({}, this.eventBase), bucketProperties), measurements);\n this.logger.sendPerformanceEvent(telemetryEvent);\n this.measurementsMap.delete(bucket);\n }\n }\n dispose(error) {\n this.measurementsMap.forEach((_, k) => this.flushBucket(k));\n }\n}\n//# sourceMappingURL=sampledTelemetryHelper.js.map","/**\n* @vue/reactivity v3.4.27\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n this.onStop && this.onStop();\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n const depsMap = targetMap.get(object);\n return depsMap && depsMap.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key))\n key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.27\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, shallowReadonly, isShallow, isReactive, ReactiveEffect, getCurrentScope, ref, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, isBuiltInDirective, invokeArrayFns, isRegExp, isGloballyAllowed, NO, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return shallowReadonly(attrs);\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs, false, true);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root, null, false, true);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n const suspensible = vnode.props && vnode.props.suspensible;\n return suspensible != null && suspensible !== false;\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\"))\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.effect.dirty = true;\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1))\n done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n return resolveTransitionHooks(vnode2, props, state, instance);\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n if (!isKeepAlive(vnode)) {\n return vnode;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128)\n keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || !isSameVNodeType(cached, current)) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res)\n res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\")\n props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n","\n\n","import { render } from \"./notice.vue?vue&type=template&id=5e3151a6\"\nimport script from \"./notice.vue?vue&type=script&lang=js\"\nexport * from \"./notice.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./notification.vue?vue&type=template&id=45d10af6\"\nimport script from \"./notification.vue?vue&type=script&lang=js\"\nexport * from \"./notification.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Notification from './notification.vue';\nimport { createApp, h, getCurrentInstance } from 'vue';\nimport { isClient } from '../../../utils/index';\n\nNotification.newInstance = properties => {\n if (!isClient) return;\n const _props = properties || {};\n\n let _instance = null;\n\n const Instance = createApp({\n render () {\n return h(Notification, Object.assign({\n ref: 'notification'\n }, _props));\n },\n created () {\n _instance = getCurrentInstance();\n }\n });\n\n const container = document.createElement('div');\n document.body.appendChild(container);\n Instance.mount(container);\n const notification = _instance.refs.notification;\n\n return {\n notice (noticeProps) {\n notification.add(noticeProps);\n },\n remove (name) {\n notification.close(name);\n },\n component: notification,\n destroy (element) {\n notification.closeAll();\n isClient && setTimeout(function() {\n document.body.removeChild(document.getElementsByClassName(element)[0]);\n }, 500);\n }\n };\n};\n\nexport default Notification;\n","import Notification from '../base/notification';\n\nconst prefixCls = 'ivu-message';\nconst iconPrefixCls = 'ivu-icon';\nconst prefixKey = 'ivu_message_key_';\n\nconst defaults = {\n top: 24,\n duration: 1.5,\n background: false\n};\n\nlet messageInstance;\nlet name = 1;\n\nconst iconTypes = {\n 'info': 'ios-information-circle',\n 'success': 'ios-checkmark-circle',\n 'warning': 'ios-alert',\n 'error': 'ios-close-circle',\n 'loading': 'ios-loading'\n};\n\nconst transitionName = 'move-up';\n\nfunction getMessageInstance () {\n messageInstance = messageInstance || Notification.newInstance({\n prefixCls: prefixCls,\n styles: {\n top: `${defaults.top}px`\n },\n transitionName\n });\n\n return messageInstance;\n}\n\nfunction notice (content = '', duration = defaults.duration, type, onClose = function () {}, closable = false, render = function () {}, background = defaults.background) {\n const iconType = iconTypes[type];\n\n // if loading\n const loadCls = type === 'loading' ? ' ivu-load-loop' : '';\n\n let instance = getMessageInstance();\n\n instance.notice({\n name: `${prefixKey}${name}`,\n duration: duration,\n styles: {},\n transitionName,\n content: `\n
\n \n ${content}\n
\n `,\n render: render,\n onClose: onClose,\n closable: closable,\n type: 'message',\n msgType: type,\n background: background\n });\n\n // 用于手动消除\n return (function () {\n let target = name++;\n\n return function () {\n instance.remove(`${prefixKey}${target}`);\n };\n })();\n}\n\nexport default {\n name: 'Message',\n\n info (options) {\n return this.message('info', options);\n },\n success (options) {\n return this.message('success', options);\n },\n warning (options) {\n return this.message('warning', options);\n },\n error (options) {\n return this.message('error', options);\n },\n loading (options) {\n return this.message('loading', options);\n },\n message(type, options){\n if (typeof options === 'string') {\n options = {\n content: options\n };\n }\n return notice(options.content, options.duration, type, options.onClose, options.closable, options.render, options.background);\n },\n config (options) {\n if (options.top || options.top === 0) {\n defaults.top = options.top;\n }\n if (options.duration || options.duration === 0) {\n defaults.duration = options.duration;\n }\n if (options.background) defaults.background = options.background;\n },\n destroy () {\n let instance = getMessageInstance();\n messageInstance = null;\n instance.destroy('ivu-message');\n }\n};\n","\n\n","import Icon from './icon.vue';\nexport default Icon;","import { oneOf } from '../utils/assist';\nimport { isClient } from '../utils/index';\n\nexport default {\n props: {\n to: {\n type: [ Object, String ]\n },\n replace: {\n type: Boolean,\n default: false\n },\n target: {\n type: String,\n validator (value) {\n return oneOf(value, ['_blank', '_self', '_parent', '_top']);\n },\n default: '_self'\n },\n append: {\n type: Boolean,\n required: false,\n default: false,\n }\n },\n computed: {\n linkUrl () {\n const type = typeof this.to;\n if (type !== 'string') {\n return null;\n }\n if (this.to.includes('//')) {\n /* Absolute URL, we do not need to route this */\n return this.to;\n }\n const router = this.$router;\n if (router) {\n const current = this.$route;\n const route = router.resolve(this.to, current, this.append);\n return route ? route.href : this.to;\n }\n return this.to;\n }\n },\n methods: {\n handleOpenTo () {\n if (!isClient) return;\n const router = this.$router;\n let to = this.to;\n if (router) {\n const current = this.$route;\n const route = router.resolve(this.to, current, this.append);\n to = route ? route.href : this.to;\n }\n if (typeof this.to === 'string') return; // 会跳转两次 // todo Vue3这里不跳2次,待验证\n window.open(to);\n },\n handleClick (new_window = false) {\n const router = this.$router;\n\n if (!isClient) return;\n if (new_window) {\n this.handleOpenTo();\n } else {\n if (router) {\n if ((typeof this.to === 'string') && this.to.includes('//')) {\n window.location.href = this.to;\n } else {\n this.replace ? this.$router.replace(this.to, () => {}) : this.$router.push(this.to, () => {});\n }\n } else {\n window.location.href = this.to;\n }\n }\n },\n handleCheckClick (event, new_window = false) {\n if (this.to) {\n if (this.target === '_blank') {\n this.handleOpenTo();\n return false;\n } else {\n event.preventDefault();\n this.handleClick(new_window);\n }\n }\n }\n }\n};\n","\n","import script from \"./button.vue?vue&type=script&lang=js\"\nexport * from \"./button.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { render } from \"./poptip.vue?vue&type=template&id=c81ef386\"\nimport script from \"./poptip.vue?vue&type=script&lang=js\"\nexport * from \"./poptip.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Poptip from './poptip.vue';\n\nexport default Poptip;","\n\n","import { render } from \"./radio-group.vue?vue&type=template&id=658258b8\"\nimport script from \"./radio-group.vue?vue&type=script&lang=js\"\nexport * from \"./radio-group.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import RadioGroup from '../radio/radio-group.vue';\n\nexport default RadioGroup;\n","\n\n","import { render } from \"./radio.vue?vue&type=template&id=64c207bf\"\nimport script from \"./radio.vue?vue&type=script&lang=js\"\nexport * from \"./radio.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Radio from './radio.vue';\n\nexport default Radio;\n","\n\n","import { render } from \"./rate.vue?vue&type=template&id=454afb44\"\nimport script from \"./rate.vue?vue&type=script&lang=js\"\nexport * from \"./rate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Rate from './rate.vue';\nexport default Rate;","\n\n","\n\n","import { render } from \"./input-number.vue?vue&type=template&id=63f6e9ab\"\nimport script from \"./input-number.vue?vue&type=script&lang=js\"\nexport * from \"./input-number.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n","import { render } from \"./tooltip.vue?vue&type=template&id=1acd42e2\"\nimport script from \"./tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./tooltip.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h } from 'vue';\nexport default {\n name: 'SliderMarker',\n props: {\n mark: {\n type: [String, Object]\n }\n },\n render () {\n let label = typeof this.mark === 'string' ? this.mark : [this.mark.label];\n\n return h('div', {\n class: 'ivu-slider-marks-item',\n style: this.mark.style || {}\n }, label);\n }\n};\n","import { isClient } from './index';\n\n/* istanbul ignore next */\nexport const on = (function() {\n if (isClient && document.addEventListener) {\n return function(element, event, handler, useCapture = false) {\n if (element && event && handler) {\n element.addEventListener(event, handler, useCapture);\n }\n };\n } else {\n return function(element, event, handler) {\n if (element && event && handler) {\n element.attachEvent('on' + event, handler);\n }\n };\n }\n})();\n\n/* istanbul ignore next */\nexport const off = (function() {\n if (isClient && document.removeEventListener) {\n return function(element, event, handler, useCapture = false) {\n if (element && event) {\n element.removeEventListener(event, handler, useCapture);\n }\n };\n } else {\n return function(element, event, handler) {\n if (element && event) {\n element.detachEvent('on' + event, handler);\n }\n };\n }\n})();\n","import { render } from \"./slider.vue?vue&type=template&id=a3eb15c0\"\nimport script from \"./slider.vue?vue&type=script&lang=js\"\nexport * from \"./slider.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Slider from './slider.vue';\n\nexport default Slider;","\n\n","import { render } from \"./pane.vue?vue&type=template&id=56a51977\"\nimport script from \"./pane.vue?vue&type=script&lang=js\"\nexport * from \"./pane.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import TabPane from '../tabs/pane.vue';\n\nexport default TabPane;","\n\n","\n\n","\n\n","import { render } from \"./dropdown.vue?vue&type=template&id=f8a9dce2\"\nimport script from \"./dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./dropdown.vue?vue&type=template&id=6b1c6916\"\nimport script from \"./dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n","import { render } from \"./dropdown-menu.vue?vue&type=template&id=b21c1af8\"\nimport script from \"./dropdown-menu.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown-menu.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { getCurrentInstance } from 'vue';\nexport default {\n data () {\n return {\n globalConfig: {}\n }\n },\n created () {\n const instance = getCurrentInstance();\n this.globalConfig = instance.appContext.config.globalProperties.$VIEWUI;\n }\n}\n","import { render } from \"./tabs.vue?vue&type=template&id=89432210\"\nimport script from \"./tabs.vue?vue&type=script&lang=js\"\nexport * from \"./tabs.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Tabs from './tabs.vue';\n\nexport default Tabs;\n","import { isClient } from '../utils/index';\n\nexport default {\n beforeMount (el, binding, vnode) {\n function documentHandler (e) {\n if (el.contains(e.target)) {\n return false;\n }\n binding.value(e);\n }\n el.__vueClickOutside__ = documentHandler;\n isClient && document.addEventListener('click', documentHandler);\n },\n unmounted (el, binding) {\n isClient && document.removeEventListener('click', el.__vueClickOutside__);\n delete el.__vueClickOutside__;\n }\n};\n","export default {\n inject: {\n FormInstance: {\n default: ''\n },\n FormItemInstance: {\n default: null\n }\n },\n computed: {\n itemDisabled () {\n let state = this.disabled;\n if (!state && this.FormInstance) state = this.FormInstance.disabled;\n return state ? true : null; // todo can not set disabled: false\n }\n },\n methods: {\n handleFormItemChange (type, data) {\n if (this.FormItemInstance) {\n if (type === 'blur') this.FormItemInstance.formBlur(data);\n else if (type === 'change') this.FormItemInstance.formChange(data);\n }\n }\n }\n};\n","// using with vue-i18n in CDN\n/*eslint-disable */\n// import Vue from 'vue';\n// const isServer = Vue.prototype.$isServer;\nimport { isClient } from '../utils/index';\n\nexport default function (lang) {\n if (isClient && typeof window.viewuiplus !== 'undefined') {\n if (!('langs' in viewuiplus)) {\n viewuiplus.langs = {};\n }\n viewuiplus.langs[lang.i.locale] = lang;\n }\n};\n/*eslint-enable */\n","import setLang from '../lang';\n\nconst lang = {\n i: {\n locale: 'zh-CN',\n select: {\n placeholder: '请选择',\n noMatch: '无匹配数据',\n loading: '加载中'\n },\n table: {\n noDataText: '暂无数据',\n noFilteredDataText: '暂无筛选结果',\n confirmFilter: '筛选',\n resetFilter: '重置',\n clearFilter: '全部',\n sumText: '合计'\n },\n datepicker: {\n selectDate: '选择日期',\n selectTime: '选择时间',\n startTime: '开始时间',\n endTime: '结束时间',\n clear: '清空',\n ok: '确定',\n datePanelLabel: '[yyyy年] [m月]',\n month: '月',\n month1: '1 月',\n month2: '2 月',\n month3: '3 月',\n month4: '4 月',\n month5: '5 月',\n month6: '6 月',\n month7: '7 月',\n month8: '8 月',\n month9: '9 月',\n month10: '10 月',\n month11: '11 月',\n month12: '12 月',\n year: '年',\n weekStartDay: '0',\n weeks: {\n sun: '日',\n mon: '一',\n tue: '二',\n wed: '三',\n thu: '四',\n fri: '五',\n sat: '六'\n },\n months: {\n m1: '1月',\n m2: '2月',\n m3: '3月',\n m4: '4月',\n m5: '5月',\n m6: '6月',\n m7: '7月',\n m8: '8月',\n m9: '9月',\n m10: '10月',\n m11: '11月',\n m12: '12月'\n }\n },\n transfer: {\n titles: {\n source: '源列表',\n target: '目的列表'\n },\n filterPlaceholder: '请输入搜索内容',\n notFoundText: '列表为空'\n },\n modal: {\n okText: '确定',\n cancelText: '取消'\n },\n poptip: {\n okText: '确定',\n cancelText: '取消'\n },\n page: {\n prev: '上一页',\n next: '下一页',\n total: '共',\n item: '条',\n items: '条',\n prev5: '向前 5 页',\n next5: '向后 5 页',\n page: '条/页',\n goto: '跳至',\n p: '页'\n },\n rate: {\n star: '星',\n stars: '星'\n },\n time: {\n before: '前',\n after: '后',\n just: '刚刚',\n seconds: '秒',\n minutes: '分钟',\n hours: '小时',\n days: '天'\n },\n tree: {\n emptyText: '暂无数据'\n },\n image: {\n zoomIn: '放大',\n zoomOut: '缩小',\n rotateLeft: '左旋转',\n rotateRight: '右旋转',\n fail: '失败',\n preview: '预览'\n }\n }\n};\n\nsetLang(lang);\n\nexport default lang;\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/**\n * String format template\n * - Inspired:\n * https://github.com/Matt-Esch/string-template/index.js\n */\n\nconst RE_NARGS = /(%|)\\{([0-9a-zA-Z_]+)\\}/g;\n\nexport default function () {\n function hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n /**\n * template\n *\n * @param {String} string\n * @param {Array} ...args\n * @return {String}\n */\n\n function template(string, ...args) {\n if (args.length === 1 && typeof args[0] === 'object') {\n args = args[0];\n }\n\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n if (string === undefined) {\n return '';\n }\n\n return string.replace(RE_NARGS, (match, prefix, i, index) => {\n let result;\n\n if (string[index - 1] === '{' && string[index + match.length] === '}') {\n return i;\n } else {\n result = hasOwn(args, i) ? args[i] : null;\n if (result === null || result === undefined) {\n return '';\n }\n\n return result;\n }\n });\n }\n\n return template;\n}\n","import zhLang from './lang/zh-CN';\nimport deepmerge from 'deepmerge';\nimport Format from './format';\n\nconst format = Format();\nlet lang = zhLang;\nconst langs = {\n zh: zhLang\n};\nlet nowLang = null;\nlet merged = {};\nlet vuei18n = null;\nlet i18nHandler = function () {\n if (Reflect.has(this, '$t')) {\n return this.$t(...arguments);\n }\n if (vuei18n && vuei18n.global) {\n return vuei18n.global.t(...arguments);\n }\n if (vuei18n && vuei18n.locale) {\n if (!merged[vuei18n.locale] || nowLang != vuei18n.locale) {\n merged[vuei18n.locale] = true;\n let localMessage = vuei18n.getLocaleMessage(vuei18n.locale) || {};\n let newLocalMessage = {};\n deepmerge(newLocalMessage, langs[vuei18n.locale], localMessage, { clone: true })\n lang = newLocalMessage;\n vuei18n.setLocaleMessage(vuei18n.locale, newLocalMessage);\n nowLang = vuei18n.locale;\n }\n return vuei18n.hlang(...arguments);\n }\n};\n\nexport const t = function (path, options) {\n let value = i18nHandler.apply(this, arguments);\n if (value !== null && value !== undefined) return value;\n\n const array = path.split('.');\n let current = lang;\n\n for (let i = 0, j = array.length; i < j; i++) {\n const property = array[i];\n value = current[property];\n if (i === j - 1) return format(value, options);\n if (!value) return '';\n current = value;\n }\n return '';\n};\n\nexport const use = function (l) {\n lang = l || lang;\n};\n\nexport const i18n = function (initI18n) {\n vuei18n = initI18n;\n};\n\nexport default {\n use,\n t,\n i18n\n};\n","import { t } from '../locale';\n\nexport default {\n methods: {\n t(...args) {\n return t.apply(this, args);\n }\n }\n};\n","import { isClient } from './index';\n\n// 判断参数是否是其中之一\nexport function oneOf (value, validList) {\n for (let i = 0; i < validList.length; i++) {\n if (value === validList[i]) {\n return true;\n }\n }\n return false;\n}\n\nexport function camelcaseToHyphen (str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n// For Modal scrollBar hidden\nlet cached;\nexport function getScrollBarSize (fresh) {\n // if (isServer) return 0;\n if (isClient && (fresh || cached === undefined)) {\n const inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n const outer = document.createElement('div');\n const outerStyle = outer.style;\n\n outerStyle.position = 'absolute';\n outerStyle.top = 0;\n outerStyle.left = 0;\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n\n const widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n let widthScroll = inner.offsetWidth;\n\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n\n document.body.removeChild(outer);\n\n cached = widthContained - widthScroll;\n }\n return cached;\n}\n\n// watch DOM change\n// export const MutationObserver = isServer ? false : window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false;\nexport const MutationObserver = isClient ? window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false : false;\n\nconst SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nconst MOZ_HACK_REGEXP = /^moz([A-Z])/;\n\nfunction camelCase(name) {\n return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n }).replace(MOZ_HACK_REGEXP, 'Moz$1');\n}\n// getStyle\nexport function getStyle (element, styleName) {\n if (!isClient) return;\n if (!element || !styleName) return null;\n styleName = camelCase(styleName);\n if (styleName === 'float') {\n styleName = 'cssFloat';\n }\n try {\n const computed = document.defaultView.getComputedStyle(element, '');\n return element.style[styleName] || computed ? computed[styleName] : null;\n } catch(e) {\n return element.style[styleName];\n }\n}\n\n// firstUpperCase\nfunction firstUpperCase(str) {\n return str.toString()[0].toUpperCase() + str.toString().slice(1);\n}\nexport {firstUpperCase};\n\n// Warn\nexport function warnProp(component, prop, correctType, wrongType) {\n correctType = firstUpperCase(correctType);\n wrongType = firstUpperCase(wrongType);\n console.error(`[View UI warn]: Invalid prop: type check failed for prop ${prop}. Expected ${correctType}, got ${wrongType}. (found in component: ${component})`); // eslint-disable-line\n}\n\nexport function typeOf(obj) {\n const toString = Object.prototype.toString;\n const map = {\n '[object Boolean]' : 'boolean',\n '[object Number]' : 'number',\n '[object String]' : 'string',\n '[object Function]' : 'function',\n '[object Array]' : 'array',\n '[object Date]' : 'date',\n '[object RegExp]' : 'regExp',\n '[object Undefined]': 'undefined',\n '[object Null]' : 'null',\n '[object Object]' : 'object'\n };\n return map[toString.call(obj)];\n}\n\n// deepCopy\nfunction deepCopy(data) {\n const t = typeOf(data);\n let o;\n\n if (t === 'array') {\n o = [];\n } else if ( t === 'object') {\n o = {};\n } else {\n return data;\n }\n\n if (t === 'array') {\n for (let i = 0; i < data.length; i++) {\n o.push(deepCopy(data[i]));\n }\n } else if ( t === 'object') {\n for (let i in data) {\n o[i] = deepCopy(data[i]);\n }\n }\n return o;\n}\n\nexport {deepCopy};\n\n// scrollTop animation\nexport function scrollTop(el, from = 0, to, duration = 500, endCallback) {\n if (!isClient) return;\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = (\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n return window.setTimeout(callback, 1000/60);\n }\n );\n }\n const difference = Math.abs(from - to);\n const step = Math.ceil(difference / duration * 50);\n\n function scroll(start, end, step) {\n if (start === end) {\n endCallback && endCallback();\n return;\n }\n\n let d = (start + step > end) ? end : start + step;\n if (start > end) {\n d = (start - step < end) ? end : start - step;\n }\n\n if (el === window) {\n window.scrollTo(d, d);\n } else {\n el.scrollTop = d;\n }\n window.requestAnimationFrame(() => scroll(d, end, step));\n }\n scroll(from, to, step);\n}\n\n// Find components upward\nfunction findComponentUpward (context, componentName, componentNames) {\n if (typeof componentName === 'string') {\n componentNames = [componentName];\n } else {\n componentNames = componentName;\n }\n\n let parent = context.$parent;\n let name = parent.$options.name;\n while (parent && (!name || componentNames.indexOf(name) < 0)) {\n parent = parent.$parent;\n if (parent) name = parent.$options.name;\n }\n return parent;\n}\nexport {findComponentUpward};\n\n// Find component downward\nexport function findComponentDownward (context, componentName) {\n const $children = context.$children;\n let children = null;\n\n if ($children.length) {\n for (const child of $children) {\n const name = child.$options.name;\n if (name === componentName) {\n children = child;\n break;\n } else {\n children = findComponentDownward(child, componentName);\n if (children) break;\n }\n }\n }\n return children;\n}\n\n// Find components downward\nexport function findComponentsDownward (context, componentName) {\n return context.$children.reduce((components, child) => {\n if (child.$options.name === componentName) components.push(child);\n const foundChilds = findComponentsDownward(child, componentName);\n return components.concat(foundChilds);\n }, []);\n}\n\n// Find components upward\nexport function findComponentsUpward (context, componentName) {\n let parents = [];\n const parent = context.$parent;\n if (parent) {\n if (parent.$options.name === componentName) parents.push(parent);\n return parents.concat(findComponentsUpward(parent, componentName));\n } else {\n return [];\n }\n}\n\n// Find brothers components\nexport function findBrothersComponents (context, componentName, exceptMe = true) {\n let res = context.$parent.$children.filter(item => {\n return item.$options.name === componentName;\n });\n let index = res.findIndex(item => item._uid === context._uid);\n if (exceptMe) res.splice(index, 1);\n return res;\n}\n\n/* istanbul ignore next */\nconst trim = function(string) {\n return (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\n};\n\n/* istanbul ignore next */\nexport function hasClass(el, cls) {\n if (!el || !cls) return false;\n if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');\n if (el.classList) {\n return el.classList.contains(cls);\n } else {\n return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;\n }\n}\n\n/* istanbul ignore next */\nexport function addClass(el, cls) {\n if (!el) return;\n let curClass = el.className;\n const classes = (cls || '').split(' ');\n\n for (let i = 0, j = classes.length; i < j; i++) {\n const clsName = classes[i];\n if (!clsName) continue;\n\n if (el.classList) {\n el.classList.add(clsName);\n } else {\n if (!hasClass(el, clsName)) {\n curClass += ' ' + clsName;\n }\n }\n }\n if (!el.classList) {\n el.className = curClass;\n }\n}\n\n/* istanbul ignore next */\nexport function removeClass(el, cls) {\n if (!el || !cls) return;\n const classes = cls.split(' ');\n let curClass = ' ' + el.className + ' ';\n\n for (let i = 0, j = classes.length; i < j; i++) {\n const clsName = classes[i];\n if (!clsName) continue;\n\n if (el.classList) {\n el.classList.remove(clsName);\n } else {\n if (hasClass(el, clsName)) {\n curClass = curClass.replace(' ' + clsName + ' ', ' ');\n }\n }\n }\n if (!el.classList) {\n el.className = trim(curClass);\n }\n}\n\nexport const dimensionMap = {\n xs: '480px',\n sm: '576px',\n md: '768px',\n lg: '992px',\n xl: '1200px',\n xxl: '1600px',\n};\n\nexport function setMatchMedia () {\n if (!isClient) return;\n const matchMediaPolyfill = mediaQuery => {\n return {\n media: mediaQuery,\n matches: false,\n on() {},\n off() {},\n };\n };\n window.matchMedia = window.matchMedia || matchMediaPolyfill;\n}\n\nexport const sharpMatcherRegx = /#([^#]+)$/;\n\n// download file\nexport async function downloadFile(url, name = 'unnamed') {\n if (!isClient) return Promise.reject();\n try {\n const res = await fetch(url);\n const blob = await res.blob();\n\n if (!blob) return Promise.reject();\n\n const localUrl = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.setAttribute('href', localUrl);\n a.setAttribute('download', name);\n a.click();\n URL.revokeObjectURL(localUrl);\n return Promise.resolve();\n } catch(e) {\n return Promise.reject(e);\n }\n}\n","export const isClient = typeof window !== 'undefined'\n","// 生成随机字符串\nexport default function (len = 32) {\n const $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';\n const maxPos = $chars.length;\n let str = '';\n for (let i = 0; i < len; i++) {\n str += $chars.charAt(Math.floor(Math.random() * maxPos));\n }\n return str;\n}\n","let transferIndex = 0;\nlet lastVisibleIndex = 0;\n\nfunction transferIncrease() {\n transferIndex++;\n}\n\nfunction lastVisibleIncrease() {\n lastVisibleIndex++;\n}\n\nexport { transferIndex, transferIncrease, lastVisibleIndex, lastVisibleIncrease };","/*!\n * Vue-Lazyload.js v3.0.0\n * (c) 2023 Awe \n * Released under the MIT License.\n */\n\nimport { nextTick, reactive, defineComponent, ref, computed, onMounted, onUnmounted, createVNode, watch } from 'vue';\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assignSymbols$1 = createCommonjsModule(function (module) {\n\n const toString = Object.prototype.toString;\n const isEnumerable = Object.prototype.propertyIsEnumerable;\n const getSymbols = Object.getOwnPropertySymbols;\n\n module.exports = (target, ...args) => {\n if (!isObject(target)) {\n throw new TypeError('expected the first argument to be an object');\n }\n\n if (args.length === 0 || typeof Symbol !== 'function' || typeof getSymbols !== 'function') {\n return target;\n }\n\n for (let arg of args) {\n let names = getSymbols(arg);\n\n for (let key of names) {\n if (isEnumerable.call(arg, key)) {\n target[key] = arg[key];\n }\n }\n }\n return target;\n };\n\n function isObject(val) {\n return typeof val === 'function' || toString.call(val) === '[object Object]' || Array.isArray(val);\n }\n});\n\nvar assignSymbols$2 = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\t'default': assignSymbols$1,\n\t__moduleExports: assignSymbols$1\n});\n\nvar assignSymbols = ( assignSymbols$2 && assignSymbols$1 ) || assignSymbols$2;\n\nvar assignDeep = createCommonjsModule(function (module) {\n\n const toString = Object.prototype.toString;\n\n const isValidKey = key => {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n };\n\n const assign = module.exports = (target, ...args) => {\n let i = 0;\n if (isPrimitive(target)) target = args[i++];\n if (!target) target = {};\n for (; i < args.length; i++) {\n if (isObject(args[i])) {\n for (const key of Object.keys(args[i])) {\n if (isValidKey(key)) {\n if (isObject(target[key]) && isObject(args[i][key])) {\n assign(target[key], args[i][key]);\n } else {\n target[key] = args[i][key];\n }\n }\n }\n assignSymbols(target, args[i]);\n }\n }\n return target;\n };\n\n function isObject(val) {\n return typeof val === 'function' || toString.call(val) === '[object Object]';\n }\n\n function isPrimitive(val) {\n return typeof val === 'object' ? val === null : typeof val !== 'function';\n }\n});\n\nconst inBrowser = typeof window !== 'undefined' && window !== null;\nconst hasIntersectionObserver = checkIntersectionObserver();\nfunction checkIntersectionObserver() {\n if (inBrowser && 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return true;\n }\n return false;\n}\nconst modeType = {\n event: 'event',\n observer: 'observer'\n};\nfunction remove(arr, item) {\n if (!arr.length) return;\n const index = arr.indexOf(item);\n if (index > -1) return arr.splice(index, 1);\n}\nfunction getBestSelectionFromSrcset(el, scale) {\n if (el.tagName !== 'IMG' || !el.getAttribute('data-srcset')) return '';\n let options = el.getAttribute('data-srcset').trim().split(',');\n const result = [];\n const container = el.parentNode;\n const containerWidth = container.offsetWidth * scale;\n let spaceIndex;\n let tmpSrc;\n let tmpWidth;\n options.forEach(item => {\n item = item.trim();\n spaceIndex = item.lastIndexOf(' ');\n if (spaceIndex === -1) {\n tmpSrc = item;\n tmpWidth = 99999;\n } else {\n tmpSrc = item.substr(0, spaceIndex);\n tmpWidth = parseInt(item.substr(spaceIndex + 1, item.length - spaceIndex - 2), 10);\n }\n result.push([tmpWidth, tmpSrc]);\n });\n result.sort((a, b) => {\n if (a[0] < b[0]) {\n return 1;\n }\n if (a[0] > b[0]) {\n return -1;\n }\n if (a[0] === b[0]) {\n if (b[1].indexOf('.webp', b[1].length - 5) !== -1) {\n return 1;\n }\n if (a[1].indexOf('.webp', a[1].length - 5) !== -1) {\n return -1;\n }\n }\n return 0;\n });\n let bestSelectedSrc = '';\n let tmpOption;\n for (let i = 0; i < result.length; i++) {\n tmpOption = result[i];\n bestSelectedSrc = tmpOption[1];\n const next = result[i + 1];\n if (next && next[0] < containerWidth) {\n bestSelectedSrc = tmpOption[1];\n break;\n } else if (!next) {\n bestSelectedSrc = tmpOption[1];\n break;\n }\n }\n return bestSelectedSrc;\n}\nconst getDPR = (scale = 1) => inBrowser ? window.devicePixelRatio || scale : scale;\n// https://developers.google.com/speed/webp/faq#how_can_i_detect_browser_support_using_javascript\nfunction supportWebp() {\n if (!inBrowser) return false;\n let support = true;\n function checkWebpFeature(feature, callback) {\n const kTestImages = {\n lossy: 'UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',\n lossless: 'UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==',\n alpha: 'UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==',\n animation: 'UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA'\n };\n const img = new Image();\n img.onload = function () {\n const result = img.width > 0 && img.height > 0;\n callback(result);\n };\n img.onerror = function () {\n // eslint-disable-next-line node/no-callback-literal\n callback(false);\n };\n img.src = 'data:image/webp;base64,' + kTestImages[feature];\n }\n checkWebpFeature('lossy', isSupported => {\n support = isSupported;\n });\n checkWebpFeature('lossless', isSupported => {\n support = isSupported;\n });\n checkWebpFeature('alpha', isSupported => {\n support = isSupported;\n });\n checkWebpFeature('animation', isSupported => {\n support = isSupported;\n });\n return support;\n}\nfunction throttle(action, delay) {\n let timeout = null;\n let lastRun = 0;\n return function () {\n if (timeout) {\n return;\n }\n const elapsed = Date.now() - lastRun;\n // @ts-ignore\n const context = this;\n const args = arguments;\n const runCallback = function () {\n lastRun = Date.now();\n timeout = false;\n action.apply(context, args);\n };\n if (elapsed >= delay) {\n runCallback();\n } else {\n timeout = setTimeout(runCallback, delay);\n }\n };\n}\nfunction testSupportsPassive() {\n if (!inBrowser) return false;\n let support = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get: function () {\n support = true;\n }\n });\n window.addEventListener('test', noop, opts);\n } catch (e) {}\n return support;\n}\nconst supportsPassive = testSupportsPassive();\nconst _ = {\n on(el, type, func, capture = false) {\n if (supportsPassive) {\n el.addEventListener(type, func, {\n capture: capture,\n passive: true\n });\n } else {\n el.addEventListener(type, func, capture);\n }\n },\n off(el, type, func, capture = false) {\n el.removeEventListener(type, func, capture);\n }\n};\nconst loadImageAsync = (item, resolve, reject) => {\n let image = new Image();\n if (!item || !item.src) {\n const err = new Error('image src is required');\n return reject(err);\n }\n if (item.cors) {\n image.crossOrigin = item.cors;\n }\n image.src = item.src;\n image.onload = function () {\n resolve({\n naturalHeight: image.naturalHeight,\n naturalWidth: image.naturalWidth,\n src: image.src\n });\n image = null;\n };\n image.onerror = function (e) {\n reject(e);\n };\n};\n// keyof CSSStyleDeclaration\nconst style = (el, prop) => {\n return typeof getComputedStyle !== 'undefined' ? getComputedStyle(el, null).getPropertyValue(prop) : el.style[prop];\n};\nconst overflow = el => {\n return style(el, 'overflow') + style(el, 'overflowY') + style(el, 'overflowX');\n};\nconst scrollParent = el => {\n if (!inBrowser) return;\n if (!(el instanceof Element)) {\n return window;\n }\n let parent = el;\n while (parent) {\n if (parent === document.body || parent === document.documentElement) {\n break;\n }\n if (!parent.parentNode) {\n break;\n }\n if (/(scroll|auto)/.test(overflow(parent))) {\n return parent;\n }\n parent = parent.parentNode;\n }\n return window;\n};\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\nfunction noop() {}\nclass ImageCache {\n constructor(max) {\n this.max = max || 100;\n this._caches = [];\n }\n has(key) {\n return this._caches.indexOf(key) > -1;\n }\n add(key) {\n if (this.has(key)) return;\n this._caches.push(key);\n if (this._caches.length > this.max) {\n this.free();\n }\n }\n free() {\n this._caches.shift();\n }\n}\n\n// el: {\n// state,\n// src,\n// error,\n// loading\n// }\nclass ReactiveListener {\n constructor(el, src, error, loading, bindType, $parent, options, cors, elRenderer, imageCache) {\n this.el = el;\n this.src = src;\n this.error = error;\n this.loading = loading;\n this.bindType = bindType;\n this.attempt = 0;\n this.cors = cors;\n this.naturalHeight = 0;\n this.naturalWidth = 0;\n this.options = options;\n this.rect = {};\n this.$parent = $parent;\n this.elRenderer = elRenderer;\n this._imageCache = imageCache;\n this.performanceData = {\n init: Date.now(),\n loadStart: 0,\n loadEnd: 0\n };\n this.filter();\n this.initState();\n this.render('loading', false);\n }\n /*\r\n * init listener state\r\n * @return\r\n */\n initState() {\n if ('dataset' in this.el) {\n this.el.dataset.src = this.src;\n } else {\n this.el.setAttribute('data-src', this.src);\n }\n this.state = {\n loading: false,\n error: false,\n loaded: false,\n rendered: false\n };\n }\n /*\r\n * record performance\r\n * @return\r\n */\n record(event) {\n this.performanceData[event] = Date.now();\n }\n /*\r\n * update image listener data\r\n * @param {String} image uri\r\n * @param {String} loading image uri\r\n * @param {String} error image uri\r\n * @return\r\n */\n update(option) {\n const oldSrc = this.src;\n this.src = option.src;\n this.loading = option.loading;\n this.error = option.error;\n this.filter();\n if (oldSrc !== this.src) {\n this.attempt = 0;\n this.initState();\n }\n }\n /*\r\n * get el node rect\r\n * @return\r\n */\n getRect() {\n this.rect = this.el.getBoundingClientRect();\n }\n /*\r\n * check el is in view\r\n * @return {Boolean} el is in view\r\n */\n checkInView() {\n this.getRect();\n return this.rect.top < window.innerHeight * this.options.preLoad && this.rect.bottom > this.options.preLoadTop && this.rect.left < window.innerWidth * this.options.preLoad && this.rect.right > 0;\n }\n /*\r\n * listener filter\r\n */\n filter() {\n for (const key in this.options.filter) {\n this.options.filter[key](this, this.options);\n }\n }\n /*\r\n * render loading first\r\n * @params cb:Function\r\n * @return\r\n */\n renderLoading(cb) {\n this.state.loading = true;\n loadImageAsync({\n src: this.loading,\n cors: this.cors\n }, () => {\n this.render('loading', false);\n this.state.loading = false;\n cb();\n }, () => {\n // handler `loading image` load failed\n cb();\n this.state.loading = false;\n if (!this.options.silent) console.warn(`VueLazyload log: load failed with loading image(${this.loading})`);\n });\n }\n /*\r\n * try load image and render it\r\n * @return\r\n */\n load(onFinish = noop) {\n if (this.attempt > this.options.attempt - 1 && this.state.error) {\n if (!this.options.silent) console.log(`VueLazyload log: ${this.src} tried too more than ${this.options.attempt} times`);\n onFinish();\n return;\n }\n if (this.state.rendered && this.state.loaded) return;\n if (this._imageCache.has(this.src)) {\n this.state.loaded = true;\n this.render('loaded', true);\n this.state.rendered = true;\n return onFinish();\n }\n this.renderLoading(() => {\n this.attempt++;\n this.options.adapter.beforeLoad && this.options.adapter.beforeLoad(this, this.options);\n this.record('loadStart');\n loadImageAsync({\n src: this.src,\n cors: this.cors\n }, data => {\n this.naturalHeight = data.naturalHeight;\n this.naturalWidth = data.naturalWidth;\n this.state.loaded = true;\n this.state.error = false;\n this.record('loadEnd');\n this.render('loaded', false);\n this.state.rendered = true;\n this._imageCache.add(this.src);\n onFinish();\n }, err => {\n !this.options.silent && console.error(err);\n this.state.error = true;\n this.state.loaded = false;\n this.render('error', false);\n });\n });\n }\n /*\r\n * render image\r\n * @param {String} state to render // ['loading', 'src', 'error']\r\n * @param {String} is form cache\r\n * @return\r\n */\n render(state, cache) {\n this.elRenderer(this, state, cache);\n }\n /*\r\n * output performance data\r\n * @return {Object} performance data\r\n */\n performance() {\n let state = 'loading';\n let time = 0;\n if (this.state.loaded) {\n state = 'loaded';\n time = (this.performanceData.loadEnd - this.performanceData.loadStart) / 1000;\n }\n if (this.state.error) state = 'error';\n return {\n src: this.src,\n state,\n time\n };\n }\n /*\r\n * $destroy\r\n * @return\r\n */\n $destroy() {\n this.el = null;\n this.src = '';\n this.error = null;\n this.loading = '';\n this.bindType = null;\n this.attempt = 0;\n }\n}\n\nconst DEFAULT_URL = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\nconst DEFAULT_EVENTS = ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend', 'touchmove'];\nconst DEFAULT_OBSERVER_OPTIONS = {\n rootMargin: '0px',\n threshold: 0\n};\nclass Lazy {\n constructor({ preLoad, error, throttleWait, preLoadTop, dispatchEvent, loading, attempt, silent = true, scale, listenEvents, filter, adapter, observer, observerOptions }) {\n this.version = '\"3.0.0\"';\n this.lazyContainerMananger = null;\n this.mode = modeType.event;\n this.ListenerQueue = [];\n this.TargetIndex = 0;\n this.TargetQueue = [];\n this.options = {\n silent: silent,\n dispatchEvent: !!dispatchEvent,\n throttleWait: throttleWait || 200,\n preLoad: preLoad || 1.3,\n preLoadTop: preLoadTop || 0,\n error: error || DEFAULT_URL,\n loading: loading || DEFAULT_URL,\n attempt: attempt || 3,\n scale: scale || getDPR(scale),\n listenEvents: listenEvents || DEFAULT_EVENTS,\n supportWebp: supportWebp(),\n filter: filter || {},\n adapter: adapter || {},\n observer: !!observer,\n observerOptions: observerOptions || DEFAULT_OBSERVER_OPTIONS\n };\n this._initEvent();\n this._imageCache = new ImageCache(200);\n this.lazyLoadHandler = throttle(this._lazyLoadHandler.bind(this), this.options.throttleWait);\n this.setMode(this.options.observer ? modeType.observer : modeType.event);\n }\n /**\r\n * output listener's load performance\r\n * @return {Array}\r\n */\n performance() {\n const list = [];\n this.ListenerQueue.map(item => list.push(item.performance()));\n return list;\n }\n /*\r\n * add lazy component to queue\r\n * @param {Vue} vm lazy component instance\r\n * @return\r\n */\n addLazyBox(vm) {\n this.ListenerQueue.push(vm);\n if (inBrowser) {\n this._addListenerTarget(window);\n this._observer && this._observer.observe(vm.el);\n if (vm.$el && vm.$el.parentNode) {\n this._addListenerTarget(vm.$el.parentNode);\n }\n }\n }\n /*\r\n * add image listener to queue\r\n * @param {DOM} el\r\n * @param {object} binding vue directive binding\r\n * @param {vnode} vnode vue directive vnode\r\n * @return\r\n */\n add(el, binding, vnode) {\n if (this.ListenerQueue.some(item => item.el === el)) {\n this.update(el, binding);\n return nextTick(this.lazyLoadHandler);\n }\n let { src, loading, error, cors } = this._valueFormatter(binding.value);\n nextTick(() => {\n src = getBestSelectionFromSrcset(el, this.options.scale) || src;\n this._observer && this._observer.observe(el);\n const container = Object.keys(binding.modifiers)[0];\n let $parent;\n if (container) {\n $parent = binding.instance.$refs[container];\n // if there is container passed in, try ref first, then fallback to getElementById to support the original usage\n $parent = $parent ? $parent.el || $parent : document.getElementById(container);\n }\n if (!$parent) {\n $parent = scrollParent(el);\n }\n const newListener = new ReactiveListener(el, src, error, loading, binding.arg, $parent, this.options, cors, this._elRenderer.bind(this), this._imageCache);\n this.ListenerQueue.push(newListener);\n if (inBrowser) {\n this._addListenerTarget(window);\n this._addListenerTarget($parent);\n }\n nextTick(this.lazyLoadHandler);\n });\n }\n /**\r\n * update image src\r\n * @param {DOM} el\r\n * @param {object} vue directive binding\r\n * @return\r\n */\n update(el, binding, vnode) {\n let { src, loading, error } = this._valueFormatter(binding.value);\n src = getBestSelectionFromSrcset(el, this.options.scale) || src;\n const exist = this.ListenerQueue.find(item => item.el === el);\n if (!exist) {\n // https://github.com/hilongjw/vue-lazyload/issues/374\n if (el.getAttribute('lazy') !== 'loaded' || el.dataset.src !== src) {\n this.add(el, binding, vnode);\n }\n } else {\n exist.update({\n src,\n loading,\n error\n });\n }\n if (this._observer) {\n this._observer.unobserve(el);\n this._observer.observe(el);\n }\n nextTick(this.lazyLoadHandler);\n }\n /**\r\n * remove listener form list\r\n * @param {DOM} el\r\n * @return\r\n */\n remove(el) {\n if (!el) return;\n this._observer && this._observer.unobserve(el);\n const existItem = this.ListenerQueue.find(item => item.el === el);\n if (existItem) {\n this._removeListenerTarget(existItem.$parent);\n this._removeListenerTarget(window);\n remove(this.ListenerQueue, existItem);\n existItem.$destroy && existItem.$destroy();\n }\n }\n /*\r\n * remove lazy components form list\r\n * @param {Vue} vm Vue instance\r\n * @return\r\n */\n removeComponent(vm) {\n if (!vm) return;\n remove(this.ListenerQueue, vm);\n this._observer && this._observer.unobserve(vm.el);\n if (vm.$parent && vm.$el.parentNode) {\n this._removeListenerTarget(vm.$el.parentNode);\n }\n this._removeListenerTarget(window);\n }\n setMode(mode) {\n if (!hasIntersectionObserver && mode === modeType.observer) {\n mode = modeType.event;\n }\n this.mode = mode; // event or observer\n if (mode === modeType.event) {\n if (this._observer) {\n this.ListenerQueue.forEach(listener => {\n this._observer.unobserve(listener.el);\n });\n this._observer = null;\n }\n this.TargetQueue.forEach(target => {\n this._initListen(target.el, true);\n });\n } else {\n this.TargetQueue.forEach(target => {\n this._initListen(target.el, false);\n });\n this._initIntersectionObserver();\n }\n }\n /*\r\n *** Private functions ***\r\n */\n /*\r\n * add listener target\r\n * @param {DOM} el listener target\r\n * @return\r\n */\n _addListenerTarget(el) {\n if (!el) return;\n let target = this.TargetQueue.find(target => target.el === el);\n if (!target) {\n target = {\n el: el,\n id: ++this.TargetIndex,\n childrenCount: 1,\n listened: true\n };\n this.mode === modeType.event && this._initListen(target.el, true);\n this.TargetQueue.push(target);\n } else {\n target.childrenCount++;\n }\n return this.TargetIndex;\n }\n /*\r\n * remove listener target or reduce target childrenCount\r\n * @param {DOM} el or window\r\n * @return\r\n */\n _removeListenerTarget(el) {\n this.TargetQueue.forEach((target, index) => {\n if (target.el === el) {\n target.childrenCount--;\n if (!target.childrenCount) {\n this._initListen(target.el, false);\n this.TargetQueue.splice(index, 1);\n target = null;\n }\n }\n });\n }\n /*\r\n * add or remove eventlistener\r\n * @param {DOM} el DOM or Window\r\n * @param {boolean} start flag\r\n * @return\r\n */\n _initListen(el, start) {\n this.options.listenEvents.forEach(evt => _[start ? 'on' : 'off'](el, evt, this.lazyLoadHandler));\n }\n _initEvent() {\n this.Event = {\n listeners: {\n loading: [],\n loaded: [],\n error: []\n }\n };\n this.$on = (event, func) => {\n if (!this.Event.listeners[event]) this.Event.listeners[event] = [];\n this.Event.listeners[event].push(func);\n };\n this.$once = (event, func) => {\n const vm = this;\n function on() {\n vm.$off(event, on);\n func.apply(vm, arguments);\n }\n this.$on(event, on);\n };\n this.$off = (event, func) => {\n if (!func) {\n if (!this.Event.listeners[event]) return;\n this.Event.listeners[event].length = 0;\n return;\n }\n remove(this.Event.listeners[event], func);\n };\n this.$emit = (event, context, inCache) => {\n if (!this.Event.listeners[event]) return;\n this.Event.listeners[event].forEach(func => func(context, inCache));\n };\n }\n /**\r\n * find nodes which in viewport and trigger load\r\n * @return\r\n */\n _lazyLoadHandler() {\n const freeList = [];\n this.ListenerQueue.forEach((listener, index) => {\n if (!listener.el || !listener.el.parentNode || listener.state.loaded) {\n freeList.push(listener);\n }\n const catIn = listener.checkInView();\n if (!catIn) return;\n if (!listener.state.loaded) listener.load();\n });\n freeList.forEach(item => {\n remove(this.ListenerQueue, item);\n item.$destroy && item.$destroy();\n });\n }\n /**\r\n * init IntersectionObserver\r\n * set mode to observer\r\n * @return\r\n */\n _initIntersectionObserver() {\n if (!hasIntersectionObserver) return;\n this._observer = new IntersectionObserver(this._observerHandler.bind(this), this.options.observerOptions);\n if (this.ListenerQueue.length) {\n this.ListenerQueue.forEach(listener => {\n this._observer.observe(listener.el);\n });\n }\n }\n /**\r\n * init IntersectionObserver\r\n * @param {Array} entries\r\n * @return\r\n */\n _observerHandler(entries) {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.ListenerQueue.forEach(listener => {\n if (listener.el === entry.target) {\n if (listener.state.loaded) return this._observer.unobserve(listener.el);\n listener.load();\n }\n });\n }\n });\n }\n /**\r\n * set element attribute with image'url and state\r\n * @param {ReactiveListener} lazyload listener object\r\n * @param {TeventType} state will be rendered\r\n * @param {bool} inCache is rendered from cache\r\n * @return\r\n */\n _elRenderer(listener, state, cache) {\n if (!listener.el) return;\n const { el, bindType } = listener;\n let src;\n switch (state) {\n case 'loading':\n src = listener.loading;\n break;\n case 'error':\n src = listener.error;\n break;\n default:\n src = listener.src;\n break;\n }\n if (bindType) {\n // @ts-ignore\n el.style[bindType] = 'url(\"' + src + '\")';\n } else if (el.getAttribute('src') !== src) {\n el.setAttribute('src', src);\n }\n el.setAttribute('lazy', state);\n this.$emit(state, listener, cache);\n this.options.adapter[state] && this.options.adapter[state](listener, this.options);\n if (this.options.dispatchEvent) {\n const event = new CustomEvent(state, {\n detail: listener\n });\n el.dispatchEvent(event);\n }\n }\n _valueFormatter(value) {\n if (isObject(value)) {\n if (!value.src && !this.options.silent) console.error('Vue Lazyload warning: miss src with ' + value);\n return {\n src: value.src,\n loading: value.loading || this.options.loading,\n error: value.error || this.options.error,\n cors: this.options.cors\n };\n }\n return {\n src: value,\n loading: this.options.loading,\n error: this.options.error,\n cors: this.options.cors\n };\n }\n}\n\nconst useCheckInView = (el, preLoad) => {\n let rect = reactive({});\n const getRect = () => {\n rect = el.value.getBoundingClientRect();\n };\n const checkInView = () => {\n getRect();\n return inBrowser && rect.top < window.innerHeight * preLoad && rect.bottom > 0 && rect.left < window.innerWidth * preLoad && rect.right > 0;\n };\n return {\n rect,\n checkInView\n };\n};\n\nvar LazyComponent = (lazy => {\n return defineComponent({\n props: {\n tag: {\n type: String,\n default: 'div'\n }\n },\n emits: ['show'],\n setup(props, { emit, slots }) {\n const el = ref();\n const state = reactive({\n loaded: false,\n error: false,\n attempt: 0\n });\n const show = ref(false);\n const { rect, checkInView } = useCheckInView(el, lazy.options.preLoad);\n const load = () => {\n show.value = true;\n state.loaded = true;\n emit('show', show.value);\n };\n const vm = computed(() => {\n return {\n el: el.value,\n rect,\n checkInView,\n load,\n state\n };\n });\n onMounted(() => {\n lazy.addLazyBox(vm.value);\n lazy.lazyLoadHandler();\n });\n onUnmounted(() => {\n lazy.removeComponent(vm.value);\n });\n return () => {\n var _a;\n return createVNode(props.tag, {\n ref: el\n }, [show.value && ((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots))]);\n };\n }\n });\n});\n\nclass LazyContainerMananger {\n constructor(lazy) {\n this.lazy = lazy;\n lazy.lazyContainerMananger = this;\n this._queue = [];\n }\n bind(el, binding, vnode) {\n const container = new LazyContainer(el, binding, vnode, this.lazy);\n this._queue.push(container);\n }\n update(el, binding, vnode) {\n const container = this._queue.find(item => item.el === el);\n if (!container) return;\n container.update(el, binding);\n }\n unbind(el, binding, vnode) {\n const container = this._queue.find(item => item.el === el);\n if (!container) return;\n container.clear();\n remove(this._queue, container);\n }\n}\nconst defaultOptions = {\n selector: 'img',\n error: '',\n loading: ''\n};\nclass LazyContainer {\n constructor(el, binding, vnode, lazy) {\n this.el = el;\n this.vnode = vnode;\n this.binding = binding;\n this.options = {};\n this.lazy = lazy;\n this._queue = [];\n this.update(el, binding);\n }\n update(el, binding) {\n this.el = el;\n this.options = assignDeep({}, defaultOptions, binding.value);\n const imgs = this.getImgs();\n imgs.forEach(el => {\n this.lazy.add(el, assignDeep({}, this.binding, {\n value: {\n src: el.getAttribute('data-src') || el.dataset.src,\n error: el.getAttribute('data-error') || el.dataset.error || this.options.error,\n loading: el.getAttribute('data-loading') || el.dataset.loading || this.options.loading\n }\n }), this.vnode);\n });\n }\n getImgs() {\n return Array.from(this.el.querySelectorAll(this.options.selector));\n }\n clear() {\n const imgs = this.getImgs();\n imgs.forEach(el => this.lazy.remove(el));\n this.vnode = null;\n this.binding = null;\n this.lazy = null;\n }\n}\n\nvar LazyImage = (lazy => {\n return defineComponent({\n setup(props, { slots }) {\n const el = ref();\n const options = reactive({\n src: '',\n error: '',\n loading: '',\n attempt: lazy.options.attempt\n });\n const state = reactive({\n loaded: false,\n error: false,\n attempt: 0\n });\n const { rect, checkInView } = useCheckInView(el, lazy.options.preLoad);\n const renderSrc = ref('');\n const load = (onFinish = noop) => {\n if (state.attempt > options.attempt - 1 && state.error) {\n if (!lazy.options.silent) console.log(`VueLazyload log: ${options.src} tried too more than ${options.attempt} times`);\n return onFinish();\n }\n const src = options.src;\n loadImageAsync({ src }, ({ src }) => {\n renderSrc.value = src;\n state.loaded = true;\n }, () => {\n state.attempt++;\n renderSrc.value = options.error;\n state.error = true;\n });\n };\n const vm = computed(() => {\n return {\n el: el.value,\n rect,\n checkInView,\n load,\n state\n };\n });\n onMounted(() => {\n lazy.addLazyBox(vm.value);\n lazy.lazyLoadHandler();\n });\n onUnmounted(() => {\n lazy.removeComponent(vm.value);\n });\n const init = () => {\n const { src, loading, error } = lazy._valueFormatter(props.src);\n state.loaded = false;\n options.src = src;\n options.error = error;\n options.loading = loading;\n renderSrc.value = options.loading;\n };\n watch(() => props.src, () => {\n init();\n lazy.addLazyBox(vm.value);\n lazy.lazyLoadHandler();\n }, {\n immediate: true\n });\n return () => {\n var _a;\n return createVNode(props.tag || 'img', {\n src: renderSrc.value,\n ref: el\n }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]);\n };\n }\n });\n});\n\nvar index = {\n /*\r\n * install function\r\n * @param {Vue} Vue\r\n * @param {object} options lazyload options\r\n */\n install(Vue, options = {}) {\n const lazy = new Lazy(options);\n const lazyContainer = new LazyContainerMananger(lazy);\n const vueVersion = Number(Vue.version.split('.')[0]);\n if (vueVersion < 3) return new Error('Vue version at least 3.0');\n Vue.config.globalProperties.$Lazyload = lazy;\n Vue.provide('Lazyload', lazy);\n if (options.lazyComponent) {\n Vue.component('lazy-component', LazyComponent(lazy));\n }\n if (options.lazyImage) {\n Vue.component('lazy-image', LazyImage(lazy));\n }\n Vue.directive('lazy', {\n beforeMount: lazy.add.bind(lazy),\n beforeUpdate: lazy.update.bind(lazy),\n updated: lazy.lazyLoadHandler.bind(lazy),\n unmounted: lazy.remove.bind(lazy)\n });\n Vue.directive('lazy-container', {\n beforeMount: lazyContainer.bind.bind(lazyContainer),\n updated: lazyContainer.update.bind(lazyContainer),\n unmounted: lazyContainer.unbind.bind(lazyContainer)\n });\n }\n};\n\nexport { index as default };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","\n\n","import { render } from \"./icon.vue?vue&type=template&id=855eb8a8\"\nimport script from \"./icon.vue?vue&type=script&lang=js\"\nexport * from \"./icon.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","'use strict'\n\nmodule.exports = factory\n\nvar noop = Function.prototype\nvar own = {}.hasOwnProperty\n\n// Handle values based on a property.\nfunction factory(key, options) {\n var settings = options || {}\n\n function one(value) {\n var fn = one.invalid\n var handlers = one.handlers\n\n if (value && own.call(value, key)) {\n fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n }\n\n return (fn || noop).apply(this, arguments)\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n return one\n}\n","\"use strict\";\n/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventEmitter = void 0;\n// TODO AB#7377 Provide Fluid EventEmitter using support in packages/dds/tree/src/events.\nvar events_pkg_1 = require(\"events_pkg\");\nObject.defineProperty(exports, \"EventEmitter\", { enumerable: true, get: function () { return events_pkg_1.EventEmitter; } });\n//# sourceMappingURL=eventEmitter.cjs.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmptyBTree = exports.asSet = exports.BTree = exports.simpleComparator = exports.defaultComparator = void 0;\n/**\n * Compares DefaultComparables to form a strict partial ordering.\n *\n * Handles +/-0 and NaN like Map: NaN is equal to NaN, and -0 is equal to +0.\n *\n * Arrays are compared using '<' and '>', which may cause unexpected equality:\n * for example [1] will be considered equal to ['1'].\n *\n * Two objects with equal valueOf compare the same, but compare unequal to\n * primitives that have the same value.\n */\nfunction defaultComparator(a, b) {\n // Special case finite numbers first for performance.\n // Note that the trick of using 'a - b' and checking for NaN to detect non-numbers\n // does not work if the strings are numeric (ex: \"5\"). This would leading most\n // comparison functions using that approach to fail to have transitivity.\n if (Number.isFinite(a) && Number.isFinite(b)) {\n return a - b;\n }\n // The default < and > operators are not totally ordered. To allow types to be mixed\n // in a single collection, compare types and order values of different types by type.\n let ta = typeof a;\n let tb = typeof b;\n if (ta !== tb) {\n return ta < tb ? -1 : 1;\n }\n if (ta === 'object') {\n // standardized JavaScript bug: null is not an object, but typeof says it is\n if (a === null)\n return b === null ? 0 : -1;\n else if (b === null)\n return 1;\n a = a.valueOf();\n b = b.valueOf();\n ta = typeof a;\n tb = typeof b;\n // Deal with the two valueOf()s producing different types\n if (ta !== tb) {\n return ta < tb ? -1 : 1;\n }\n }\n // a and b are now the same type, and will be a number, string or array\n // (which we assume holds numbers or strings), or something unsupported.\n if (a < b)\n return -1;\n if (a > b)\n return 1;\n if (a === b)\n return 0;\n // Order NaN less than other numbers\n if (Number.isNaN(a))\n return Number.isNaN(b) ? 0 : -1;\n else if (Number.isNaN(b))\n return 1;\n // This could be two objects (e.g. [7] and ['7']) that aren't ordered\n return Array.isArray(a) ? 0 : Number.NaN;\n}\nexports.defaultComparator = defaultComparator;\n;\nfunction simpleComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\nexports.simpleComparator = simpleComparator;\n;\n/**\n * A reasonably fast collection of key-value pairs with a powerful API.\n * Largely compatible with the standard Map. BTree is a B+ tree data structure,\n * so the collection is sorted by key.\n *\n * B+ trees tend to use memory more efficiently than hashtables such as the\n * standard Map, especially when the collection contains a large number of\n * items. However, maintaining the sort order makes them modestly slower:\n * O(log size) rather than O(1). This B+ tree implementation supports O(1)\n * fast cloning. It also supports freeze(), which can be used to ensure that\n * a BTree is not changed accidentally.\n *\n * Confusingly, the ES6 Map.forEach(c) method calls c(value,key) instead of\n * c(key,value), in contrast to other methods such as set() and entries()\n * which put the key first. I can only assume that the order was reversed on\n * the theory that users would usually want to examine values and ignore keys.\n * BTree's forEach() therefore works the same way, but a second method\n * `.forEachPair((key,value)=>{...})` is provided which sends you the key\n * first and the value second; this method is slightly faster because it is\n * the \"native\" for-each method for this class.\n *\n * Out of the box, BTree supports keys that are numbers, strings, arrays of\n * numbers/strings, Date, and objects that have a valueOf() method returning a\n * number or string. Other data types, such as arrays of Date or custom\n * objects, require a custom comparator, which you must pass as the second\n * argument to the constructor (the first argument is an optional list of\n * initial items). Symbols cannot be used as keys because they are unordered\n * (one Symbol is never \"greater\" or \"less\" than another).\n *\n * @example\n * Given a {name: string, age: number} object, you can create a tree sorted by\n * name and then by age like this:\n *\n * var tree = new BTree(undefined, (a, b) => {\n * if (a.name > b.name)\n * return 1; // Return a number >0 when a > b\n * else if (a.name < b.name)\n * return -1; // Return a number <0 when a < b\n * else // names are equal (or incomparable)\n * return a.age - b.age; // Return >0 when a.age > b.age\n * });\n *\n * tree.set({name:\"Bill\", age:17}, \"happy\");\n * tree.set({name:\"Fran\", age:40}, \"busy & stressed\");\n * tree.set({name:\"Bill\", age:55}, \"recently laid off\");\n * tree.forEachPair((k, v) => {\n * console.log(`Name: ${k.name} Age: ${k.age} Status: ${v}`);\n * });\n *\n * @description\n * The \"range\" methods (`forEach, forRange, editRange`) will return the number\n * of elements that were scanned. In addition, the callback can return {break:R}\n * to stop early and return R from the outer function.\n *\n * - TODO: Test performance of preallocating values array at max size\n * - TODO: Add fast initialization when a sorted array is provided to constructor\n *\n * For more documentation see https://github.com/qwertie/btree-typescript\n *\n * Are you a C# developer? You might like the similar data structures I made for C#:\n * BDictionary, BList, etc. See http://core.loyc.net/collections/\n *\n * @author David Piepgrass\n */\nclass BTree {\n /**\n * Initializes an empty B+ tree.\n * @param compare Custom function to compare pairs of elements in the tree.\n * If not specified, defaultComparator will be used which is valid as long as K extends DefaultComparable.\n * @param entries A set of key-value pairs to initialize the tree\n * @param maxNodeSize Branching factor (maximum items or children per node)\n * Must be in range 4..256. If undefined or <4 then default is used; if >256 then 256.\n */\n constructor(entries, compare, maxNodeSize) {\n this._root = EmptyLeaf;\n this._size = 0;\n this._maxNodeSize = maxNodeSize >= 4 ? Math.min(maxNodeSize, 256) : 32;\n this._compare = compare || defaultComparator;\n if (entries)\n this.setPairs(entries);\n }\n /////////////////////////////////////////////////////////////////////////////\n // ES6 Map methods /////////////////////////////////////////////////////\n /** Gets the number of key-value pairs in the tree. */\n get size() { return this._size; }\n /** Gets the number of key-value pairs in the tree. */\n get length() { return this._size; }\n /** Returns true iff the tree contains no key-value pairs. */\n get isEmpty() { return this._size === 0; }\n /** Releases the tree so that its size is 0. */\n clear() {\n this._root = EmptyLeaf;\n this._size = 0;\n }\n /** Runs a function for each key-value pair, in order from smallest to\n * largest key. For compatibility with ES6 Map, the argument order to\n * the callback is backwards: value first, then key. Call forEachPair\n * instead to receive the key as the first argument.\n * @param thisArg If provided, this parameter is assigned as the `this`\n * value for each callback.\n * @returns the number of values that were sent to the callback,\n * or the R value if the callback returned {break:R}. */\n forEach(callback, thisArg) {\n if (thisArg !== undefined)\n callback = callback.bind(thisArg);\n return this.forEachPair((k, v) => callback(v, k, this));\n }\n /** Runs a function for each key-value pair, in order from smallest to\n * largest key. The callback can return {break:R} (where R is any value\n * except undefined) to stop immediately and return R from forEachPair.\n * @param onFound A function that is called for each key-value pair. This\n * function can return {break:R} to stop early with result R.\n * The reason that you must return {break:R} instead of simply R\n * itself is for consistency with editRange(), which allows\n * multiple actions, not just breaking.\n * @param initialCounter This is the value of the third argument of\n * `onFound` the first time it is called. The counter increases\n * by one each time `onFound` is called. Default value: 0\n * @returns the number of pairs sent to the callback (plus initialCounter,\n * if you provided one). If the callback returned {break:R} then\n * the R value is returned instead. */\n forEachPair(callback, initialCounter) {\n var low = this.minKey(), high = this.maxKey();\n return this.forRange(low, high, true, callback, initialCounter);\n }\n /**\n * Finds a pair in the tree and returns the associated value.\n * @param defaultValue a value to return if the key was not found.\n * @returns the value, or defaultValue if the key was not found.\n * @description Computational complexity: O(log size)\n */\n get(key, defaultValue) {\n return this._root.get(key, defaultValue, this);\n }\n /**\n * Adds or overwrites a key-value pair in the B+ tree.\n * @param key the key is used to determine the sort order of\n * data in the tree.\n * @param value data to associate with the key (optional)\n * @param overwrite Whether to overwrite an existing key-value pair\n * (default: true). If this is false and there is an existing\n * key-value pair then this method has no effect.\n * @returns true if a new key-value pair was added.\n * @description Computational complexity: O(log size)\n * Note: when overwriting a previous entry, the key is updated\n * as well as the value. This has no effect unless the new key\n * has data that does not affect its sort order.\n */\n set(key, value, overwrite) {\n if (this._root.isShared)\n this._root = this._root.clone();\n var result = this._root.set(key, value, overwrite, this);\n if (result === true || result === false)\n return result;\n // Root node has split, so create a new root node.\n this._root = new BNodeInternal([this._root, result]);\n return true;\n }\n /**\n * Returns true if the key exists in the B+ tree, false if not.\n * Use get() for best performance; use has() if you need to\n * distinguish between \"undefined value\" and \"key not present\".\n * @param key Key to detect\n * @description Computational complexity: O(log size)\n */\n has(key) {\n return this.forRange(key, key, true, undefined) !== 0;\n }\n /**\n * Removes a single key-value pair from the B+ tree.\n * @param key Key to find\n * @returns true if a pair was found and removed, false otherwise.\n * @description Computational complexity: O(log size)\n */\n delete(key) {\n return this.editRange(key, key, true, DeleteRange) !== 0;\n }\n with(key, value, overwrite) {\n let nu = this.clone();\n return nu.set(key, value, overwrite) || overwrite ? nu : this;\n }\n /** Returns a copy of the tree with the specified key-value pairs set. */\n withPairs(pairs, overwrite) {\n let nu = this.clone();\n return nu.setPairs(pairs, overwrite) !== 0 || overwrite ? nu : this;\n }\n /** Returns a copy of the tree with the specified keys present.\n * @param keys The keys to add. If a key is already present in the tree,\n * neither the existing key nor the existing value is modified.\n * @param returnThisIfUnchanged if true, returns this if all keys already\n * existed. Performance note: due to the architecture of this class, all\n * node(s) leading to existing keys are cloned even if the collection is\n * ultimately unchanged.\n */\n withKeys(keys, returnThisIfUnchanged) {\n let nu = this.clone(), changed = false;\n for (var i = 0; i < keys.length; i++)\n changed = nu.set(keys[i], undefined, false) || changed;\n return returnThisIfUnchanged && !changed ? this : nu;\n }\n /** Returns a copy of the tree with the specified key removed.\n * @param returnThisIfUnchanged if true, returns this if the key didn't exist.\n * Performance note: due to the architecture of this class, node(s) leading\n * to where the key would have been stored are cloned even when the key\n * turns out not to exist and the collection is unchanged.\n */\n without(key, returnThisIfUnchanged) {\n return this.withoutRange(key, key, true, returnThisIfUnchanged);\n }\n /** Returns a copy of the tree with the specified keys removed.\n * @param returnThisIfUnchanged if true, returns this if none of the keys\n * existed. Performance note: due to the architecture of this class,\n * node(s) leading to where the key would have been stored are cloned\n * even when the key turns out not to exist.\n */\n withoutKeys(keys, returnThisIfUnchanged) {\n let nu = this.clone();\n return nu.deleteKeys(keys) || !returnThisIfUnchanged ? nu : this;\n }\n /** Returns a copy of the tree with the specified range of keys removed. */\n withoutRange(low, high, includeHigh, returnThisIfUnchanged) {\n let nu = this.clone();\n if (nu.deleteRange(low, high, includeHigh) === 0 && returnThisIfUnchanged)\n return this;\n return nu;\n }\n /** Returns a copy of the tree with pairs removed whenever the callback\n * function returns false. `where()` is a synonym for this method. */\n filter(callback, returnThisIfUnchanged) {\n var nu = this.greedyClone();\n var del;\n nu.editAll((k, v, i) => {\n if (!callback(k, v, i))\n return del = Delete;\n });\n if (!del && returnThisIfUnchanged)\n return this;\n return nu;\n }\n /** Returns a copy of the tree with all values altered by a callback function. */\n mapValues(callback) {\n var tmp = {};\n var nu = this.greedyClone();\n nu.editAll((k, v, i) => {\n return tmp.value = callback(v, k, i), tmp;\n });\n return nu;\n }\n reduce(callback, initialValue) {\n let i = 0, p = initialValue;\n var it = this.entries(this.minKey(), ReusedArray), next;\n while (!(next = it.next()).done)\n p = callback(p, next.value, i++, this);\n return p;\n }\n /////////////////////////////////////////////////////////////////////////////\n // Iterator methods /////////////////////////////////////////////////////////\n /** Returns an iterator that provides items in order (ascending order if\n * the collection's comparator uses ascending order, as is the default.)\n * @param lowestKey First key to be iterated, or undefined to start at\n * minKey(). If the specified key doesn't exist then iteration\n * starts at the next higher key (according to the comparator).\n * @param reusedArray Optional array used repeatedly to store key-value\n * pairs, to avoid creating a new array on every iteration.\n */\n entries(lowestKey, reusedArray) {\n var info = this.findPath(lowestKey);\n if (info === undefined)\n return iterator();\n var { nodequeue, nodeindex, leaf } = info;\n var state = reusedArray !== undefined ? 1 : 0;\n var i = (lowestKey === undefined ? -1 : leaf.indexOf(lowestKey, 0, this._compare) - 1);\n return iterator(() => {\n jump: for (;;) {\n switch (state) {\n case 0:\n if (++i < leaf.keys.length)\n return { done: false, value: [leaf.keys[i], leaf.values[i]] };\n state = 2;\n continue;\n case 1:\n if (++i < leaf.keys.length) {\n reusedArray[0] = leaf.keys[i], reusedArray[1] = leaf.values[i];\n return { done: false, value: reusedArray };\n }\n state = 2;\n case 2:\n // Advance to the next leaf node\n for (var level = -1;;) {\n if (++level >= nodequeue.length) {\n state = 3;\n continue jump;\n }\n if (++nodeindex[level] < nodequeue[level].length)\n break;\n }\n for (; level > 0; level--) {\n nodequeue[level - 1] = nodequeue[level][nodeindex[level]].children;\n nodeindex[level - 1] = 0;\n }\n leaf = nodequeue[0][nodeindex[0]];\n i = -1;\n state = reusedArray !== undefined ? 1 : 0;\n continue;\n case 3:\n return { done: true, value: undefined };\n }\n }\n });\n }\n /** Returns an iterator that provides items in reversed order.\n * @param highestKey Key at which to start iterating, or undefined to\n * start at maxKey(). If the specified key doesn't exist then iteration\n * starts at the next lower key (according to the comparator).\n * @param reusedArray Optional array used repeatedly to store key-value\n * pairs, to avoid creating a new array on every iteration.\n * @param skipHighest Iff this flag is true and the highestKey exists in the\n * collection, the pair matching highestKey is skipped, not iterated.\n */\n entriesReversed(highestKey, reusedArray, skipHighest) {\n if (highestKey === undefined) {\n highestKey = this.maxKey();\n skipHighest = undefined;\n if (highestKey === undefined)\n return iterator(); // collection is empty\n }\n var { nodequeue, nodeindex, leaf } = this.findPath(highestKey) || this.findPath(this.maxKey());\n check(!nodequeue[0] || leaf === nodequeue[0][nodeindex[0]], \"wat!\");\n var i = leaf.indexOf(highestKey, 0, this._compare);\n if (!skipHighest && i < leaf.keys.length && this._compare(leaf.keys[i], highestKey) <= 0)\n i++;\n var state = reusedArray !== undefined ? 1 : 0;\n return iterator(() => {\n jump: for (;;) {\n switch (state) {\n case 0:\n if (--i >= 0)\n return { done: false, value: [leaf.keys[i], leaf.values[i]] };\n state = 2;\n continue;\n case 1:\n if (--i >= 0) {\n reusedArray[0] = leaf.keys[i], reusedArray[1] = leaf.values[i];\n return { done: false, value: reusedArray };\n }\n state = 2;\n case 2:\n // Advance to the next leaf node\n for (var level = -1;;) {\n if (++level >= nodequeue.length) {\n state = 3;\n continue jump;\n }\n if (--nodeindex[level] >= 0)\n break;\n }\n for (; level > 0; level--) {\n nodequeue[level - 1] = nodequeue[level][nodeindex[level]].children;\n nodeindex[level - 1] = nodequeue[level - 1].length - 1;\n }\n leaf = nodequeue[0][nodeindex[0]];\n i = leaf.keys.length;\n state = reusedArray !== undefined ? 1 : 0;\n continue;\n case 3:\n return { done: true, value: undefined };\n }\n }\n });\n }\n /* Used by entries() and entriesReversed() to prepare to start iterating.\n * It develops a \"node queue\" for each non-leaf level of the tree.\n * Levels are numbered \"bottom-up\" so that level 0 is a list of leaf\n * nodes from a low-level non-leaf node. The queue at a given level L\n * consists of nodequeue[L] which is the children of a BNodeInternal,\n * and nodeindex[L], the current index within that child list, such\n * such that nodequeue[L-1] === nodequeue[L][nodeindex[L]].children.\n * (However inside this function the order is reversed.)\n */\n findPath(key) {\n var nextnode = this._root;\n var nodequeue, nodeindex;\n if (nextnode.isLeaf) {\n nodequeue = EmptyArray, nodeindex = EmptyArray; // avoid allocations\n }\n else {\n nodequeue = [], nodeindex = [];\n for (var d = 0; !nextnode.isLeaf; d++) {\n nodequeue[d] = nextnode.children;\n nodeindex[d] = key === undefined ? 0 : nextnode.indexOf(key, 0, this._compare);\n if (nodeindex[d] >= nodequeue[d].length)\n return; // first key > maxKey()\n nextnode = nodequeue[d][nodeindex[d]];\n }\n nodequeue.reverse();\n nodeindex.reverse();\n }\n return { nodequeue, nodeindex, leaf: nextnode };\n }\n /**\n * Computes the differences between `this` and `other`.\n * For efficiency, the diff is returned via invocations of supplied handlers.\n * The computation is optimized for the case in which the two trees have large amounts\n * of shared data (obtained by calling the `clone` or `with` APIs) and will avoid\n * any iteration of shared state.\n * The handlers can cause computation to early exit by returning {break: R}.\n * Neither of the collections should be changed during the comparison process (in your callbacks), as this method assumes they will not be mutated.\n * @param other The tree to compute a diff against.\n * @param onlyThis Callback invoked for all keys only present in `this`.\n * @param onlyOther Callback invoked for all keys only present in `other`.\n * @param different Callback invoked for all keys with differing values.\n */\n diffAgainst(other, onlyThis, onlyOther, different) {\n if (other._compare !== this._compare) {\n throw new Error(\"Tree comparators are not the same.\");\n }\n if (this.isEmpty || other.isEmpty) {\n if (this.isEmpty && other.isEmpty)\n return undefined;\n // If one tree is empty, everything will be an onlyThis/onlyOther.\n if (this.isEmpty)\n return onlyOther === undefined ? undefined : BTree.stepToEnd(BTree.makeDiffCursor(other), onlyOther);\n return onlyThis === undefined ? undefined : BTree.stepToEnd(BTree.makeDiffCursor(this), onlyThis);\n }\n // Cursor-based diff algorithm is as follows:\n // - Until neither cursor has navigated to the end of the tree, do the following:\n // - If the `this` cursor is \"behind\" the `other` cursor (strictly <, via compare), advance it.\n // - Otherwise, advance the `other` cursor.\n // - Any time a cursor is stepped, perform the following:\n // - If either cursor points to a key/value pair:\n // - If thisCursor === otherCursor and the values differ, it is a Different.\n // - If thisCursor > otherCursor and otherCursor is at a key/value pair, it is an OnlyOther.\n // - If thisCursor < otherCursor and thisCursor is at a key/value pair, it is an OnlyThis as long as the most recent\n // cursor step was *not* otherCursor advancing from a tie. The extra condition avoids erroneous OnlyOther calls\n // that would occur due to otherCursor being the \"leader\".\n // - Otherwise, if both cursors point to nodes, compare them. If they are equal by reference (shared), skip\n // both cursors to the next node in the walk.\n // - Once one cursor has finished stepping, any remaining steps (if any) are taken and key/value pairs are logged\n // as OnlyOther (if otherCursor is stepping) or OnlyThis (if thisCursor is stepping).\n // This algorithm gives the critical guarantee that all locations (both nodes and key/value pairs) in both trees that\n // are identical by value (and possibly by reference) will be visited *at the same time* by the cursors.\n // This removes the possibility of emitting incorrect diffs, as well as allowing for skipping shared nodes.\n const { _compare } = this;\n const thisCursor = BTree.makeDiffCursor(this);\n const otherCursor = BTree.makeDiffCursor(other);\n // It doesn't matter how thisSteppedLast is initialized.\n // Step order is only used when either cursor is at a leaf, and cursors always start at a node.\n let thisSuccess = true, otherSuccess = true, prevCursorOrder = BTree.compare(thisCursor, otherCursor, _compare);\n while (thisSuccess && otherSuccess) {\n const cursorOrder = BTree.compare(thisCursor, otherCursor, _compare);\n const { leaf: thisLeaf, internalSpine: thisInternalSpine, levelIndices: thisLevelIndices } = thisCursor;\n const { leaf: otherLeaf, internalSpine: otherInternalSpine, levelIndices: otherLevelIndices } = otherCursor;\n if (thisLeaf || otherLeaf) {\n // If the cursors were at the same location last step, then there is no work to be done.\n if (prevCursorOrder !== 0) {\n if (cursorOrder === 0) {\n if (thisLeaf && otherLeaf && different) {\n // Equal keys, check for modifications\n const valThis = thisLeaf.values[thisLevelIndices[thisLevelIndices.length - 1]];\n const valOther = otherLeaf.values[otherLevelIndices[otherLevelIndices.length - 1]];\n if (!Object.is(valThis, valOther)) {\n const result = different(thisCursor.currentKey, valThis, valOther);\n if (result && result.break)\n return result.break;\n }\n }\n }\n else if (cursorOrder > 0) {\n // If this is the case, we know that either:\n // 1. otherCursor stepped last from a starting position that trailed thisCursor, and is still behind, or\n // 2. thisCursor stepped last and leapfrogged otherCursor\n // Either of these cases is an \"only other\"\n if (otherLeaf && onlyOther) {\n const otherVal = otherLeaf.values[otherLevelIndices[otherLevelIndices.length - 1]];\n const result = onlyOther(otherCursor.currentKey, otherVal);\n if (result && result.break)\n return result.break;\n }\n }\n else if (onlyThis) {\n if (thisLeaf && prevCursorOrder !== 0) {\n const valThis = thisLeaf.values[thisLevelIndices[thisLevelIndices.length - 1]];\n const result = onlyThis(thisCursor.currentKey, valThis);\n if (result && result.break)\n return result.break;\n }\n }\n }\n }\n else if (!thisLeaf && !otherLeaf && cursorOrder === 0) {\n const lastThis = thisInternalSpine.length - 1;\n const lastOther = otherInternalSpine.length - 1;\n const nodeThis = thisInternalSpine[lastThis][thisLevelIndices[lastThis]];\n const nodeOther = otherInternalSpine[lastOther][otherLevelIndices[lastOther]];\n if (nodeOther === nodeThis) {\n prevCursorOrder = 0;\n thisSuccess = BTree.step(thisCursor, true);\n otherSuccess = BTree.step(otherCursor, true);\n continue;\n }\n }\n prevCursorOrder = cursorOrder;\n if (cursorOrder < 0) {\n thisSuccess = BTree.step(thisCursor);\n }\n else {\n otherSuccess = BTree.step(otherCursor);\n }\n }\n if (thisSuccess && onlyThis)\n return BTree.finishCursorWalk(thisCursor, otherCursor, _compare, onlyThis);\n if (otherSuccess && onlyOther)\n return BTree.finishCursorWalk(otherCursor, thisCursor, _compare, onlyOther);\n }\n ///////////////////////////////////////////////////////////////////////////\n // Helper methods for diffAgainst /////////////////////////////////////////\n static finishCursorWalk(cursor, cursorFinished, compareKeys, callback) {\n const compared = BTree.compare(cursor, cursorFinished, compareKeys);\n if (compared === 0) {\n if (!BTree.step(cursor))\n return undefined;\n }\n else if (compared < 0) {\n check(false, \"cursor walk terminated early\");\n }\n return BTree.stepToEnd(cursor, callback);\n }\n static stepToEnd(cursor, callback) {\n let canStep = true;\n while (canStep) {\n const { leaf, levelIndices, currentKey } = cursor;\n if (leaf) {\n const value = leaf.values[levelIndices[levelIndices.length - 1]];\n const result = callback(currentKey, value);\n if (result && result.break)\n return result.break;\n }\n canStep = BTree.step(cursor);\n }\n return undefined;\n }\n static makeDiffCursor(tree) {\n const { _root, height } = tree;\n return { height: height, internalSpine: [[_root]], levelIndices: [0], leaf: undefined, currentKey: _root.maxKey() };\n }\n /**\n * Advances the cursor to the next step in the walk of its tree.\n * Cursors are walked backwards in sort order, as this allows them to leverage maxKey() in order to be compared in O(1).\n * @param cursor The cursor to step\n * @param stepToNode If true, the cursor will be advanced to the next node (skipping values)\n * @returns true if the step was completed and false if the step would have caused the cursor to move beyond the end of the tree.\n */\n static step(cursor, stepToNode) {\n const { internalSpine, levelIndices, leaf } = cursor;\n if (stepToNode === true || leaf) {\n const levelsLength = levelIndices.length;\n // Step to the next node only if:\n // - We are explicitly directed to via stepToNode, or\n // - There are no key/value pairs left to step to in this leaf\n if (stepToNode === true || levelIndices[levelsLength - 1] === 0) {\n const spineLength = internalSpine.length;\n // Root is leaf\n if (spineLength === 0)\n return false;\n // Walk back up the tree until we find a new subtree to descend into\n const nodeLevelIndex = spineLength - 1;\n let levelIndexWalkBack = nodeLevelIndex;\n while (levelIndexWalkBack >= 0) {\n if (levelIndices[levelIndexWalkBack] > 0) {\n if (levelIndexWalkBack < levelsLength - 1) {\n // Remove leaf state from cursor\n cursor.leaf = undefined;\n levelIndices.pop();\n }\n // If we walked upwards past any internal node, slice them out\n if (levelIndexWalkBack < nodeLevelIndex)\n cursor.internalSpine = internalSpine.slice(0, levelIndexWalkBack + 1);\n // Move to new internal node\n cursor.currentKey = internalSpine[levelIndexWalkBack][--levelIndices[levelIndexWalkBack]].maxKey();\n return true;\n }\n levelIndexWalkBack--;\n }\n // Cursor is in the far left leaf of the tree, no more nodes to enumerate\n return false;\n }\n else {\n // Move to new leaf value\n const valueIndex = --levelIndices[levelsLength - 1];\n cursor.currentKey = leaf.keys[valueIndex];\n return true;\n }\n }\n else { // Cursor does not point to a value in a leaf, so move downwards\n const nextLevel = internalSpine.length;\n const currentLevel = nextLevel - 1;\n const node = internalSpine[currentLevel][levelIndices[currentLevel]];\n if (node.isLeaf) {\n // Entering into a leaf. Set the cursor to point at the last key/value pair.\n cursor.leaf = node;\n const valueIndex = levelIndices[nextLevel] = node.values.length - 1;\n cursor.currentKey = node.keys[valueIndex];\n }\n else {\n const children = node.children;\n internalSpine[nextLevel] = children;\n const childIndex = children.length - 1;\n levelIndices[nextLevel] = childIndex;\n cursor.currentKey = children[childIndex].maxKey();\n }\n return true;\n }\n }\n /**\n * Compares the two cursors. Returns a value indicating which cursor is ahead in a walk.\n * Note that cursors are advanced in reverse sorting order.\n */\n static compare(cursorA, cursorB, compareKeys) {\n const { height: heightA, currentKey: currentKeyA, levelIndices: levelIndicesA } = cursorA;\n const { height: heightB, currentKey: currentKeyB, levelIndices: levelIndicesB } = cursorB;\n // Reverse the comparison order, as cursors are advanced in reverse sorting order\n const keyComparison = compareKeys(currentKeyB, currentKeyA);\n if (keyComparison !== 0) {\n return keyComparison;\n }\n // Normalize depth values relative to the shortest tree.\n // This ensures that concurrent cursor walks of trees of differing heights can reliably land on shared nodes at the same time.\n // To accomplish this, a cursor that is on an internal node at depth D1 with maxKey X is considered \"behind\" a cursor on an\n // internal node at depth D2 with maxKey Y, when D1 < D2. Thus, always walking the cursor that is \"behind\" will allow the cursor\n // at shallower depth (but equal maxKey) to \"catch up\" and land on shared nodes.\n const heightMin = heightA < heightB ? heightA : heightB;\n const depthANormalized = levelIndicesA.length - (heightA - heightMin);\n const depthBNormalized = levelIndicesB.length - (heightB - heightMin);\n return depthANormalized - depthBNormalized;\n }\n // End of helper methods for diffAgainst //////////////////////////////////\n ///////////////////////////////////////////////////////////////////////////\n /** Returns a new iterator for iterating the keys of each pair in ascending order.\n * @param firstKey: Minimum key to include in the output. */\n keys(firstKey) {\n var it = this.entries(firstKey, ReusedArray);\n return iterator(() => {\n var n = it.next();\n if (n.value)\n n.value = n.value[0];\n return n;\n });\n }\n /** Returns a new iterator for iterating the values of each pair in order by key.\n * @param firstKey: Minimum key whose associated value is included in the output. */\n values(firstKey) {\n var it = this.entries(firstKey, ReusedArray);\n return iterator(() => {\n var n = it.next();\n if (n.value)\n n.value = n.value[1];\n return n;\n });\n }\n /////////////////////////////////////////////////////////////////////////////\n // Additional methods ///////////////////////////////////////////////////////\n /** Returns the maximum number of children/values before nodes will split. */\n get maxNodeSize() {\n return this._maxNodeSize;\n }\n /** Gets the lowest key in the tree. Complexity: O(log size) */\n minKey() { return this._root.minKey(); }\n /** Gets the highest key in the tree. Complexity: O(1) */\n maxKey() { return this._root.maxKey(); }\n /** Quickly clones the tree by marking the root node as shared.\n * Both copies remain editable. When you modify either copy, any\n * nodes that are shared (or potentially shared) between the two\n * copies are cloned so that the changes do not affect other copies.\n * This is known as copy-on-write behavior, or \"lazy copying\". */\n clone() {\n this._root.isShared = true;\n var result = new BTree(undefined, this._compare, this._maxNodeSize);\n result._root = this._root;\n result._size = this._size;\n return result;\n }\n /** Performs a greedy clone, immediately duplicating any nodes that are\n * not currently marked as shared, in order to avoid marking any\n * additional nodes as shared.\n * @param force Clone all nodes, even shared ones.\n */\n greedyClone(force) {\n var result = new BTree(undefined, this._compare, this._maxNodeSize);\n result._root = this._root.greedyClone(force);\n result._size = this._size;\n return result;\n }\n /** Gets an array filled with the contents of the tree, sorted by key */\n toArray(maxLength = 0x7FFFFFFF) {\n let min = this.minKey(), max = this.maxKey();\n if (min !== undefined)\n return this.getRange(min, max, true, maxLength);\n return [];\n }\n /** Gets an array of all keys, sorted */\n keysArray() {\n var results = [];\n this._root.forRange(this.minKey(), this.maxKey(), true, false, this, 0, (k, v) => { results.push(k); });\n return results;\n }\n /** Gets an array of all values, sorted by key */\n valuesArray() {\n var results = [];\n this._root.forRange(this.minKey(), this.maxKey(), true, false, this, 0, (k, v) => { results.push(v); });\n return results;\n }\n /** Gets a string representing the tree's data based on toArray(). */\n toString() {\n return this.toArray().toString();\n }\n /** Stores a key-value pair only if the key doesn't already exist in the tree.\n * @returns true if a new key was added\n */\n setIfNotPresent(key, value) {\n return this.set(key, value, false);\n }\n /** Returns the next pair whose key is larger than the specified key (or undefined if there is none).\n * If key === undefined, this function returns the lowest pair.\n * @param key The key to search for.\n * @param reusedArray Optional array used repeatedly to store key-value pairs, to\n * avoid creating a new array on every iteration.\n */\n nextHigherPair(key, reusedArray) {\n reusedArray = reusedArray || [];\n if (key === undefined) {\n return this._root.minPair(reusedArray);\n }\n return this._root.getPairOrNextHigher(key, this._compare, false, reusedArray);\n }\n /** Returns the next key larger than the specified key, or undefined if there is none.\n * Also, nextHigherKey(undefined) returns the lowest key.\n */\n nextHigherKey(key) {\n var p = this.nextHigherPair(key, ReusedArray);\n return p && p[0];\n }\n /** Returns the next pair whose key is smaller than the specified key (or undefined if there is none).\n * If key === undefined, this function returns the highest pair.\n * @param key The key to search for.\n * @param reusedArray Optional array used repeatedly to store key-value pairs, to\n * avoid creating a new array each time you call this method.\n */\n nextLowerPair(key, reusedArray) {\n reusedArray = reusedArray || [];\n if (key === undefined) {\n return this._root.maxPair(reusedArray);\n }\n return this._root.getPairOrNextLower(key, this._compare, false, reusedArray);\n }\n /** Returns the next key smaller than the specified key, or undefined if there is none.\n * Also, nextLowerKey(undefined) returns the highest key.\n */\n nextLowerKey(key) {\n var p = this.nextLowerPair(key, ReusedArray);\n return p && p[0];\n }\n /** Returns the key-value pair associated with the supplied key if it exists\n * or the pair associated with the next lower pair otherwise. If there is no\n * next lower pair, undefined is returned.\n * @param key The key to search for.\n * @param reusedArray Optional array used repeatedly to store key-value pairs, to\n * avoid creating a new array each time you call this method.\n * */\n getPairOrNextLower(key, reusedArray) {\n return this._root.getPairOrNextLower(key, this._compare, true, reusedArray || []);\n }\n /** Returns the key-value pair associated with the supplied key if it exists\n * or the pair associated with the next lower pair otherwise. If there is no\n * next lower pair, undefined is returned.\n * @param key The key to search for.\n * @param reusedArray Optional array used repeatedly to store key-value pairs, to\n * avoid creating a new array each time you call this method.\n * */\n getPairOrNextHigher(key, reusedArray) {\n return this._root.getPairOrNextHigher(key, this._compare, true, reusedArray || []);\n }\n /** Edits the value associated with a key in the tree, if it already exists.\n * @returns true if the key existed, false if not.\n */\n changeIfPresent(key, value) {\n return this.editRange(key, key, true, (k, v) => ({ value })) !== 0;\n }\n /**\n * Builds an array of pairs from the specified range of keys, sorted by key.\n * Each returned pair is also an array: pair[0] is the key, pair[1] is the value.\n * @param low The first key in the array will be greater than or equal to `low`.\n * @param high This method returns when a key larger than this is reached.\n * @param includeHigh If the `high` key is present, its pair will be included\n * in the output if and only if this parameter is true. Note: if the\n * `low` key is present, it is always included in the output.\n * @param maxLength Length limit. getRange will stop scanning the tree when\n * the array reaches this size.\n * @description Computational complexity: O(result.length + log size)\n */\n getRange(low, high, includeHigh, maxLength = 0x3FFFFFF) {\n var results = [];\n this._root.forRange(low, high, includeHigh, false, this, 0, (k, v) => {\n results.push([k, v]);\n return results.length > maxLength ? Break : undefined;\n });\n return results;\n }\n /** Adds all pairs from a list of key-value pairs.\n * @param pairs Pairs to add to this tree. If there are duplicate keys,\n * later pairs currently overwrite earlier ones (e.g. [[0,1],[0,7]]\n * associates 0 with 7.)\n * @param overwrite Whether to overwrite pairs that already exist (if false,\n * pairs[i] is ignored when the key pairs[i][0] already exists.)\n * @returns The number of pairs added to the collection.\n * @description Computational complexity: O(pairs.length * log(size + pairs.length))\n */\n setPairs(pairs, overwrite) {\n var added = 0;\n for (var i = 0; i < pairs.length; i++)\n if (this.set(pairs[i][0], pairs[i][1], overwrite))\n added++;\n return added;\n }\n /**\n * Scans the specified range of keys, in ascending order by key.\n * Note: the callback `onFound` must not insert or remove items in the\n * collection. Doing so may cause incorrect data to be sent to the\n * callback afterward.\n * @param low The first key scanned will be greater than or equal to `low`.\n * @param high Scanning stops when a key larger than this is reached.\n * @param includeHigh If the `high` key is present, `onFound` is called for\n * that final pair if and only if this parameter is true.\n * @param onFound A function that is called for each key-value pair. This\n * function can return {break:R} to stop early with result R.\n * @param initialCounter Initial third argument of onFound. This value\n * increases by one each time `onFound` is called. Default: 0\n * @returns The number of values found, or R if the callback returned\n * `{break:R}` to stop early.\n * @description Computational complexity: O(number of items scanned + log size)\n */\n forRange(low, high, includeHigh, onFound, initialCounter) {\n var r = this._root.forRange(low, high, includeHigh, false, this, initialCounter || 0, onFound);\n return typeof r === \"number\" ? r : r.break;\n }\n /**\n * Scans and potentially modifies values for a subsequence of keys.\n * Note: the callback `onFound` should ideally be a pure function.\n * Specfically, it must not insert items, call clone(), or change\n * the collection except via return value; out-of-band editing may\n * cause an exception or may cause incorrect data to be sent to\n * the callback (duplicate or missed items). It must not cause a\n * clone() of the collection, otherwise the clone could be modified\n * by changes requested by the callback.\n * @param low The first key scanned will be greater than or equal to `low`.\n * @param high Scanning stops when a key larger than this is reached.\n * @param includeHigh If the `high` key is present, `onFound` is called for\n * that final pair if and only if this parameter is true.\n * @param onFound A function that is called for each key-value pair. This\n * function can return `{value:v}` to change the value associated\n * with the current key, `{delete:true}` to delete the current pair,\n * `{break:R}` to stop early with result R, or it can return nothing\n * (undefined or {}) to cause no effect and continue iterating.\n * `{break:R}` can be combined with one of the other two commands.\n * The third argument `counter` is the number of items iterated\n * previously; it equals 0 when `onFound` is called the first time.\n * @returns The number of values scanned, or R if the callback returned\n * `{break:R}` to stop early.\n * @description\n * Computational complexity: O(number of items scanned + log size)\n * Note: if the tree has been cloned with clone(), any shared\n * nodes are copied before `onFound` is called. This takes O(n) time\n * where n is proportional to the amount of shared data scanned.\n */\n editRange(low, high, includeHigh, onFound, initialCounter) {\n var root = this._root;\n if (root.isShared)\n this._root = root = root.clone();\n try {\n var r = root.forRange(low, high, includeHigh, true, this, initialCounter || 0, onFound);\n return typeof r === \"number\" ? r : r.break;\n }\n finally {\n let isShared;\n while (root.keys.length <= 1 && !root.isLeaf) {\n isShared || (isShared = root.isShared);\n this._root = root = root.keys.length === 0 ? EmptyLeaf :\n root.children[0];\n }\n // If any ancestor of the new root was shared, the new root must also be shared\n if (isShared) {\n root.isShared = true;\n }\n }\n }\n /** Same as `editRange` except that the callback is called for all pairs. */\n editAll(onFound, initialCounter) {\n return this.editRange(this.minKey(), this.maxKey(), true, onFound, initialCounter);\n }\n /**\n * Removes a range of key-value pairs from the B+ tree.\n * @param low The first key scanned will be greater than or equal to `low`.\n * @param high Scanning stops when a key larger than this is reached.\n * @param includeHigh Specifies whether the `high` key, if present, is deleted.\n * @returns The number of key-value pairs that were deleted.\n * @description Computational complexity: O(log size + number of items deleted)\n */\n deleteRange(low, high, includeHigh) {\n return this.editRange(low, high, includeHigh, DeleteRange);\n }\n /** Deletes a series of keys from the collection. */\n deleteKeys(keys) {\n for (var i = 0, r = 0; i < keys.length; i++)\n if (this.delete(keys[i]))\n r++;\n return r;\n }\n /** Gets the height of the tree: the number of internal nodes between the\n * BTree object and its leaf nodes (zero if there are no internal nodes). */\n get height() {\n let node = this._root;\n let height = -1;\n while (node) {\n height++;\n node = node.isLeaf ? undefined : node.children[0];\n }\n return height;\n }\n /** Makes the object read-only to ensure it is not accidentally modified.\n * Freezing does not have to be permanent; unfreeze() reverses the effect.\n * This is accomplished by replacing mutator functions with a function\n * that throws an Error. Compared to using a property (e.g. this.isFrozen)\n * this implementation gives better performance in non-frozen BTrees.\n */\n freeze() {\n var t = this;\n // Note: all other mutators ultimately call set() or editRange()\n // so we don't need to override those others.\n t.clear = t.set = t.editRange = function () {\n throw new Error(\"Attempted to modify a frozen BTree\");\n };\n }\n /** Ensures mutations are allowed, reversing the effect of freeze(). */\n unfreeze() {\n // @ts-ignore \"The operand of a 'delete' operator must be optional.\"\n // (wrong: delete does not affect the prototype.)\n delete this.clear;\n // @ts-ignore\n delete this.set;\n // @ts-ignore\n delete this.editRange;\n }\n /** Returns true if the tree appears to be frozen. */\n get isFrozen() {\n return this.hasOwnProperty('editRange');\n }\n /** Scans the tree for signs of serious bugs (e.g. this.size doesn't match\n * number of elements, internal nodes not caching max element properly...)\n * Computational complexity: O(number of nodes), i.e. O(size). This method\n * skips the most expensive test - whether all keys are sorted - but it\n * does check that maxKey() of the children of internal nodes are sorted. */\n checkValid() {\n var size = this._root.checkValid(0, this, 0);\n check(size === this.size, \"size mismatch: counted \", size, \"but stored\", this.size);\n }\n}\nexports.BTree = BTree;\n/** A TypeScript helper function that simply returns its argument, typed as\n * `ISortedSet` if the BTree implements it, as it does if `V extends undefined`.\n * If `V` cannot be `undefined`, it returns `unknown` instead. Or at least, that\n * was the intention, but TypeScript is acting weird and may return `ISortedSet`\n * even if `V` can't be `undefined` (discussion: btree-typescript issue #14) */\nfunction asSet(btree) {\n return btree;\n}\nexports.asSet = asSet;\nif (Symbol && Symbol.iterator) // iterator is equivalent to entries()\n BTree.prototype[Symbol.iterator] = BTree.prototype.entries;\nBTree.prototype.where = BTree.prototype.filter;\nBTree.prototype.setRange = BTree.prototype.setPairs;\nBTree.prototype.add = BTree.prototype.set; // for compatibility with ISetSink\nfunction iterator(next = (() => ({ done: true, value: undefined }))) {\n var result = { next };\n if (Symbol && Symbol.iterator)\n result[Symbol.iterator] = function () { return this; };\n return result;\n}\n/** Leaf node / base class. **************************************************/\nclass BNode {\n get isLeaf() { return this.children === undefined; }\n constructor(keys = [], values) {\n this.keys = keys;\n this.values = values || undefVals;\n this.isShared = undefined;\n }\n ///////////////////////////////////////////////////////////////////////////\n // Shared methods /////////////////////////////////////////////////////////\n maxKey() {\n return this.keys[this.keys.length - 1];\n }\n // If key not found, returns i^failXor where i is the insertion index.\n // Callers that don't care whether there was a match will set failXor=0.\n indexOf(key, failXor, cmp) {\n const keys = this.keys;\n var lo = 0, hi = keys.length, mid = hi >> 1;\n while (lo < hi) {\n var c = cmp(keys[mid], key);\n if (c < 0)\n lo = mid + 1;\n else if (c > 0) // key < keys[mid]\n hi = mid;\n else if (c === 0)\n return mid;\n else {\n // c is NaN or otherwise invalid\n if (key === key) // at least the search key is not NaN\n return keys.length;\n else\n throw new Error(\"BTree: NaN was used as a key\");\n }\n mid = (lo + hi) >> 1;\n }\n return mid ^ failXor;\n // Unrolled version: benchmarks show same speed, not worth using\n /*var i = 1, c: number = 0, sum = 0;\n if (keys.length >= 4) {\n i = 3;\n if (keys.length >= 8) {\n i = 7;\n if (keys.length >= 16) {\n i = 15;\n if (keys.length >= 32) {\n i = 31;\n if (keys.length >= 64) {\n i = 127;\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 64 : -64;\n sum += c;\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 32 : -32;\n sum += c;\n }\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 16 : -16;\n sum += c;\n }\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 8 : -8;\n sum += c;\n }\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 4 : -4;\n sum += c;\n }\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 2 : -2;\n sum += c;\n }\n i += (c = i < keys.length ? cmp(keys[i], key) : 1) < 0 ? 1 : -1;\n c = i < keys.length ? cmp(keys[i], key) : 1;\n sum += c;\n if (c < 0) {\n ++i;\n c = i < keys.length ? cmp(keys[i], key) : 1;\n sum += c;\n }\n if (sum !== sum) {\n if (key === key) // at least the search key is not NaN\n return keys.length ^ failXor;\n else\n throw new Error(\"BTree: NaN was used as a key\");\n }\n return c === 0 ? i : i ^ failXor;*/\n }\n /////////////////////////////////////////////////////////////////////////////\n // Leaf Node: misc //////////////////////////////////////////////////////////\n minKey() {\n return this.keys[0];\n }\n minPair(reusedArray) {\n if (this.keys.length === 0)\n return undefined;\n reusedArray[0] = this.keys[0];\n reusedArray[1] = this.values[0];\n return reusedArray;\n }\n maxPair(reusedArray) {\n if (this.keys.length === 0)\n return undefined;\n const lastIndex = this.keys.length - 1;\n reusedArray[0] = this.keys[lastIndex];\n reusedArray[1] = this.values[lastIndex];\n return reusedArray;\n }\n clone() {\n var v = this.values;\n return new BNode(this.keys.slice(0), v === undefVals ? v : v.slice(0));\n }\n greedyClone(force) {\n return this.isShared && !force ? this : this.clone();\n }\n get(key, defaultValue, tree) {\n var i = this.indexOf(key, -1, tree._compare);\n return i < 0 ? defaultValue : this.values[i];\n }\n getPairOrNextLower(key, compare, inclusive, reusedArray) {\n var i = this.indexOf(key, -1, compare);\n const indexOrLower = i < 0 ? ~i - 1 : (inclusive ? i : i - 1);\n if (indexOrLower >= 0) {\n reusedArray[0] = this.keys[indexOrLower];\n reusedArray[1] = this.values[indexOrLower];\n return reusedArray;\n }\n return undefined;\n }\n getPairOrNextHigher(key, compare, inclusive, reusedArray) {\n var i = this.indexOf(key, -1, compare);\n const indexOrLower = i < 0 ? ~i : (inclusive ? i : i + 1);\n const keys = this.keys;\n if (indexOrLower < keys.length) {\n reusedArray[0] = keys[indexOrLower];\n reusedArray[1] = this.values[indexOrLower];\n return reusedArray;\n }\n return undefined;\n }\n checkValid(depth, tree, baseIndex) {\n var kL = this.keys.length, vL = this.values.length;\n check(this.values === undefVals ? kL <= vL : kL === vL, \"keys/values length mismatch: depth\", depth, \"with lengths\", kL, vL, \"and baseIndex\", baseIndex);\n // Note: we don't check for \"node too small\" because sometimes a node\n // can legitimately have size 1. This occurs if there is a batch\n // deletion, leaving a node of size 1, and the siblings are full so\n // it can't be merged with adjacent nodes. However, the parent will\n // verify that the average node size is at least half of the maximum.\n check(depth == 0 || kL > 0, \"empty leaf at depth\", depth, \"and baseIndex\", baseIndex);\n return kL;\n }\n /////////////////////////////////////////////////////////////////////////////\n // Leaf Node: set & node splitting //////////////////////////////////////////\n set(key, value, overwrite, tree) {\n var i = this.indexOf(key, -1, tree._compare);\n if (i < 0) {\n // key does not exist yet\n i = ~i;\n tree._size++;\n if (this.keys.length < tree._maxNodeSize) {\n return this.insertInLeaf(i, key, value, tree);\n }\n else {\n // This leaf node is full and must split\n var newRightSibling = this.splitOffRightSide(), target = this;\n if (i > this.keys.length) {\n i -= this.keys.length;\n target = newRightSibling;\n }\n target.insertInLeaf(i, key, value, tree);\n return newRightSibling;\n }\n }\n else {\n // Key already exists\n if (overwrite !== false) {\n if (value !== undefined)\n this.reifyValues();\n // usually this is a no-op, but some users may wish to edit the key\n this.keys[i] = key;\n this.values[i] = value;\n }\n return false;\n }\n }\n reifyValues() {\n if (this.values === undefVals)\n return this.values = this.values.slice(0, this.keys.length);\n return this.values;\n }\n insertInLeaf(i, key, value, tree) {\n this.keys.splice(i, 0, key);\n if (this.values === undefVals) {\n while (undefVals.length < tree._maxNodeSize)\n undefVals.push(undefined);\n if (value === undefined) {\n return true;\n }\n else {\n this.values = undefVals.slice(0, this.keys.length - 1);\n }\n }\n this.values.splice(i, 0, value);\n return true;\n }\n takeFromRight(rhs) {\n // Reminder: parent node must update its copy of key for this node\n // assert: neither node is shared\n // assert rhs.keys.length > (maxNodeSize/2 && this.keys.length (maxNodeSize/2 && this.keys.length> 1, keys = this.keys.splice(half);\n var values = this.values === undefVals ? undefVals : this.values.splice(half);\n return new BNode(keys, values);\n }\n /////////////////////////////////////////////////////////////////////////////\n // Leaf Node: scanning & deletions //////////////////////////////////////////\n forRange(low, high, includeHigh, editMode, tree, count, onFound) {\n var cmp = tree._compare;\n var iLow, iHigh;\n if (high === low) {\n if (!includeHigh)\n return count;\n iHigh = (iLow = this.indexOf(low, -1, cmp)) + 1;\n if (iLow < 0)\n return count;\n }\n else {\n iLow = this.indexOf(low, 0, cmp);\n iHigh = this.indexOf(high, -1, cmp);\n if (iHigh < 0)\n iHigh = ~iHigh;\n else if (includeHigh === true)\n iHigh++;\n }\n var keys = this.keys, values = this.values;\n if (onFound !== undefined) {\n for (var i = iLow; i < iHigh; i++) {\n var key = keys[i];\n var result = onFound(key, values[i], count++);\n if (result !== undefined) {\n if (editMode === true) {\n if (key !== keys[i] || this.isShared === true)\n throw new Error(\"BTree illegally changed or cloned in editRange\");\n if (result.delete) {\n this.keys.splice(i, 1);\n if (this.values !== undefVals)\n this.values.splice(i, 1);\n tree._size--;\n i--;\n iHigh--;\n }\n else if (result.hasOwnProperty('value')) {\n values[i] = result.value;\n }\n }\n if (result.break !== undefined)\n return result;\n }\n }\n }\n else\n count += iHigh - iLow;\n return count;\n }\n /** Adds entire contents of right-hand sibling (rhs is left unchanged) */\n mergeSibling(rhs, _) {\n this.keys.push.apply(this.keys, rhs.keys);\n if (this.values === undefVals) {\n if (rhs.values === undefVals)\n return;\n this.values = this.values.slice(0, this.keys.length);\n }\n this.values.push.apply(this.values, rhs.reifyValues());\n }\n}\n/** Internal node (non-leaf node) ********************************************/\nclass BNodeInternal extends BNode {\n /**\n * This does not mark `children` as shared, so it is the responsibility of the caller\n * to ensure children are either marked shared, or aren't included in another tree.\n */\n constructor(children, keys) {\n if (!keys) {\n keys = [];\n for (var i = 0; i < children.length; i++)\n keys[i] = children[i].maxKey();\n }\n super(keys);\n this.children = children;\n }\n clone() {\n var children = this.children.slice(0);\n for (var i = 0; i < children.length; i++)\n children[i].isShared = true;\n return new BNodeInternal(children, this.keys.slice(0));\n }\n greedyClone(force) {\n if (this.isShared && !force)\n return this;\n var nu = new BNodeInternal(this.children.slice(0), this.keys.slice(0));\n for (var i = 0; i < nu.children.length; i++)\n nu.children[i] = nu.children[i].greedyClone(force);\n return nu;\n }\n minKey() {\n return this.children[0].minKey();\n }\n minPair(reusedArray) {\n return this.children[0].minPair(reusedArray);\n }\n maxPair(reusedArray) {\n return this.children[this.children.length - 1].maxPair(reusedArray);\n }\n get(key, defaultValue, tree) {\n var i = this.indexOf(key, 0, tree._compare), children = this.children;\n return i < children.length ? children[i].get(key, defaultValue, tree) : undefined;\n }\n getPairOrNextLower(key, compare, inclusive, reusedArray) {\n var i = this.indexOf(key, 0, compare), children = this.children;\n if (i >= children.length)\n return this.maxPair(reusedArray);\n const result = children[i].getPairOrNextLower(key, compare, inclusive, reusedArray);\n if (result === undefined && i > 0) {\n return children[i - 1].maxPair(reusedArray);\n }\n return result;\n }\n getPairOrNextHigher(key, compare, inclusive, reusedArray) {\n var i = this.indexOf(key, 0, compare), children = this.children, length = children.length;\n if (i >= length)\n return undefined;\n const result = children[i].getPairOrNextHigher(key, compare, inclusive, reusedArray);\n if (result === undefined && i < length - 1) {\n return children[i + 1].minPair(reusedArray);\n }\n return result;\n }\n checkValid(depth, tree, baseIndex) {\n let kL = this.keys.length, cL = this.children.length;\n check(kL === cL, \"keys/children length mismatch: depth\", depth, \"lengths\", kL, cL, \"baseIndex\", baseIndex);\n check(kL > 1 || depth > 0, \"internal node has length\", kL, \"at depth\", depth, \"baseIndex\", baseIndex);\n let size = 0, c = this.children, k = this.keys, childSize = 0;\n for (var i = 0; i < cL; i++) {\n size += c[i].checkValid(depth + 1, tree, baseIndex + size);\n childSize += c[i].keys.length;\n check(size >= childSize, \"wtf\", baseIndex); // no way this will ever fail\n check(i === 0 || c[i - 1].constructor === c[i].constructor, \"type mismatch, baseIndex:\", baseIndex);\n if (c[i].maxKey() != k[i])\n check(false, \"keys[\", i, \"] =\", k[i], \"is wrong, should be \", c[i].maxKey(), \"at depth\", depth, \"baseIndex\", baseIndex);\n if (!(i === 0 || tree._compare(k[i - 1], k[i]) < 0))\n check(false, \"sort violation at depth\", depth, \"index\", i, \"keys\", k[i - 1], k[i]);\n }\n // 2020/08: BTree doesn't always avoid grossly undersized nodes,\n // but AFAIK such nodes are pretty harmless, so accept them.\n let toofew = childSize === 0; // childSize < (tree.maxNodeSize >> 1)*cL;\n if (toofew || childSize > tree.maxNodeSize * cL)\n check(false, toofew ? \"too few\" : \"too many\", \"children (\", childSize, size, \") at depth\", depth, \"maxNodeSize:\", tree.maxNodeSize, \"children.length:\", cL, \"baseIndex:\", baseIndex);\n return size;\n }\n /////////////////////////////////////////////////////////////////////////////\n // Internal Node: set & node splitting //////////////////////////////////////\n set(key, value, overwrite, tree) {\n var c = this.children, max = tree._maxNodeSize, cmp = tree._compare;\n var i = Math.min(this.indexOf(key, 0, cmp), c.length - 1), child = c[i];\n if (child.isShared)\n c[i] = child = child.clone();\n if (child.keys.length >= max) {\n // child is full; inserting anything else will cause a split.\n // Shifting an item to the left or right sibling may avoid a split.\n // We can do a shift if the adjacent node is not full and if the\n // current key can still be placed in the same node after the shift.\n var other;\n if (i > 0 && (other = c[i - 1]).keys.length < max && cmp(child.keys[0], key) < 0) {\n if (other.isShared)\n c[i - 1] = other = other.clone();\n other.takeFromRight(child);\n this.keys[i - 1] = other.maxKey();\n }\n else if ((other = c[i + 1]) !== undefined && other.keys.length < max && cmp(child.maxKey(), key) < 0) {\n if (other.isShared)\n c[i + 1] = other = other.clone();\n other.takeFromLeft(child);\n this.keys[i] = c[i].maxKey();\n }\n }\n var result = child.set(key, value, overwrite, tree);\n if (result === false)\n return false;\n this.keys[i] = child.maxKey();\n if (result === true)\n return true;\n // The child has split and `result` is a new right child... does it fit?\n if (this.keys.length < max) { // yes\n this.insert(i + 1, result);\n return true;\n }\n else { // no, we must split also\n var newRightSibling = this.splitOffRightSide(), target = this;\n if (cmp(result.maxKey(), this.maxKey()) > 0) {\n target = newRightSibling;\n i -= this.keys.length;\n }\n target.insert(i + 1, result);\n return newRightSibling;\n }\n }\n /**\n * Inserts `child` at index `i`.\n * This does not mark `child` as shared, so it is the responsibility of the caller\n * to ensure that either child is marked shared, or it is not included in another tree.\n */\n insert(i, child) {\n this.children.splice(i, 0, child);\n this.keys.splice(i, 0, child.maxKey());\n }\n /**\n * Split this node.\n * Modifies this to remove the second half of the items, returning a separate node containing them.\n */\n splitOffRightSide() {\n // assert !this.isShared;\n var half = this.children.length >> 1;\n return new BNodeInternal(this.children.splice(half), this.keys.splice(half));\n }\n takeFromRight(rhs) {\n // Reminder: parent node must update its copy of key for this node\n // assert: neither node is shared\n // assert rhs.keys.length > (maxNodeSize/2 && this.keys.length (maxNodeSize/2 && this.keys.length> 1;\n if (iLow > 0)\n iLow--;\n for (i = iHigh; i >= iLow; i--) {\n if (children[i].keys.length <= half) {\n if (children[i].keys.length !== 0) {\n this.tryMerge(i, tree._maxNodeSize);\n }\n else { // child is empty! delete it!\n keys.splice(i, 1);\n children.splice(i, 1);\n }\n }\n }\n if (children.length !== 0 && children[0].keys.length === 0)\n check(false, \"emptiness bug\");\n }\n }\n return count;\n }\n /** Merges child i with child i+1 if their combined size is not too large */\n tryMerge(i, maxSize) {\n var children = this.children;\n if (i >= 0 && i + 1 < children.length) {\n if (children[i].keys.length + children[i + 1].keys.length <= maxSize) {\n if (children[i].isShared) // cloned already UNLESS i is outside scan range\n children[i] = children[i].clone();\n children[i].mergeSibling(children[i + 1], maxSize);\n children.splice(i + 1, 1);\n this.keys.splice(i + 1, 1);\n this.keys[i] = children[i].maxKey();\n return true;\n }\n }\n return false;\n }\n /**\n * Move children from `rhs` into this.\n * `rhs` must be part of this tree, and be removed from it after this call\n * (otherwise isShared for its children could be incorrect).\n */\n mergeSibling(rhs, maxNodeSize) {\n // assert !this.isShared;\n var oldLength = this.keys.length;\n this.keys.push.apply(this.keys, rhs.keys);\n const rhsChildren = rhs.children;\n this.children.push.apply(this.children, rhsChildren);\n if (rhs.isShared && !this.isShared) {\n // All children of a shared node are implicitly shared, and since their new\n // parent is not shared, they must now be explicitly marked as shared.\n for (var i = 0; i < rhsChildren.length; i++)\n rhsChildren[i].isShared = true;\n }\n // If our children are themselves almost empty due to a mass-delete,\n // they may need to be merged too (but only the oldLength-1 and its\n // right sibling should need this).\n this.tryMerge(oldLength - 1, maxNodeSize);\n }\n}\n// Optimization: this array of `undefined`s is used instead of a normal\n// array of values in nodes where `undefined` is the only value.\n// Its length is extended to max node size on first use; since it can\n// be shared between trees with different maximums, its length can only\n// increase, never decrease. Its type should be undefined[] but strangely\n// TypeScript won't allow the comparison V[] === undefined[]. To prevent\n// users from making this array too large, BTree has a maximum node size.\n//\n// FAQ: undefVals[i] is already undefined, so why increase the array size?\n// Reading outside the bounds of an array is relatively slow because it\n// has the side effect of scanning the prototype chain.\nvar undefVals = [];\nconst Delete = { delete: true }, DeleteRange = () => Delete;\nconst Break = { break: true };\nconst EmptyLeaf = (function () {\n var n = new BNode();\n n.isShared = true;\n return n;\n})();\nconst EmptyArray = [];\nconst ReusedArray = []; // assumed thread-local\nfunction check(fact, ...args) {\n if (!fact) {\n args.unshift('B+ tree'); // at beginning of message\n throw new Error(args.join(' '));\n }\n}\n/** A BTree frozen in the empty state. */\nexports.EmptyBTree = (() => { let t = new BTree(); t.freeze(); return t; })();\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar $TypeError = TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new $TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar slice = uncurryThis(ArrayBuffer.prototype.slice);\n\nmodule.exports = function (O) {\n if (arrayBufferByteLength(O) !== 0) return false;\n try {\n slice(O, 0, 0);\n return false;\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar isDetached = require('../internals/array-buffer-is-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar ArrayBuffer = global.ArrayBuffer;\nvar DataView = global.DataView;\nvar TypeError = global.TypeError;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n if (isDetached(arrayBuffer)) throw new TypeError('ArrayBuffer is detached');\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar $ArrayBuffer = global.ArrayBuffer;\nvar $MessageChannel = global.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = tryNodeRequire('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = global[TARGET] && global[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.37.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/engine-v8-version');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = function (name) {\n try {\n // eslint-disable-next-line no-new-func -- safe\n if (IS_NODE) return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = new Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n","/*! Element Plus Icons Vue v2.3.1 */\n\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/add-location.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent } from \"vue\";\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nvar add_location_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent({\n name: \"AddLocation\",\n __name: \"add-location\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n }),\n _createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544\"\n }),\n _createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M544 384h96a32 32 0 1 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0z\"\n })\n ]));\n }\n});\n\n// src/components/add-location.vue\nvar add_location_default = add_location_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/aim.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent2 } from \"vue\";\nimport { createElementVNode as _createElementVNode2, openBlock as _openBlock2, createElementBlock as _createElementBlock2 } from \"vue\";\nvar aim_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent2({\n name: \"Aim\",\n __name: \"aim\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock2(), _createElementBlock2(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode2(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n }),\n _createElementVNode2(\"path\", {\n fill: \"currentColor\",\n d: \"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32\"\n })\n ]));\n }\n});\n\n// src/components/aim.vue\nvar aim_default = aim_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/alarm-clock.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent3 } from \"vue\";\nimport { createElementVNode as _createElementVNode3, openBlock as _openBlock3, createElementBlock as _createElementBlock3 } from \"vue\";\nvar alarm_clock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent3({\n name: \"AlarmClock\",\n __name: \"alarm-clock\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock3(), _createElementBlock3(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode3(\"path\", {\n fill: \"currentColor\",\n d: \"M512 832a320 320 0 1 0 0-640 320 320 0 0 0 0 640m0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768\"\n }),\n _createElementVNode3(\"path\", {\n fill: \"currentColor\",\n d: \"m292.288 824.576 55.424 32-48 83.136a32 32 0 1 1-55.424-32zm439.424 0-55.424 32 48 83.136a32 32 0 1 0 55.424-32zM512 512h160a32 32 0 1 1 0 64H480a32 32 0 0 1-32-32V320a32 32 0 0 1 64 0zM90.496 312.256A160 160 0 0 1 312.32 90.496l-46.848 46.848a96 96 0 0 0-128 128L90.56 312.256zm835.264 0A160 160 0 0 0 704 90.496l46.848 46.848a96 96 0 0 1 128 128z\"\n })\n ]));\n }\n});\n\n// src/components/alarm-clock.vue\nvar alarm_clock_default = alarm_clock_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/apple.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent4 } from \"vue\";\nimport { createElementVNode as _createElementVNode4, openBlock as _openBlock4, createElementBlock as _createElementBlock4 } from \"vue\";\nvar apple_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent4({\n name: \"Apple\",\n __name: \"apple\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock4(), _createElementBlock4(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode4(\"path\", {\n fill: \"currentColor\",\n d: \"M599.872 203.776a189.44 189.44 0 0 1 64.384-4.672l2.624.128c31.168 1.024 51.2 4.096 79.488 16.32 37.632 16.128 74.496 45.056 111.488 89.344 96.384 115.264 82.752 372.8-34.752 521.728-7.68 9.728-32 41.6-30.72 39.936a426.624 426.624 0 0 1-30.08 35.776c-31.232 32.576-65.28 49.216-110.08 50.048-31.36.64-53.568-5.312-84.288-18.752l-6.528-2.88c-20.992-9.216-30.592-11.904-47.296-11.904-18.112 0-28.608 2.88-51.136 12.672l-6.464 2.816c-28.416 12.224-48.32 18.048-76.16 19.2-74.112 2.752-116.928-38.08-180.672-132.16-96.64-142.08-132.608-349.312-55.04-486.4 46.272-81.92 129.92-133.632 220.672-135.04 32.832-.576 60.288 6.848 99.648 22.72 27.136 10.88 34.752 13.76 37.376 14.272 16.256-20.16 27.776-36.992 34.56-50.24 13.568-26.304 27.2-59.968 40.704-100.8a32 32 0 1 1 60.8 20.224c-12.608 37.888-25.408 70.4-38.528 97.664zm-51.52 78.08c-14.528 17.792-31.808 37.376-51.904 58.816a32 32 0 1 1-46.72-43.776l12.288-13.248c-28.032-11.2-61.248-26.688-95.68-26.112-70.4 1.088-135.296 41.6-171.648 105.792C121.6 492.608 176 684.16 247.296 788.992c34.816 51.328 76.352 108.992 130.944 106.944 52.48-2.112 72.32-34.688 135.872-34.688 63.552 0 81.28 34.688 136.96 33.536 56.448-1.088 75.776-39.04 126.848-103.872 107.904-136.768 107.904-362.752 35.776-449.088-72.192-86.272-124.672-84.096-151.68-85.12-41.472-4.288-81.6 12.544-113.664 25.152z\"\n })\n ]));\n }\n});\n\n// src/components/apple.vue\nvar apple_default = apple_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-down-bold.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent5 } from \"vue\";\nimport { createElementVNode as _createElementVNode5, openBlock as _openBlock5, createElementBlock as _createElementBlock5 } from \"vue\";\nvar arrow_down_bold_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent5({\n name: \"ArrowDownBold\",\n __name: \"arrow-down-bold\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock5(), _createElementBlock5(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode5(\"path\", {\n fill: \"currentColor\",\n d: \"M104.704 338.752a64 64 0 0 1 90.496 0l316.8 316.8 316.8-316.8a64 64 0 0 1 90.496 90.496L557.248 791.296a64 64 0 0 1-90.496 0L104.704 429.248a64 64 0 0 1 0-90.496z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-down-bold.vue\nvar arrow_down_bold_default = arrow_down_bold_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-down.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent6 } from \"vue\";\nimport { createElementVNode as _createElementVNode6, openBlock as _openBlock6, createElementBlock as _createElementBlock6 } from \"vue\";\nvar arrow_down_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent6({\n name: \"ArrowDown\",\n __name: \"arrow-down\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock6(), _createElementBlock6(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode6(\"path\", {\n fill: \"currentColor\",\n d: \"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-down.vue\nvar arrow_down_default = arrow_down_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-left-bold.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent7 } from \"vue\";\nimport { createElementVNode as _createElementVNode7, openBlock as _openBlock7, createElementBlock as _createElementBlock7 } from \"vue\";\nvar arrow_left_bold_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent7({\n name: \"ArrowLeftBold\",\n __name: \"arrow-left-bold\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock7(), _createElementBlock7(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode7(\"path\", {\n fill: \"currentColor\",\n d: \"M685.248 104.704a64 64 0 0 1 0 90.496L368.448 512l316.8 316.8a64 64 0 0 1-90.496 90.496L232.704 557.248a64 64 0 0 1 0-90.496l362.048-362.048a64 64 0 0 1 90.496 0z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-left-bold.vue\nvar arrow_left_bold_default = arrow_left_bold_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-left.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent8 } from \"vue\";\nimport { createElementVNode as _createElementVNode8, openBlock as _openBlock8, createElementBlock as _createElementBlock8 } from \"vue\";\nvar arrow_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent8({\n name: \"ArrowLeft\",\n __name: \"arrow-left\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock8(), _createElementBlock8(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode8(\"path\", {\n fill: \"currentColor\",\n d: \"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-left.vue\nvar arrow_left_default = arrow_left_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-right-bold.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent9 } from \"vue\";\nimport { createElementVNode as _createElementVNode9, openBlock as _openBlock9, createElementBlock as _createElementBlock9 } from \"vue\";\nvar arrow_right_bold_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent9({\n name: \"ArrowRightBold\",\n __name: \"arrow-right-bold\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock9(), _createElementBlock9(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode9(\"path\", {\n fill: \"currentColor\",\n d: \"M338.752 104.704a64 64 0 0 0 0 90.496l316.8 316.8-316.8 316.8a64 64 0 0 0 90.496 90.496l362.048-362.048a64 64 0 0 0 0-90.496L429.248 104.704a64 64 0 0 0-90.496 0z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-right-bold.vue\nvar arrow_right_bold_default = arrow_right_bold_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent10 } from \"vue\";\nimport { createElementVNode as _createElementVNode10, openBlock as _openBlock10, createElementBlock as _createElementBlock10 } from \"vue\";\nvar arrow_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent10({\n name: \"ArrowRight\",\n __name: \"arrow-right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock10(), _createElementBlock10(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode10(\"path\", {\n fill: \"currentColor\",\n d: \"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-right.vue\nvar arrow_right_default = arrow_right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-up-bold.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent11 } from \"vue\";\nimport { createElementVNode as _createElementVNode11, openBlock as _openBlock11, createElementBlock as _createElementBlock11 } from \"vue\";\nvar arrow_up_bold_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent11({\n name: \"ArrowUpBold\",\n __name: \"arrow-up-bold\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock11(), _createElementBlock11(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode11(\"path\", {\n fill: \"currentColor\",\n d: \"M104.704 685.248a64 64 0 0 0 90.496 0l316.8-316.8 316.8 316.8a64 64 0 0 0 90.496-90.496L557.248 232.704a64 64 0 0 0-90.496 0L104.704 594.752a64 64 0 0 0 0 90.496z\"\n })\n ]));\n }\n});\n\n// src/components/arrow-up-bold.vue\nvar arrow_up_bold_default = arrow_up_bold_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/arrow-up.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent12 } from \"vue\";\nimport { createElementVNode as _createElementVNode12, openBlock as _openBlock12, createElementBlock as _createElementBlock12 } from \"vue\";\nvar arrow_up_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent12({\n name: \"ArrowUp\",\n __name: \"arrow-up\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock12(), _createElementBlock12(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode12(\"path\", {\n fill: \"currentColor\",\n d: \"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0\"\n })\n ]));\n }\n});\n\n// src/components/arrow-up.vue\nvar arrow_up_default = arrow_up_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/avatar.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent13 } from \"vue\";\nimport { createElementVNode as _createElementVNode13, openBlock as _openBlock13, createElementBlock as _createElementBlock13 } from \"vue\";\nvar avatar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent13({\n name: \"Avatar\",\n __name: \"avatar\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock13(), _createElementBlock13(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode13(\"path\", {\n fill: \"currentColor\",\n d: \"M628.736 528.896A416 416 0 0 1 928 928H96a415.872 415.872 0 0 1 299.264-399.104L512 704zM720 304a208 208 0 1 1-416 0 208 208 0 0 1 416 0\"\n })\n ]));\n }\n});\n\n// src/components/avatar.vue\nvar avatar_default = avatar_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/back.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent14 } from \"vue\";\nimport { createElementVNode as _createElementVNode14, openBlock as _openBlock14, createElementBlock as _createElementBlock14 } from \"vue\";\nvar back_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent14({\n name: \"Back\",\n __name: \"back\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock14(), _createElementBlock14(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode14(\"path\", {\n fill: \"currentColor\",\n d: \"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64\"\n }),\n _createElementVNode14(\"path\", {\n fill: \"currentColor\",\n d: \"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z\"\n })\n ]));\n }\n});\n\n// src/components/back.vue\nvar back_default = back_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/baseball.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent15 } from \"vue\";\nimport { createElementVNode as _createElementVNode15, openBlock as _openBlock15, createElementBlock as _createElementBlock15 } from \"vue\";\nvar baseball_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent15({\n name: \"Baseball\",\n __name: \"baseball\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock15(), _createElementBlock15(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode15(\"path\", {\n fill: \"currentColor\",\n d: \"M195.2 828.8a448 448 0 1 1 633.6-633.6 448 448 0 0 1-633.6 633.6zm45.248-45.248a384 384 0 1 0 543.104-543.104 384 384 0 0 0-543.104 543.104\"\n }),\n _createElementVNode15(\"path\", {\n fill: \"currentColor\",\n d: \"M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 0 0 350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 0 1 497.472 96.896zM108.48 491.904a320.128 320.128 0 0 1 423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 0 0-346.496-346.432 1736.64 1736.64 0 0 1-11.392-65.728z\"\n })\n ]));\n }\n});\n\n// src/components/baseball.vue\nvar baseball_default = baseball_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/basketball.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent16 } from \"vue\";\nimport { createElementVNode as _createElementVNode16, openBlock as _openBlock16, createElementBlock as _createElementBlock16 } from \"vue\";\nvar basketball_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent16({\n name: \"Basketball\",\n __name: \"basketball\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock16(), _createElementBlock16(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode16(\"path\", {\n fill: \"currentColor\",\n d: \"M778.752 788.224a382.464 382.464 0 0 0 116.032-245.632 256.512 256.512 0 0 0-241.728-13.952 762.88 762.88 0 0 1 125.696 259.584zm-55.04 44.224a699.648 699.648 0 0 0-125.056-269.632 256.128 256.128 0 0 0-56.064 331.968 382.72 382.72 0 0 0 181.12-62.336m-254.08 61.248A320.128 320.128 0 0 1 557.76 513.6a715.84 715.84 0 0 0-48.192-48.128 320.128 320.128 0 0 1-379.264 88.384 382.4 382.4 0 0 0 110.144 229.696 382.4 382.4 0 0 0 229.184 110.08zM129.28 481.088a256.128 256.128 0 0 0 331.072-56.448 699.648 699.648 0 0 0-268.8-124.352 382.656 382.656 0 0 0-62.272 180.8m106.56-235.84a762.88 762.88 0 0 1 258.688 125.056 256.512 256.512 0 0 0-13.44-241.088A382.464 382.464 0 0 0 235.84 245.248zm318.08-114.944c40.576 89.536 37.76 193.92-8.448 281.344a779.84 779.84 0 0 1 66.176 66.112 320.832 320.832 0 0 1 282.112-8.128 382.4 382.4 0 0 0-110.144-229.12 382.4 382.4 0 0 0-229.632-110.208zM828.8 828.8a448 448 0 1 1-633.6-633.6 448 448 0 0 1 633.6 633.6\"\n })\n ]));\n }\n});\n\n// src/components/basketball.vue\nvar basketball_default = basketball_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bell-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent17 } from \"vue\";\nimport { createElementVNode as _createElementVNode17, openBlock as _openBlock17, createElementBlock as _createElementBlock17 } from \"vue\";\nvar bell_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent17({\n name: \"BellFilled\",\n __name: \"bell-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock17(), _createElementBlock17(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode17(\"path\", {\n fill: \"currentColor\",\n d: \"M640 832a128 128 0 0 1-256 0zm192-64H134.4a38.4 38.4 0 0 1 0-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 1 1 127.36 0A320.128 320.128 0 0 1 832 448v243.2h57.6a38.4 38.4 0 0 1 0 76.8z\"\n })\n ]));\n }\n});\n\n// src/components/bell-filled.vue\nvar bell_filled_default = bell_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bell.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent18 } from \"vue\";\nimport { createElementVNode as _createElementVNode18, openBlock as _openBlock18, createElementBlock as _createElementBlock18 } from \"vue\";\nvar bell_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent18({\n name: \"Bell\",\n __name: \"bell\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock18(), _createElementBlock18(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode18(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64\"\n }),\n _createElementVNode18(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320\"\n }),\n _createElementVNode18(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32m352 128h128a64 64 0 0 1-128 0\"\n })\n ]));\n }\n});\n\n// src/components/bell.vue\nvar bell_default = bell_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bicycle.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent19 } from \"vue\";\nimport { createElementVNode as _createElementVNode19, openBlock as _openBlock19, createElementBlock as _createElementBlock19 } from \"vue\";\nvar bicycle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent19({\n name: \"Bicycle\",\n __name: \"bicycle\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock19(), _createElementBlock19(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode19(\"path\", {\n fill: \"currentColor\",\n d: \"M256 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384\"\n }),\n _createElementVNode19(\"path\", {\n fill: \"currentColor\",\n d: \"M288 672h320q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n }),\n _createElementVNode19(\"path\", {\n fill: \"currentColor\",\n d: \"M768 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384\"\n }),\n _createElementVNode19(\"path\", {\n fill: \"currentColor\",\n d: \"M480 192a32 32 0 0 1 0-64h160a32 32 0 0 1 31.04 24.256l96 384a32 32 0 0 1-62.08 15.488L615.04 192zM96 384a32 32 0 0 1 0-64h128a32 32 0 0 1 30.336 21.888l64 192a32 32 0 1 1-60.672 20.224L200.96 384z\"\n }),\n _createElementVNode19(\"path\", {\n fill: \"currentColor\",\n d: \"m373.376 599.808-42.752-47.616 320-288 42.752 47.616z\"\n })\n ]));\n }\n});\n\n// src/components/bicycle.vue\nvar bicycle_default = bicycle_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bottom-left.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent20 } from \"vue\";\nimport { createElementVNode as _createElementVNode20, openBlock as _openBlock20, createElementBlock as _createElementBlock20 } from \"vue\";\nvar bottom_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent20({\n name: \"BottomLeft\",\n __name: \"bottom-left\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock20(), _createElementBlock20(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode20(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h416a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V352a32 32 0 0 1 64 0z\"\n }),\n _createElementVNode20(\"path\", {\n fill: \"currentColor\",\n d: \"M246.656 822.656a32 32 0 0 1-45.312-45.312l544-544a32 32 0 0 1 45.312 45.312l-544 544z\"\n })\n ]));\n }\n});\n\n// src/components/bottom-left.vue\nvar bottom_left_default = bottom_left_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bottom-right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent21 } from \"vue\";\nimport { createElementVNode as _createElementVNode21, openBlock as _openBlock21, createElementBlock as _createElementBlock21 } from \"vue\";\nvar bottom_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent21({\n name: \"BottomRight\",\n __name: \"bottom-right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock21(), _createElementBlock21(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode21(\"path\", {\n fill: \"currentColor\",\n d: \"M352 768a32 32 0 1 0 0 64h448a32 32 0 0 0 32-32V352a32 32 0 0 0-64 0v416z\"\n }),\n _createElementVNode21(\"path\", {\n fill: \"currentColor\",\n d: \"M777.344 822.656a32 32 0 0 0 45.312-45.312l-544-544a32 32 0 0 0-45.312 45.312z\"\n })\n ]));\n }\n});\n\n// src/components/bottom-right.vue\nvar bottom_right_default = bottom_right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bottom.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent22 } from \"vue\";\nimport { createElementVNode as _createElementVNode22, openBlock as _openBlock22, createElementBlock as _createElementBlock22 } from \"vue\";\nvar bottom_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent22({\n name: \"Bottom\",\n __name: \"bottom\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock22(), _createElementBlock22(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode22(\"path\", {\n fill: \"currentColor\",\n d: \"M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z\"\n })\n ]));\n }\n});\n\n// src/components/bottom.vue\nvar bottom_default = bottom_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/bowl.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent23 } from \"vue\";\nimport { createElementVNode as _createElementVNode23, openBlock as _openBlock23, createElementBlock as _createElementBlock23 } from \"vue\";\nvar bowl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent23({\n name: \"Bowl\",\n __name: \"bowl\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock23(), _createElementBlock23(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode23(\"path\", {\n fill: \"currentColor\",\n d: \"M714.432 704a351.744 351.744 0 0 0 148.16-256H161.408a351.744 351.744 0 0 0 148.16 256zM288 766.592A415.68 415.68 0 0 1 96 416a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32 415.68 415.68 0 0 1-192 350.592V832a64 64 0 0 1-64 64H352a64 64 0 0 1-64-64zM493.248 320h-90.496l254.4-254.4a32 32 0 1 1 45.248 45.248zm187.328 0h-128l269.696-155.712a32 32 0 0 1 32 55.424zM352 768v64h320v-64z\"\n })\n ]));\n }\n});\n\n// src/components/bowl.vue\nvar bowl_default = bowl_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/box.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent24 } from \"vue\";\nimport { createElementVNode as _createElementVNode24, openBlock as _openBlock24, createElementBlock as _createElementBlock24 } from \"vue\";\nvar box_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent24({\n name: \"Box\",\n __name: \"box\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock24(), _createElementBlock24(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode24(\"path\", {\n fill: \"currentColor\",\n d: \"M317.056 128 128 344.064V896h768V344.064L706.944 128zm-14.528-64h418.944a32 32 0 0 1 24.064 10.88l206.528 236.096A32 32 0 0 1 960 332.032V928a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V332.032a32 32 0 0 1 7.936-21.12L278.4 75.008A32 32 0 0 1 302.528 64z\"\n }),\n _createElementVNode24(\"path\", {\n fill: \"currentColor\",\n d: \"M64 320h896v64H64z\"\n }),\n _createElementVNode24(\"path\", {\n fill: \"currentColor\",\n d: \"M448 327.872V640h128V327.872L526.08 128h-28.16zM448 64h128l64 256v352a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V320z\"\n })\n ]));\n }\n});\n\n// src/components/box.vue\nvar box_default = box_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/briefcase.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent25 } from \"vue\";\nimport { createElementVNode as _createElementVNode25, openBlock as _openBlock25, createElementBlock as _createElementBlock25 } from \"vue\";\nvar briefcase_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent25({\n name: \"Briefcase\",\n __name: \"briefcase\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock25(), _createElementBlock25(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode25(\"path\", {\n fill: \"currentColor\",\n d: \"M320 320V128h384v192h192v192H128V320zM128 576h768v320H128zm256-256h256.064V192H384z\"\n })\n ]));\n }\n});\n\n// src/components/briefcase.vue\nvar briefcase_default = briefcase_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/brush-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent26 } from \"vue\";\nimport { createElementVNode as _createElementVNode26, openBlock as _openBlock26, createElementBlock as _createElementBlock26 } from \"vue\";\nvar brush_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent26({\n name: \"BrushFilled\",\n __name: \"brush-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock26(), _createElementBlock26(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode26(\"path\", {\n fill: \"currentColor\",\n d: \"M608 704v160a96 96 0 0 1-192 0V704h-96a128 128 0 0 1-128-128h640a128 128 0 0 1-128 128zM192 512V128.064h640V512z\"\n })\n ]));\n }\n});\n\n// src/components/brush-filled.vue\nvar brush_filled_default = brush_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/brush.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent27 } from \"vue\";\nimport { createElementVNode as _createElementVNode27, openBlock as _openBlock27, createElementBlock as _createElementBlock27 } from \"vue\";\nvar brush_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent27({\n name: \"Brush\",\n __name: \"brush\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock27(), _createElementBlock27(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode27(\"path\", {\n fill: \"currentColor\",\n d: \"M896 448H128v192a64 64 0 0 0 64 64h192v192h256V704h192a64 64 0 0 0 64-64zm-770.752-64c0-47.552 5.248-90.24 15.552-128 14.72-54.016 42.496-107.392 83.2-160h417.28l-15.36 70.336L736 96h211.2c-24.832 42.88-41.92 96.256-51.2 160a663.872 663.872 0 0 0-6.144 128H960v256a128 128 0 0 1-128 128H704v160a32 32 0 0 1-32 32H352a32 32 0 0 1-32-32V768H192A128 128 0 0 1 64 640V384h61.248zm64 0h636.544c-2.048-45.824.256-91.584 6.848-137.216 4.48-30.848 10.688-59.776 18.688-86.784h-96.64l-221.12 141.248L561.92 160H256.512c-25.856 37.888-43.776 75.456-53.952 112.832-8.768 32.064-13.248 69.12-13.312 111.168z\"\n })\n ]));\n }\n});\n\n// src/components/brush.vue\nvar brush_default = brush_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/burger.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent28 } from \"vue\";\nimport { createElementVNode as _createElementVNode28, openBlock as _openBlock28, createElementBlock as _createElementBlock28 } from \"vue\";\nvar burger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent28({\n name: \"Burger\",\n __name: \"burger\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock28(), _createElementBlock28(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode28(\"path\", {\n fill: \"currentColor\",\n d: \"M160 512a32 32 0 0 0-32 32v64a32 32 0 0 0 30.08 32H864a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm736-58.56A96 96 0 0 1 960 544v64a96 96 0 0 1-51.968 85.312L855.36 833.6a96 96 0 0 1-89.856 62.272H258.496A96 96 0 0 1 168.64 833.6l-52.608-140.224A96 96 0 0 1 64 608v-64a96 96 0 0 1 64-90.56V448a384 384 0 1 1 768 5.44M832 448a320 320 0 0 0-640 0zM512 704H188.352l40.192 107.136a32 32 0 0 0 29.952 20.736h507.008a32 32 0 0 0 29.952-20.736L835.648 704z\"\n })\n ]));\n }\n});\n\n// src/components/burger.vue\nvar burger_default = burger_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/calendar.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent29 } from \"vue\";\nimport { createElementVNode as _createElementVNode29, openBlock as _openBlock29, createElementBlock as _createElementBlock29 } from \"vue\";\nvar calendar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent29({\n name: \"Calendar\",\n __name: \"calendar\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock29(), _createElementBlock29(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode29(\"path\", {\n fill: \"currentColor\",\n d: \"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64\"\n })\n ]));\n }\n});\n\n// src/components/calendar.vue\nvar calendar_default = calendar_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/camera-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent30 } from \"vue\";\nimport { createElementVNode as _createElementVNode30, openBlock as _openBlock30, createElementBlock as _createElementBlock30 } from \"vue\";\nvar camera_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent30({\n name: \"CameraFilled\",\n __name: \"camera-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock30(), _createElementBlock30(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode30(\"path\", {\n fill: \"currentColor\",\n d: \"M160 224a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64V288a64 64 0 0 0-64-64H748.416l-46.464-92.672A64 64 0 0 0 644.736 96H379.328a64 64 0 0 0-57.216 35.392L275.776 224zm352 435.2a115.2 115.2 0 1 0 0-230.4 115.2 115.2 0 0 0 0 230.4m0 140.8a256 256 0 1 1 0-512 256 256 0 0 1 0 512\"\n })\n ]));\n }\n});\n\n// src/components/camera-filled.vue\nvar camera_filled_default = camera_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/camera.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent31 } from \"vue\";\nimport { createElementVNode as _createElementVNode31, openBlock as _openBlock31, createElementBlock as _createElementBlock31 } from \"vue\";\nvar camera_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent31({\n name: \"Camera\",\n __name: \"camera\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock31(), _createElementBlock31(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode31(\"path\", {\n fill: \"currentColor\",\n d: \"M896 256H128v576h768zm-199.424-64-32.064-64h-304.96l-32 64zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32m416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320m0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448\"\n })\n ]));\n }\n});\n\n// src/components/camera.vue\nvar camera_default = camera_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/caret-bottom.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent32 } from \"vue\";\nimport { createElementVNode as _createElementVNode32, openBlock as _openBlock32, createElementBlock as _createElementBlock32 } from \"vue\";\nvar caret_bottom_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent32({\n name: \"CaretBottom\",\n __name: \"caret-bottom\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock32(), _createElementBlock32(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode32(\"path\", {\n fill: \"currentColor\",\n d: \"m192 384 320 384 320-384z\"\n })\n ]));\n }\n});\n\n// src/components/caret-bottom.vue\nvar caret_bottom_default = caret_bottom_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/caret-left.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent33 } from \"vue\";\nimport { createElementVNode as _createElementVNode33, openBlock as _openBlock33, createElementBlock as _createElementBlock33 } from \"vue\";\nvar caret_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent33({\n name: \"CaretLeft\",\n __name: \"caret-left\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock33(), _createElementBlock33(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode33(\"path\", {\n fill: \"currentColor\",\n d: \"M672 192 288 511.936 672 832z\"\n })\n ]));\n }\n});\n\n// src/components/caret-left.vue\nvar caret_left_default = caret_left_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/caret-right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent34 } from \"vue\";\nimport { createElementVNode as _createElementVNode34, openBlock as _openBlock34, createElementBlock as _createElementBlock34 } from \"vue\";\nvar caret_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent34({\n name: \"CaretRight\",\n __name: \"caret-right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock34(), _createElementBlock34(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode34(\"path\", {\n fill: \"currentColor\",\n d: \"M384 192v640l384-320.064z\"\n })\n ]));\n }\n});\n\n// src/components/caret-right.vue\nvar caret_right_default = caret_right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/caret-top.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent35 } from \"vue\";\nimport { createElementVNode as _createElementVNode35, openBlock as _openBlock35, createElementBlock as _createElementBlock35 } from \"vue\";\nvar caret_top_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent35({\n name: \"CaretTop\",\n __name: \"caret-top\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock35(), _createElementBlock35(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode35(\"path\", {\n fill: \"currentColor\",\n d: \"M512 320 192 704h639.936z\"\n })\n ]));\n }\n});\n\n// src/components/caret-top.vue\nvar caret_top_default = caret_top_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/cellphone.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent36 } from \"vue\";\nimport { createElementVNode as _createElementVNode36, openBlock as _openBlock36, createElementBlock as _createElementBlock36 } from \"vue\";\nvar cellphone_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent36({\n name: \"Cellphone\",\n __name: \"cellphone\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock36(), _createElementBlock36(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode36(\"path\", {\n fill: \"currentColor\",\n d: \"M256 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h512a128 128 0 0 1 128 128v640a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192A128 128 0 0 1 256 64m128 128h256a32 32 0 1 1 0 64H384a32 32 0 0 1 0-64m128 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128\"\n })\n ]));\n }\n});\n\n// src/components/cellphone.vue\nvar cellphone_default = cellphone_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chat-dot-round.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent37 } from \"vue\";\nimport { createElementVNode as _createElementVNode37, openBlock as _openBlock37, createElementBlock as _createElementBlock37 } from \"vue\";\nvar chat_dot_round_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent37({\n name: \"ChatDotRound\",\n __name: \"chat-dot-round\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock37(), _createElementBlock37(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode37(\"path\", {\n fill: \"currentColor\",\n d: \"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z\"\n }),\n _createElementVNode37(\"path\", {\n fill: \"currentColor\",\n d: \"M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4\"\n })\n ]));\n }\n});\n\n// src/components/chat-dot-round.vue\nvar chat_dot_round_default = chat_dot_round_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chat-dot-square.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent38 } from \"vue\";\nimport { createElementVNode as _createElementVNode38, openBlock as _openBlock38, createElementBlock as _createElementBlock38 } from \"vue\";\nvar chat_dot_square_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent38({\n name: \"ChatDotSquare\",\n __name: \"chat-dot-square\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock38(), _createElementBlock38(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode38(\"path\", {\n fill: \"currentColor\",\n d: \"M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z\"\n }),\n _createElementVNode38(\"path\", {\n fill: \"currentColor\",\n d: \"M512 499.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4z\"\n })\n ]));\n }\n});\n\n// src/components/chat-dot-square.vue\nvar chat_dot_square_default = chat_dot_square_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chat-line-round.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent39 } from \"vue\";\nimport { createElementVNode as _createElementVNode39, openBlock as _openBlock39, createElementBlock as _createElementBlock39 } from \"vue\";\nvar chat_line_round_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent39({\n name: \"ChatLineRound\",\n __name: \"chat-line-round\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock39(), _createElementBlock39(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode39(\"path\", {\n fill: \"currentColor\",\n d: \"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z\"\n }),\n _createElementVNode39(\"path\", {\n fill: \"currentColor\",\n d: \"M352 576h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m32-192h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/chat-line-round.vue\nvar chat_line_round_default = chat_line_round_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chat-line-square.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent40 } from \"vue\";\nimport { createElementVNode as _createElementVNode40, openBlock as _openBlock40, createElementBlock as _createElementBlock40 } from \"vue\";\nvar chat_line_square_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent40({\n name: \"ChatLineSquare\",\n __name: \"chat-line-square\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock40(), _createElementBlock40(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode40(\"path\", {\n fill: \"currentColor\",\n d: \"M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z\"\n }),\n _createElementVNode40(\"path\", {\n fill: \"currentColor\",\n d: \"M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/chat-line-square.vue\nvar chat_line_square_default = chat_line_square_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chat-round.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent41 } from \"vue\";\nimport { createElementVNode as _createElementVNode41, openBlock as _openBlock41, createElementBlock as _createElementBlock41 } from \"vue\";\nvar chat_round_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent41({\n name: \"ChatRound\",\n __name: \"chat-round\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock41(), _createElementBlock41(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode41(\"path\", {\n fill: \"currentColor\",\n d: \"m174.72 855.68 130.048-43.392 23.424 11.392C382.4 849.984 444.352 864 512 864c223.744 0 384-159.872 384-352 0-192.832-159.104-352-384-352S128 319.168 128 512a341.12 341.12 0 0 0 69.248 204.288l21.632 28.8-44.16 110.528zm-45.248 82.56A32 32 0 0 1 89.6 896l56.512-141.248A405.12 405.12 0 0 1 64 512C64 299.904 235.648 96 512 96s448 203.904 448 416-173.44 416-448 416c-79.68 0-150.848-17.152-211.712-46.72l-170.88 56.96z\"\n })\n ]));\n }\n});\n\n// src/components/chat-round.vue\nvar chat_round_default = chat_round_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chat-square.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent42 } from \"vue\";\nimport { createElementVNode as _createElementVNode42, openBlock as _openBlock42, createElementBlock as _createElementBlock42 } from \"vue\";\nvar chat_square_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent42({\n name: \"ChatSquare\",\n __name: \"chat-square\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock42(), _createElementBlock42(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode42(\"path\", {\n fill: \"currentColor\",\n d: \"M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z\"\n })\n ]));\n }\n});\n\n// src/components/chat-square.vue\nvar chat_square_default = chat_square_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/check.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent43 } from \"vue\";\nimport { createElementVNode as _createElementVNode43, openBlock as _openBlock43, createElementBlock as _createElementBlock43 } from \"vue\";\nvar check_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent43({\n name: \"Check\",\n __name: \"check\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock43(), _createElementBlock43(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode43(\"path\", {\n fill: \"currentColor\",\n d: \"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"\n })\n ]));\n }\n});\n\n// src/components/check.vue\nvar check_default = check_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/checked.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent44 } from \"vue\";\nimport { createElementVNode as _createElementVNode44, openBlock as _openBlock44, createElementBlock as _createElementBlock44 } from \"vue\";\nvar checked_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent44({\n name: \"Checked\",\n __name: \"checked\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock44(), _createElementBlock44(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode44(\"path\", {\n fill: \"currentColor\",\n d: \"M704 192h160v736H160V192h160.064v64H704zM311.616 537.28l-45.312 45.248L447.36 763.52l316.8-316.8-45.312-45.184L447.36 673.024zM384 192V96h256v96z\"\n })\n ]));\n }\n});\n\n// src/components/checked.vue\nvar checked_default = checked_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/cherry.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent45 } from \"vue\";\nimport { createElementVNode as _createElementVNode45, openBlock as _openBlock45, createElementBlock as _createElementBlock45 } from \"vue\";\nvar cherry_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent45({\n name: \"Cherry\",\n __name: \"cherry\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock45(), _createElementBlock45(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode45(\"path\", {\n fill: \"currentColor\",\n d: \"M261.056 449.6c13.824-69.696 34.88-128.96 63.36-177.728 23.744-40.832 61.12-88.64 112.256-143.872H320a32 32 0 0 1 0-64h384a32 32 0 1 1 0 64H554.752c14.912 39.168 41.344 86.592 79.552 141.76 47.36 68.48 84.8 106.752 106.304 114.304a224 224 0 1 1-84.992 14.784c-22.656-22.912-47.04-53.76-73.92-92.608-38.848-56.128-67.008-105.792-84.352-149.312-55.296 58.24-94.528 107.52-117.76 147.2-23.168 39.744-41.088 88.768-53.568 147.072a224.064 224.064 0 1 1-64.96-1.6zM288 832a160 160 0 1 0 0-320 160 160 0 0 0 0 320m448-64a160 160 0 1 0 0-320 160 160 0 0 0 0 320\"\n })\n ]));\n }\n});\n\n// src/components/cherry.vue\nvar cherry_default = cherry_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chicken.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent46 } from \"vue\";\nimport { createElementVNode as _createElementVNode46, openBlock as _openBlock46, createElementBlock as _createElementBlock46 } from \"vue\";\nvar chicken_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent46({\n name: \"Chicken\",\n __name: \"chicken\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock46(), _createElementBlock46(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode46(\"path\", {\n fill: \"currentColor\",\n d: \"M349.952 716.992 478.72 588.16a106.688 106.688 0 0 1-26.176-19.072 106.688 106.688 0 0 1-19.072-26.176L304.704 671.744c.768 3.072 1.472 6.144 2.048 9.216l2.048 31.936 31.872 1.984c3.136.64 6.208 1.28 9.28 2.112zm57.344 33.152a128 128 0 1 1-216.32 114.432l-1.92-32-32-1.92a128 128 0 1 1 114.432-216.32L416.64 469.248c-2.432-101.44 58.112-239.104 149.056-330.048 107.328-107.328 231.296-85.504 316.8 0 85.44 85.44 107.328 209.408 0 316.8-91.008 90.88-228.672 151.424-330.112 149.056L407.296 750.08zm90.496-226.304c49.536 49.536 233.344-7.04 339.392-113.088 78.208-78.208 63.232-163.072 0-226.304-63.168-63.232-148.032-78.208-226.24 0C504.896 290.496 448.32 474.368 497.792 523.84M244.864 708.928a64 64 0 1 0-59.84 59.84l56.32-3.52zm8.064 127.68a64 64 0 1 0 59.84-59.84l-56.32 3.52-3.52 56.32z\"\n })\n ]));\n }\n});\n\n// src/components/chicken.vue\nvar chicken_default = chicken_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/chrome-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent47 } from \"vue\";\nimport { createElementVNode as _createElementVNode47, openBlock as _openBlock47, createElementBlock as _createElementBlock47 } from \"vue\";\nvar chrome_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent47({\n name: \"ChromeFilled\",\n __name: \"chrome-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock47(), _createElementBlock47(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode47(\"path\", {\n fill: \"currentColor\",\n d: \"M938.67 512.01c0-44.59-6.82-87.6-19.54-128H682.67a212.372 212.372 0 0 1 42.67 128c.06 38.71-10.45 76.7-30.42 109.87l-182.91 316.8c235.65-.01 426.66-191.02 426.66-426.67z\"\n }),\n _createElementVNode47(\"path\", {\n fill: \"currentColor\",\n d: \"M576.79 401.63a127.92 127.92 0 0 0-63.56-17.6c-22.36-.22-44.39 5.43-63.89 16.38s-35.79 26.82-47.25 46.02a128.005 128.005 0 0 0-2.16 127.44l1.24 2.13a127.906 127.906 0 0 0 46.36 46.61 127.907 127.907 0 0 0 63.38 17.44c22.29.2 44.24-5.43 63.68-16.33a127.94 127.94 0 0 0 47.16-45.79v-.01l1.11-1.92a127.984 127.984 0 0 0 .29-127.46 127.957 127.957 0 0 0-46.36-46.91\"\n }),\n _createElementVNode47(\"path\", {\n fill: \"currentColor\",\n d: \"M394.45 333.96A213.336 213.336 0 0 1 512 298.67h369.58A426.503 426.503 0 0 0 512 85.34a425.598 425.598 0 0 0-171.74 35.98 425.644 425.644 0 0 0-142.62 102.22l118.14 204.63a213.397 213.397 0 0 1 78.67-94.21m117.56 604.72H512zm-97.25-236.73a213.284 213.284 0 0 1-89.54-86.81L142.48 298.6c-36.35 62.81-57.13 135.68-57.13 213.42 0 203.81 142.93 374.22 333.95 416.55h.04l118.19-204.71a213.315 213.315 0 0 1-122.77-21.91z\"\n })\n ]));\n }\n});\n\n// src/components/chrome-filled.vue\nvar chrome_filled_default = chrome_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/circle-check-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent48 } from \"vue\";\nimport { createElementVNode as _createElementVNode48, openBlock as _openBlock48, createElementBlock as _createElementBlock48 } from \"vue\";\nvar circle_check_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent48({\n name: \"CircleCheckFilled\",\n __name: \"circle-check-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock48(), _createElementBlock48(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode48(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z\"\n })\n ]));\n }\n});\n\n// src/components/circle-check-filled.vue\nvar circle_check_filled_default = circle_check_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/circle-check.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent49 } from \"vue\";\nimport { createElementVNode as _createElementVNode49, openBlock as _openBlock49, createElementBlock as _createElementBlock49 } from \"vue\";\nvar circle_check_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent49({\n name: \"CircleCheck\",\n __name: \"circle-check\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock49(), _createElementBlock49(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode49(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n }),\n _createElementVNode49(\"path\", {\n fill: \"currentColor\",\n d: \"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z\"\n })\n ]));\n }\n});\n\n// src/components/circle-check.vue\nvar circle_check_default = circle_check_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/circle-close-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent50 } from \"vue\";\nimport { createElementVNode as _createElementVNode50, openBlock as _openBlock50, createElementBlock as _createElementBlock50 } from \"vue\";\nvar circle_close_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent50({\n name: \"CircleCloseFilled\",\n __name: \"circle-close-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock50(), _createElementBlock50(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode50(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z\"\n })\n ]));\n }\n});\n\n// src/components/circle-close-filled.vue\nvar circle_close_filled_default = circle_close_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/circle-close.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent51 } from \"vue\";\nimport { createElementVNode as _createElementVNode51, openBlock as _openBlock51, createElementBlock as _createElementBlock51 } from \"vue\";\nvar circle_close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent51({\n name: \"CircleClose\",\n __name: \"circle-close\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock51(), _createElementBlock51(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode51(\"path\", {\n fill: \"currentColor\",\n d: \"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z\"\n }),\n _createElementVNode51(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n })\n ]));\n }\n});\n\n// src/components/circle-close.vue\nvar circle_close_default = circle_close_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/circle-plus-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent52 } from \"vue\";\nimport { createElementVNode as _createElementVNode52, openBlock as _openBlock52, createElementBlock as _createElementBlock52 } from \"vue\";\nvar circle_plus_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent52({\n name: \"CirclePlusFilled\",\n __name: \"circle-plus-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock52(), _createElementBlock52(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode52(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z\"\n })\n ]));\n }\n});\n\n// src/components/circle-plus-filled.vue\nvar circle_plus_filled_default = circle_plus_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/circle-plus.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent53 } from \"vue\";\nimport { createElementVNode as _createElementVNode53, openBlock as _openBlock53, createElementBlock as _createElementBlock53 } from \"vue\";\nvar circle_plus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent53({\n name: \"CirclePlus\",\n __name: \"circle-plus\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock53(), _createElementBlock53(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode53(\"path\", {\n fill: \"currentColor\",\n d: \"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\"\n }),\n _createElementVNode53(\"path\", {\n fill: \"currentColor\",\n d: \"M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0\"\n }),\n _createElementVNode53(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n })\n ]));\n }\n});\n\n// src/components/circle-plus.vue\nvar circle_plus_default = circle_plus_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/clock.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent54 } from \"vue\";\nimport { createElementVNode as _createElementVNode54, openBlock as _openBlock54, createElementBlock as _createElementBlock54 } from \"vue\";\nvar clock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent54({\n name: \"Clock\",\n __name: \"clock\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock54(), _createElementBlock54(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode54(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n }),\n _createElementVNode54(\"path\", {\n fill: \"currentColor\",\n d: \"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32\"\n }),\n _createElementVNode54(\"path\", {\n fill: \"currentColor\",\n d: \"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/clock.vue\nvar clock_default = clock_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/close-bold.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent55 } from \"vue\";\nimport { createElementVNode as _createElementVNode55, openBlock as _openBlock55, createElementBlock as _createElementBlock55 } from \"vue\";\nvar close_bold_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent55({\n name: \"CloseBold\",\n __name: \"close-bold\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock55(), _createElementBlock55(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode55(\"path\", {\n fill: \"currentColor\",\n d: \"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z\"\n })\n ]));\n }\n});\n\n// src/components/close-bold.vue\nvar close_bold_default = close_bold_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/close.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent56 } from \"vue\";\nimport { createElementVNode as _createElementVNode56, openBlock as _openBlock56, createElementBlock as _createElementBlock56 } from \"vue\";\nvar close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent56({\n name: \"Close\",\n __name: \"close\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock56(), _createElementBlock56(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode56(\"path\", {\n fill: \"currentColor\",\n d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n })\n ]));\n }\n});\n\n// src/components/close.vue\nvar close_default = close_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/cloudy.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent57 } from \"vue\";\nimport { createElementVNode as _createElementVNode57, openBlock as _openBlock57, createElementBlock as _createElementBlock57 } from \"vue\";\nvar cloudy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent57({\n name: \"Cloudy\",\n __name: \"cloudy\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock57(), _createElementBlock57(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode57(\"path\", {\n fill: \"currentColor\",\n d: \"M598.4 831.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 831.872m-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 381.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z\"\n })\n ]));\n }\n});\n\n// src/components/cloudy.vue\nvar cloudy_default = cloudy_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/coffee-cup.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent58 } from \"vue\";\nimport { createElementVNode as _createElementVNode58, openBlock as _openBlock58, createElementBlock as _createElementBlock58 } from \"vue\";\nvar coffee_cup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent58({\n name: \"CoffeeCup\",\n __name: \"coffee-cup\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock58(), _createElementBlock58(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode58(\"path\", {\n fill: \"currentColor\",\n d: \"M768 192a192 192 0 1 1-8 383.808A256.128 256.128 0 0 1 512 768H320A256 256 0 0 1 64 512V160a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 64v256a128 128 0 1 0 0-256M96 832h640a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64m32-640v320a192 192 0 0 0 192 192h192a192 192 0 0 0 192-192V192z\"\n })\n ]));\n }\n});\n\n// src/components/coffee-cup.vue\nvar coffee_cup_default = coffee_cup_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/coffee.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent59 } from \"vue\";\nimport { createElementVNode as _createElementVNode59, openBlock as _openBlock59, createElementBlock as _createElementBlock59 } from \"vue\";\nvar coffee_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent59({\n name: \"Coffee\",\n __name: \"coffee\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock59(), _createElementBlock59(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode59(\"path\", {\n fill: \"currentColor\",\n d: \"M822.592 192h14.272a32 32 0 0 1 31.616 26.752l21.312 128A32 32 0 0 1 858.24 384h-49.344l-39.04 546.304A32 32 0 0 1 737.92 960H285.824a32 32 0 0 1-32-29.696L214.912 384H165.76a32 32 0 0 1-31.552-37.248l21.312-128A32 32 0 0 1 187.136 192h14.016l-6.72-93.696A32 32 0 0 1 226.368 64h571.008a32 32 0 0 1 31.936 34.304zm-64.128 0 4.544-64H260.736l4.544 64h493.184m-548.16 128H820.48l-10.688-64H214.208l-10.688 64h6.784m68.736 64 36.544 512H708.16l36.544-512z\"\n })\n ]));\n }\n});\n\n// src/components/coffee.vue\nvar coffee_default = coffee_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/coin.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent60 } from \"vue\";\nimport { createElementVNode as _createElementVNode60, openBlock as _openBlock60, createElementBlock as _createElementBlock60 } from \"vue\";\nvar coin_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent60({\n name: \"Coin\",\n __name: \"coin\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock60(), _createElementBlock60(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode60(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"\n }),\n _createElementVNode60(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"\n }),\n _createElementVNode60(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224m0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160\"\n })\n ]));\n }\n});\n\n// src/components/coin.vue\nvar coin_default = coin_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/cold-drink.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent61 } from \"vue\";\nimport { createElementVNode as _createElementVNode61, openBlock as _openBlock61, createElementBlock as _createElementBlock61 } from \"vue\";\nvar cold_drink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent61({\n name: \"ColdDrink\",\n __name: \"cold-drink\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock61(), _createElementBlock61(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode61(\"path\", {\n fill: \"currentColor\",\n d: \"M768 64a192 192 0 1 1-69.952 370.88L480 725.376V896h96a32 32 0 1 1 0 64H320a32 32 0 1 1 0-64h96V725.376L76.8 273.536a64 64 0 0 1-12.8-38.4v-10.688a32 32 0 0 1 32-32h71.808l-65.536-83.84a32 32 0 0 1 50.432-39.424l96.256 123.264h337.728A192.064 192.064 0 0 1 768 64M656.896 192.448H800a32 32 0 0 1 32 32v10.624a64 64 0 0 1-12.8 38.4l-80.448 107.2a128 128 0 1 0-81.92-188.16v-.064zm-357.888 64 129.472 165.76a32 32 0 0 1-50.432 39.36l-160.256-205.12H144l304 404.928 304-404.928z\"\n })\n ]));\n }\n});\n\n// src/components/cold-drink.vue\nvar cold_drink_default = cold_drink_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/collection-tag.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent62 } from \"vue\";\nimport { createElementVNode as _createElementVNode62, openBlock as _openBlock62, createElementBlock as _createElementBlock62 } from \"vue\";\nvar collection_tag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent62({\n name: \"CollectionTag\",\n __name: \"collection-tag\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock62(), _createElementBlock62(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode62(\"path\", {\n fill: \"currentColor\",\n d: \"M256 128v698.88l196.032-156.864a96 96 0 0 1 119.936 0L768 826.816V128zm-32-64h576a32 32 0 0 1 32 32v797.44a32 32 0 0 1-51.968 24.96L531.968 720a32 32 0 0 0-39.936 0L243.968 918.4A32 32 0 0 1 192 893.44V96a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/collection-tag.vue\nvar collection_tag_default = collection_tag_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/collection.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent63 } from \"vue\";\nimport { createElementVNode as _createElementVNode63, openBlock as _openBlock63, createElementBlock as _createElementBlock63 } from \"vue\";\nvar collection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent63({\n name: \"Collection\",\n __name: \"collection\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock63(), _createElementBlock63(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode63(\"path\", {\n fill: \"currentColor\",\n d: \"M192 736h640V128H256a64 64 0 0 0-64 64zm64-672h608a32 32 0 0 1 32 32v672a32 32 0 0 1-32 32H160l-32 57.536V192A128 128 0 0 1 256 64\"\n }),\n _createElementVNode63(\"path\", {\n fill: \"currentColor\",\n d: \"M240 800a48 48 0 1 0 0 96h592v-96zm0-64h656v160a64 64 0 0 1-64 64H240a112 112 0 0 1 0-224m144-608v250.88l96-76.8 96 76.8V128zm-64-64h320v381.44a32 32 0 0 1-51.968 24.96L480 384l-108.032 86.4A32 32 0 0 1 320 445.44z\"\n })\n ]));\n }\n});\n\n// src/components/collection.vue\nvar collection_default = collection_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/comment.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent64 } from \"vue\";\nimport { createElementVNode as _createElementVNode64, openBlock as _openBlock64, createElementBlock as _createElementBlock64 } from \"vue\";\nvar comment_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent64({\n name: \"Comment\",\n __name: \"comment\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock64(), _createElementBlock64(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode64(\"path\", {\n fill: \"currentColor\",\n d: \"M736 504a56 56 0 1 1 0-112 56 56 0 0 1 0 112m-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112m-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112M128 128v640h192v160l224-160h352V128z\"\n })\n ]));\n }\n});\n\n// src/components/comment.vue\nvar comment_default = comment_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/compass.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent65 } from \"vue\";\nimport { createElementVNode as _createElementVNode65, openBlock as _openBlock65, createElementBlock as _createElementBlock65 } from \"vue\";\nvar compass_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent65({\n name: \"Compass\",\n __name: \"compass\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock65(), _createElementBlock65(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode65(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n }),\n _createElementVNode65(\"path\", {\n fill: \"currentColor\",\n d: \"M725.888 315.008C676.48 428.672 624 513.28 568.576 568.64c-55.424 55.424-139.968 107.904-253.568 157.312a12.8 12.8 0 0 1-16.896-16.832c49.536-113.728 102.016-198.272 157.312-253.632 55.36-55.296 139.904-107.776 253.632-157.312a12.8 12.8 0 0 1 16.832 16.832\"\n })\n ]));\n }\n});\n\n// src/components/compass.vue\nvar compass_default = compass_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/connection.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent66 } from \"vue\";\nimport { createElementVNode as _createElementVNode66, openBlock as _openBlock66, createElementBlock as _createElementBlock66 } from \"vue\";\nvar connection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent66({\n name: \"Connection\",\n __name: \"connection\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock66(), _createElementBlock66(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode66(\"path\", {\n fill: \"currentColor\",\n d: \"M640 384v64H448a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h320a128 128 0 0 0 128-128V576a128 128 0 0 0-64-110.848V394.88c74.56 26.368 128 97.472 128 181.056v128a192 192 0 0 1-192 192H448a192 192 0 0 1-192-192V576a192 192 0 0 1 192-192z\"\n }),\n _createElementVNode66(\"path\", {\n fill: \"currentColor\",\n d: \"M384 640v-64h192a128 128 0 0 0 128-128V320a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128v128a128 128 0 0 0 64 110.848v70.272A192.064 192.064 0 0 1 64 448V320a192 192 0 0 1 192-192h320a192 192 0 0 1 192 192v128a192 192 0 0 1-192 192z\"\n })\n ]));\n }\n});\n\n// src/components/connection.vue\nvar connection_default = connection_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/coordinate.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent67 } from \"vue\";\nimport { createElementVNode as _createElementVNode67, openBlock as _openBlock67, createElementBlock as _createElementBlock67 } from \"vue\";\nvar coordinate_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent67({\n name: \"Coordinate\",\n __name: \"coordinate\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock67(), _createElementBlock67(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode67(\"path\", {\n fill: \"currentColor\",\n d: \"M480 512h64v320h-64z\"\n }),\n _createElementVNode67(\"path\", {\n fill: \"currentColor\",\n d: \"M192 896h640a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64m64-128h512a128 128 0 0 1 128 128v64H128v-64a128 128 0 0 1 128-128m256-256a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512\"\n })\n ]));\n }\n});\n\n// src/components/coordinate.vue\nvar coordinate_default = coordinate_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/copy-document.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent68 } from \"vue\";\nimport { createElementVNode as _createElementVNode68, openBlock as _openBlock68, createElementBlock as _createElementBlock68 } from \"vue\";\nvar copy_document_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent68({\n name: \"CopyDocument\",\n __name: \"copy-document\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock68(), _createElementBlock68(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode68(\"path\", {\n fill: \"currentColor\",\n d: \"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\"\n }),\n _createElementVNode68(\"path\", {\n fill: \"currentColor\",\n d: \"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\"\n })\n ]));\n }\n});\n\n// src/components/copy-document.vue\nvar copy_document_default = copy_document_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/cpu.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent69 } from \"vue\";\nimport { createElementVNode as _createElementVNode69, openBlock as _openBlock69, createElementBlock as _createElementBlock69 } from \"vue\";\nvar cpu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent69({\n name: \"Cpu\",\n __name: \"cpu\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock69(), _createElementBlock69(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode69(\"path\", {\n fill: \"currentColor\",\n d: \"M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128\"\n }),\n _createElementVNode69(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32M64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32\"\n })\n ]));\n }\n});\n\n// src/components/cpu.vue\nvar cpu_default = cpu_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/credit-card.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent70 } from \"vue\";\nimport { createElementVNode as _createElementVNode70, openBlock as _openBlock70, createElementBlock as _createElementBlock70 } from \"vue\";\nvar credit_card_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent70({\n name: \"CreditCard\",\n __name: \"credit-card\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock70(), _createElementBlock70(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode70(\"path\", {\n fill: \"currentColor\",\n d: \"M896 324.096c0-42.368-2.496-55.296-9.536-68.48a52.352 52.352 0 0 0-22.144-22.08c-13.12-7.04-26.048-9.536-68.416-9.536H228.096c-42.368 0-55.296 2.496-68.48 9.536a52.352 52.352 0 0 0-22.08 22.144c-7.04 13.12-9.536 26.048-9.536 68.416v375.808c0 42.368 2.496 55.296 9.536 68.48a52.352 52.352 0 0 0 22.144 22.08c13.12 7.04 26.048 9.536 68.416 9.536h567.808c42.368 0 55.296-2.496 68.48-9.536a52.352 52.352 0 0 0 22.08-22.144c7.04-13.12 9.536-26.048 9.536-68.416zm64 0v375.808c0 57.088-5.952 77.76-17.088 98.56-11.136 20.928-27.52 37.312-48.384 48.448-20.864 11.136-41.6 17.088-98.56 17.088H228.032c-57.088 0-77.76-5.952-98.56-17.088a116.288 116.288 0 0 1-48.448-48.384c-11.136-20.864-17.088-41.6-17.088-98.56V324.032c0-57.088 5.952-77.76 17.088-98.56 11.136-20.928 27.52-37.312 48.384-48.448 20.864-11.136 41.6-17.088 98.56-17.088H795.84c57.088 0 77.76 5.952 98.56 17.088 20.928 11.136 37.312 27.52 48.448 48.384 11.136 20.864 17.088 41.6 17.088 98.56z\"\n }),\n _createElementVNode70(\"path\", {\n fill: \"currentColor\",\n d: \"M64 320h896v64H64zm0 128h896v64H64zm128 192h256v64H192z\"\n })\n ]));\n }\n});\n\n// src/components/credit-card.vue\nvar credit_card_default = credit_card_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/crop.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent71 } from \"vue\";\nimport { createElementVNode as _createElementVNode71, openBlock as _openBlock71, createElementBlock as _createElementBlock71 } from \"vue\";\nvar crop_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent71({\n name: \"Crop\",\n __name: \"crop\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock71(), _createElementBlock71(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode71(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h672a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V96a32 32 0 0 1 64 0z\"\n }),\n _createElementVNode71(\"path\", {\n fill: \"currentColor\",\n d: \"M832 224v704a32 32 0 1 1-64 0V256H96a32 32 0 0 1 0-64h704a32 32 0 0 1 32 32\"\n })\n ]));\n }\n});\n\n// src/components/crop.vue\nvar crop_default = crop_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/d-arrow-left.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent72 } from \"vue\";\nimport { createElementVNode as _createElementVNode72, openBlock as _openBlock72, createElementBlock as _createElementBlock72 } from \"vue\";\nvar d_arrow_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent72({\n name: \"DArrowLeft\",\n __name: \"d-arrow-left\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock72(), _createElementBlock72(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode72(\"path\", {\n fill: \"currentColor\",\n d: \"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z\"\n })\n ]));\n }\n});\n\n// src/components/d-arrow-left.vue\nvar d_arrow_left_default = d_arrow_left_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/d-arrow-right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent73 } from \"vue\";\nimport { createElementVNode as _createElementVNode73, openBlock as _openBlock73, createElementBlock as _createElementBlock73 } from \"vue\";\nvar d_arrow_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent73({\n name: \"DArrowRight\",\n __name: \"d-arrow-right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock73(), _createElementBlock73(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode73(\"path\", {\n fill: \"currentColor\",\n d: \"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z\"\n })\n ]));\n }\n});\n\n// src/components/d-arrow-right.vue\nvar d_arrow_right_default = d_arrow_right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/d-caret.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent74 } from \"vue\";\nimport { createElementVNode as _createElementVNode74, openBlock as _openBlock74, createElementBlock as _createElementBlock74 } from \"vue\";\nvar d_caret_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent74({\n name: \"DCaret\",\n __name: \"d-caret\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock74(), _createElementBlock74(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode74(\"path\", {\n fill: \"currentColor\",\n d: \"m512 128 288 320H224zM224 576h576L512 896z\"\n })\n ]));\n }\n});\n\n// src/components/d-caret.vue\nvar d_caret_default = d_caret_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/data-analysis.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent75 } from \"vue\";\nimport { createElementVNode as _createElementVNode75, openBlock as _openBlock75, createElementBlock as _createElementBlock75 } from \"vue\";\nvar data_analysis_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent75({\n name: \"DataAnalysis\",\n __name: \"data-analysis\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock75(), _createElementBlock75(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode75(\"path\", {\n fill: \"currentColor\",\n d: \"m665.216 768 110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32zM832 192H192v512h640zM352 448a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0v-64a32 32 0 0 1 32-32m160-64a32 32 0 0 1 32 32v128a32 32 0 0 1-64 0V416a32 32 0 0 1 32-32m160-64a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V352a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/data-analysis.vue\nvar data_analysis_default = data_analysis_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/data-board.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent76 } from \"vue\";\nimport { createElementVNode as _createElementVNode76, openBlock as _openBlock76, createElementBlock as _createElementBlock76 } from \"vue\";\nvar data_board_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent76({\n name: \"DataBoard\",\n __name: \"data-board\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock76(), _createElementBlock76(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode76(\"path\", {\n fill: \"currentColor\",\n d: \"M32 128h960v64H32z\"\n }),\n _createElementVNode76(\"path\", {\n fill: \"currentColor\",\n d: \"M192 192v512h640V192zm-64-64h768v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32z\"\n }),\n _createElementVNode76(\"path\", {\n fill: \"currentColor\",\n d: \"M322.176 960H248.32l144.64-250.56 55.424 32zm453.888 0h-73.856L576 741.44l55.424-32z\"\n })\n ]));\n }\n});\n\n// src/components/data-board.vue\nvar data_board_default = data_board_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/data-line.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent77 } from \"vue\";\nimport { createElementVNode as _createElementVNode77, openBlock as _openBlock77, createElementBlock as _createElementBlock77 } from \"vue\";\nvar data_line_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent77({\n name: \"DataLine\",\n __name: \"data-line\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock77(), _createElementBlock77(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode77(\"path\", {\n fill: \"currentColor\",\n d: \"M359.168 768H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32zM832 192H192v512h640zM342.656 534.656a32 32 0 1 1-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1 1 49.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z\"\n })\n ]));\n }\n});\n\n// src/components/data-line.vue\nvar data_line_default = data_line_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/delete-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent78 } from \"vue\";\nimport { createElementVNode as _createElementVNode78, openBlock as _openBlock78, createElementBlock as _createElementBlock78 } from \"vue\";\nvar delete_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent78({\n name: \"DeleteFilled\",\n __name: \"delete-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock78(), _createElementBlock78(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode78(\"path\", {\n fill: \"currentColor\",\n d: \"M352 192V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64H96a32 32 0 0 1 0-64zm64 0h192v-64H416zM192 960a32 32 0 0 1-32-32V256h704v672a32 32 0 0 1-32 32zm224-192a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32m192 0a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32\"\n })\n ]));\n }\n});\n\n// src/components/delete-filled.vue\nvar delete_filled_default = delete_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/delete-location.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent79 } from \"vue\";\nimport { createElementVNode as _createElementVNode79, openBlock as _openBlock79, createElementBlock as _createElementBlock79 } from \"vue\";\nvar delete_location_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent79({\n name: \"DeleteLocation\",\n __name: \"delete-location\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock79(), _createElementBlock79(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode79(\"path\", {\n fill: \"currentColor\",\n d: \"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n }),\n _createElementVNode79(\"path\", {\n fill: \"currentColor\",\n d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544\"\n }),\n _createElementVNode79(\"path\", {\n fill: \"currentColor\",\n d: \"M384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/delete-location.vue\nvar delete_location_default = delete_location_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/delete.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent80 } from \"vue\";\nimport { createElementVNode as _createElementVNode80, openBlock as _openBlock80, createElementBlock as _createElementBlock80 } from \"vue\";\nvar delete_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent80({\n name: \"Delete\",\n __name: \"delete\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock80(), _createElementBlock80(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode80(\"path\", {\n fill: \"currentColor\",\n d: \"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32\"\n })\n ]));\n }\n});\n\n// src/components/delete.vue\nvar delete_default = delete_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/dessert.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent81 } from \"vue\";\nimport { createElementVNode as _createElementVNode81, openBlock as _openBlock81, createElementBlock as _createElementBlock81 } from \"vue\";\nvar dessert_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent81({\n name: \"Dessert\",\n __name: \"dessert\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock81(), _createElementBlock81(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode81(\"path\", {\n fill: \"currentColor\",\n d: \"M128 416v-48a144 144 0 0 1 168.64-141.888 224.128 224.128 0 0 1 430.72 0A144 144 0 0 1 896 368v48a384 384 0 0 1-352 382.72V896h-64v-97.28A384 384 0 0 1 128 416m287.104-32.064h193.792a143.808 143.808 0 0 1 58.88-132.736 160.064 160.064 0 0 0-311.552 0 143.808 143.808 0 0 1 58.88 132.8zm-72.896 0a72 72 0 1 0-140.48 0h140.48m339.584 0h140.416a72 72 0 1 0-140.48 0zM512 736a320 320 0 0 0 318.4-288.064H193.6A320 320 0 0 0 512 736M384 896.064h256a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64\"\n })\n ]));\n }\n});\n\n// src/components/dessert.vue\nvar dessert_default = dessert_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/discount.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent82 } from \"vue\";\nimport { createElementVNode as _createElementVNode82, openBlock as _openBlock82, createElementBlock as _createElementBlock82 } from \"vue\";\nvar discount_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent82({\n name: \"Discount\",\n __name: \"discount\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock82(), _createElementBlock82(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode82(\"path\", {\n fill: \"currentColor\",\n d: \"M224 704h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336zm0 64v128h576V768zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0\"\n }),\n _createElementVNode82(\"path\", {\n fill: \"currentColor\",\n d: \"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256\"\n })\n ]));\n }\n});\n\n// src/components/discount.vue\nvar discount_default = discount_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/dish-dot.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent83 } from \"vue\";\nimport { createElementVNode as _createElementVNode83, openBlock as _openBlock83, createElementBlock as _createElementBlock83 } from \"vue\";\nvar dish_dot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent83({\n name: \"DishDot\",\n __name: \"dish-dot\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock83(), _createElementBlock83(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode83(\"path\", {\n fill: \"currentColor\",\n d: \"m384.064 274.56.064-50.688A128 128 0 0 1 512.128 96c70.528 0 127.68 57.152 127.68 127.68v50.752A448.192 448.192 0 0 1 955.392 768H68.544A448.192 448.192 0 0 1 384 274.56zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64m32-128h768a384 384 0 1 0-768 0m447.808-448v-32.32a63.68 63.68 0 0 0-63.68-63.68 64 64 0 0 0-64 63.936V256z\"\n })\n ]));\n }\n});\n\n// src/components/dish-dot.vue\nvar dish_dot_default = dish_dot_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/dish.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent84 } from \"vue\";\nimport { createElementVNode as _createElementVNode84, openBlock as _openBlock84, createElementBlock as _createElementBlock84 } from \"vue\";\nvar dish_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent84({\n name: \"Dish\",\n __name: \"dish\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock84(), _createElementBlock84(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode84(\"path\", {\n fill: \"currentColor\",\n d: \"M480 257.152V192h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96v65.152A448 448 0 0 1 955.52 768H68.48A448 448 0 0 1 480 257.152M128 704h768a384 384 0 1 0-768 0M96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64\"\n })\n ]));\n }\n});\n\n// src/components/dish.vue\nvar dish_default = dish_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/document-add.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent85 } from \"vue\";\nimport { createElementVNode as _createElementVNode85, openBlock as _openBlock85, createElementBlock as _createElementBlock85 } from \"vue\";\nvar document_add_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent85({\n name: \"DocumentAdd\",\n __name: \"document-add\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock85(), _createElementBlock85(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode85(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m320 512V448h64v128h128v64H544v128h-64V640H352v-64z\"\n })\n ]));\n }\n});\n\n// src/components/document-add.vue\nvar document_add_default = document_add_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/document-checked.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent86 } from \"vue\";\nimport { createElementVNode as _createElementVNode86, openBlock as _openBlock86, createElementBlock as _createElementBlock86 } from \"vue\";\nvar document_checked_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent86({\n name: \"DocumentChecked\",\n __name: \"document-checked\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock86(), _createElementBlock86(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode86(\"path\", {\n fill: \"currentColor\",\n d: \"M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m318.4 582.144 180.992-180.992L704.64 510.4 478.4 736.64 320 578.304l45.248-45.312z\"\n })\n ]));\n }\n});\n\n// src/components/document-checked.vue\nvar document_checked_default = document_checked_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/document-copy.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent87 } from \"vue\";\nimport { createElementVNode as _createElementVNode87, openBlock as _openBlock87, createElementBlock as _createElementBlock87 } from \"vue\";\nvar document_copy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent87({\n name: \"DocumentCopy\",\n __name: \"document-copy\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock87(), _createElementBlock87(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode87(\"path\", {\n fill: \"currentColor\",\n d: \"M128 320v576h576V320zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32M960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32M256 672h320v64H256zm0-192h320v64H256z\"\n })\n ]));\n }\n});\n\n// src/components/document-copy.vue\nvar document_copy_default = document_copy_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/document-delete.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent88 } from \"vue\";\nimport { createElementVNode as _createElementVNode88, openBlock as _openBlock88, createElementBlock as _createElementBlock88 } from \"vue\";\nvar document_delete_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent88({\n name: \"DocumentDelete\",\n __name: \"document-delete\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock88(), _createElementBlock88(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode88(\"path\", {\n fill: \"currentColor\",\n d: \"M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m308.992 546.304-90.496-90.624 45.248-45.248 90.56 90.496 90.496-90.432 45.248 45.248-90.496 90.56 90.496 90.496-45.248 45.248-90.496-90.496-90.56 90.496-45.248-45.248 90.496-90.496z\"\n })\n ]));\n }\n});\n\n// src/components/document-delete.vue\nvar document_delete_default = document_delete_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/document-remove.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent89 } from \"vue\";\nimport { createElementVNode as _createElementVNode89, openBlock as _openBlock89, createElementBlock as _createElementBlock89 } from \"vue\";\nvar document_remove_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent89({\n name: \"DocumentRemove\",\n __name: \"document-remove\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock89(), _createElementBlock89(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode89(\"path\", {\n fill: \"currentColor\",\n d: \"M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m192 512h320v64H352z\"\n })\n ]));\n }\n});\n\n// src/components/document-remove.vue\nvar document_remove_default = document_remove_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/document.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent90 } from \"vue\";\nimport { createElementVNode as _createElementVNode90, openBlock as _openBlock90, createElementBlock as _createElementBlock90 } from \"vue\";\nvar document_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent90({\n name: \"Document\",\n __name: \"document\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock90(), _createElementBlock90(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode90(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z\"\n })\n ]));\n }\n});\n\n// src/components/document.vue\nvar document_default = document_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/download.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent91 } from \"vue\";\nimport { createElementVNode as _createElementVNode91, openBlock as _openBlock91, createElementBlock as _createElementBlock91 } from \"vue\";\nvar download_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent91({\n name: \"Download\",\n __name: \"download\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock91(), _createElementBlock91(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode91(\"path\", {\n fill: \"currentColor\",\n d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z\"\n })\n ]));\n }\n});\n\n// src/components/download.vue\nvar download_default = download_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/drizzling.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent92 } from \"vue\";\nimport { createElementVNode as _createElementVNode92, openBlock as _openBlock92, createElementBlock as _createElementBlock92 } from \"vue\";\nvar drizzling_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent92({\n name: \"Drizzling\",\n __name: \"drizzling\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock92(), _createElementBlock92(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode92(\"path\", {\n fill: \"currentColor\",\n d: \"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M288 800h64v64h-64zm192 0h64v64h-64zm-96 96h64v64h-64zm192 0h64v64h-64zm96-96h64v64h-64z\"\n })\n ]));\n }\n});\n\n// src/components/drizzling.vue\nvar drizzling_default = drizzling_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/edit-pen.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent93 } from \"vue\";\nimport { createElementVNode as _createElementVNode93, openBlock as _openBlock93, createElementBlock as _createElementBlock93 } from \"vue\";\nvar edit_pen_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent93({\n name: \"EditPen\",\n __name: \"edit-pen\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock93(), _createElementBlock93(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode93(\"path\", {\n fill: \"currentColor\",\n d: \"m199.04 672.64 193.984 112 224-387.968-193.92-112-224 388.032zm-23.872 60.16 32.896 148.288 144.896-45.696zM455.04 229.248l193.92 112 56.704-98.112-193.984-112-56.64 98.112zM104.32 708.8l384-665.024 304.768 175.936L409.152 884.8h.064l-248.448 78.336zm384 254.272v-64h448v64h-448z\"\n })\n ]));\n }\n});\n\n// src/components/edit-pen.vue\nvar edit_pen_default = edit_pen_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/edit.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent94 } from \"vue\";\nimport { createElementVNode as _createElementVNode94, openBlock as _openBlock94, createElementBlock as _createElementBlock94 } from \"vue\";\nvar edit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent94({\n name: \"Edit\",\n __name: \"edit\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock94(), _createElementBlock94(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode94(\"path\", {\n fill: \"currentColor\",\n d: \"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z\"\n }),\n _createElementVNode94(\"path\", {\n fill: \"currentColor\",\n d: \"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z\"\n })\n ]));\n }\n});\n\n// src/components/edit.vue\nvar edit_default = edit_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/eleme-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent95 } from \"vue\";\nimport { createElementVNode as _createElementVNode95, openBlock as _openBlock95, createElementBlock as _createElementBlock95 } from \"vue\";\nvar eleme_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent95({\n name: \"ElemeFilled\",\n __name: \"eleme-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock95(), _createElementBlock95(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode95(\"path\", {\n fill: \"currentColor\",\n d: \"M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 0 1-112 112H176A112 112 0 0 1 64 848V176c0-61.824 50.176-112 112-112m150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.688 330.688 0 0 0 456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 0 0 4.224-24.32L700.352 724.8a47.552 47.552 0 0 0-65.536-14.272A234.56 234.56 0 0 1 310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.304 234.304 0 0 1 276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.552 47.552 0 0 0-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 0 0 6.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0 0 16-76.48l-20.224-31.04a19.52 19.52 0 0 0-25.152-5.12z\"\n })\n ]));\n }\n});\n\n// src/components/eleme-filled.vue\nvar eleme_filled_default = eleme_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/eleme.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent96 } from \"vue\";\nimport { createElementVNode as _createElementVNode96, openBlock as _openBlock96, createElementBlock as _createElementBlock96 } from \"vue\";\nvar eleme_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent96({\n name: \"Eleme\",\n __name: \"eleme\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock96(), _createElementBlock96(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode96(\"path\", {\n fill: \"currentColor\",\n d: \"M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 0 1-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0 1 16.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 0 0-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 0 0 370.56 78.72 54.336 54.336 0 0 1 74.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 0 1-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24zm526.08 305.28a22.336 22.336 0 0 1 28.8 5.76l23.04 35.52a63.232 63.232 0 0 1-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8l71.04-46.08z\"\n })\n ]));\n }\n});\n\n// src/components/eleme.vue\nvar eleme_default = eleme_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/element-plus.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent97 } from \"vue\";\nimport { createElementVNode as _createElementVNode97, openBlock as _openBlock97, createElementBlock as _createElementBlock97 } from \"vue\";\nvar element_plus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent97({\n name: \"ElementPlus\",\n __name: \"element-plus\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock97(), _createElementBlock97(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode97(\"path\", {\n fill: \"currentColor\",\n d: \"M839.7 734.7c0 33.3-17.9 41-17.9 41S519.7 949.8 499.2 960c-10.2 5.1-20.5 5.1-30.7 0 0 0-314.9-184.3-325.1-192-5.1-5.1-10.2-12.8-12.8-20.5V368.6c0-17.9 20.5-28.2 20.5-28.2L466 158.6c12.8-5.1 25.6-5.1 38.4 0 0 0 279 161.3 309.8 179.2 17.9 7.7 28.2 25.6 25.6 46.1-.1-5-.1 317.5-.1 350.8M714.2 371.2c-64-35.8-217.6-125.4-217.6-125.4-7.7-5.1-20.5-5.1-30.7 0L217.6 389.1s-17.9 10.2-17.9 23v297c0 5.1 5.1 12.8 7.7 17.9 7.7 5.1 256 148.5 256 148.5 7.7 5.1 17.9 5.1 25.6 0 15.4-7.7 250.9-145.9 250.9-145.9s12.8-5.1 12.8-30.7v-74.2l-276.5 169v-64c0-17.9 7.7-30.7 20.5-46.1L745 535c5.1-7.7 10.2-20.5 10.2-30.7v-66.6l-279 169v-69.1c0-15.4 5.1-30.7 17.9-38.4l220.1-128zM919 135.7c0-5.1-5.1-7.7-7.7-7.7h-58.9V66.6c0-5.1-5.1-5.1-10.2-5.1l-30.7 5.1c-5.1 0-5.1 2.6-5.1 5.1V128h-56.3c-5.1 0-5.1 5.1-7.7 5.1v38.4h69.1v64c0 5.1 5.1 5.1 10.2 5.1l30.7-5.1c5.1 0 5.1-2.6 5.1-5.1v-56.3h64l-2.5-38.4z\"\n })\n ]));\n }\n});\n\n// src/components/element-plus.vue\nvar element_plus_default = element_plus_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/expand.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent98 } from \"vue\";\nimport { createElementVNode as _createElementVNode98, openBlock as _openBlock98, createElementBlock as _createElementBlock98 } from \"vue\";\nvar expand_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent98({\n name: \"Expand\",\n __name: \"expand\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock98(), _createElementBlock98(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode98(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192h768v128H128zm0 256h512v128H128zm0 256h768v128H128zm576-352 192 160-192 128z\"\n })\n ]));\n }\n});\n\n// src/components/expand.vue\nvar expand_default = expand_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/failed.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent99 } from \"vue\";\nimport { createElementVNode as _createElementVNode99, openBlock as _openBlock99, createElementBlock as _createElementBlock99 } from \"vue\";\nvar failed_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent99({\n name: \"Failed\",\n __name: \"failed\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock99(), _createElementBlock99(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode99(\"path\", {\n fill: \"currentColor\",\n d: \"m557.248 608 135.744-135.744-45.248-45.248-135.68 135.744-135.808-135.68-45.248 45.184L466.752 608l-135.68 135.68 45.184 45.312L512 653.248l135.744 135.744 45.248-45.248L557.312 608zM704 192h160v736H160V192h160v64h384zm-320 0V96h256v96z\"\n })\n ]));\n }\n});\n\n// src/components/failed.vue\nvar failed_default = failed_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/female.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent100 } from \"vue\";\nimport { createElementVNode as _createElementVNode100, openBlock as _openBlock100, createElementBlock as _createElementBlock100 } from \"vue\";\nvar female_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent100({\n name: \"Female\",\n __name: \"female\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock100(), _createElementBlock100(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode100(\"path\", {\n fill: \"currentColor\",\n d: \"M512 640a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640\"\n }),\n _createElementVNode100(\"path\", {\n fill: \"currentColor\",\n d: \"M512 640q32 0 32 32v256q0 32-32 32t-32-32V672q0-32 32-32\"\n }),\n _createElementVNode100(\"path\", {\n fill: \"currentColor\",\n d: \"M352 800h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/female.vue\nvar female_default = female_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/files.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent101 } from \"vue\";\nimport { createElementVNode as _createElementVNode101, openBlock as _openBlock101, createElementBlock as _createElementBlock101 } from \"vue\";\nvar files_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent101({\n name: \"Files\",\n __name: \"files\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock101(), _createElementBlock101(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode101(\"path\", {\n fill: \"currentColor\",\n d: \"M128 384v448h768V384zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32m64-128h704v64H160zm96-128h512v64H256z\"\n })\n ]));\n }\n});\n\n// src/components/files.vue\nvar files_default = files_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/film.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent102 } from \"vue\";\nimport { createElementVNode as _createElementVNode102, openBlock as _openBlock102, createElementBlock as _createElementBlock102 } from \"vue\";\nvar film_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent102({\n name: \"Film\",\n __name: \"film\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock102(), _createElementBlock102(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode102(\"path\", {\n fill: \"currentColor\",\n d: \"M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32\"\n }),\n _createElementVNode102(\"path\", {\n fill: \"currentColor\",\n d: \"M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64z\"\n })\n ]));\n }\n});\n\n// src/components/film.vue\nvar film_default = film_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/filter.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent103 } from \"vue\";\nimport { createElementVNode as _createElementVNode103, openBlock as _openBlock103, createElementBlock as _createElementBlock103 } from \"vue\";\nvar filter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent103({\n name: \"Filter\",\n __name: \"filter\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock103(), _createElementBlock103(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode103(\"path\", {\n fill: \"currentColor\",\n d: \"M384 523.392V928a32 32 0 0 0 46.336 28.608l192-96A32 32 0 0 0 640 832V523.392l280.768-343.104a32 32 0 1 0-49.536-40.576l-288 352A32 32 0 0 0 576 512v300.224l-128 64V512a32 32 0 0 0-7.232-20.288L195.52 192H704a32 32 0 1 0 0-64H128a32 32 0 0 0-24.768 52.288z\"\n })\n ]));\n }\n});\n\n// src/components/filter.vue\nvar filter_default = filter_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/finished.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent104 } from \"vue\";\nimport { createElementVNode as _createElementVNode104, openBlock as _openBlock104, createElementBlock as _createElementBlock104 } from \"vue\";\nvar finished_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent104({\n name: \"Finished\",\n __name: \"finished\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock104(), _createElementBlock104(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode104(\"path\", {\n fill: \"currentColor\",\n d: \"M280.768 753.728 691.456 167.04a32 32 0 1 1 52.416 36.672L314.24 817.472a32 32 0 0 1-45.44 7.296l-230.4-172.8a32 32 0 0 1 38.4-51.2l203.968 152.96zM736 448a32 32 0 1 1 0-64h192a32 32 0 1 1 0 64zM608 640a32 32 0 0 1 0-64h319.936a32 32 0 1 1 0 64zM480 832a32 32 0 1 1 0-64h447.936a32 32 0 1 1 0 64z\"\n })\n ]));\n }\n});\n\n// src/components/finished.vue\nvar finished_default = finished_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/first-aid-kit.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent105 } from \"vue\";\nimport { createElementVNode as _createElementVNode105, openBlock as _openBlock105, createElementBlock as _createElementBlock105 } from \"vue\";\nvar first_aid_kit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent105({\n name: \"FirstAidKit\",\n __name: \"first-aid-kit\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock105(), _createElementBlock105(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode105(\"path\", {\n fill: \"currentColor\",\n d: \"M192 256a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128\"\n }),\n _createElementVNode105(\"path\", {\n fill: \"currentColor\",\n d: \"M544 512h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0zM352 128v64h320v-64zm-32-64h384a32 32 0 0 1 32 32v128a32 32 0 0 1-32 32H320a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/first-aid-kit.vue\nvar first_aid_kit_default = first_aid_kit_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/flag.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent106 } from \"vue\";\nimport { createElementVNode as _createElementVNode106, openBlock as _openBlock106, createElementBlock as _createElementBlock106 } from \"vue\";\nvar flag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent106({\n name: \"Flag\",\n __name: \"flag\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock106(), _createElementBlock106(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode106(\"path\", {\n fill: \"currentColor\",\n d: \"M288 128h608L736 384l160 256H288v320h-96V64h96z\"\n })\n ]));\n }\n});\n\n// src/components/flag.vue\nvar flag_default = flag_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/fold.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent107 } from \"vue\";\nimport { createElementVNode as _createElementVNode107, openBlock as _openBlock107, createElementBlock as _createElementBlock107 } from \"vue\";\nvar fold_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent107({\n name: \"Fold\",\n __name: \"fold\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock107(), _createElementBlock107(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode107(\"path\", {\n fill: \"currentColor\",\n d: \"M896 192H128v128h768zm0 256H384v128h512zm0 256H128v128h768zM320 384 128 512l192 128z\"\n })\n ]));\n }\n});\n\n// src/components/fold.vue\nvar fold_default = fold_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/folder-add.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent108 } from \"vue\";\nimport { createElementVNode as _createElementVNode108, openBlock as _openBlock108, createElementBlock as _createElementBlock108 } from \"vue\";\nvar folder_add_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent108({\n name: \"FolderAdd\",\n __name: \"folder-add\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock108(), _createElementBlock108(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode108(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m384 416V416h64v128h128v64H544v128h-64V608H352v-64z\"\n })\n ]));\n }\n});\n\n// src/components/folder-add.vue\nvar folder_add_default = folder_add_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/folder-checked.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent109 } from \"vue\";\nimport { createElementVNode as _createElementVNode109, openBlock as _openBlock109, createElementBlock as _createElementBlock109 } from \"vue\";\nvar folder_checked_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent109({\n name: \"FolderChecked\",\n __name: \"folder-checked\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock109(), _createElementBlock109(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode109(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m414.08 502.144 180.992-180.992L736.32 494.4 510.08 720.64l-158.4-158.336 45.248-45.312z\"\n })\n ]));\n }\n});\n\n// src/components/folder-checked.vue\nvar folder_checked_default = folder_checked_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/folder-delete.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent110 } from \"vue\";\nimport { createElementVNode as _createElementVNode110, openBlock as _openBlock110, createElementBlock as _createElementBlock110 } from \"vue\";\nvar folder_delete_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent110({\n name: \"FolderDelete\",\n __name: \"folder-delete\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock110(), _createElementBlock110(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode110(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m370.752 448-90.496-90.496 45.248-45.248L512 530.752l90.496-90.496 45.248 45.248L557.248 576l90.496 90.496-45.248 45.248L512 621.248l-90.496 90.496-45.248-45.248z\"\n })\n ]));\n }\n});\n\n// src/components/folder-delete.vue\nvar folder_delete_default = folder_delete_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/folder-opened.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent111 } from \"vue\";\nimport { createElementVNode as _createElementVNode111, openBlock as _openBlock111, createElementBlock as _createElementBlock111 } from \"vue\";\nvar folder_opened_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent111({\n name: \"FolderOpened\",\n __name: \"folder-opened\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock111(), _createElementBlock111(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode111(\"path\", {\n fill: \"currentColor\",\n d: \"M878.08 448H241.92l-96 384h636.16l96-384zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 0 1 216.96 384zm-24.96 512H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h287.872l128.384 128H864a32 32 0 0 1 32 32v96h23.04a32 32 0 0 1 31.04 39.744l-112 448A32 32 0 0 1 807.04 896\"\n })\n ]));\n }\n});\n\n// src/components/folder-opened.vue\nvar folder_opened_default = folder_opened_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/folder-remove.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent112 } from \"vue\";\nimport { createElementVNode as _createElementVNode112, openBlock as _openBlock112, createElementBlock as _createElementBlock112 } from \"vue\";\nvar folder_remove_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent112({\n name: \"FolderRemove\",\n __name: \"folder-remove\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock112(), _createElementBlock112(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode112(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m256 416h320v64H352z\"\n })\n ]));\n }\n});\n\n// src/components/folder-remove.vue\nvar folder_remove_default = folder_remove_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/folder.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent113 } from \"vue\";\nimport { createElementVNode as _createElementVNode113, openBlock as _openBlock113, createElementBlock as _createElementBlock113 } from \"vue\";\nvar folder_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent113({\n name: \"Folder\",\n __name: \"folder\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock113(), _createElementBlock113(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode113(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/folder.vue\nvar folder_default = folder_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/food.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent114 } from \"vue\";\nimport { createElementVNode as _createElementVNode114, openBlock as _openBlock114, createElementBlock as _createElementBlock114 } from \"vue\";\nvar food_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent114({\n name: \"Food\",\n __name: \"food\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock114(), _createElementBlock114(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode114(\"path\", {\n fill: \"currentColor\",\n d: \"M128 352.576V352a288 288 0 0 1 491.072-204.224 192 192 0 0 1 274.24 204.48 64 64 0 0 1 57.216 74.24C921.6 600.512 850.048 710.656 736 756.992V800a96 96 0 0 1-96 96H384a96 96 0 0 1-96-96v-43.008c-114.048-46.336-185.6-156.48-214.528-330.496A64 64 0 0 1 128 352.64zm64-.576h64a160 160 0 0 1 320 0h64a224 224 0 0 0-448 0m128 0h192a96 96 0 0 0-192 0m439.424 0h68.544A128.256 128.256 0 0 0 704 192c-15.36 0-29.952 2.688-43.52 7.616 11.328 18.176 20.672 37.76 27.84 58.304A64.128 64.128 0 0 1 759.424 352M672 768H352v32a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32zm-342.528-64h365.056c101.504-32.64 165.76-124.928 192.896-288H136.576c27.136 163.072 91.392 255.36 192.896 288\"\n })\n ]));\n }\n});\n\n// src/components/food.vue\nvar food_default = food_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/football.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent115 } from \"vue\";\nimport { createElementVNode as _createElementVNode115, openBlock as _openBlock115, createElementBlock as _createElementBlock115 } from \"vue\";\nvar football_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent115({\n name: \"Football\",\n __name: \"football\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock115(), _createElementBlock115(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode115(\"path\", {\n fill: \"currentColor\",\n d: \"M512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896m0-64a384 384 0 1 0 0-768 384 384 0 0 0 0 768\"\n }),\n _createElementVNode115(\"path\", {\n fill: \"currentColor\",\n d: \"M186.816 268.288c16-16.384 31.616-31.744 46.976-46.08 17.472 30.656 39.808 58.112 65.984 81.28l-32.512 56.448a385.984 385.984 0 0 1-80.448-91.648zm653.696-5.312a385.92 385.92 0 0 1-83.776 96.96l-32.512-56.384a322.923 322.923 0 0 0 68.48-85.76c15.552 14.08 31.488 29.12 47.808 45.184zM465.984 445.248l11.136-63.104a323.584 323.584 0 0 0 69.76 0l11.136 63.104a387.968 387.968 0 0 1-92.032 0m-62.72-12.8A381.824 381.824 0 0 1 320 396.544l32-55.424a319.885 319.885 0 0 0 62.464 27.712l-11.2 63.488zm300.8-35.84a381.824 381.824 0 0 1-83.328 35.84l-11.2-63.552A319.885 319.885 0 0 0 672 341.184l32 55.424zm-520.768 364.8a385.92 385.92 0 0 1 83.968-97.28l32.512 56.32c-26.88 23.936-49.856 52.352-67.52 84.032-16-13.44-32.32-27.712-48.96-43.072zm657.536.128a1442.759 1442.759 0 0 1-49.024 43.072 321.408 321.408 0 0 0-67.584-84.16l32.512-56.32c33.216 27.456 61.696 60.352 84.096 97.408zM465.92 578.752a387.968 387.968 0 0 1 92.032 0l-11.136 63.104a323.584 323.584 0 0 0-69.76 0zm-62.72 12.8 11.2 63.552a319.885 319.885 0 0 0-62.464 27.712L320 627.392a381.824 381.824 0 0 1 83.264-35.84zm300.8 35.84-32 55.424a318.272 318.272 0 0 0-62.528-27.712l11.2-63.488c29.44 8.64 57.28 20.736 83.264 35.776z\"\n })\n ]));\n }\n});\n\n// src/components/football.vue\nvar football_default = football_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/fork-spoon.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent116 } from \"vue\";\nimport { createElementVNode as _createElementVNode116, openBlock as _openBlock116, createElementBlock as _createElementBlock116 } from \"vue\";\nvar fork_spoon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent116({\n name: \"ForkSpoon\",\n __name: \"fork-spoon\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock116(), _createElementBlock116(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode116(\"path\", {\n fill: \"currentColor\",\n d: \"M256 410.304V96a32 32 0 0 1 64 0v314.304a96 96 0 0 0 64-90.56V96a32 32 0 0 1 64 0v223.744a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.544a160 160 0 0 1-128-156.8V96a32 32 0 0 1 64 0v223.744a96 96 0 0 0 64 90.56zM672 572.48C581.184 552.128 512 446.848 512 320c0-141.44 85.952-256 192-256s192 114.56 192 256c0 126.848-69.184 232.128-160 252.48V928a32 32 0 1 1-64 0zM704 512c66.048 0 128-82.56 128-192s-61.952-192-128-192-128 82.56-128 192 61.952 192 128 192\"\n })\n ]));\n }\n});\n\n// src/components/fork-spoon.vue\nvar fork_spoon_default = fork_spoon_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/fries.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent117 } from \"vue\";\nimport { createElementVNode as _createElementVNode117, openBlock as _openBlock117, createElementBlock as _createElementBlock117 } from \"vue\";\nvar fries_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent117({\n name: \"Fries\",\n __name: \"fries\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock117(), _createElementBlock117(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode117(\"path\", {\n fill: \"currentColor\",\n d: \"M608 224v-64a32 32 0 0 0-64 0v336h26.88A64 64 0 0 0 608 484.096zm101.12 160A64 64 0 0 0 672 395.904V384h64V224a32 32 0 1 0-64 0v160zm74.88 0a92.928 92.928 0 0 1 91.328 110.08l-60.672 323.584A96 96 0 0 1 720.32 896H303.68a96 96 0 0 1-94.336-78.336L148.672 494.08A92.928 92.928 0 0 1 240 384h-16V224a96 96 0 0 1 188.608-25.28A95.744 95.744 0 0 1 480 197.44V160a96 96 0 0 1 188.608-25.28A96 96 0 0 1 800 224v160zM670.784 512a128 128 0 0 1-99.904 48H453.12a128 128 0 0 1-99.84-48H352v-1.536a128.128 128.128 0 0 1-9.984-14.976L314.88 448H240a28.928 28.928 0 0 0-28.48 34.304L241.088 640h541.824l29.568-157.696A28.928 28.928 0 0 0 784 448h-74.88l-27.136 47.488A132.405 132.405 0 0 1 672 510.464V512zM480 288a32 32 0 0 0-64 0v196.096A64 64 0 0 0 453.12 496H480zm-128 96V224a32 32 0 0 0-64 0v160zh-37.12A64 64 0 0 1 352 395.904zm-98.88 320 19.072 101.888A32 32 0 0 0 303.68 832h416.64a32 32 0 0 0 31.488-26.112L770.88 704z\"\n })\n ]));\n }\n});\n\n// src/components/fries.vue\nvar fries_default = fries_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/full-screen.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent118 } from \"vue\";\nimport { createElementVNode as _createElementVNode118, openBlock as _openBlock118, createElementBlock as _createElementBlock118 } from \"vue\";\nvar full_screen_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent118({\n name: \"FullScreen\",\n __name: \"full-screen\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock118(), _createElementBlock118(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode118(\"path\", {\n fill: \"currentColor\",\n d: \"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z\"\n })\n ]));\n }\n});\n\n// src/components/full-screen.vue\nvar full_screen_default = full_screen_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/goblet-full.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent119 } from \"vue\";\nimport { createElementVNode as _createElementVNode119, openBlock as _openBlock119, createElementBlock as _createElementBlock119 } from \"vue\";\nvar goblet_full_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent119({\n name: \"GobletFull\",\n __name: \"goblet-full\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock119(), _createElementBlock119(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode119(\"path\", {\n fill: \"currentColor\",\n d: \"M256 320h512c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320m503.936 64H264.064a256.128 256.128 0 0 0 495.872 0zM544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4\"\n })\n ]));\n }\n});\n\n// src/components/goblet-full.vue\nvar goblet_full_default = goblet_full_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/goblet-square-full.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent120 } from \"vue\";\nimport { createElementVNode as _createElementVNode120, openBlock as _openBlock120, createElementBlock as _createElementBlock120 } from \"vue\";\nvar goblet_square_full_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent120({\n name: \"GobletSquareFull\",\n __name: \"goblet-square-full\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock120(), _createElementBlock120(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode120(\"path\", {\n fill: \"currentColor\",\n d: \"M256 270.912c10.048 6.72 22.464 14.912 28.992 18.624a220.16 220.16 0 0 0 114.752 30.72c30.592 0 49.408-9.472 91.072-41.152l.64-.448c52.928-40.32 82.368-55.04 132.288-54.656 55.552.448 99.584 20.8 142.72 57.408l1.536 1.28V128H256v142.912zm.96 76.288C266.368 482.176 346.88 575.872 512 576c157.44.064 237.952-85.056 253.248-209.984a952.32 952.32 0 0 1-40.192-35.712c-32.704-27.776-63.36-41.92-101.888-42.24-31.552-.256-50.624 9.28-93.12 41.6l-.576.448c-52.096 39.616-81.024 54.208-129.792 54.208-54.784 0-100.48-13.376-142.784-37.056zM480 638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96z\"\n })\n ]));\n }\n});\n\n// src/components/goblet-square-full.vue\nvar goblet_square_full_default = goblet_square_full_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/goblet-square.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent121 } from \"vue\";\nimport { createElementVNode as _createElementVNode121, openBlock as _openBlock121, createElementBlock as _createElementBlock121 } from \"vue\";\nvar goblet_square_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent121({\n name: \"GobletSquare\",\n __name: \"goblet-square\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock121(), _createElementBlock121(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode121(\"path\", {\n fill: \"currentColor\",\n d: \"M544 638.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912M256 319.68c0 149.568 80 256.192 256 256.256C688.128 576 768 469.568 768 320V128H256z\"\n })\n ]));\n }\n});\n\n// src/components/goblet-square.vue\nvar goblet_square_default = goblet_square_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/goblet.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent122 } from \"vue\";\nimport { createElementVNode as _createElementVNode122, openBlock as _openBlock122, createElementBlock as _createElementBlock122 } from \"vue\";\nvar goblet_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent122({\n name: \"Goblet\",\n __name: \"goblet\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock122(), _createElementBlock122(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode122(\"path\", {\n fill: \"currentColor\",\n d: \"M544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4M256 320a256 256 0 1 0 512 0c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320\"\n })\n ]));\n }\n});\n\n// src/components/goblet.vue\nvar goblet_default = goblet_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/gold-medal.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent123 } from \"vue\";\nimport { createElementVNode as _createElementVNode123, openBlock as _openBlock123, createElementBlock as _createElementBlock123 } from \"vue\";\nvar gold_medal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent123({\n name: \"GoldMedal\",\n __name: \"gold-medal\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock123(), _createElementBlock123(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode123(\"path\", {\n fill: \"currentColor\",\n d: \"m772.13 452.84 53.86-351.81c1.32-10.01-1.17-18.68-7.49-26.02S804.35 64 795.01 64H228.99v-.01h-.06c-9.33 0-17.15 3.67-23.49 11.01s-8.83 16.01-7.49 26.02l53.87 351.89C213.54 505.73 193.59 568.09 192 640c2 90.67 33.17 166.17 93.5 226.5S421.33 957.99 512 960c90.67-2 166.17-33.17 226.5-93.5 60.33-60.34 91.49-135.83 93.5-226.5-1.59-71.94-21.56-134.32-59.87-187.16zM640.01 128h117.02l-39.01 254.02c-20.75-10.64-40.74-19.73-59.94-27.28-5.92-3-11.95-5.8-18.08-8.41V128h.01zM576 128v198.76c-13.18-2.58-26.74-4.43-40.67-5.55-8.07-.8-15.85-1.2-23.33-1.2-10.54 0-21.09.66-31.64 1.96a359.844 359.844 0 0 0-32.36 4.79V128zm-192 0h.04v218.3c-6.22 2.66-12.34 5.5-18.36 8.56-19.13 7.54-39.02 16.6-59.66 27.16L267.01 128zm308.99 692.99c-48 48-108.33 73-180.99 75.01-72.66-2.01-132.99-27.01-180.99-75.01S258.01 712.66 256 640c2.01-72.66 27.01-132.99 75.01-180.99 19.67-19.67 41.41-35.47 65.22-47.41 38.33-15.04 71.15-23.92 98.44-26.65 5.07-.41 10.2-.7 15.39-.88.63-.01 1.28-.03 1.91-.03.66 0 1.35.03 2.02.04 5.11.17 10.15.46 15.13.86 27.4 2.71 60.37 11.65 98.91 26.79 23.71 11.93 45.36 27.69 64.96 47.29 48 48 73 108.33 75.01 180.99-2.01 72.65-27.01 132.98-75.01 180.98z\"\n }),\n _createElementVNode123(\"path\", {\n fill: \"currentColor\",\n d: \"M544 480H416v64h64v192h-64v64h192v-64h-64z\"\n })\n ]));\n }\n});\n\n// src/components/gold-medal.vue\nvar gold_medal_default = gold_medal_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/goods-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent124 } from \"vue\";\nimport { createElementVNode as _createElementVNode124, openBlock as _openBlock124, createElementBlock as _createElementBlock124 } from \"vue\";\nvar goods_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent124({\n name: \"GoodsFilled\",\n __name: \"goods-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock124(), _createElementBlock124(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode124(\"path\", {\n fill: \"currentColor\",\n d: \"M192 352h640l64 544H128zm128 224h64V448h-64zm320 0h64V448h-64zM384 288h-64a192 192 0 1 1 384 0h-64a128 128 0 1 0-256 0\"\n })\n ]));\n }\n});\n\n// src/components/goods-filled.vue\nvar goods_filled_default = goods_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/goods.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent125 } from \"vue\";\nimport { createElementVNode as _createElementVNode125, openBlock as _openBlock125, createElementBlock as _createElementBlock125 } from \"vue\";\nvar goods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent125({\n name: \"Goods\",\n __name: \"goods\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock125(), _createElementBlock125(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode125(\"path\", {\n fill: \"currentColor\",\n d: \"M320 288v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4h131.072a32 32 0 0 1 31.808 28.8l57.6 576a32 32 0 0 1-31.808 35.2H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320zm64 0h256v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4zm-64 64H217.92l-51.2 512h690.56l-51.264-512H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0z\"\n })\n ]));\n }\n});\n\n// src/components/goods.vue\nvar goods_default = goods_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/grape.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent126 } from \"vue\";\nimport { createElementVNode as _createElementVNode126, openBlock as _openBlock126, createElementBlock as _createElementBlock126 } from \"vue\";\nvar grape_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent126({\n name: \"Grape\",\n __name: \"grape\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock126(), _createElementBlock126(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode126(\"path\", {\n fill: \"currentColor\",\n d: \"M544 195.2a160 160 0 0 1 96 60.8 160 160 0 1 1 146.24 254.976 160 160 0 0 1-128 224 160 160 0 1 1-292.48 0 160 160 0 0 1-128-224A160 160 0 1 1 384 256a160 160 0 0 1 96-60.8V128h-64a32 32 0 0 1 0-64h192a32 32 0 0 1 0 64h-64zM512 448a96 96 0 1 0 0-192 96 96 0 0 0 0 192m-256 0a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192\"\n })\n ]));\n }\n});\n\n// src/components/grape.vue\nvar grape_default = grape_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/grid.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent127 } from \"vue\";\nimport { createElementVNode as _createElementVNode127, openBlock as _openBlock127, createElementBlock as _createElementBlock127 } from \"vue\";\nvar grid_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent127({\n name: \"Grid\",\n __name: \"grid\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock127(), _createElementBlock127(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode127(\"path\", {\n fill: \"currentColor\",\n d: \"M640 384v256H384V384zm64 0h192v256H704zm-64 512H384V704h256zm64 0V704h192v192zm-64-768v192H384V128zm64 0h192v192H704zM320 384v256H128V384zm0 512H128V704h192zm0-768v192H128V128z\"\n })\n ]));\n }\n});\n\n// src/components/grid.vue\nvar grid_default = grid_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/guide.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent128 } from \"vue\";\nimport { createElementVNode as _createElementVNode128, openBlock as _openBlock128, createElementBlock as _createElementBlock128 } from \"vue\";\nvar guide_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent128({\n name: \"Guide\",\n __name: \"guide\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock128(), _createElementBlock128(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode128(\"path\", {\n fill: \"currentColor\",\n d: \"M640 608h-64V416h64zm0 160v160a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V768h64v128h128V768zM384 608V416h64v192zm256-352h-64V128H448v128h-64V96a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32z\"\n }),\n _createElementVNode128(\"path\", {\n fill: \"currentColor\",\n d: \"m220.8 256-71.232 80 71.168 80H768V256H220.8zm-14.4-64H800a32 32 0 0 1 32 32v224a32 32 0 0 1-32 32H206.4a32 32 0 0 1-23.936-10.752l-99.584-112a32 32 0 0 1 0-42.496l99.584-112A32 32 0 0 1 206.4 192m678.784 496-71.104 80H266.816V608h547.2l71.168 80zm-56.768-144H234.88a32 32 0 0 0-32 32v224a32 32 0 0 0 32 32h593.6a32 32 0 0 0 23.936-10.752l99.584-112a32 32 0 0 0 0-42.496l-99.584-112A32 32 0 0 0 828.48 544z\"\n })\n ]));\n }\n});\n\n// src/components/guide.vue\nvar guide_default = guide_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/handbag.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent129 } from \"vue\";\nimport { createElementVNode as _createElementVNode129, openBlock as _openBlock129, createElementBlock as _createElementBlock129 } from \"vue\";\nvar handbag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent129({\n name: \"Handbag\",\n __name: \"handbag\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock129(), _createElementBlock129(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode129(\"path\", {\n fill: \"currentColor\",\n d: \"M887.01 264.99c-6-5.99-13.67-8.99-23.01-8.99H704c-1.34-54.68-20.01-100.01-56-136s-81.32-54.66-136-56c-54.68 1.34-100.01 20.01-136 56s-54.66 81.32-56 136H160c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.67-8.99 23.01v640c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V288c0-9.35-2.99-17.02-8.99-23.01M421.5 165.5c24.32-24.34 54.49-36.84 90.5-37.5 35.99.68 66.16 13.18 90.5 37.5s36.84 54.49 37.5 90.5H384c.68-35.99 13.18-66.16 37.5-90.5M832 896H192V320h128v128h64V320h256v128h64V320h128z\"\n })\n ]));\n }\n});\n\n// src/components/handbag.vue\nvar handbag_default = handbag_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/headset.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent130 } from \"vue\";\nimport { createElementVNode as _createElementVNode130, openBlock as _openBlock130, createElementBlock as _createElementBlock130 } from \"vue\";\nvar headset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent130({\n name: \"Headset\",\n __name: \"headset\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock130(), _createElementBlock130(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode130(\"path\", {\n fill: \"currentColor\",\n d: \"M896 529.152V512a384 384 0 1 0-768 0v17.152A128 128 0 0 1 320 640v128a128 128 0 1 1-256 0V512a448 448 0 1 1 896 0v256a128 128 0 1 1-256 0V640a128 128 0 0 1 192-110.848M896 640a64 64 0 0 0-128 0v128a64 64 0 0 0 128 0zm-768 0v128a64 64 0 0 0 128 0V640a64 64 0 1 0-128 0\"\n })\n ]));\n }\n});\n\n// src/components/headset.vue\nvar headset_default = headset_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/help-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent131 } from \"vue\";\nimport { createElementVNode as _createElementVNode131, openBlock as _openBlock131, createElementBlock as _createElementBlock131 } from \"vue\";\nvar help_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent131({\n name: \"HelpFilled\",\n __name: \"help-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock131(), _createElementBlock131(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode131(\"path\", {\n fill: \"currentColor\",\n d: \"M926.784 480H701.312A192.512 192.512 0 0 0 544 322.688V97.216A416.064 416.064 0 0 1 926.784 480m0 64A416.064 416.064 0 0 1 544 926.784V701.312A192.512 192.512 0 0 0 701.312 544zM97.28 544h225.472A192.512 192.512 0 0 0 480 701.312v225.472A416.064 416.064 0 0 1 97.216 544zm0-64A416.064 416.064 0 0 1 480 97.216v225.472A192.512 192.512 0 0 0 322.688 480H97.216z\"\n })\n ]));\n }\n});\n\n// src/components/help-filled.vue\nvar help_filled_default = help_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/help.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent132 } from \"vue\";\nimport { createElementVNode as _createElementVNode132, openBlock as _openBlock132, createElementBlock as _createElementBlock132 } from \"vue\";\nvar help_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent132({\n name: \"Help\",\n __name: \"help\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock132(), _createElementBlock132(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode132(\"path\", {\n fill: \"currentColor\",\n d: \"m759.936 805.248-90.944-91.008A254.912 254.912 0 0 1 512 768a254.912 254.912 0 0 1-156.992-53.76l-90.944 91.008A382.464 382.464 0 0 0 512 896c94.528 0 181.12-34.176 247.936-90.752m45.312-45.312A382.464 382.464 0 0 0 896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512c0 59.136-20.096 113.6-53.76 156.992l91.008 90.944zm-45.312-541.184A382.464 382.464 0 0 0 512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.912 254.912 0 0 1 512 256c59.136 0 113.6 20.096 156.992 53.76l90.944-91.008zm-541.184 45.312A382.464 382.464 0 0 0 128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.912 254.912 0 0 1 256 512c0-59.136 20.096-113.6 53.76-156.992zm417.28 394.496a194.56 194.56 0 0 0 22.528-22.528C686.912 602.56 704 559.232 704 512a191.232 191.232 0 0 0-67.968-146.56A191.296 191.296 0 0 0 512 320a191.232 191.232 0 0 0-146.56 67.968C337.088 421.44 320 464.768 320 512a191.232 191.232 0 0 0 67.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n })\n ]));\n }\n});\n\n// src/components/help.vue\nvar help_default = help_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/hide.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent133 } from \"vue\";\nimport { createElementVNode as _createElementVNode133, openBlock as _openBlock133, createElementBlock as _createElementBlock133 } from \"vue\";\nvar hide_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent133({\n name: \"Hide\",\n __name: \"hide\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock133(), _createElementBlock133(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode133(\"path\", {\n fill: \"currentColor\",\n d: \"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z\"\n }),\n _createElementVNode133(\"path\", {\n fill: \"currentColor\",\n d: \"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z\"\n })\n ]));\n }\n});\n\n// src/components/hide.vue\nvar hide_default = hide_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/histogram.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent134 } from \"vue\";\nimport { createElementVNode as _createElementVNode134, openBlock as _openBlock134, createElementBlock as _createElementBlock134 } from \"vue\";\nvar histogram_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent134({\n name: \"Histogram\",\n __name: \"histogram\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock134(), _createElementBlock134(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode134(\"path\", {\n fill: \"currentColor\",\n d: \"M416 896V128h192v768zm-288 0V448h192v448zm576 0V320h192v576z\"\n })\n ]));\n }\n});\n\n// src/components/histogram.vue\nvar histogram_default = histogram_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/home-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent135 } from \"vue\";\nimport { createElementVNode as _createElementVNode135, openBlock as _openBlock135, createElementBlock as _createElementBlock135 } from \"vue\";\nvar home_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent135({\n name: \"HomeFilled\",\n __name: \"home-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock135(), _createElementBlock135(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode135(\"path\", {\n fill: \"currentColor\",\n d: \"M512 128 128 447.936V896h255.936V640H640v256h255.936V447.936z\"\n })\n ]));\n }\n});\n\n// src/components/home-filled.vue\nvar home_filled_default = home_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/hot-water.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent136 } from \"vue\";\nimport { createElementVNode as _createElementVNode136, openBlock as _openBlock136, createElementBlock as _createElementBlock136 } from \"vue\";\nvar hot_water_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent136({\n name: \"HotWater\",\n __name: \"hot-water\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock136(), _createElementBlock136(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode136(\"path\", {\n fill: \"currentColor\",\n d: \"M273.067 477.867h477.866V409.6H273.067zm0 68.266v51.2A187.733 187.733 0 0 0 460.8 785.067h102.4a187.733 187.733 0 0 0 187.733-187.734v-51.2H273.067zm-34.134-204.8h546.134a34.133 34.133 0 0 1 34.133 34.134v221.866a256 256 0 0 1-256 256H460.8a256 256 0 0 1-256-256V375.467a34.133 34.133 0 0 1 34.133-34.134zM512 34.133a34.133 34.133 0 0 1 34.133 34.134v170.666a34.133 34.133 0 0 1-68.266 0V68.267A34.133 34.133 0 0 1 512 34.133zM375.467 102.4a34.133 34.133 0 0 1 34.133 34.133v102.4a34.133 34.133 0 0 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.134-34.133m273.066 0a34.133 34.133 0 0 1 34.134 34.133v102.4a34.133 34.133 0 1 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.133-34.133M170.667 921.668h682.666a34.133 34.133 0 1 1 0 68.267H170.667a34.133 34.133 0 1 1 0-68.267z\"\n })\n ]));\n }\n});\n\n// src/components/hot-water.vue\nvar hot_water_default = hot_water_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/house.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent137 } from \"vue\";\nimport { createElementVNode as _createElementVNode137, openBlock as _openBlock137, createElementBlock as _createElementBlock137 } from \"vue\";\nvar house_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent137({\n name: \"House\",\n __name: \"house\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock137(), _createElementBlock137(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode137(\"path\", {\n fill: \"currentColor\",\n d: \"M192 413.952V896h640V413.952L512 147.328zM139.52 374.4l352-293.312a32 32 0 0 1 40.96 0l352 293.312A32 32 0 0 1 896 398.976V928a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V398.976a32 32 0 0 1 11.52-24.576\"\n })\n ]));\n }\n});\n\n// src/components/house.vue\nvar house_default = house_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ice-cream-round.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent138 } from \"vue\";\nimport { createElementVNode as _createElementVNode138, openBlock as _openBlock138, createElementBlock as _createElementBlock138 } from \"vue\";\nvar ice_cream_round_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent138({\n name: \"IceCreamRound\",\n __name: \"ice-cream-round\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock138(), _createElementBlock138(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode138(\"path\", {\n fill: \"currentColor\",\n d: \"m308.352 489.344 226.304 226.304a32 32 0 0 0 45.248 0L783.552 512A192 192 0 1 0 512 240.448L308.352 444.16a32 32 0 0 0 0 45.248zm135.744 226.304L308.352 851.392a96 96 0 0 1-135.744-135.744l135.744-135.744-45.248-45.248a96 96 0 0 1 0-135.808L466.752 195.2A256 256 0 0 1 828.8 557.248L625.152 760.96a96 96 0 0 1-135.808 0l-45.248-45.248zM398.848 670.4 353.6 625.152 217.856 760.896a32 32 0 0 0 45.248 45.248zm248.96-384.64a32 32 0 0 1 0 45.248L466.624 512a32 32 0 1 1-45.184-45.248l180.992-181.056a32 32 0 0 1 45.248 0zm90.496 90.496a32 32 0 0 1 0 45.248L557.248 602.496A32 32 0 1 1 512 557.248l180.992-180.992a32 32 0 0 1 45.312 0z\"\n })\n ]));\n }\n});\n\n// src/components/ice-cream-round.vue\nvar ice_cream_round_default = ice_cream_round_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ice-cream-square.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent139 } from \"vue\";\nimport { createElementVNode as _createElementVNode139, openBlock as _openBlock139, createElementBlock as _createElementBlock139 } from \"vue\";\nvar ice_cream_square_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent139({\n name: \"IceCreamSquare\",\n __name: \"ice-cream-square\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock139(), _createElementBlock139(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode139(\"path\", {\n fill: \"currentColor\",\n d: \"M416 640h256a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32H352a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32zm192 64v160a96 96 0 0 1-192 0V704h-64a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h320a96 96 0 0 1 96 96v448a96 96 0 0 1-96 96zm-64 0h-64v160a32 32 0 1 0 64 0z\"\n })\n ]));\n }\n});\n\n// src/components/ice-cream-square.vue\nvar ice_cream_square_default = ice_cream_square_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ice-cream.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent140 } from \"vue\";\nimport { createElementVNode as _createElementVNode140, openBlock as _openBlock140, createElementBlock as _createElementBlock140 } from \"vue\";\nvar ice_cream_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent140({\n name: \"IceCream\",\n __name: \"ice-cream\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock140(), _createElementBlock140(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode140(\"path\", {\n fill: \"currentColor\",\n d: \"M128.64 448a208 208 0 0 1 193.536-191.552 224 224 0 0 1 445.248 15.488A208.128 208.128 0 0 1 894.784 448H896L548.8 983.68a32 32 0 0 1-53.248.704L128 448zm64.256 0h286.208a144 144 0 0 0-286.208 0zm351.36 0h286.272a144 144 0 0 0-286.272 0zm-294.848 64 271.808 396.608L778.24 512H249.408zM511.68 352.64a207.872 207.872 0 0 1 189.184-96.192 160 160 0 0 0-314.752 5.632c52.608 12.992 97.28 46.08 125.568 90.56\"\n })\n ]));\n }\n});\n\n// src/components/ice-cream.vue\nvar ice_cream_default = ice_cream_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ice-drink.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent141 } from \"vue\";\nimport { createElementVNode as _createElementVNode141, openBlock as _openBlock141, createElementBlock as _createElementBlock141 } from \"vue\";\nvar ice_drink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent141({\n name: \"IceDrink\",\n __name: \"ice-drink\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock141(), _createElementBlock141(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode141(\"path\", {\n fill: \"currentColor\",\n d: \"M512 448v128h239.68l16.064-128zm-64 0H256.256l16.064 128H448zm64-255.36V384h247.744A256.128 256.128 0 0 0 512 192.64m-64 8.064A256.448 256.448 0 0 0 264.256 384H448zm64-72.064A320.128 320.128 0 0 1 825.472 384H896a32 32 0 1 1 0 64h-64v1.92l-56.96 454.016A64 64 0 0 1 711.552 960H312.448a64 64 0 0 1-63.488-56.064L192 449.92V448h-64a32 32 0 0 1 0-64h70.528A320.384 320.384 0 0 1 448 135.04V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H544a32 32 0 0 0-32 32zM743.68 640H280.32l32.128 256h399.104z\"\n })\n ]));\n }\n});\n\n// src/components/ice-drink.vue\nvar ice_drink_default = ice_drink_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ice-tea.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent142 } from \"vue\";\nimport { createElementVNode as _createElementVNode142, openBlock as _openBlock142, createElementBlock as _createElementBlock142 } from \"vue\";\nvar ice_tea_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent142({\n name: \"IceTea\",\n __name: \"ice-tea\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock142(), _createElementBlock142(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode142(\"path\", {\n fill: \"currentColor\",\n d: \"M197.696 259.648a320.128 320.128 0 0 1 628.608 0A96 96 0 0 1 896 352v64a96 96 0 0 1-71.616 92.864l-49.408 395.072A64 64 0 0 1 711.488 960H312.512a64 64 0 0 1-63.488-56.064l-49.408-395.072A96 96 0 0 1 128 416v-64a96 96 0 0 1 69.696-92.352M264.064 256h495.872a256.128 256.128 0 0 0-495.872 0m495.424 256H264.512l48 384h398.976zM224 448h576a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32m160 192h64v64h-64zm192 64h64v64h-64zm-128 64h64v64h-64zm64-192h64v64h-64z\"\n })\n ]));\n }\n});\n\n// src/components/ice-tea.vue\nvar ice_tea_default = ice_tea_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/info-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent143 } from \"vue\";\nimport { createElementVNode as _createElementVNode143, openBlock as _openBlock143, createElementBlock as _createElementBlock143 } from \"vue\";\nvar info_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent143({\n name: \"InfoFilled\",\n __name: \"info-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock143(), _createElementBlock143(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode143(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z\"\n })\n ]));\n }\n});\n\n// src/components/info-filled.vue\nvar info_filled_default = info_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/iphone.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent144 } from \"vue\";\nimport { createElementVNode as _createElementVNode144, openBlock as _openBlock144, createElementBlock as _createElementBlock144 } from \"vue\";\nvar iphone_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent144({\n name: \"Iphone\",\n __name: \"iphone\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock144(), _createElementBlock144(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode144(\"path\", {\n fill: \"currentColor\",\n d: \"M224 768v96.064a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V768zm0-64h576V160a64 64 0 0 0-64-64H288a64 64 0 0 0-64 64zm32 288a96 96 0 0 1-96-96V128a96 96 0 0 1 96-96h512a96 96 0 0 1 96 96v768a96 96 0 0 1-96 96zm304-144a48 48 0 1 1-96 0 48 48 0 0 1 96 0\"\n })\n ]));\n }\n});\n\n// src/components/iphone.vue\nvar iphone_default = iphone_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/key.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent145 } from \"vue\";\nimport { createElementVNode as _createElementVNode145, openBlock as _openBlock145, createElementBlock as _createElementBlock145 } from \"vue\";\nvar key_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent145({\n name: \"Key\",\n __name: \"key\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock145(), _createElementBlock145(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode145(\"path\", {\n fill: \"currentColor\",\n d: \"M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064M512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384\"\n })\n ]));\n }\n});\n\n// src/components/key.vue\nvar key_default = key_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/knife-fork.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent146 } from \"vue\";\nimport { createElementVNode as _createElementVNode146, openBlock as _openBlock146, createElementBlock as _createElementBlock146 } from \"vue\";\nvar knife_fork_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent146({\n name: \"KnifeFork\",\n __name: \"knife-fork\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock146(), _createElementBlock146(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode146(\"path\", {\n fill: \"currentColor\",\n d: \"M256 410.56V96a32 32 0 0 1 64 0v314.56A96 96 0 0 0 384 320V96a32 32 0 0 1 64 0v224a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.8A160 160 0 0 1 128 320V96a32 32 0 0 1 64 0v224a96 96 0 0 0 64 90.56m384-250.24V544h126.72c-3.328-78.72-12.928-147.968-28.608-207.744-14.336-54.528-46.848-113.344-98.112-175.872zM640 608v320a32 32 0 1 1-64 0V64h64c85.312 89.472 138.688 174.848 160 256 21.312 81.152 32 177.152 32 288z\"\n })\n ]));\n }\n});\n\n// src/components/knife-fork.vue\nvar knife_fork_default = knife_fork_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/lightning.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent147 } from \"vue\";\nimport { createElementVNode as _createElementVNode147, openBlock as _openBlock147, createElementBlock as _createElementBlock147 } from \"vue\";\nvar lightning_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent147({\n name: \"Lightning\",\n __name: \"lightning\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock147(), _createElementBlock147(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode147(\"path\", {\n fill: \"currentColor\",\n d: \"M288 671.36v64.128A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 736 734.016v-64.768a192 192 0 0 0 3.328-377.92l-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 91.968 70.464 167.36 160.256 175.232z\"\n }),\n _createElementVNode147(\"path\", {\n fill: \"currentColor\",\n d: \"M416 736a32 32 0 0 1-27.776-47.872l128-224a32 32 0 1 1 55.552 31.744L471.168 672H608a32 32 0 0 1 27.776 47.872l-128 224a32 32 0 1 1-55.68-31.744L552.96 736z\"\n })\n ]));\n }\n});\n\n// src/components/lightning.vue\nvar lightning_default = lightning_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/link.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent148 } from \"vue\";\nimport { createElementVNode as _createElementVNode148, openBlock as _openBlock148, createElementBlock as _createElementBlock148 } from \"vue\";\nvar link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent148({\n name: \"Link\",\n __name: \"link\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock148(), _createElementBlock148(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode148(\"path\", {\n fill: \"currentColor\",\n d: \"M715.648 625.152 670.4 579.904l90.496-90.56c75.008-74.944 85.12-186.368 22.656-248.896-62.528-62.464-173.952-52.352-248.96 22.656L444.16 353.6l-45.248-45.248 90.496-90.496c100.032-99.968 251.968-110.08 339.456-22.656 87.488 87.488 77.312 239.424-22.656 339.456l-90.496 90.496zm-90.496 90.496-90.496 90.496C434.624 906.112 282.688 916.224 195.2 828.8c-87.488-87.488-77.312-239.424 22.656-339.456l90.496-90.496 45.248 45.248-90.496 90.56c-75.008 74.944-85.12 186.368-22.656 248.896 62.528 62.464 173.952 52.352 248.96-22.656l90.496-90.496zm0-362.048 45.248 45.248L398.848 670.4 353.6 625.152z\"\n })\n ]));\n }\n});\n\n// src/components/link.vue\nvar link_default = link_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/list.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent149 } from \"vue\";\nimport { createElementVNode as _createElementVNode149, openBlock as _openBlock149, createElementBlock as _createElementBlock149 } from \"vue\";\nvar list_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent149({\n name: \"List\",\n __name: \"list\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock149(), _createElementBlock149(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode149(\"path\", {\n fill: \"currentColor\",\n d: \"M704 192h160v736H160V192h160v64h384zM288 512h448v-64H288zm0 256h448v-64H288zm96-576V96h256v96z\"\n })\n ]));\n }\n});\n\n// src/components/list.vue\nvar list_default = list_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/loading.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent150 } from \"vue\";\nimport { createElementVNode as _createElementVNode150, openBlock as _openBlock150, createElementBlock as _createElementBlock150 } from \"vue\";\nvar loading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent150({\n name: \"Loading\",\n __name: \"loading\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock150(), _createElementBlock150(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode150(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z\"\n })\n ]));\n }\n});\n\n// src/components/loading.vue\nvar loading_default = loading_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/location-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent151 } from \"vue\";\nimport { createElementVNode as _createElementVNode151, openBlock as _openBlock151, createElementBlock as _createElementBlock151 } from \"vue\";\nvar location_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent151({\n name: \"LocationFilled\",\n __name: \"location-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock151(), _createElementBlock151(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode151(\"path\", {\n fill: \"currentColor\",\n d: \"M512 928c23.936 0 117.504-68.352 192.064-153.152C803.456 661.888 864 535.808 864 416c0-189.632-155.84-320-352-320S160 226.368 160 416c0 120.32 60.544 246.4 159.936 359.232C394.432 859.84 488 928 512 928m0-435.2a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 140.8a204.8 204.8 0 1 1 0-409.6 204.8 204.8 0 0 1 0 409.6\"\n })\n ]));\n }\n});\n\n// src/components/location-filled.vue\nvar location_filled_default = location_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/location-information.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent152 } from \"vue\";\nimport { createElementVNode as _createElementVNode152, openBlock as _openBlock152, createElementBlock as _createElementBlock152 } from \"vue\";\nvar location_information_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent152({\n name: \"LocationInformation\",\n __name: \"location-information\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock152(), _createElementBlock152(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode152(\"path\", {\n fill: \"currentColor\",\n d: \"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n }),\n _createElementVNode152(\"path\", {\n fill: \"currentColor\",\n d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544\"\n }),\n _createElementVNode152(\"path\", {\n fill: \"currentColor\",\n d: \"M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192m0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320\"\n })\n ]));\n }\n});\n\n// src/components/location-information.vue\nvar location_information_default = location_information_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/location.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent153 } from \"vue\";\nimport { createElementVNode as _createElementVNode153, openBlock as _openBlock153, createElementBlock as _createElementBlock153 } from \"vue\";\nvar location_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent153({\n name: \"Location\",\n __name: \"location\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock153(), _createElementBlock153(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode153(\"path\", {\n fill: \"currentColor\",\n d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544\"\n }),\n _createElementVNode153(\"path\", {\n fill: \"currentColor\",\n d: \"M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192m0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320\"\n })\n ]));\n }\n});\n\n// src/components/location.vue\nvar location_default = location_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/lock.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent154 } from \"vue\";\nimport { createElementVNode as _createElementVNode154, openBlock as _openBlock154, createElementBlock as _createElementBlock154 } from \"vue\";\nvar lock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent154({\n name: \"Lock\",\n __name: \"lock\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock154(), _createElementBlock154(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode154(\"path\", {\n fill: \"currentColor\",\n d: \"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96\"\n }),\n _createElementVNode154(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64\"\n })\n ]));\n }\n});\n\n// src/components/lock.vue\nvar lock_default = lock_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/lollipop.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent155 } from \"vue\";\nimport { createElementVNode as _createElementVNode155, openBlock as _openBlock155, createElementBlock as _createElementBlock155 } from \"vue\";\nvar lollipop_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent155({\n name: \"Lollipop\",\n __name: \"lollipop\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock155(), _createElementBlock155(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode155(\"path\", {\n fill: \"currentColor\",\n d: \"M513.28 448a64 64 0 1 1 76.544 49.728A96 96 0 0 0 768 448h64a160 160 0 0 1-320 0zm-126.976-29.696a256 256 0 1 0 43.52-180.48A256 256 0 0 1 832 448h-64a192 192 0 0 0-381.696-29.696m105.664 249.472L285.696 874.048a96 96 0 0 1-135.68-135.744l206.208-206.272a320 320 0 1 1 135.744 135.744zm-54.464-36.032a321.92 321.92 0 0 1-45.248-45.248L195.2 783.552a32 32 0 1 0 45.248 45.248l197.056-197.12z\"\n })\n ]));\n }\n});\n\n// src/components/lollipop.vue\nvar lollipop_default = lollipop_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/magic-stick.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent156 } from \"vue\";\nimport { createElementVNode as _createElementVNode156, openBlock as _openBlock156, createElementBlock as _createElementBlock156 } from \"vue\";\nvar magic_stick_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent156({\n name: \"MagicStick\",\n __name: \"magic-stick\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock156(), _createElementBlock156(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode156(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64h64v192h-64zm0 576h64v192h-64zM160 480v-64h192v64zm576 0v-64h192v64zM249.856 199.04l45.248-45.184L430.848 289.6 385.6 334.848 249.856 199.104zM657.152 606.4l45.248-45.248 135.744 135.744-45.248 45.248zM114.048 923.2 68.8 877.952l316.8-316.8 45.248 45.248zM702.4 334.848 657.152 289.6l135.744-135.744 45.248 45.248z\"\n })\n ]));\n }\n});\n\n// src/components/magic-stick.vue\nvar magic_stick_default = magic_stick_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/magnet.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent157 } from \"vue\";\nimport { createElementVNode as _createElementVNode157, openBlock as _openBlock157, createElementBlock as _createElementBlock157 } from \"vue\";\nvar magnet_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent157({\n name: \"Magnet\",\n __name: \"magnet\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock157(), _createElementBlock157(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode157(\"path\", {\n fill: \"currentColor\",\n d: \"M832 320V192H704v320a192 192 0 1 1-384 0V192H192v128h128v64H192v128a320 320 0 0 0 640 0V384H704v-64zM640 512V128h256v384a384 384 0 1 1-768 0V128h256v384a128 128 0 1 0 256 0\"\n })\n ]));\n }\n});\n\n// src/components/magnet.vue\nvar magnet_default = magnet_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/male.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent158 } from \"vue\";\nimport { createElementVNode as _createElementVNode158, openBlock as _openBlock158, createElementBlock as _createElementBlock158 } from \"vue\";\nvar male_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent158({\n name: \"Male\",\n __name: \"male\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock158(), _createElementBlock158(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode158(\"path\", {\n fill: \"currentColor\",\n d: \"M399.5 849.5a225 225 0 1 0 0-450 225 225 0 0 0 0 450m0 56.25a281.25 281.25 0 1 1 0-562.5 281.25 281.25 0 0 1 0 562.5m253.125-787.5h225q28.125 0 28.125 28.125T877.625 174.5h-225q-28.125 0-28.125-28.125t28.125-28.125\"\n }),\n _createElementVNode158(\"path\", {\n fill: \"currentColor\",\n d: \"M877.625 118.25q28.125 0 28.125 28.125v225q0 28.125-28.125 28.125T849.5 371.375v-225q0-28.125 28.125-28.125\"\n }),\n _createElementVNode158(\"path\", {\n fill: \"currentColor\",\n d: \"M604.813 458.9 565.1 419.131l292.613-292.668 39.825 39.824z\"\n })\n ]));\n }\n});\n\n// src/components/male.vue\nvar male_default = male_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/management.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent159 } from \"vue\";\nimport { createElementVNode as _createElementVNode159, openBlock as _openBlock159, createElementBlock as _createElementBlock159 } from \"vue\";\nvar management_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent159({\n name: \"Management\",\n __name: \"management\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock159(), _createElementBlock159(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode159(\"path\", {\n fill: \"currentColor\",\n d: \"M576 128v288l96-96 96 96V128h128v768H320V128zm-448 0h128v768H128z\"\n })\n ]));\n }\n});\n\n// src/components/management.vue\nvar management_default = management_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/map-location.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent160 } from \"vue\";\nimport { createElementVNode as _createElementVNode160, openBlock as _openBlock160, createElementBlock as _createElementBlock160 } from \"vue\";\nvar map_location_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent160({\n name: \"MapLocation\",\n __name: \"map-location\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock160(), _createElementBlock160(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode160(\"path\", {\n fill: \"currentColor\",\n d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544\"\n }),\n _createElementVNode160(\"path\", {\n fill: \"currentColor\",\n d: \"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256m345.6 192L960 960H672v-64H352v64H64l102.4-256zm-68.928 0H235.328l-76.8 192h706.944z\"\n })\n ]));\n }\n});\n\n// src/components/map-location.vue\nvar map_location_default = map_location_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/medal.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent161 } from \"vue\";\nimport { createElementVNode as _createElementVNode161, openBlock as _openBlock161, createElementBlock as _createElementBlock161 } from \"vue\";\nvar medal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent161({\n name: \"Medal\",\n __name: \"medal\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock161(), _createElementBlock161(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode161(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640\"\n }),\n _createElementVNode161(\"path\", {\n fill: \"currentColor\",\n d: \"M576 128H448v200a286.72 286.72 0 0 1 64-8c19.52 0 40.832 2.688 64 8zm64 0v219.648c24.448 9.088 50.56 20.416 78.4 33.92L757.44 128zm-256 0H266.624l39.04 253.568c27.84-13.504 53.888-24.832 78.336-33.92V128zM229.312 64h565.376a32 32 0 0 1 31.616 36.864L768 480c-113.792-64-199.104-96-256-96-56.896 0-142.208 32-256 96l-58.304-379.136A32 32 0 0 1 229.312 64\"\n })\n ]));\n }\n});\n\n// src/components/medal.vue\nvar medal_default = medal_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/memo.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent162 } from \"vue\";\nimport { createElementVNode as _createElementVNode162, openBlock as _openBlock162, createElementBlock as _createElementBlock162 } from \"vue\";\nvar memo_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent162({\n name: \"Memo\",\n __name: \"memo\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock162(), _createElementBlock162(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode162(\"path\", {\n fill: \"currentColor\",\n d: \"M480 320h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32\"\n }),\n _createElementVNode162(\"path\", {\n fill: \"currentColor\",\n d: \"M887.01 72.99C881.01 67 873.34 64 864 64H160c-9.35 0-17.02 3-23.01 8.99C131 78.99 128 86.66 128 96v832c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V96c0-9.35-3-17.02-8.99-23.01M192 896V128h96v768zm640 0H352V128h480z\"\n }),\n _createElementVNode162(\"path\", {\n fill: \"currentColor\",\n d: \"M480 512h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32m0 192h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32\"\n })\n ]));\n }\n});\n\n// src/components/memo.vue\nvar memo_default = memo_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/menu.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent163 } from \"vue\";\nimport { createElementVNode as _createElementVNode163, openBlock as _openBlock163, createElementBlock as _createElementBlock163 } from \"vue\";\nvar menu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent163({\n name: \"Menu\",\n __name: \"menu\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock163(), _createElementBlock163(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode163(\"path\", {\n fill: \"currentColor\",\n d: \"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32z\"\n })\n ]));\n }\n});\n\n// src/components/menu.vue\nvar menu_default = menu_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/message-box.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent164 } from \"vue\";\nimport { createElementVNode as _createElementVNode164, openBlock as _openBlock164, createElementBlock as _createElementBlock164 } from \"vue\";\nvar message_box_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent164({\n name: \"MessageBox\",\n __name: \"message-box\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock164(), _createElementBlock164(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode164(\"path\", {\n fill: \"currentColor\",\n d: \"M288 384h448v64H288zm96-128h256v64H384zM131.456 512H384v128h256V512h252.544L721.856 192H302.144zM896 576H704v128H320V576H128v256h768zM275.776 128h472.448a32 32 0 0 1 28.608 17.664l179.84 359.552A32 32 0 0 1 960 519.552V864a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V519.552a32 32 0 0 1 3.392-14.336l179.776-359.552A32 32 0 0 1 275.776 128z\"\n })\n ]));\n }\n});\n\n// src/components/message-box.vue\nvar message_box_default = message_box_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/message.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent165 } from \"vue\";\nimport { createElementVNode as _createElementVNode165, openBlock as _openBlock165, createElementBlock as _createElementBlock165 } from \"vue\";\nvar message_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent165({\n name: \"Message\",\n __name: \"message\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock165(), _createElementBlock165(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode165(\"path\", {\n fill: \"currentColor\",\n d: \"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64\"\n }),\n _createElementVNode165(\"path\", {\n fill: \"currentColor\",\n d: \"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056\"\n })\n ]));\n }\n});\n\n// src/components/message.vue\nvar message_default = message_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/mic.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent166 } from \"vue\";\nimport { createElementVNode as _createElementVNode166, openBlock as _openBlock166, createElementBlock as _createElementBlock166 } from \"vue\";\nvar mic_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent166({\n name: \"Mic\",\n __name: \"mic\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock166(), _createElementBlock166(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode166(\"path\", {\n fill: \"currentColor\",\n d: \"M480 704h160a64 64 0 0 0 64-64v-32h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-32a64 64 0 0 0-64-64H384a64 64 0 0 0-64 64v32h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v32a64 64 0 0 0 64 64zm64 64v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768h-96a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64h256a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128z\"\n })\n ]));\n }\n});\n\n// src/components/mic.vue\nvar mic_default = mic_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/microphone.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent167 } from \"vue\";\nimport { createElementVNode as _createElementVNode167, openBlock as _openBlock167, createElementBlock as _createElementBlock167 } from \"vue\";\nvar microphone_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent167({\n name: \"Microphone\",\n __name: \"microphone\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock167(), _createElementBlock167(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode167(\"path\", {\n fill: \"currentColor\",\n d: \"M512 128a128 128 0 0 0-128 128v256a128 128 0 1 0 256 0V256a128 128 0 0 0-128-128m0-64a192 192 0 0 1 192 192v256a192 192 0 1 1-384 0V256A192 192 0 0 1 512 64m-32 832v-64a288 288 0 0 1-288-288v-32a32 32 0 0 1 64 0v32a224 224 0 0 0 224 224h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64z\"\n })\n ]));\n }\n});\n\n// src/components/microphone.vue\nvar microphone_default = microphone_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/milk-tea.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent168 } from \"vue\";\nimport { createElementVNode as _createElementVNode168, openBlock as _openBlock168, createElementBlock as _createElementBlock168 } from \"vue\";\nvar milk_tea_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent168({\n name: \"MilkTea\",\n __name: \"milk-tea\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock168(), _createElementBlock168(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode168(\"path\", {\n fill: \"currentColor\",\n d: \"M416 128V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H512a32 32 0 0 0-32 32v32h320a96 96 0 0 1 11.712 191.296l-39.68 581.056A64 64 0 0 1 708.224 960H315.776a64 64 0 0 1-63.872-59.648l-39.616-581.056A96 96 0 0 1 224 128zM276.48 320l39.296 576h392.448l4.8-70.784a224.064 224.064 0 0 1 30.016-439.808L747.52 320zM224 256h576a32 32 0 1 0 0-64H224a32 32 0 0 0 0 64m493.44 503.872 21.12-309.12a160 160 0 0 0-21.12 309.12\"\n })\n ]));\n }\n});\n\n// src/components/milk-tea.vue\nvar milk_tea_default = milk_tea_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/minus.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent169 } from \"vue\";\nimport { createElementVNode as _createElementVNode169, openBlock as _openBlock169, createElementBlock as _createElementBlock169 } from \"vue\";\nvar minus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent169({\n name: \"Minus\",\n __name: \"minus\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock169(), _createElementBlock169(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode169(\"path\", {\n fill: \"currentColor\",\n d: \"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64\"\n })\n ]));\n }\n});\n\n// src/components/minus.vue\nvar minus_default = minus_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/money.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent170 } from \"vue\";\nimport { createElementVNode as _createElementVNode170, openBlock as _openBlock170, createElementBlock as _createElementBlock170 } from \"vue\";\nvar money_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent170({\n name: \"Money\",\n __name: \"money\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock170(), _createElementBlock170(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode170(\"path\", {\n fill: \"currentColor\",\n d: \"M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640z\"\n }),\n _createElementVNode170(\"path\", {\n fill: \"currentColor\",\n d: \"M768 192H128v448h640zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z\"\n }),\n _createElementVNode170(\"path\", {\n fill: \"currentColor\",\n d: \"M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320m0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192\"\n })\n ]));\n }\n});\n\n// src/components/money.vue\nvar money_default = money_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/monitor.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent171 } from \"vue\";\nimport { createElementVNode as _createElementVNode171, openBlock as _openBlock171, createElementBlock as _createElementBlock171 } from \"vue\";\nvar monitor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent171({\n name: \"Monitor\",\n __name: \"monitor\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock171(), _createElementBlock171(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode171(\"path\", {\n fill: \"currentColor\",\n d: \"M544 768v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768H192A128 128 0 0 1 64 640V256a128 128 0 0 1 128-128h640a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128zM192 192a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64z\"\n })\n ]));\n }\n});\n\n// src/components/monitor.vue\nvar monitor_default = monitor_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/moon-night.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent172 } from \"vue\";\nimport { createElementVNode as _createElementVNode172, openBlock as _openBlock172, createElementBlock as _createElementBlock172 } from \"vue\";\nvar moon_night_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent172({\n name: \"MoonNight\",\n __name: \"moon-night\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock172(), _createElementBlock172(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode172(\"path\", {\n fill: \"currentColor\",\n d: \"M384 512a448 448 0 0 1 215.872-383.296A384 384 0 0 0 213.76 640h188.8A448.256 448.256 0 0 1 384 512M171.136 704a448 448 0 0 1 636.992-575.296A384 384 0 0 0 499.328 704h-328.32z\"\n }),\n _createElementVNode172(\"path\", {\n fill: \"currentColor\",\n d: \"M32 640h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32m128 128h384a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m160 127.68 224 .256a32 32 0 0 1 32 32V928a32 32 0 0 1-32 32l-224-.384a32 32 0 0 1-32-32v-.064a32 32 0 0 1 32-32z\"\n })\n ]));\n }\n});\n\n// src/components/moon-night.vue\nvar moon_night_default = moon_night_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/moon.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent173 } from \"vue\";\nimport { createElementVNode as _createElementVNode173, openBlock as _openBlock173, createElementBlock as _createElementBlock173 } from \"vue\";\nvar moon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent173({\n name: \"Moon\",\n __name: \"moon\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock173(), _createElementBlock173(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode173(\"path\", {\n fill: \"currentColor\",\n d: \"M240.448 240.448a384 384 0 1 0 559.424 525.696 448 448 0 0 1-542.016-542.08 390.592 390.592 0 0 0-17.408 16.384zm181.056 362.048a384 384 0 0 0 525.632 16.384A448 448 0 1 1 405.056 76.8a384 384 0 0 0 16.448 525.696\"\n })\n ]));\n }\n});\n\n// src/components/moon.vue\nvar moon_default = moon_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/more-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent174 } from \"vue\";\nimport { createElementVNode as _createElementVNode174, openBlock as _openBlock174, createElementBlock as _createElementBlock174 } from \"vue\";\nvar more_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent174({\n name: \"MoreFilled\",\n __name: \"more-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock174(), _createElementBlock174(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode174(\"path\", {\n fill: \"currentColor\",\n d: \"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224\"\n })\n ]));\n }\n});\n\n// src/components/more-filled.vue\nvar more_filled_default = more_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/more.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent175 } from \"vue\";\nimport { createElementVNode as _createElementVNode175, openBlock as _openBlock175, createElementBlock as _createElementBlock175 } from \"vue\";\nvar more_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent175({\n name: \"More\",\n __name: \"more\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock175(), _createElementBlock175(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode175(\"path\", {\n fill: \"currentColor\",\n d: \"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96\"\n })\n ]));\n }\n});\n\n// src/components/more.vue\nvar more_default = more_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/mostly-cloudy.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent176 } from \"vue\";\nimport { createElementVNode as _createElementVNode176, openBlock as _openBlock176, createElementBlock as _createElementBlock176 } from \"vue\";\nvar mostly_cloudy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent176({\n name: \"MostlyCloudy\",\n __name: \"mostly-cloudy\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock176(), _createElementBlock176(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode176(\"path\", {\n fill: \"currentColor\",\n d: \"M737.216 357.952 704 349.824l-11.776-32a192.064 192.064 0 0 0-367.424 23.04l-8.96 39.04-39.04 8.96A192.064 192.064 0 0 0 320 768h368a207.808 207.808 0 0 0 207.808-208 208.32 208.32 0 0 0-158.592-202.048m15.168-62.208A272.32 272.32 0 0 1 959.744 560a271.808 271.808 0 0 1-271.552 272H320a256 256 0 0 1-57.536-505.536 256.128 256.128 0 0 1 489.92-30.72\"\n })\n ]));\n }\n});\n\n// src/components/mostly-cloudy.vue\nvar mostly_cloudy_default = mostly_cloudy_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/mouse.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent177 } from \"vue\";\nimport { createElementVNode as _createElementVNode177, openBlock as _openBlock177, createElementBlock as _createElementBlock177 } from \"vue\";\nvar mouse_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent177({\n name: \"Mouse\",\n __name: \"mouse\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock177(), _createElementBlock177(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode177(\"path\", {\n fill: \"currentColor\",\n d: \"M438.144 256c-68.352 0-92.736 4.672-117.76 18.112-20.096 10.752-35.52 26.176-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76 10.752 20.096 26.176 35.52 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112 20.096-10.752 35.52-26.176 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.464 110.464 0 0 0-46.272-46.272C678.592 260.672 654.208 256 585.856 256zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.464 174.464 0 0 1-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.464 174.464 0 0 1-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.464 174.464 0 0 1 72.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6z\"\n }),\n _createElementVNode177(\"path\", {\n fill: \"currentColor\",\n d: \"M512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32m32-96a32 32 0 0 1-64 0v-64a32 32 0 0 0-32-32h-96a32 32 0 0 1 0-64h96a96 96 0 0 1 96 96z\"\n })\n ]));\n }\n});\n\n// src/components/mouse.vue\nvar mouse_default = mouse_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/mug.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent178 } from \"vue\";\nimport { createElementVNode as _createElementVNode178, openBlock as _openBlock178, createElementBlock as _createElementBlock178 } from \"vue\";\nvar mug_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent178({\n name: \"Mug\",\n __name: \"mug\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock178(), _createElementBlock178(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode178(\"path\", {\n fill: \"currentColor\",\n d: \"M736 800V160H160v640a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64m64-544h63.552a96 96 0 0 1 96 96v224a96 96 0 0 1-96 96H800v128a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V128a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 64v288h63.552a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32z\"\n })\n ]));\n }\n});\n\n// src/components/mug.vue\nvar mug_default = mug_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/mute-notification.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent179 } from \"vue\";\nimport { createElementVNode as _createElementVNode179, openBlock as _openBlock179, createElementBlock as _createElementBlock179 } from \"vue\";\nvar mute_notification_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent179({\n name: \"MuteNotification\",\n __name: \"mute-notification\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock179(), _createElementBlock179(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode179(\"path\", {\n fill: \"currentColor\",\n d: \"m241.216 832 63.616-64H768V448c0-42.368-10.24-82.304-28.48-117.504l46.912-47.232C815.36 331.392 832 387.84 832 448v320h96a32 32 0 1 1 0 64zm-90.24 0H96a32 32 0 1 1 0-64h96V448a320.128 320.128 0 0 1 256-313.6V128a64 64 0 1 1 128 0v6.4a319.552 319.552 0 0 1 171.648 97.088l-45.184 45.44A256 256 0 0 0 256 448v278.336L151.04 832zM448 896h128a64 64 0 0 1-128 0\"\n }),\n _createElementVNode179(\"path\", {\n fill: \"currentColor\",\n d: \"M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z\"\n })\n ]));\n }\n});\n\n// src/components/mute-notification.vue\nvar mute_notification_default = mute_notification_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/mute.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent180 } from \"vue\";\nimport { createElementVNode as _createElementVNode180, openBlock as _openBlock180, createElementBlock as _createElementBlock180 } from \"vue\";\nvar mute_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent180({\n name: \"Mute\",\n __name: \"mute\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock180(), _createElementBlock180(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode180(\"path\", {\n fill: \"currentColor\",\n d: \"m412.16 592.128-45.44 45.44A191.232 191.232 0 0 1 320 512V256a192 192 0 1 1 384 0v44.352l-64 64V256a128 128 0 1 0-256 0v256c0 30.336 10.56 58.24 28.16 80.128m51.968 38.592A128 128 0 0 0 640 512v-57.152l64-64V512a192 192 0 0 1-287.68 166.528zM314.88 779.968l46.144-46.08A222.976 222.976 0 0 0 480 768h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64v-64c-61.44 0-118.4-19.2-165.12-52.032M266.752 737.6A286.976 286.976 0 0 1 192 544v-32a32 32 0 0 1 64 0v32c0 56.832 21.184 108.8 56.064 148.288z\"\n }),\n _createElementVNode180(\"path\", {\n fill: \"currentColor\",\n d: \"M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z\"\n })\n ]));\n }\n});\n\n// src/components/mute.vue\nvar mute_default = mute_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/no-smoking.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent181 } from \"vue\";\nimport { createElementVNode as _createElementVNode181, openBlock as _openBlock181, createElementBlock as _createElementBlock181 } from \"vue\";\nvar no_smoking_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent181({\n name: \"NoSmoking\",\n __name: \"no-smoking\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock181(), _createElementBlock181(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode181(\"path\", {\n fill: \"currentColor\",\n d: \"M440.256 576H256v128h56.256l-64 64H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32h280.256zm143.488 128H704V583.744L775.744 512H928a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H519.744zM768 576v128h128V576zm-29.696-207.552 45.248 45.248-497.856 497.856-45.248-45.248zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z\"\n })\n ]));\n }\n});\n\n// src/components/no-smoking.vue\nvar no_smoking_default = no_smoking_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/notebook.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent182 } from \"vue\";\nimport { createElementVNode as _createElementVNode182, openBlock as _openBlock182, createElementBlock as _createElementBlock182 } from \"vue\";\nvar notebook_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent182({\n name: \"Notebook\",\n __name: \"notebook\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock182(), _createElementBlock182(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode182(\"path\", {\n fill: \"currentColor\",\n d: \"M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32\"\n }),\n _createElementVNode182(\"path\", {\n fill: \"currentColor\",\n d: \"M672 128h64v768h-64zM96 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/notebook.vue\nvar notebook_default = notebook_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/notification.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent183 } from \"vue\";\nimport { createElementVNode as _createElementVNode183, openBlock as _openBlock183, createElementBlock as _createElementBlock183 } from \"vue\";\nvar notification_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent183({\n name: \"Notification\",\n __name: \"notification\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock183(), _createElementBlock183(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode183(\"path\", {\n fill: \"currentColor\",\n d: \"M512 128v64H256a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V512h64v256a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V256a128 128 0 0 1 128-128z\"\n }),\n _createElementVNode183(\"path\", {\n fill: \"currentColor\",\n d: \"M768 384a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384\"\n })\n ]));\n }\n});\n\n// src/components/notification.vue\nvar notification_default = notification_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/odometer.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent184 } from \"vue\";\nimport { createElementVNode as _createElementVNode184, openBlock as _openBlock184, createElementBlock as _createElementBlock184 } from \"vue\";\nvar odometer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent184({\n name: \"Odometer\",\n __name: \"odometer\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock184(), _createElementBlock184(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode184(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n }),\n _createElementVNode184(\"path\", {\n fill: \"currentColor\",\n d: \"M192 512a320 320 0 1 1 640 0 32 32 0 1 1-64 0 256 256 0 1 0-512 0 32 32 0 0 1-64 0\"\n }),\n _createElementVNode184(\"path\", {\n fill: \"currentColor\",\n d: \"M570.432 627.84A96 96 0 1 1 509.568 608l60.992-187.776A32 32 0 1 1 631.424 440l-60.992 187.776zM502.08 734.464a32 32 0 1 0 19.84-60.928 32 32 0 0 0-19.84 60.928\"\n })\n ]));\n }\n});\n\n// src/components/odometer.vue\nvar odometer_default = odometer_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/office-building.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent185 } from \"vue\";\nimport { createElementVNode as _createElementVNode185, openBlock as _openBlock185, createElementBlock as _createElementBlock185 } from \"vue\";\nvar office_building_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent185({\n name: \"OfficeBuilding\",\n __name: \"office-building\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock185(), _createElementBlock185(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode185(\"path\", {\n fill: \"currentColor\",\n d: \"M192 128v704h384V128zm-32-64h448a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32\"\n }),\n _createElementVNode185(\"path\", {\n fill: \"currentColor\",\n d: \"M256 256h256v64H256zm0 192h256v64H256zm0 192h256v64H256zm384-128h128v64H640zm0 128h128v64H640zM64 832h896v64H64z\"\n }),\n _createElementVNode185(\"path\", {\n fill: \"currentColor\",\n d: \"M640 384v448h192V384zm-32-64h256a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H608a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/office-building.vue\nvar office_building_default = office_building_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/open.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent186 } from \"vue\";\nimport { createElementVNode as _createElementVNode186, openBlock as _openBlock186, createElementBlock as _createElementBlock186 } from \"vue\";\nvar open_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent186({\n name: \"Open\",\n __name: \"open\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock186(), _createElementBlock186(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode186(\"path\", {\n fill: \"currentColor\",\n d: \"M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z\"\n }),\n _createElementVNode186(\"path\", {\n fill: \"currentColor\",\n d: \"M694.044 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088\"\n })\n ]));\n }\n});\n\n// src/components/open.vue\nvar open_default = open_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/operation.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent187 } from \"vue\";\nimport { createElementVNode as _createElementVNode187, openBlock as _openBlock187, createElementBlock as _createElementBlock187 } from \"vue\";\nvar operation_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent187({\n name: \"Operation\",\n __name: \"operation\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock187(), _createElementBlock187(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode187(\"path\", {\n fill: \"currentColor\",\n d: \"M389.44 768a96.064 96.064 0 0 1 181.12 0H896v64H570.56a96.064 96.064 0 0 1-181.12 0H128v-64zm192-288a96.064 96.064 0 0 1 181.12 0H896v64H762.56a96.064 96.064 0 0 1-181.12 0H128v-64zm-320-288a96.064 96.064 0 0 1 181.12 0H896v64H442.56a96.064 96.064 0 0 1-181.12 0H128v-64z\"\n })\n ]));\n }\n});\n\n// src/components/operation.vue\nvar operation_default = operation_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/opportunity.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent188 } from \"vue\";\nimport { createElementVNode as _createElementVNode188, openBlock as _openBlock188, createElementBlock as _createElementBlock188 } from \"vue\";\nvar opportunity_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent188({\n name: \"Opportunity\",\n __name: \"opportunity\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock188(), _createElementBlock188(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode188(\"path\", {\n fill: \"currentColor\",\n d: \"M384 960v-64h192.064v64zm448-544a350.656 350.656 0 0 1-128.32 271.424C665.344 719.04 640 763.776 640 813.504V832H320v-14.336c0-48-19.392-95.36-57.216-124.992a351.552 351.552 0 0 1-128.448-344.256c25.344-136.448 133.888-248.128 269.76-276.48A352.384 352.384 0 0 1 832 416m-544 32c0-132.288 75.904-224 192-224v-64c-154.432 0-256 122.752-256 288z\"\n })\n ]));\n }\n});\n\n// src/components/opportunity.vue\nvar opportunity_default = opportunity_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/orange.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent189 } from \"vue\";\nimport { createElementVNode as _createElementVNode189, openBlock as _openBlock189, createElementBlock as _createElementBlock189 } from \"vue\";\nvar orange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent189({\n name: \"Orange\",\n __name: \"orange\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock189(), _createElementBlock189(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode189(\"path\", {\n fill: \"currentColor\",\n d: \"M544 894.72a382.336 382.336 0 0 0 215.936-89.472L577.024 622.272c-10.24 6.016-21.248 10.688-33.024 13.696v258.688zm261.248-134.784A382.336 382.336 0 0 0 894.656 544H635.968c-3.008 11.776-7.68 22.848-13.696 33.024l182.976 182.912zM894.656 480a382.336 382.336 0 0 0-89.408-215.936L622.272 446.976c6.016 10.24 10.688 21.248 13.696 33.024h258.688zm-134.72-261.248A382.336 382.336 0 0 0 544 129.344v258.688c11.776 3.008 22.848 7.68 33.024 13.696zM480 129.344a382.336 382.336 0 0 0-215.936 89.408l182.912 182.976c10.24-6.016 21.248-10.688 33.024-13.696zm-261.248 134.72A382.336 382.336 0 0 0 129.344 480h258.688c3.008-11.776 7.68-22.848 13.696-33.024zM129.344 544a382.336 382.336 0 0 0 89.408 215.936l182.976-182.912A127.232 127.232 0 0 1 388.032 544zm134.72 261.248A382.336 382.336 0 0 0 480 894.656V635.968a127.232 127.232 0 0 1-33.024-13.696zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896m0-384a64 64 0 1 0 0-128 64 64 0 0 0 0 128\"\n })\n ]));\n }\n});\n\n// src/components/orange.vue\nvar orange_default = orange_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/paperclip.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent190 } from \"vue\";\nimport { createElementVNode as _createElementVNode190, openBlock as _openBlock190, createElementBlock as _createElementBlock190 } from \"vue\";\nvar paperclip_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent190({\n name: \"Paperclip\",\n __name: \"paperclip\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock190(), _createElementBlock190(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode190(\"path\", {\n fill: \"currentColor\",\n d: \"M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744l294.144-294.208z\"\n })\n ]));\n }\n});\n\n// src/components/paperclip.vue\nvar paperclip_default = paperclip_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/partly-cloudy.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent191 } from \"vue\";\nimport { createElementVNode as _createElementVNode191, openBlock as _openBlock191, createElementBlock as _createElementBlock191 } from \"vue\";\nvar partly_cloudy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent191({\n name: \"PartlyCloudy\",\n __name: \"partly-cloudy\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock191(), _createElementBlock191(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode191(\"path\", {\n fill: \"currentColor\",\n d: \"M598.4 895.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 895.872m-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 445.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z\"\n }),\n _createElementVNode191(\"path\", {\n fill: \"currentColor\",\n d: \"M139.84 501.888a256 256 0 1 1 417.856-277.12c-17.728 2.176-38.208 8.448-61.504 18.816A192 192 0 1 0 189.12 460.48a6003.84 6003.84 0 0 0-49.28 41.408z\"\n })\n ]));\n }\n});\n\n// src/components/partly-cloudy.vue\nvar partly_cloudy_default = partly_cloudy_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/pear.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent192 } from \"vue\";\nimport { createElementVNode as _createElementVNode192, openBlock as _openBlock192, createElementBlock as _createElementBlock192 } from \"vue\";\nvar pear_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent192({\n name: \"Pear\",\n __name: \"pear\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock192(), _createElementBlock192(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode192(\"path\", {\n fill: \"currentColor\",\n d: \"M542.336 258.816a443.255 443.255 0 0 0-9.024 25.088 32 32 0 1 1-60.8-20.032l1.088-3.328a162.688 162.688 0 0 0-122.048 131.392l-17.088 102.72-20.736 15.36C256.192 552.704 224 610.88 224 672c0 120.576 126.4 224 288 224s288-103.424 288-224c0-61.12-32.192-119.296-89.728-161.92l-20.736-15.424-17.088-102.72a162.688 162.688 0 0 0-130.112-133.12zm-40.128-66.56c7.936-15.552 16.576-30.08 25.92-43.776 23.296-33.92 49.408-59.776 78.528-77.12a32 32 0 1 1 32.704 55.04c-20.544 12.224-40.064 31.552-58.432 58.304a316.608 316.608 0 0 0-9.792 15.104 226.688 226.688 0 0 1 164.48 181.568l12.8 77.248C819.456 511.36 864 587.392 864 672c0 159.04-157.568 288-352 288S160 831.04 160 672c0-84.608 44.608-160.64 115.584-213.376l12.8-77.248a226.624 226.624 0 0 1 213.76-189.184z\"\n })\n ]));\n }\n});\n\n// src/components/pear.vue\nvar pear_default = pear_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/phone-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent193 } from \"vue\";\nimport { createElementVNode as _createElementVNode193, openBlock as _openBlock193, createElementBlock as _createElementBlock193 } from \"vue\";\nvar phone_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent193({\n name: \"PhoneFilled\",\n __name: \"phone-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock193(), _createElementBlock193(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode193(\"path\", {\n fill: \"currentColor\",\n d: \"M199.232 125.568 90.624 379.008a32 32 0 0 0 6.784 35.2l512.384 512.384a32 32 0 0 0 35.2 6.784l253.44-108.608a32 32 0 0 0 10.048-52.032L769.6 633.92a32 32 0 0 0-36.928-5.952l-130.176 65.088-271.488-271.552 65.024-130.176a32 32 0 0 0-5.952-36.928L251.2 115.52a32 32 0 0 0-51.968 10.048z\"\n })\n ]));\n }\n});\n\n// src/components/phone-filled.vue\nvar phone_filled_default = phone_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/phone.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent194 } from \"vue\";\nimport { createElementVNode as _createElementVNode194, openBlock as _openBlock194, createElementBlock as _createElementBlock194 } from \"vue\";\nvar phone_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent194({\n name: \"Phone\",\n __name: \"phone\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock194(), _createElementBlock194(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode194(\"path\", {\n fill: \"currentColor\",\n d: \"M79.36 432.256 591.744 944.64a32 32 0 0 0 35.2 6.784l253.44-108.544a32 32 0 0 0 9.984-52.032l-153.856-153.92a32 32 0 0 0-36.928-6.016l-69.888 34.944L358.08 394.24l35.008-69.888a32 32 0 0 0-5.952-36.928L233.152 133.568a32 32 0 0 0-52.032 10.048L72.512 397.056a32 32 0 0 0 6.784 35.2zm60.48-29.952 81.536-190.08L325.568 316.48l-24.64 49.216-20.608 41.216 32.576 32.64 271.552 271.552 32.64 32.64 41.216-20.672 49.28-24.576 104.192 104.128-190.08 81.472L139.84 402.304zM512 320v-64a256 256 0 0 1 256 256h-64a192 192 0 0 0-192-192m0-192V64a448 448 0 0 1 448 448h-64a384 384 0 0 0-384-384\"\n })\n ]));\n }\n});\n\n// src/components/phone.vue\nvar phone_default = phone_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/picture-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent195 } from \"vue\";\nimport { createElementVNode as _createElementVNode195, openBlock as _openBlock195, createElementBlock as _createElementBlock195 } from \"vue\";\nvar picture_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent195({\n name: \"PictureFilled\",\n __name: \"picture-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock195(), _createElementBlock195(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode195(\"path\", {\n fill: \"currentColor\",\n d: \"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384\"\n })\n ]));\n }\n});\n\n// src/components/picture-filled.vue\nvar picture_filled_default = picture_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/picture-rounded.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent196 } from \"vue\";\nimport { createElementVNode as _createElementVNode196, openBlock as _openBlock196, createElementBlock as _createElementBlock196 } from \"vue\";\nvar picture_rounded_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent196({\n name: \"PictureRounded\",\n __name: \"picture-rounded\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock196(), _createElementBlock196(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode196(\"path\", {\n fill: \"currentColor\",\n d: \"M512 128a384 384 0 1 0 0 768 384 384 0 0 0 0-768m0-64a448 448 0 1 1 0 896 448 448 0 0 1 0-896\"\n }),\n _createElementVNode196(\"path\", {\n fill: \"currentColor\",\n d: \"M640 288q64 0 64 64t-64 64q-64 0-64-64t64-64M214.656 790.656l-45.312-45.312 185.664-185.6a96 96 0 0 1 123.712-10.24l138.24 98.688a32 32 0 0 0 39.872-2.176L906.688 422.4l42.624 47.744L699.52 693.696a96 96 0 0 1-119.808 6.592l-138.24-98.752a32 32 0 0 0-41.152 3.456l-185.664 185.6z\"\n })\n ]));\n }\n});\n\n// src/components/picture-rounded.vue\nvar picture_rounded_default = picture_rounded_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/picture.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent197 } from \"vue\";\nimport { createElementVNode as _createElementVNode197, openBlock as _openBlock197, createElementBlock as _createElementBlock197 } from \"vue\";\nvar picture_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent197({\n name: \"Picture\",\n __name: \"picture\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock197(), _createElementBlock197(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode197(\"path\", {\n fill: \"currentColor\",\n d: \"M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32\"\n }),\n _createElementVNode197(\"path\", {\n fill: \"currentColor\",\n d: \"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64M185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952z\"\n })\n ]));\n }\n});\n\n// src/components/picture.vue\nvar picture_default = picture_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/pie-chart.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent198 } from \"vue\";\nimport { createElementVNode as _createElementVNode198, openBlock as _openBlock198, createElementBlock as _createElementBlock198 } from \"vue\";\nvar pie_chart_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent198({\n name: \"PieChart\",\n __name: \"pie-chart\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock198(), _createElementBlock198(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode198(\"path\", {\n fill: \"currentColor\",\n d: \"M448 68.48v64.832A384.128 384.128 0 0 0 512 896a384.128 384.128 0 0 0 378.688-320h64.768A448.128 448.128 0 0 1 64 512 448.128 448.128 0 0 1 448 68.48z\"\n }),\n _createElementVNode198(\"path\", {\n fill: \"currentColor\",\n d: \"M576 97.28V448h350.72A384.064 384.064 0 0 0 576 97.28zM512 64V33.152A448 448 0 0 1 990.848 512H512z\"\n })\n ]));\n }\n});\n\n// src/components/pie-chart.vue\nvar pie_chart_default = pie_chart_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/place.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent199 } from \"vue\";\nimport { createElementVNode as _createElementVNode199, openBlock as _openBlock199, createElementBlock as _createElementBlock199 } from \"vue\";\nvar place_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent199({\n name: \"Place\",\n __name: \"place\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock199(), _createElementBlock199(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode199(\"path\", {\n fill: \"currentColor\",\n d: \"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512\"\n }),\n _createElementVNode199(\"path\", {\n fill: \"currentColor\",\n d: \"M512 512a32 32 0 0 1 32 32v256a32 32 0 1 1-64 0V544a32 32 0 0 1 32-32\"\n }),\n _createElementVNode199(\"path\", {\n fill: \"currentColor\",\n d: \"M384 649.088v64.96C269.76 732.352 192 771.904 192 800c0 37.696 139.904 96 320 96s320-58.304 320-96c0-28.16-77.76-67.648-192-85.952v-64.96C789.12 671.04 896 730.368 896 800c0 88.32-171.904 160-384 160s-384-71.68-384-160c0-69.696 106.88-128.96 256-150.912\"\n })\n ]));\n }\n});\n\n// src/components/place.vue\nvar place_default = place_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/platform.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent200 } from \"vue\";\nimport { createElementVNode as _createElementVNode200, openBlock as _openBlock200, createElementBlock as _createElementBlock200 } from \"vue\";\nvar platform_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent200({\n name: \"Platform\",\n __name: \"platform\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock200(), _createElementBlock200(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode200(\"path\", {\n fill: \"currentColor\",\n d: \"M448 832v-64h128v64h192v64H256v-64zM128 704V128h768v576z\"\n })\n ]));\n }\n});\n\n// src/components/platform.vue\nvar platform_default = platform_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/plus.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent201 } from \"vue\";\nimport { createElementVNode as _createElementVNode201, openBlock as _openBlock201, createElementBlock as _createElementBlock201 } from \"vue\";\nvar plus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent201({\n name: \"Plus\",\n __name: \"plus\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock201(), _createElementBlock201(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode201(\"path\", {\n fill: \"currentColor\",\n d: \"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z\"\n })\n ]));\n }\n});\n\n// src/components/plus.vue\nvar plus_default = plus_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/pointer.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent202 } from \"vue\";\nimport { createElementVNode as _createElementVNode202, openBlock as _openBlock202, createElementBlock as _createElementBlock202 } from \"vue\";\nvar pointer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent202({\n name: \"Pointer\",\n __name: \"pointer\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock202(), _createElementBlock202(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode202(\"path\", {\n fill: \"currentColor\",\n d: \"M511.552 128c-35.584 0-64.384 28.8-64.384 64.448v516.48L274.048 570.88a94.272 94.272 0 0 0-112.896-3.456 44.416 44.416 0 0 0-8.96 62.208L332.8 870.4A64 64 0 0 0 384 896h512V575.232a64 64 0 0 0-45.632-61.312l-205.952-61.76A96 96 0 0 1 576 360.192V192.448C576 156.8 547.2 128 511.552 128M359.04 556.8l24.128 19.2V192.448a128.448 128.448 0 1 1 256.832 0v167.744a32 32 0 0 0 22.784 30.656l206.016 61.76A128 128 0 0 1 960 575.232V896a64 64 0 0 1-64 64H384a128 128 0 0 1-102.4-51.2L101.056 668.032A108.416 108.416 0 0 1 128 512.512a158.272 158.272 0 0 1 185.984 8.32z\"\n })\n ]));\n }\n});\n\n// src/components/pointer.vue\nvar pointer_default = pointer_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/position.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent203 } from \"vue\";\nimport { createElementVNode as _createElementVNode203, openBlock as _openBlock203, createElementBlock as _createElementBlock203 } from \"vue\";\nvar position_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent203({\n name: \"Position\",\n __name: \"position\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock203(), _createElementBlock203(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode203(\"path\", {\n fill: \"currentColor\",\n d: \"m249.6 417.088 319.744 43.072 39.168 310.272L845.12 178.88 249.6 417.088zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992l-391.424-52.736z\"\n })\n ]));\n }\n});\n\n// src/components/position.vue\nvar position_default = position_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/postcard.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent204 } from \"vue\";\nimport { createElementVNode as _createElementVNode204, openBlock as _openBlock204, createElementBlock as _createElementBlock204 } from \"vue\";\nvar postcard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent204({\n name: \"Postcard\",\n __name: \"postcard\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock204(), _createElementBlock204(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode204(\"path\", {\n fill: \"currentColor\",\n d: \"M160 224a32 32 0 0 0-32 32v512a32 32 0 0 0 32 32h704a32 32 0 0 0 32-32V256a32 32 0 0 0-32-32zm0-64h704a96 96 0 0 1 96 96v512a96 96 0 0 1-96 96H160a96 96 0 0 1-96-96V256a96 96 0 0 1 96-96\"\n }),\n _createElementVNode204(\"path\", {\n fill: \"currentColor\",\n d: \"M704 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128M288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32m0 128h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/postcard.vue\nvar postcard_default = postcard_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/pouring.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent205 } from \"vue\";\nimport { createElementVNode as _createElementVNode205, openBlock as _openBlock205, createElementBlock as _createElementBlock205 } from \"vue\";\nvar pouring_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent205({\n name: \"Pouring\",\n __name: \"pouring\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock205(), _createElementBlock205(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode205(\"path\", {\n fill: \"currentColor\",\n d: \"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M224 800a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/pouring.vue\nvar pouring_default = pouring_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/present.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent206 } from \"vue\";\nimport { createElementVNode as _createElementVNode206, openBlock as _openBlock206, createElementBlock as _createElementBlock206 } from \"vue\";\nvar present_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent206({\n name: \"Present\",\n __name: \"present\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock206(), _createElementBlock206(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode206(\"path\", {\n fill: \"currentColor\",\n d: \"M480 896V640H192v-64h288V320H192v576zm64 0h288V320H544v256h288v64H544zM128 256h768v672a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32z\"\n }),\n _createElementVNode206(\"path\", {\n fill: \"currentColor\",\n d: \"M96 256h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32\"\n }),\n _createElementVNode206(\"path\", {\n fill: \"currentColor\",\n d: \"M416 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256\"\n }),\n _createElementVNode206(\"path\", {\n fill: \"currentColor\",\n d: \"M608 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256\"\n })\n ]));\n }\n});\n\n// src/components/present.vue\nvar present_default = present_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/price-tag.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent207 } from \"vue\";\nimport { createElementVNode as _createElementVNode207, openBlock as _openBlock207, createElementBlock as _createElementBlock207 } from \"vue\";\nvar price_tag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent207({\n name: \"PriceTag\",\n __name: \"price-tag\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock207(), _createElementBlock207(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode207(\"path\", {\n fill: \"currentColor\",\n d: \"M224 318.336V896h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0z\"\n }),\n _createElementVNode207(\"path\", {\n fill: \"currentColor\",\n d: \"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256\"\n })\n ]));\n }\n});\n\n// src/components/price-tag.vue\nvar price_tag_default = price_tag_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/printer.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent208 } from \"vue\";\nimport { createElementVNode as _createElementVNode208, openBlock as _openBlock208, createElementBlock as _createElementBlock208 } from \"vue\";\nvar printer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent208({\n name: \"Printer\",\n __name: \"printer\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock208(), _createElementBlock208(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode208(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 746.432 64 741.248 64 727.04V379.072c0-42.816 4.48-58.304 12.8-73.984 8.384-15.616 20.672-27.904 36.288-36.288 15.68-8.32 31.168-12.8 73.984-12.8H256V64h512v192h68.928c42.816 0 58.304 4.48 73.984 12.8 15.616 8.384 27.904 20.672 36.288 36.288 8.32 15.68 12.8 31.168 12.8 73.984v347.904c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H768v192H256zm64-192v320h384V576zm-64 128V512h512v192h128V379.072c0-29.376-1.408-36.48-5.248-43.776a23.296 23.296 0 0 0-10.048-10.048c-7.232-3.84-14.4-5.248-43.776-5.248H187.072c-29.376 0-36.48 1.408-43.776 5.248a23.296 23.296 0 0 0-10.048 10.048c-3.84 7.232-5.248 14.4-5.248 43.776V704zm64-448h384V128H320zm-64 128h64v64h-64zm128 0h64v64h-64z\"\n })\n ]));\n }\n});\n\n// src/components/printer.vue\nvar printer_default = printer_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/promotion.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent209 } from \"vue\";\nimport { createElementVNode as _createElementVNode209, openBlock as _openBlock209, createElementBlock as _createElementBlock209 } from \"vue\";\nvar promotion_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent209({\n name: \"Promotion\",\n __name: \"promotion\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock209(), _createElementBlock209(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode209(\"path\", {\n fill: \"currentColor\",\n d: \"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472zm256 512V657.024L512 768z\"\n })\n ]));\n }\n});\n\n// src/components/promotion.vue\nvar promotion_default = promotion_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/quartz-watch.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent210 } from \"vue\";\nimport { createElementVNode as _createElementVNode210, openBlock as _openBlock210, createElementBlock as _createElementBlock210 } from \"vue\";\nvar quartz_watch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent210({\n name: \"QuartzWatch\",\n __name: \"quartz-watch\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock210(), _createElementBlock210(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode210(\"path\", {\n fill: \"currentColor\",\n d: \"M422.02 602.01v-.03c-6.68-5.99-14.35-8.83-23.01-8.51-8.67.32-16.17 3.66-22.5 10.02-6.33 6.36-9.5 13.7-9.5 22.02s3 15.82 8.99 22.5c8.68 8.68 19.02 11.35 31.01 8s19.49-10.85 22.5-22.5c3.01-11.65.51-22.15-7.49-31.49zM384 512c0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.67 8.99-23.01m6.53-82.49c11.65 3.01 22.15.51 31.49-7.49h.04c5.99-6.68 8.83-14.34 8.51-23.01-.32-8.67-3.66-16.16-10.02-22.5-6.36-6.33-13.7-9.5-22.02-9.5s-15.82 3-22.5 8.99c-8.68 8.69-11.35 19.02-8 31.01 3.35 11.99 10.85 19.49 22.5 22.5zm242.94 0c11.67-3.03 19.01-10.37 22.02-22.02 3.01-11.65.51-22.15-7.49-31.49h.01c-6.68-5.99-14.18-8.99-22.5-8.99s-15.66 3.16-22.02 9.5c-6.36 6.34-9.7 13.84-10.02 22.5-.32 8.66 2.52 16.33 8.51 23.01 9.32 8.02 19.82 10.52 31.49 7.49M512 640c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01s-3-17.02-8.99-23.01c-6-5.99-13.66-8.99-23.01-8.99m183.01-151.01c-6-5.99-13.66-8.99-23.01-8.99s-17.02 3-23.01 8.99c-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99s17.02-3 23.01-8.99c5.99-6 8.99-13.67 8.99-23.01 0-9.35-3-17.02-8.99-23.01\"\n }),\n _createElementVNode210(\"path\", {\n fill: \"currentColor\",\n d: \"M832 512c-2-90.67-33.17-166.17-93.5-226.5-20.43-20.42-42.6-37.49-66.5-51.23V64H352v170.26c-23.9 13.74-46.07 30.81-66.5 51.24-60.33 60.33-91.49 135.83-93.5 226.5 2 90.67 33.17 166.17 93.5 226.5 20.43 20.43 42.6 37.5 66.5 51.24V960h320V789.74c23.9-13.74 46.07-30.81 66.5-51.24 60.33-60.34 91.49-135.83 93.5-226.5M416 128h192v78.69c-29.85-9.03-61.85-13.93-96-14.69-34.15.75-66.15 5.65-96 14.68zm192 768H416v-78.68c29.85 9.03 61.85 13.93 96 14.68 34.15-.75 66.15-5.65 96-14.68zm-96-128c-72.66-2.01-132.99-27.01-180.99-75.01S258.01 584.66 256 512c2.01-72.66 27.01-132.99 75.01-180.99S439.34 258.01 512 256c72.66 2.01 132.99 27.01 180.99 75.01S765.99 439.34 768 512c-2.01 72.66-27.01 132.99-75.01 180.99S584.66 765.99 512 768\"\n }),\n _createElementVNode210(\"path\", {\n fill: \"currentColor\",\n d: \"M512 320c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01 0 9.35 3 17.02 8.99 23.01 6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01 0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99m112.99 273.5c-8.66-.32-16.33 2.52-23.01 8.51-7.98 9.32-10.48 19.82-7.49 31.49s10.49 19.17 22.5 22.5 22.35.66 31.01-8v.04c5.99-6.68 8.99-14.18 8.99-22.5s-3.16-15.66-9.5-22.02-13.84-9.7-22.5-10.02\"\n })\n ]));\n }\n});\n\n// src/components/quartz-watch.vue\nvar quartz_watch_default = quartz_watch_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/question-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent211 } from \"vue\";\nimport { createElementVNode as _createElementVNode211, openBlock as _openBlock211, createElementBlock as _createElementBlock211 } from \"vue\";\nvar question_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent211({\n name: \"QuestionFilled\",\n __name: \"question-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock211(), _createElementBlock211(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode211(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z\"\n })\n ]));\n }\n});\n\n// src/components/question-filled.vue\nvar question_filled_default = question_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/rank.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent212 } from \"vue\";\nimport { createElementVNode as _createElementVNode212, openBlock as _openBlock212, createElementBlock as _createElementBlock212 } from \"vue\";\nvar rank_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent212({\n name: \"Rank\",\n __name: \"rank\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock212(), _createElementBlock212(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode212(\"path\", {\n fill: \"currentColor\",\n d: \"m186.496 544 41.408 41.344a32 32 0 1 1-45.248 45.312l-96-96a32 32 0 0 1 0-45.312l96-96a32 32 0 1 1 45.248 45.312L186.496 480h290.816V186.432l-41.472 41.472a32 32 0 1 1-45.248-45.184l96-96.128a32 32 0 0 1 45.312 0l96 96.064a32 32 0 0 1-45.248 45.184l-41.344-41.28V480H832l-41.344-41.344a32 32 0 0 1 45.248-45.312l96 96a32 32 0 0 1 0 45.312l-96 96a32 32 0 0 1-45.248-45.312L832 544H541.312v293.44l41.344-41.28a32 32 0 1 1 45.248 45.248l-96 96a32 32 0 0 1-45.312 0l-96-96a32 32 0 1 1 45.312-45.248l41.408 41.408V544H186.496z\"\n })\n ]));\n }\n});\n\n// src/components/rank.vue\nvar rank_default = rank_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/reading-lamp.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent213 } from \"vue\";\nimport { createElementVNode as _createElementVNode213, openBlock as _openBlock213, createElementBlock as _createElementBlock213 } from \"vue\";\nvar reading_lamp_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent213({\n name: \"ReadingLamp\",\n __name: \"reading-lamp\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock213(), _createElementBlock213(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode213(\"path\", {\n fill: \"currentColor\",\n d: \"M352 896h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m-44.672-768-99.52 448h608.384l-99.52-448zm-25.6-64h460.608a32 32 0 0 1 31.232 25.088l113.792 512A32 32 0 0 1 856.128 640H167.872a32 32 0 0 1-31.232-38.912l113.792-512A32 32 0 0 1 281.664 64z\"\n }),\n _createElementVNode213(\"path\", {\n fill: \"currentColor\",\n d: \"M672 576q32 0 32 32v128q0 32-32 32t-32-32V608q0-32 32-32m-192-.064h64V960h-64z\"\n })\n ]));\n }\n});\n\n// src/components/reading-lamp.vue\nvar reading_lamp_default = reading_lamp_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/reading.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent214 } from \"vue\";\nimport { createElementVNode as _createElementVNode214, openBlock as _openBlock214, createElementBlock as _createElementBlock214 } from \"vue\";\nvar reading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent214({\n name: \"Reading\",\n __name: \"reading\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock214(), _createElementBlock214(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode214(\"path\", {\n fill: \"currentColor\",\n d: \"m512 863.36 384-54.848v-638.72L525.568 222.72a96 96 0 0 1-27.136 0L128 169.792v638.72zM137.024 106.432l370.432 52.928a32 32 0 0 0 9.088 0l370.432-52.928A64 64 0 0 1 960 169.792v638.72a64 64 0 0 1-54.976 63.36l-388.48 55.488a32 32 0 0 1-9.088 0l-388.48-55.488A64 64 0 0 1 64 808.512v-638.72a64 64 0 0 1 73.024-63.36z\"\n }),\n _createElementVNode214(\"path\", {\n fill: \"currentColor\",\n d: \"M480 192h64v704h-64z\"\n })\n ]));\n }\n});\n\n// src/components/reading.vue\nvar reading_default = reading_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/refresh-left.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent215 } from \"vue\";\nimport { createElementVNode as _createElementVNode215, openBlock as _openBlock215, createElementBlock as _createElementBlock215 } from \"vue\";\nvar refresh_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent215({\n name: \"RefreshLeft\",\n __name: \"refresh-left\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock215(), _createElementBlock215(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode215(\"path\", {\n fill: \"currentColor\",\n d: \"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z\"\n })\n ]));\n }\n});\n\n// src/components/refresh-left.vue\nvar refresh_left_default = refresh_left_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/refresh-right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent216 } from \"vue\";\nimport { createElementVNode as _createElementVNode216, openBlock as _openBlock216, createElementBlock as _createElementBlock216 } from \"vue\";\nvar refresh_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent216({\n name: \"RefreshRight\",\n __name: \"refresh-right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock216(), _createElementBlock216(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode216(\"path\", {\n fill: \"currentColor\",\n d: \"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z\"\n })\n ]));\n }\n});\n\n// src/components/refresh-right.vue\nvar refresh_right_default = refresh_right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/refresh.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent217 } from \"vue\";\nimport { createElementVNode as _createElementVNode217, openBlock as _openBlock217, createElementBlock as _createElementBlock217 } from \"vue\";\nvar refresh_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent217({\n name: \"Refresh\",\n __name: \"refresh\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock217(), _createElementBlock217(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode217(\"path\", {\n fill: \"currentColor\",\n d: \"M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z\"\n })\n ]));\n }\n});\n\n// src/components/refresh.vue\nvar refresh_default = refresh_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/refrigerator.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent218 } from \"vue\";\nimport { createElementVNode as _createElementVNode218, openBlock as _openBlock218, createElementBlock as _createElementBlock218 } from \"vue\";\nvar refrigerator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent218({\n name: \"Refrigerator\",\n __name: \"refrigerator\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock218(), _createElementBlock218(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode218(\"path\", {\n fill: \"currentColor\",\n d: \"M256 448h512V160a32 32 0 0 0-32-32H288a32 32 0 0 0-32 32zm0 64v352a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V512zm32-448h448a96 96 0 0 1 96 96v704a96 96 0 0 1-96 96H288a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96m32 224h64v96h-64zm0 288h64v96h-64z\"\n })\n ]));\n }\n});\n\n// src/components/refrigerator.vue\nvar refrigerator_default = refrigerator_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/remove-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent219 } from \"vue\";\nimport { createElementVNode as _createElementVNode219, openBlock as _openBlock219, createElementBlock as _createElementBlock219 } from \"vue\";\nvar remove_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent219({\n name: \"RemoveFilled\",\n __name: \"remove-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock219(), _createElementBlock219(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode219(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896M288 512a38.4 38.4 0 0 0 38.4 38.4h371.2a38.4 38.4 0 0 0 0-76.8H326.4A38.4 38.4 0 0 0 288 512\"\n })\n ]));\n }\n});\n\n// src/components/remove-filled.vue\nvar remove_filled_default = remove_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/remove.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent220 } from \"vue\";\nimport { createElementVNode as _createElementVNode220, openBlock as _openBlock220, createElementBlock as _createElementBlock220 } from \"vue\";\nvar remove_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent220({\n name: \"Remove\",\n __name: \"remove\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock220(), _createElementBlock220(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode220(\"path\", {\n fill: \"currentColor\",\n d: \"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\"\n }),\n _createElementVNode220(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n })\n ]));\n }\n});\n\n// src/components/remove.vue\nvar remove_default = remove_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent221 } from \"vue\";\nimport { createElementVNode as _createElementVNode221, openBlock as _openBlock221, createElementBlock as _createElementBlock221 } from \"vue\";\nvar right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent221({\n name: \"Right\",\n __name: \"right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock221(), _createElementBlock221(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode221(\"path\", {\n fill: \"currentColor\",\n d: \"M754.752 480H160a32 32 0 1 0 0 64h594.752L521.344 777.344a32 32 0 0 0 45.312 45.312l288-288a32 32 0 0 0 0-45.312l-288-288a32 32 0 1 0-45.312 45.312z\"\n })\n ]));\n }\n});\n\n// src/components/right.vue\nvar right_default = right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/scale-to-original.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent222 } from \"vue\";\nimport { createElementVNode as _createElementVNode222, openBlock as _openBlock222, createElementBlock as _createElementBlock222 } from \"vue\";\nvar scale_to_original_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent222({\n name: \"ScaleToOriginal\",\n __name: \"scale-to-original\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock222(), _createElementBlock222(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode222(\"path\", {\n fill: \"currentColor\",\n d: \"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512\"\n })\n ]));\n }\n});\n\n// src/components/scale-to-original.vue\nvar scale_to_original_default = scale_to_original_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/school.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent223 } from \"vue\";\nimport { createElementVNode as _createElementVNode223, openBlock as _openBlock223, createElementBlock as _createElementBlock223 } from \"vue\";\nvar school_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent223({\n name: \"School\",\n __name: \"school\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock223(), _createElementBlock223(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode223(\"path\", {\n fill: \"currentColor\",\n d: \"M224 128v704h576V128zm-32-64h640a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32\"\n }),\n _createElementVNode223(\"path\", {\n fill: \"currentColor\",\n d: \"M64 832h896v64H64zm256-640h128v96H320z\"\n }),\n _createElementVNode223(\"path\", {\n fill: \"currentColor\",\n d: \"M384 832h256v-64a128 128 0 1 0-256 0zm128-256a192 192 0 0 1 192 192v128H320V768a192 192 0 0 1 192-192M320 384h128v96H320zm256-192h128v96H576zm0 192h128v96H576z\"\n })\n ]));\n }\n});\n\n// src/components/school.vue\nvar school_default = school_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/scissor.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent224 } from \"vue\";\nimport { createElementVNode as _createElementVNode224, openBlock as _openBlock224, createElementBlock as _createElementBlock224 } from \"vue\";\nvar scissor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent224({\n name: \"Scissor\",\n __name: \"scissor\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock224(), _createElementBlock224(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode224(\"path\", {\n fill: \"currentColor\",\n d: \"m512.064 578.368-106.88 152.768a160 160 0 1 1-23.36-78.208L472.96 522.56 196.864 128.256a32 32 0 1 1 52.48-36.736l393.024 561.344a160 160 0 1 1-23.36 78.208l-106.88-152.704zm54.4-189.248 208.384-297.6a32 32 0 0 1 52.48 36.736l-221.76 316.672-39.04-55.808zm-376.32 425.856a96 96 0 1 0 110.144-157.248 96 96 0 0 0-110.08 157.248zm643.84 0a96 96 0 1 0-110.08-157.248 96 96 0 0 0 110.08 157.248\"\n })\n ]));\n }\n});\n\n// src/components/scissor.vue\nvar scissor_default = scissor_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/search.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent225 } from \"vue\";\nimport { createElementVNode as _createElementVNode225, openBlock as _openBlock225, createElementBlock as _createElementBlock225 } from \"vue\";\nvar search_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent225({\n name: \"Search\",\n __name: \"search\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock225(), _createElementBlock225(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode225(\"path\", {\n fill: \"currentColor\",\n d: \"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704\"\n })\n ]));\n }\n});\n\n// src/components/search.vue\nvar search_default = search_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/select.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent226 } from \"vue\";\nimport { createElementVNode as _createElementVNode226, openBlock as _openBlock226, createElementBlock as _createElementBlock226 } from \"vue\";\nvar select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent226({\n name: \"Select\",\n __name: \"select\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock226(), _createElementBlock226(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode226(\"path\", {\n fill: \"currentColor\",\n d: \"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z\"\n })\n ]));\n }\n});\n\n// src/components/select.vue\nvar select_default = select_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sell.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent227 } from \"vue\";\nimport { createElementVNode as _createElementVNode227, openBlock as _openBlock227, createElementBlock as _createElementBlock227 } from \"vue\";\nvar sell_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent227({\n name: \"Sell\",\n __name: \"sell\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock227(), _createElementBlock227(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode227(\"path\", {\n fill: \"currentColor\",\n d: \"M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 483.84L768 698.496V928a32 32 0 1 1-64 0V698.496l-73.344 73.344a32 32 0 1 1-45.248-45.248l128-128a32 32 0 0 1 45.248 0l128 128a32 32 0 1 1-45.248 45.248z\"\n })\n ]));\n }\n});\n\n// src/components/sell.vue\nvar sell_default = sell_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/semi-select.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent228 } from \"vue\";\nimport { createElementVNode as _createElementVNode228, openBlock as _openBlock228, createElementBlock as _createElementBlock228 } from \"vue\";\nvar semi_select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent228({\n name: \"SemiSelect\",\n __name: \"semi-select\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock228(), _createElementBlock228(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode228(\"path\", {\n fill: \"currentColor\",\n d: \"M128 448h768q64 0 64 64t-64 64H128q-64 0-64-64t64-64\"\n })\n ]));\n }\n});\n\n// src/components/semi-select.vue\nvar semi_select_default = semi_select_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/service.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent229 } from \"vue\";\nimport { createElementVNode as _createElementVNode229, openBlock as _openBlock229, createElementBlock as _createElementBlock229 } from \"vue\";\nvar service_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent229({\n name: \"Service\",\n __name: \"service\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock229(), _createElementBlock229(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode229(\"path\", {\n fill: \"currentColor\",\n d: \"M864 409.6a192 192 0 0 1-37.888 349.44A256.064 256.064 0 0 1 576 960h-96a32 32 0 1 1 0-64h96a192.064 192.064 0 0 0 181.12-128H736a32 32 0 0 1-32-32V416a32 32 0 0 1 32-32h32c10.368 0 20.544.832 30.528 2.432a288 288 0 0 0-573.056 0A193.235 193.235 0 0 1 256 384h32a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32h-32a192 192 0 0 1-96-358.4 352 352 0 0 1 704 0M256 448a128 128 0 1 0 0 256zm640 128a128 128 0 0 0-128-128v256a128 128 0 0 0 128-128\"\n })\n ]));\n }\n});\n\n// src/components/service.vue\nvar service_default = service_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/set-up.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent230 } from \"vue\";\nimport { createElementVNode as _createElementVNode230, openBlock as _openBlock230, createElementBlock as _createElementBlock230 } from \"vue\";\nvar set_up_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent230({\n name: \"SetUp\",\n __name: \"set-up\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock230(), _createElementBlock230(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode230(\"path\", {\n fill: \"currentColor\",\n d: \"M224 160a64 64 0 0 0-64 64v576a64 64 0 0 0 64 64h576a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64zm0-64h576a128 128 0 0 1 128 128v576a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V224A128 128 0 0 1 224 96\"\n }),\n _createElementVNode230(\"path\", {\n fill: \"currentColor\",\n d: \"M384 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256\"\n }),\n _createElementVNode230(\"path\", {\n fill: \"currentColor\",\n d: \"M480 320h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32m160 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256\"\n }),\n _createElementVNode230(\"path\", {\n fill: \"currentColor\",\n d: \"M288 640h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/set-up.vue\nvar set_up_default = set_up_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/setting.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent231 } from \"vue\";\nimport { createElementVNode as _createElementVNode231, openBlock as _openBlock231, createElementBlock as _createElementBlock231 } from \"vue\";\nvar setting_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent231({\n name: \"Setting\",\n __name: \"setting\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock231(), _createElementBlock231(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode231(\"path\", {\n fill: \"currentColor\",\n d: \"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256\"\n })\n ]));\n }\n});\n\n// src/components/setting.vue\nvar setting_default = setting_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/share.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent232 } from \"vue\";\nimport { createElementVNode as _createElementVNode232, openBlock as _openBlock232, createElementBlock as _createElementBlock232 } from \"vue\";\nvar share_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent232({\n name: \"Share\",\n __name: \"share\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock232(), _createElementBlock232(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode232(\"path\", {\n fill: \"currentColor\",\n d: \"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z\"\n })\n ]));\n }\n});\n\n// src/components/share.vue\nvar share_default = share_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ship.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent233 } from \"vue\";\nimport { createElementVNode as _createElementVNode233, openBlock as _openBlock233, createElementBlock as _createElementBlock233 } from \"vue\";\nvar ship_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent233({\n name: \"Ship\",\n __name: \"ship\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock233(), _createElementBlock233(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode233(\"path\", {\n fill: \"currentColor\",\n d: \"M512 386.88V448h405.568a32 32 0 0 1 30.72 40.768l-76.48 267.968A192 192 0 0 1 687.168 896H336.832a192 192 0 0 1-184.64-139.264L75.648 488.768A32 32 0 0 1 106.368 448H448V117.888a32 32 0 0 1 47.36-28.096l13.888 7.616L512 96v2.88l231.68 126.4a32 32 0 0 1-2.048 57.216zm0-70.272 144.768-65.792L512 171.84zM512 512H148.864l18.24 64H856.96l18.24-64zM185.408 640l28.352 99.2A128 128 0 0 0 336.832 832h350.336a128 128 0 0 0 123.072-92.8l28.352-99.2H185.408\"\n })\n ]));\n }\n});\n\n// src/components/ship.vue\nvar ship_default = ship_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/shop.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent234 } from \"vue\";\nimport { createElementVNode as _createElementVNode234, openBlock as _openBlock234, createElementBlock as _createElementBlock234 } from \"vue\";\nvar shop_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent234({\n name: \"Shop\",\n __name: \"shop\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock234(), _createElementBlock234(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode234(\"path\", {\n fill: \"currentColor\",\n d: \"M704 704h64v192H256V704h64v64h384zm188.544-152.192C894.528 559.616 896 567.616 896 576a96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0c0-8.384 1.408-16.384 3.392-24.192L192 128h640z\"\n })\n ]));\n }\n});\n\n// src/components/shop.vue\nvar shop_default = shop_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/shopping-bag.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent235 } from \"vue\";\nimport { createElementVNode as _createElementVNode235, openBlock as _openBlock235, createElementBlock as _createElementBlock235 } from \"vue\";\nvar shopping_bag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent235({\n name: \"ShoppingBag\",\n __name: \"shopping-bag\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock235(), _createElementBlock235(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode235(\"path\", {\n fill: \"currentColor\",\n d: \"M704 320v96a32 32 0 0 1-32 32h-32V320H384v128h-32a32 32 0 0 1-32-32v-96H192v576h640V320zm-384-64a192 192 0 1 1 384 0h160a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32zm64 0h256a128 128 0 1 0-256 0\"\n }),\n _createElementVNode235(\"path\", {\n fill: \"currentColor\",\n d: \"M192 704h640v64H192z\"\n })\n ]));\n }\n});\n\n// src/components/shopping-bag.vue\nvar shopping_bag_default = shopping_bag_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/shopping-cart-full.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent236 } from \"vue\";\nimport { createElementVNode as _createElementVNode236, openBlock as _openBlock236, createElementBlock as _createElementBlock236 } from \"vue\";\nvar shopping_cart_full_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent236({\n name: \"ShoppingCartFull\",\n __name: \"shopping-cart-full\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock236(), _createElementBlock236(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode236(\"path\", {\n fill: \"currentColor\",\n d: \"M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96m320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96M96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128zm314.24 576h395.904l82.304-384H333.44l76.8 384z\"\n }),\n _createElementVNode236(\"path\", {\n fill: \"currentColor\",\n d: \"M699.648 256 608 145.984 516.352 256h183.296zm-140.8-151.04a64 64 0 0 1 98.304 0L836.352 320H379.648l179.2-215.04\"\n })\n ]));\n }\n});\n\n// src/components/shopping-cart-full.vue\nvar shopping_cart_full_default = shopping_cart_full_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/shopping-cart.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent237 } from \"vue\";\nimport { createElementVNode as _createElementVNode237, openBlock as _openBlock237, createElementBlock as _createElementBlock237 } from \"vue\";\nvar shopping_cart_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent237({\n name: \"ShoppingCart\",\n __name: \"shopping-cart\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock237(), _createElementBlock237(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode237(\"path\", {\n fill: \"currentColor\",\n d: \"M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96m320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96M96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128zm314.24 576h395.904l82.304-384H333.44l76.8 384z\"\n })\n ]));\n }\n});\n\n// src/components/shopping-cart.vue\nvar shopping_cart_default = shopping_cart_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/shopping-trolley.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent238 } from \"vue\";\nimport { createElementVNode as _createElementVNode238, openBlock as _openBlock238, createElementBlock as _createElementBlock238 } from \"vue\";\nvar shopping_trolley_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent238({\n name: \"ShoppingTrolley\",\n __name: \"shopping-trolley\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock238(), _createElementBlock238(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode238(\"path\", {\n fill: \"currentColor\",\n d: \"M368 833c-13.3 0-24.5 4.5-33.5 13.5S321 866.7 321 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S415 893.3 415 880s-4.5-24.5-13.5-33.5S381.3 833 368 833m439-193c7.4 0 13.8-2.2 19.5-6.5S836 623.3 838 616l112-448c2-10-.2-19.2-6.5-27.5S929 128 919 128H96c-9.3 0-17 3-23 9s-9 13.7-9 23 3 17 9 23 13.7 9 23 9h96v576h672c9.3 0 17-3 23-9s9-13.7 9-23-3-17-9-23-13.7-9-23-9H256v-64zM256 192h622l-96 384H256zm432 641c-13.3 0-24.5 4.5-33.5 13.5S641 866.7 641 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S735 893.3 735 880s-4.5-24.5-13.5-33.5S701.3 833 688 833\"\n })\n ]));\n }\n});\n\n// src/components/shopping-trolley.vue\nvar shopping_trolley_default = shopping_trolley_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/smoking.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent239 } from \"vue\";\nimport { createElementVNode as _createElementVNode239, openBlock as _openBlock239, createElementBlock as _createElementBlock239 } from \"vue\";\nvar smoking_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent239({\n name: \"Smoking\",\n __name: \"smoking\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock239(), _createElementBlock239(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode239(\"path\", {\n fill: \"currentColor\",\n d: \"M256 576v128h640V576zm-32-64h704a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32\"\n }),\n _createElementVNode239(\"path\", {\n fill: \"currentColor\",\n d: \"M704 576h64v128h-64zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z\"\n })\n ]));\n }\n});\n\n// src/components/smoking.vue\nvar smoking_default = smoking_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/soccer.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent240 } from \"vue\";\nimport { createElementVNode as _createElementVNode240, openBlock as _openBlock240, createElementBlock as _createElementBlock240 } from \"vue\";\nvar soccer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent240({\n name: \"Soccer\",\n __name: \"soccer\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock240(), _createElementBlock240(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode240(\"path\", {\n fill: \"currentColor\",\n d: \"M418.496 871.04 152.256 604.8c-16.512 94.016-2.368 178.624 42.944 224 44.928 44.928 129.344 58.752 223.296 42.24m72.32-18.176a573.056 573.056 0 0 0 224.832-137.216 573.12 573.12 0 0 0 137.216-224.832L533.888 171.84a578.56 578.56 0 0 0-227.52 138.496A567.68 567.68 0 0 0 170.432 532.48l320.384 320.384zM871.04 418.496c16.512-93.952 2.688-178.368-42.24-223.296-44.544-44.544-128.704-58.048-222.592-41.536zM149.952 874.048c-112.96-112.96-88.832-408.96 111.168-608.96C461.056 65.152 760.96 36.928 874.048 149.952c113.024 113.024 86.784 411.008-113.152 610.944-199.936 199.936-497.92 226.112-610.944 113.152m452.544-497.792 22.656-22.656a32 32 0 0 1 45.248 45.248l-22.656 22.656 45.248 45.248A32 32 0 1 1 647.744 512l-45.248-45.248L557.248 512l45.248 45.248a32 32 0 1 1-45.248 45.248L512 557.248l-45.248 45.248L512 647.744a32 32 0 1 1-45.248 45.248l-45.248-45.248-22.656 22.656a32 32 0 1 1-45.248-45.248l22.656-22.656-45.248-45.248A32 32 0 1 1 376.256 512l45.248 45.248L466.752 512l-45.248-45.248a32 32 0 1 1 45.248-45.248L512 466.752l45.248-45.248L512 376.256a32 32 0 0 1 45.248-45.248l45.248 45.248z\"\n })\n ]));\n }\n});\n\n// src/components/soccer.vue\nvar soccer_default = soccer_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sold-out.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent241 } from \"vue\";\nimport { createElementVNode as _createElementVNode241, openBlock as _openBlock241, createElementBlock as _createElementBlock241 } from \"vue\";\nvar sold_out_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent241({\n name: \"SoldOut\",\n __name: \"sold-out\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock241(), _createElementBlock241(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode241(\"path\", {\n fill: \"currentColor\",\n d: \"M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 476.16a32 32 0 1 1 45.248 45.184l-128 128a32 32 0 0 1-45.248 0l-128-128a32 32 0 1 1 45.248-45.248L704 837.504V608a32 32 0 1 1 64 0v229.504l73.408-73.408z\"\n })\n ]));\n }\n});\n\n// src/components/sold-out.vue\nvar sold_out_default = sold_out_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sort-down.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent242 } from \"vue\";\nimport { createElementVNode as _createElementVNode242, openBlock as _openBlock242, createElementBlock as _createElementBlock242 } from \"vue\";\nvar sort_down_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent242({\n name: \"SortDown\",\n __name: \"sort-down\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock242(), _createElementBlock242(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode242(\"path\", {\n fill: \"currentColor\",\n d: \"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0\"\n })\n ]));\n }\n});\n\n// src/components/sort-down.vue\nvar sort_down_default = sort_down_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sort-up.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent243 } from \"vue\";\nimport { createElementVNode as _createElementVNode243, openBlock as _openBlock243, createElementBlock as _createElementBlock243 } from \"vue\";\nvar sort_up_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent243({\n name: \"SortUp\",\n __name: \"sort-up\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock243(), _createElementBlock243(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode243(\"path\", {\n fill: \"currentColor\",\n d: \"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248\"\n })\n ]));\n }\n});\n\n// src/components/sort-up.vue\nvar sort_up_default = sort_up_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sort.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent244 } from \"vue\";\nimport { createElementVNode as _createElementVNode244, openBlock as _openBlock244, createElementBlock as _createElementBlock244 } from \"vue\";\nvar sort_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent244({\n name: \"Sort\",\n __name: \"sort\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock244(), _createElementBlock244(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode244(\"path\", {\n fill: \"currentColor\",\n d: \"M384 96a32 32 0 0 1 64 0v786.752a32 32 0 0 1-54.592 22.656L95.936 608a32 32 0 0 1 0-45.312h.128a32 32 0 0 1 45.184 0L384 805.632zm192 45.248a32 32 0 0 1 54.592-22.592L928.064 416a32 32 0 0 1 0 45.312h-.128a32 32 0 0 1-45.184 0L640 218.496V928a32 32 0 1 1-64 0V141.248z\"\n })\n ]));\n }\n});\n\n// src/components/sort.vue\nvar sort_default = sort_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/stamp.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent245 } from \"vue\";\nimport { createElementVNode as _createElementVNode245, openBlock as _openBlock245, createElementBlock as _createElementBlock245 } from \"vue\";\nvar stamp_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent245({\n name: \"Stamp\",\n __name: \"stamp\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock245(), _createElementBlock245(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode245(\"path\", {\n fill: \"currentColor\",\n d: \"M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0M128 896v-64h768v64z\"\n })\n ]));\n }\n});\n\n// src/components/stamp.vue\nvar stamp_default = stamp_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/star-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent246 } from \"vue\";\nimport { createElementVNode as _createElementVNode246, openBlock as _openBlock246, createElementBlock as _createElementBlock246 } from \"vue\";\nvar star_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent246({\n name: \"StarFilled\",\n __name: \"star-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock246(), _createElementBlock246(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode246(\"path\", {\n fill: \"currentColor\",\n d: \"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z\"\n })\n ]));\n }\n});\n\n// src/components/star-filled.vue\nvar star_filled_default = star_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/star.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent247 } from \"vue\";\nimport { createElementVNode as _createElementVNode247, openBlock as _openBlock247, createElementBlock as _createElementBlock247 } from \"vue\";\nvar star_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent247({\n name: \"Star\",\n __name: \"star\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock247(), _createElementBlock247(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode247(\"path\", {\n fill: \"currentColor\",\n d: \"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z\"\n })\n ]));\n }\n});\n\n// src/components/star.vue\nvar star_default = star_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/stopwatch.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent248 } from \"vue\";\nimport { createElementVNode as _createElementVNode248, openBlock as _openBlock248, createElementBlock as _createElementBlock248 } from \"vue\";\nvar stopwatch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent248({\n name: \"Stopwatch\",\n __name: \"stopwatch\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock248(), _createElementBlock248(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode248(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\n }),\n _createElementVNode248(\"path\", {\n fill: \"currentColor\",\n d: \"M672 234.88c-39.168 174.464-80 298.624-122.688 372.48-64 110.848-202.624 30.848-138.624-80C453.376 453.44 540.48 355.968 672 234.816z\"\n })\n ]));\n }\n});\n\n// src/components/stopwatch.vue\nvar stopwatch_default = stopwatch_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/success-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent249 } from \"vue\";\nimport { createElementVNode as _createElementVNode249, openBlock as _openBlock249, createElementBlock as _createElementBlock249 } from \"vue\";\nvar success_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent249({\n name: \"SuccessFilled\",\n __name: \"success-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock249(), _createElementBlock249(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode249(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z\"\n })\n ]));\n }\n});\n\n// src/components/success-filled.vue\nvar success_filled_default = success_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sugar.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent250 } from \"vue\";\nimport { createElementVNode as _createElementVNode250, openBlock as _openBlock250, createElementBlock as _createElementBlock250 } from \"vue\";\nvar sugar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent250({\n name: \"Sugar\",\n __name: \"sugar\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock250(), _createElementBlock250(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode250(\"path\", {\n fill: \"currentColor\",\n d: \"m801.728 349.184 4.48 4.48a128 128 0 0 1 0 180.992L534.656 806.144a128 128 0 0 1-181.056 0l-4.48-4.48-19.392 109.696a64 64 0 0 1-108.288 34.176L78.464 802.56a64 64 0 0 1 34.176-108.288l109.76-19.328-4.544-4.544a128 128 0 0 1 0-181.056l271.488-271.488a128 128 0 0 1 181.056 0l4.48 4.48 19.392-109.504a64 64 0 0 1 108.352-34.048l142.592 143.04a64 64 0 0 1-34.24 108.16l-109.248 19.2zm-548.8 198.72h447.168v2.24l60.8-60.8a63.808 63.808 0 0 0 18.752-44.416h-426.88l-89.664 89.728a64.064 64.064 0 0 0-10.24 13.248zm0 64c2.752 4.736 6.144 9.152 10.176 13.248l135.744 135.744a64 64 0 0 0 90.496 0L638.4 611.904zm490.048-230.976L625.152 263.104a64 64 0 0 0-90.496 0L416.768 380.928zM123.712 757.312l142.976 142.976 24.32-137.6a25.6 25.6 0 0 0-29.696-29.632l-137.6 24.256zm633.6-633.344-24.32 137.472a25.6 25.6 0 0 0 29.632 29.632l137.28-24.064-142.656-143.04z\"\n })\n ]));\n }\n});\n\n// src/components/sugar.vue\nvar sugar_default = sugar_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/suitcase-line.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent251 } from \"vue\";\nimport { createElementVNode as _createElementVNode251, openBlock as _openBlock251, createElementBlock as _createElementBlock251 } from \"vue\";\nvar suitcase_line_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent251({\n name: \"SuitcaseLine\",\n __name: \"suitcase-line\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock251(), _createElementBlock251(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode251(\"path\", {\n fill: \"currentColor\",\n d: \"M922.5 229.5c-24.32-24.34-54.49-36.84-90.5-37.5H704v-64c-.68-17.98-7.02-32.98-19.01-44.99S658.01 64.66 640 64H384c-17.98.68-32.98 7.02-44.99 19.01S320.66 110 320 128v64H192c-35.99.68-66.16 13.18-90.5 37.5C77.16 253.82 64.66 283.99 64 320v448c.68 35.99 13.18 66.16 37.5 90.5s54.49 36.84 90.5 37.5h640c35.99-.68 66.16-13.18 90.5-37.5s36.84-54.49 37.5-90.5V320c-.68-35.99-13.18-66.16-37.5-90.5M384 128h256v64H384zM256 832h-64c-17.98-.68-32.98-7.02-44.99-19.01S128.66 786.01 128 768V448h128zm448 0H320V448h384zm192-64c-.68 17.98-7.02 32.98-19.01 44.99S850.01 831.34 832 832h-64V448h128zm0-384H128v-64c.69-17.98 7.02-32.98 19.01-44.99S173.99 256.66 192 256h640c17.98.69 32.98 7.02 44.99 19.01S895.34 301.99 896 320z\"\n })\n ]));\n }\n});\n\n// src/components/suitcase-line.vue\nvar suitcase_line_default = suitcase_line_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/suitcase.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent252 } from \"vue\";\nimport { createElementVNode as _createElementVNode252, openBlock as _openBlock252, createElementBlock as _createElementBlock252 } from \"vue\";\nvar suitcase_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent252({\n name: \"Suitcase\",\n __name: \"suitcase\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock252(), _createElementBlock252(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode252(\"path\", {\n fill: \"currentColor\",\n d: \"M128 384h768v-64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64zm0 64v320a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V448zm64-256h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128\"\n }),\n _createElementVNode252(\"path\", {\n fill: \"currentColor\",\n d: \"M384 128v64h256v-64zm0-64h256a64 64 0 0 1 64 64v64a64 64 0 0 1-64 64H384a64 64 0 0 1-64-64v-64a64 64 0 0 1 64-64\"\n })\n ]));\n }\n});\n\n// src/components/suitcase.vue\nvar suitcase_default = suitcase_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sunny.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent253 } from \"vue\";\nimport { createElementVNode as _createElementVNode253, openBlock as _openBlock253, createElementBlock as _createElementBlock253 } from \"vue\";\nvar sunny_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent253({\n name: \"Sunny\",\n __name: \"sunny\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock253(), _createElementBlock253(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode253(\"path\", {\n fill: \"currentColor\",\n d: \"M512 704a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m0-704a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 768a32 32 0 0 1 32 32v64a32 32 0 1 1-64 0v-64a32 32 0 0 1 32-32M195.2 195.2a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 1 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm543.104 543.104a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 0 1-45.248 45.248l-45.248-45.248a32 32 0 0 1 0-45.248M64 512a32 32 0 0 1 32-32h64a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32m768 0a32 32 0 0 1 32-32h64a32 32 0 1 1 0 64h-64a32 32 0 0 1-32-32M195.2 828.8a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248L240.448 828.8a32 32 0 0 1-45.248 0zm543.104-543.104a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248l-45.248 45.248a32 32 0 0 1-45.248 0\"\n })\n ]));\n }\n});\n\n// src/components/sunny.vue\nvar sunny_default = sunny_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sunrise.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent254 } from \"vue\";\nimport { createElementVNode as _createElementVNode254, openBlock as _openBlock254, createElementBlock as _createElementBlock254 } from \"vue\";\nvar sunrise_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent254({\n name: \"Sunrise\",\n __name: \"sunrise\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock254(), _createElementBlock254(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode254(\"path\", {\n fill: \"currentColor\",\n d: \"M32 768h960a32 32 0 1 1 0 64H32a32 32 0 1 1 0-64m129.408-96a352 352 0 0 1 701.184 0h-64.32a288 288 0 0 0-572.544 0h-64.32zM512 128a32 32 0 0 1 32 32v96a32 32 0 0 1-64 0v-96a32 32 0 0 1 32-32m407.296 168.704a32 32 0 0 1 0 45.248l-67.84 67.84a32 32 0 1 1-45.248-45.248l67.84-67.84a32 32 0 0 1 45.248 0zm-814.592 0a32 32 0 0 1 45.248 0l67.84 67.84a32 32 0 1 1-45.248 45.248l-67.84-67.84a32 32 0 0 1 0-45.248\"\n })\n ]));\n }\n});\n\n// src/components/sunrise.vue\nvar sunrise_default = sunrise_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/sunset.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent255 } from \"vue\";\nimport { createElementVNode as _createElementVNode255, openBlock as _openBlock255, createElementBlock as _createElementBlock255 } from \"vue\";\nvar sunset_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent255({\n name: \"Sunset\",\n __name: \"sunset\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock255(), _createElementBlock255(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode255(\"path\", {\n fill: \"currentColor\",\n d: \"M82.56 640a448 448 0 1 1 858.88 0h-67.2a384 384 0 1 0-724.288 0zM32 704h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32m256 128h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32\"\n })\n ]));\n }\n});\n\n// src/components/sunset.vue\nvar sunset_default = sunset_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/switch-button.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent256 } from \"vue\";\nimport { createElementVNode as _createElementVNode256, openBlock as _openBlock256, createElementBlock as _createElementBlock256 } from \"vue\";\nvar switch_button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent256({\n name: \"SwitchButton\",\n __name: \"switch-button\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock256(), _createElementBlock256(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode256(\"path\", {\n fill: \"currentColor\",\n d: \"M352 159.872V230.4a352 352 0 1 0 320 0v-70.528A416.128 416.128 0 0 1 512 960a416 416 0 0 1-160-800.128z\"\n }),\n _createElementVNode256(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64q32 0 32 32v320q0 32-32 32t-32-32V96q0-32 32-32\"\n })\n ]));\n }\n});\n\n// src/components/switch-button.vue\nvar switch_button_default = switch_button_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/switch-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent257 } from \"vue\";\nimport { createElementVNode as _createElementVNode257, openBlock as _openBlock257, createElementBlock as _createElementBlock257 } from \"vue\";\nvar switch_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent257({\n name: \"SwitchFilled\",\n __name: \"switch-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock257(), _createElementBlock257(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode257(\"path\", {\n fill: \"currentColor\",\n d: \"M247.47 358.4v.04c.07 19.17 7.72 37.53 21.27 51.09s31.92 21.2 51.09 21.27c39.86 0 72.41-32.6 72.41-72.4s-32.6-72.36-72.41-72.36-72.36 32.55-72.36 72.36z\"\n }),\n _createElementVNode257(\"path\", {\n fill: \"currentColor\",\n d: \"M492.38 128H324.7c-52.16 0-102.19 20.73-139.08 57.61a196.655 196.655 0 0 0-57.61 139.08V698.7c-.01 25.84 5.08 51.42 14.96 75.29s24.36 45.56 42.63 63.83 39.95 32.76 63.82 42.65a196.67 196.67 0 0 0 75.28 14.98h167.68c3.03 0 5.46-2.43 5.46-5.42V133.42c.6-2.99-1.83-5.42-5.46-5.42zm-56.11 705.88H324.7c-17.76.13-35.36-3.33-51.75-10.18s-31.22-16.94-43.61-29.67c-25.3-25.35-39.81-59.1-39.81-95.32V324.69c-.13-17.75 3.33-35.35 10.17-51.74a131.695 131.695 0 0 1 29.64-43.62c25.39-25.3 59.14-39.81 95.36-39.81h111.57zm402.12-647.67a196.655 196.655 0 0 0-139.08-57.61H580.48c-3.03 0-4.82 2.43-4.82 4.82v757.16c-.6 2.99 1.79 5.42 5.42 5.42h118.23a196.69 196.69 0 0 0 139.08-57.61A196.655 196.655 0 0 0 896 699.31V325.29a196.69 196.69 0 0 0-57.61-139.08zm-111.3 441.92c-42.83 0-77.82-34.99-77.82-77.82s34.98-77.82 77.82-77.82c42.83 0 77.82 34.99 77.82 77.82s-34.99 77.82-77.82 77.82z\"\n })\n ]));\n }\n});\n\n// src/components/switch-filled.vue\nvar switch_filled_default = switch_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/switch.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent258 } from \"vue\";\nimport { createElementVNode as _createElementVNode258, openBlock as _openBlock258, createElementBlock as _createElementBlock258 } from \"vue\";\nvar switch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent258({\n name: \"Switch\",\n __name: \"switch\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock258(), _createElementBlock258(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode258(\"path\", {\n fill: \"currentColor\",\n d: \"M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344zM64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32\"\n })\n ]));\n }\n});\n\n// src/components/switch.vue\nvar switch_default = switch_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/takeaway-box.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent259 } from \"vue\";\nimport { createElementVNode as _createElementVNode259, openBlock as _openBlock259, createElementBlock as _createElementBlock259 } from \"vue\";\nvar takeaway_box_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent259({\n name: \"TakeawayBox\",\n __name: \"takeaway-box\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock259(), _createElementBlock259(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode259(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H192v448h640zM96 320h832V128H96zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64\"\n })\n ]));\n }\n});\n\n// src/components/takeaway-box.vue\nvar takeaway_box_default = takeaway_box_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/ticket.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent260 } from \"vue\";\nimport { createElementVNode as _createElementVNode260, openBlock as _openBlock260, createElementBlock as _createElementBlock260 } from \"vue\";\nvar ticket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent260({\n name: \"Ticket\",\n __name: \"ticket\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock260(), _createElementBlock260(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode260(\"path\", {\n fill: \"currentColor\",\n d: \"M640 832H64V640a128 128 0 1 0 0-256V192h576v160h64V192h256v192a128 128 0 1 0 0 256v192H704V672h-64zm0-416v192h64V416z\"\n })\n ]));\n }\n});\n\n// src/components/ticket.vue\nvar ticket_default = ticket_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/tickets.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent261 } from \"vue\";\nimport { createElementVNode as _createElementVNode261, openBlock as _openBlock261, createElementBlock as _createElementBlock261 } from \"vue\";\nvar tickets_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent261({\n name: \"Tickets\",\n __name: \"tickets\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock261(), _createElementBlock261(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode261(\"path\", {\n fill: \"currentColor\",\n d: \"M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h192v64H320zm0 384h384v64H320z\"\n })\n ]));\n }\n});\n\n// src/components/tickets.vue\nvar tickets_default = tickets_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/timer.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent262 } from \"vue\";\nimport { createElementVNode as _createElementVNode262, openBlock as _openBlock262, createElementBlock as _createElementBlock262 } from \"vue\";\nvar timer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent262({\n name: \"Timer\",\n __name: \"timer\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock262(), _createElementBlock262(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode262(\"path\", {\n fill: \"currentColor\",\n d: \"M512 896a320 320 0 1 0 0-640 320 320 0 0 0 0 640m0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768\"\n }),\n _createElementVNode262(\"path\", {\n fill: \"currentColor\",\n d: \"M512 320a32 32 0 0 1 32 32l-.512 224a32 32 0 1 1-64 0L480 352a32 32 0 0 1 32-32\"\n }),\n _createElementVNode262(\"path\", {\n fill: \"currentColor\",\n d: \"M448 576a64 64 0 1 0 128 0 64 64 0 1 0-128 0m96-448v128h-64V128h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64z\"\n })\n ]));\n }\n});\n\n// src/components/timer.vue\nvar timer_default = timer_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/toilet-paper.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent263 } from \"vue\";\nimport { createElementVNode as _createElementVNode263, openBlock as _openBlock263, createElementBlock as _createElementBlock263 } from \"vue\";\nvar toilet_paper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent263({\n name: \"ToiletPaper\",\n __name: \"toilet-paper\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock263(), _createElementBlock263(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode263(\"path\", {\n fill: \"currentColor\",\n d: \"M595.2 128H320a192 192 0 0 0-192 192v576h384V352c0-90.496 32.448-171.2 83.2-224M736 64c123.712 0 224 128.96 224 288S859.712 640 736 640H576v320H64V320A256 256 0 0 1 320 64zM576 352v224h160c84.352 0 160-97.28 160-224s-75.648-224-160-224-160 97.28-160 224\"\n }),\n _createElementVNode263(\"path\", {\n fill: \"currentColor\",\n d: \"M736 448c-35.328 0-64-43.008-64-96s28.672-96 64-96 64 43.008 64 96-28.672 96-64 96\"\n })\n ]));\n }\n});\n\n// src/components/toilet-paper.vue\nvar toilet_paper_default = toilet_paper_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/tools.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent264 } from \"vue\";\nimport { createElementVNode as _createElementVNode264, openBlock as _openBlock264, createElementBlock as _createElementBlock264 } from \"vue\";\nvar tools_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent264({\n name: \"Tools\",\n __name: \"tools\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock264(), _createElementBlock264(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode264(\"path\", {\n fill: \"currentColor\",\n d: \"M764.416 254.72a351.68 351.68 0 0 1 86.336 149.184H960v192.064H850.752a351.68 351.68 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.68 351.68 0 0 1-86.336-149.312H64v-192h109.248a351.68 351.68 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0\"\n })\n ]));\n }\n});\n\n// src/components/tools.vue\nvar tools_default = tools_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/top-left.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent265 } from \"vue\";\nimport { createElementVNode as _createElementVNode265, openBlock as _openBlock265, createElementBlock as _createElementBlock265 } from \"vue\";\nvar top_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent265({\n name: \"TopLeft\",\n __name: \"top-left\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock265(), _createElementBlock265(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode265(\"path\", {\n fill: \"currentColor\",\n d: \"M256 256h416a32 32 0 1 0 0-64H224a32 32 0 0 0-32 32v448a32 32 0 0 0 64 0z\"\n }),\n _createElementVNode265(\"path\", {\n fill: \"currentColor\",\n d: \"M246.656 201.344a32 32 0 0 0-45.312 45.312l544 544a32 32 0 0 0 45.312-45.312l-544-544z\"\n })\n ]));\n }\n});\n\n// src/components/top-left.vue\nvar top_left_default = top_left_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/top-right.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent266 } from \"vue\";\nimport { createElementVNode as _createElementVNode266, openBlock as _openBlock266, createElementBlock as _createElementBlock266 } from \"vue\";\nvar top_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent266({\n name: \"TopRight\",\n __name: \"top-right\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock266(), _createElementBlock266(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode266(\"path\", {\n fill: \"currentColor\",\n d: \"M768 256H353.6a32 32 0 1 1 0-64H800a32 32 0 0 1 32 32v448a32 32 0 0 1-64 0z\"\n }),\n _createElementVNode266(\"path\", {\n fill: \"currentColor\",\n d: \"M777.344 201.344a32 32 0 0 1 45.312 45.312l-544 544a32 32 0 0 1-45.312-45.312l544-544z\"\n })\n ]));\n }\n});\n\n// src/components/top-right.vue\nvar top_right_default = top_right_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/top.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent267 } from \"vue\";\nimport { createElementVNode as _createElementVNode267, openBlock as _openBlock267, createElementBlock as _createElementBlock267 } from \"vue\";\nvar top_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent267({\n name: \"Top\",\n __name: \"top\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock267(), _createElementBlock267(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode267(\"path\", {\n fill: \"currentColor\",\n d: \"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z\"\n })\n ]));\n }\n});\n\n// src/components/top.vue\nvar top_default = top_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/trend-charts.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent268 } from \"vue\";\nimport { createElementVNode as _createElementVNode268, openBlock as _openBlock268, createElementBlock as _createElementBlock268 } from \"vue\";\nvar trend_charts_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent268({\n name: \"TrendCharts\",\n __name: \"trend-charts\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock268(), _createElementBlock268(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode268(\"path\", {\n fill: \"currentColor\",\n d: \"M128 896V128h768v768zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624 139.84-156.608zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0\"\n })\n ]));\n }\n});\n\n// src/components/trend-charts.vue\nvar trend_charts_default = trend_charts_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/trophy-base.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent269 } from \"vue\";\nimport { createElementVNode as _createElementVNode269, openBlock as _openBlock269, createElementBlock as _createElementBlock269 } from \"vue\";\nvar trophy_base_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent269({\n name: \"TrophyBase\",\n __name: \"trophy-base\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock269(), _createElementBlock269(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode269(\"path\", {\n fill: \"currentColor\",\n d: \"M918.4 201.6c-6.4-6.4-12.8-9.6-22.4-9.6H768V96c0-9.6-3.2-16-9.6-22.4C752 67.2 745.6 64 736 64H288c-9.6 0-16 3.2-22.4 9.6C259.2 80 256 86.4 256 96v96H128c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 16-9.6 22.4 3.2 108.8 25.6 185.6 64 224 34.4 34.4 77.56 55.65 127.65 61.99 10.91 20.44 24.78 39.25 41.95 56.41 40.86 40.86 91 65.47 150.4 71.9V768h-96c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c6.4 6.4 12.8 9.6 22.4 9.6h256c9.6 0 16-3.2 22.4-9.6 6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-12.8-9.6-22.4-9.6h-96V637.26c59.4-7.71 109.54-30.01 150.4-70.86 17.2-17.2 31.51-36.06 42.81-56.55 48.93-6.51 90.02-27.7 126.79-61.85 38.4-38.4 60.8-112 64-224 0-6.4-3.2-16-9.6-22.4zM256 438.4c-19.2-6.4-35.2-19.2-51.2-35.2-22.4-22.4-35.2-70.4-41.6-147.2H256zm390.4 80C608 553.6 566.4 576 512 576s-99.2-19.2-134.4-57.6C342.4 480 320 438.4 320 384V128h384v256c0 54.4-19.2 99.2-57.6 134.4m172.8-115.2c-16 16-32 25.6-51.2 35.2V256h92.8c-6.4 76.8-19.2 124.8-41.6 147.2zM768 896H256c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c6.4 6.4 12.8 9.6 22.4 9.6h512c9.6 0 16-3.2 22.4-9.6 6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-12.8-9.6-22.4-9.6\"\n })\n ]));\n }\n});\n\n// src/components/trophy-base.vue\nvar trophy_base_default = trophy_base_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/trophy.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent270 } from \"vue\";\nimport { createElementVNode as _createElementVNode270, openBlock as _openBlock270, createElementBlock as _createElementBlock270 } from \"vue\";\nvar trophy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent270({\n name: \"Trophy\",\n __name: \"trophy\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock270(), _createElementBlock270(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode270(\"path\", {\n fill: \"currentColor\",\n d: \"M480 896V702.08A256.256 256.256 0 0 1 264.064 512h-32.64a96 96 0 0 1-91.968-68.416L93.632 290.88a76.8 76.8 0 0 1 73.6-98.88H256V96a32 32 0 0 1 32-32h448a32 32 0 0 1 32 32v96h88.768a76.8 76.8 0 0 1 73.6 98.88L884.48 443.52A96 96 0 0 1 792.576 512h-32.64A256.256 256.256 0 0 1 544 702.08V896h128a32 32 0 1 1 0 64H352a32 32 0 1 1 0-64zm224-448V128H320v320a192 192 0 1 0 384 0m64 0h24.576a32 32 0 0 0 30.656-22.784l45.824-152.768A12.8 12.8 0 0 0 856.768 256H768zm-512 0V256h-88.768a12.8 12.8 0 0 0-12.288 16.448l45.824 152.768A32 32 0 0 0 231.424 448z\"\n })\n ]));\n }\n});\n\n// src/components/trophy.vue\nvar trophy_default = trophy_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/turn-off.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent271 } from \"vue\";\nimport { createElementVNode as _createElementVNode271, openBlock as _openBlock271, createElementBlock as _createElementBlock271 } from \"vue\";\nvar turn_off_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent271({\n name: \"TurnOff\",\n __name: \"turn-off\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock271(), _createElementBlock271(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode271(\"path\", {\n fill: \"currentColor\",\n d: \"M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z\"\n }),\n _createElementVNode271(\"path\", {\n fill: \"currentColor\",\n d: \"M329.956 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088\"\n })\n ]));\n }\n});\n\n// src/components/turn-off.vue\nvar turn_off_default = turn_off_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/umbrella.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent272 } from \"vue\";\nimport { createElementVNode as _createElementVNode272, openBlock as _openBlock272, createElementBlock as _createElementBlock272 } from \"vue\";\nvar umbrella_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent272({\n name: \"Umbrella\",\n __name: \"umbrella\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock272(), _createElementBlock272(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode272(\"path\", {\n fill: \"currentColor\",\n d: \"M320 768a32 32 0 1 1 64 0 64 64 0 0 0 128 0V512H64a448 448 0 1 1 896 0H576v256a128 128 0 1 1-256 0m570.688-320a384.128 384.128 0 0 0-757.376 0z\"\n })\n ]));\n }\n});\n\n// src/components/umbrella.vue\nvar umbrella_default = umbrella_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/unlock.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent273 } from \"vue\";\nimport { createElementVNode as _createElementVNode273, openBlock as _openBlock273, createElementBlock as _createElementBlock273 } from \"vue\";\nvar unlock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent273({\n name: \"Unlock\",\n __name: \"unlock\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock273(), _createElementBlock273(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode273(\"path\", {\n fill: \"currentColor\",\n d: \"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96\"\n }),\n _createElementVNode273(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m178.304-295.296A192.064 192.064 0 0 0 320 320v64h352l96 38.4V448H256V320a256 256 0 0 1 493.76-95.104z\"\n })\n ]));\n }\n});\n\n// src/components/unlock.vue\nvar unlock_default = unlock_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/upload-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent274 } from \"vue\";\nimport { createElementVNode as _createElementVNode274, openBlock as _openBlock274, createElementBlock as _createElementBlock274 } from \"vue\";\nvar upload_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent274({\n name: \"UploadFilled\",\n __name: \"upload-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock274(), _createElementBlock274(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode274(\"path\", {\n fill: \"currentColor\",\n d: \"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6z\"\n })\n ]));\n }\n});\n\n// src/components/upload-filled.vue\nvar upload_filled_default = upload_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/upload.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent275 } from \"vue\";\nimport { createElementVNode as _createElementVNode275, openBlock as _openBlock275, createElementBlock as _createElementBlock275 } from \"vue\";\nvar upload_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent275({\n name: \"Upload\",\n __name: \"upload\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock275(), _createElementBlock275(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode275(\"path\", {\n fill: \"currentColor\",\n d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248z\"\n })\n ]));\n }\n});\n\n// src/components/upload.vue\nvar upload_default = upload_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/user-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent276 } from \"vue\";\nimport { createElementVNode as _createElementVNode276, openBlock as _openBlock276, createElementBlock as _createElementBlock276 } from \"vue\";\nvar user_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent276({\n name: \"UserFilled\",\n __name: \"user-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock276(), _createElementBlock276(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode276(\"path\", {\n fill: \"currentColor\",\n d: \"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z\"\n })\n ]));\n }\n});\n\n// src/components/user-filled.vue\nvar user_filled_default = user_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/user.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent277 } from \"vue\";\nimport { createElementVNode as _createElementVNode277, openBlock as _openBlock277, createElementBlock as _createElementBlock277 } from \"vue\";\nvar user_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent277({\n name: \"User\",\n __name: \"user\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock277(), _createElementBlock277(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode277(\"path\", {\n fill: \"currentColor\",\n d: \"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0\"\n })\n ]));\n }\n});\n\n// src/components/user.vue\nvar user_default = user_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/van.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent278 } from \"vue\";\nimport { createElementVNode as _createElementVNode278, openBlock as _openBlock278, createElementBlock as _createElementBlock278 } from \"vue\";\nvar van_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent278({\n name: \"Van\",\n __name: \"van\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock278(), _createElementBlock278(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode278(\"path\", {\n fill: \"currentColor\",\n d: \"M128.896 736H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v96h164.544a32 32 0 0 1 31.616 27.136l54.144 352A32 32 0 0 1 922.688 736h-91.52a144 144 0 1 1-286.272 0H415.104a144 144 0 1 1-286.272 0zm23.36-64a143.872 143.872 0 0 1 239.488 0H568.32c17.088-25.6 42.24-45.376 71.744-55.808V256H128v416zm655.488 0h77.632l-19.648-128H704v64.896A144 144 0 0 1 807.744 672m48.128-192-14.72-96H704v96h151.872M688 832a80 80 0 1 0 0-160 80 80 0 0 0 0 160m-416 0a80 80 0 1 0 0-160 80 80 0 0 0 0 160\"\n })\n ]));\n }\n});\n\n// src/components/van.vue\nvar van_default = van_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/video-camera-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent279 } from \"vue\";\nimport { createElementVNode as _createElementVNode279, openBlock as _openBlock279, createElementBlock as _createElementBlock279 } from \"vue\";\nvar video_camera_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent279({\n name: \"VideoCameraFilled\",\n __name: \"video-camera-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock279(), _createElementBlock279(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode279(\"path\", {\n fill: \"currentColor\",\n d: \"m768 576 192-64v320l-192-64v96a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zM192 768v64h384v-64zm192-480a160 160 0 0 1 320 0 160 160 0 0 1-320 0m64 0a96 96 0 1 0 192.064-.064A96 96 0 0 0 448 288m-320 32a128 128 0 1 1 256.064.064A128 128 0 0 1 128 320m64 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0\"\n })\n ]));\n }\n});\n\n// src/components/video-camera-filled.vue\nvar video_camera_filled_default = video_camera_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/video-camera.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent280 } from \"vue\";\nimport { createElementVNode as _createElementVNode280, openBlock as _openBlock280, createElementBlock as _createElementBlock280 } from \"vue\";\nvar video_camera_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent280({\n name: \"VideoCamera\",\n __name: \"video-camera\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock280(), _createElementBlock280(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode280(\"path\", {\n fill: \"currentColor\",\n d: \"M704 768V256H128v512zm64-416 192-96v512l-192-96v128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 71.552v176.896l128 64V359.552zM192 320h192v64H192z\"\n })\n ]));\n }\n});\n\n// src/components/video-camera.vue\nvar video_camera_default = video_camera_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/video-pause.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent281 } from \"vue\";\nimport { createElementVNode as _createElementVNode281, openBlock as _openBlock281, createElementBlock as _createElementBlock281 } from \"vue\";\nvar video_pause_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent281({\n name: \"VideoPause\",\n __name: \"video-pause\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock281(), _createElementBlock281(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode281(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32m192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32\"\n })\n ]));\n }\n});\n\n// src/components/video-pause.vue\nvar video_pause_default = video_pause_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/video-play.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent282 } from \"vue\";\nimport { createElementVNode as _createElementVNode282, openBlock as _openBlock282, createElementBlock as _createElementBlock282 } from \"vue\";\nvar video_play_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent282({\n name: \"VideoPlay\",\n __name: \"video-play\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock282(), _createElementBlock282(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode282(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-48-247.616L668.608 512 464 375.616zm10.624-342.656 249.472 166.336a48 48 0 0 1 0 79.872L474.624 718.272A48 48 0 0 1 400 678.336V345.6a48 48 0 0 1 74.624-39.936z\"\n })\n ]));\n }\n});\n\n// src/components/video-play.vue\nvar video_play_default = video_play_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/view.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent283 } from \"vue\";\nimport { createElementVNode as _createElementVNode283, openBlock as _openBlock283, createElementBlock as _createElementBlock283 } from \"vue\";\nvar view_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent283({\n name: \"View\",\n __name: \"view\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock283(), _createElementBlock283(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode283(\"path\", {\n fill: \"currentColor\",\n d: \"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160\"\n })\n ]));\n }\n});\n\n// src/components/view.vue\nvar view_default = view_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/wallet-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent284 } from \"vue\";\nimport { createElementVNode as _createElementVNode284, openBlock as _openBlock284, createElementBlock as _createElementBlock284 } from \"vue\";\nvar wallet_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent284({\n name: \"WalletFilled\",\n __name: \"wallet-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock284(), _createElementBlock284(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode284(\"path\", {\n fill: \"currentColor\",\n d: \"M688 512a112 112 0 1 0 0 224h208v160H128V352h768v160zm32 160h-32a48 48 0 0 1 0-96h32a48 48 0 0 1 0 96m-80-544 128 160H384z\"\n })\n ]));\n }\n});\n\n// src/components/wallet-filled.vue\nvar wallet_filled_default = wallet_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/wallet.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent285 } from \"vue\";\nimport { createElementVNode as _createElementVNode285, openBlock as _openBlock285, createElementBlock as _createElementBlock285 } from \"vue\";\nvar wallet_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent285({\n name: \"Wallet\",\n __name: \"wallet\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock285(), _createElementBlock285(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode285(\"path\", {\n fill: \"currentColor\",\n d: \"M640 288h-64V128H128v704h384v32a32 32 0 0 0 32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32z\"\n }),\n _createElementVNode285(\"path\", {\n fill: \"currentColor\",\n d: \"M128 320v512h768V320zm-32-64h832a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32\"\n }),\n _createElementVNode285(\"path\", {\n fill: \"currentColor\",\n d: \"M704 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128\"\n })\n ]));\n }\n});\n\n// src/components/wallet.vue\nvar wallet_default = wallet_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/warn-triangle-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent286 } from \"vue\";\nimport { createElementVNode as _createElementVNode286, openBlock as _openBlock286, createElementBlock as _createElementBlock286 } from \"vue\";\nvar warn_triangle_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent286({\n name: \"WarnTriangleFilled\",\n __name: \"warn-triangle-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock286(), _createElementBlock286(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xml:space\": \"preserve\",\n style: { \"enable-background\": \"new 0 0 1024 1024\" },\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode286(\"path\", {\n fill: \"currentColor\",\n d: \"M928.99 755.83 574.6 203.25c-12.89-20.16-36.76-32.58-62.6-32.58s-49.71 12.43-62.6 32.58L95.01 755.83c-12.91 20.12-12.9 44.91.01 65.03 12.92 20.12 36.78 32.51 62.59 32.49h708.78c25.82.01 49.68-12.37 62.59-32.49 12.91-20.12 12.92-44.91.01-65.03M554.67 768h-85.33v-85.33h85.33zm0-426.67v298.66h-85.33V341.32z\"\n })\n ]));\n }\n});\n\n// src/components/warn-triangle-filled.vue\nvar warn_triangle_filled_default = warn_triangle_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/warning-filled.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent287 } from \"vue\";\nimport { createElementVNode as _createElementVNode287, openBlock as _openBlock287, createElementBlock as _createElementBlock287 } from \"vue\";\nvar warning_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent287({\n name: \"WarningFilled\",\n __name: \"warning-filled\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock287(), _createElementBlock287(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode287(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4\"\n })\n ]));\n }\n});\n\n// src/components/warning-filled.vue\nvar warning_filled_default = warning_filled_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/warning.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent288 } from \"vue\";\nimport { createElementVNode as _createElementVNode288, openBlock as _openBlock288, createElementBlock as _createElementBlock288 } from \"vue\";\nvar warning_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent288({\n name: \"Warning\",\n __name: \"warning\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock288(), _createElementBlock288(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode288(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m48-176a48 48 0 1 1-96 0 48 48 0 0 1 96 0m-48-464a32 32 0 0 1 32 32v288a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32\"\n })\n ]));\n }\n});\n\n// src/components/warning.vue\nvar warning_default = warning_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/watch.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent289 } from \"vue\";\nimport { createElementVNode as _createElementVNode289, openBlock as _openBlock289, createElementBlock as _createElementBlock289 } from \"vue\";\nvar watch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent289({\n name: \"Watch\",\n __name: \"watch\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock289(), _createElementBlock289(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode289(\"path\", {\n fill: \"currentColor\",\n d: \"M512 768a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640\"\n }),\n _createElementVNode289(\"path\", {\n fill: \"currentColor\",\n d: \"M480 352a32 32 0 0 1 32 32v160a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32\"\n }),\n _createElementVNode289(\"path\", {\n fill: \"currentColor\",\n d: \"M480 512h128q32 0 32 32t-32 32H480q-32 0-32-32t32-32m128-256V128H416v128h-64V64h320v192zM416 768v128h192V768h64v192H352V768z\"\n })\n ]));\n }\n});\n\n// src/components/watch.vue\nvar watch_default = watch_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/watermelon.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent290 } from \"vue\";\nimport { createElementVNode as _createElementVNode290, openBlock as _openBlock290, createElementBlock as _createElementBlock290 } from \"vue\";\nvar watermelon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent290({\n name: \"Watermelon\",\n __name: \"watermelon\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock290(), _createElementBlock290(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode290(\"path\", {\n fill: \"currentColor\",\n d: \"m683.072 600.32-43.648 162.816-61.824-16.512 53.248-198.528L576 493.248l-158.4 158.4-45.248-45.248 158.4-158.4-55.616-55.616-198.528 53.248-16.512-61.824 162.816-43.648L282.752 200A384 384 0 0 0 824 741.248zm231.552 141.056a448 448 0 1 1-632-632l632 632\"\n })\n ]));\n }\n});\n\n// src/components/watermelon.vue\nvar watermelon_default = watermelon_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/wind-power.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent291 } from \"vue\";\nimport { createElementVNode as _createElementVNode291, openBlock as _openBlock291, createElementBlock as _createElementBlock291 } from \"vue\";\nvar wind_power_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent291({\n name: \"WindPower\",\n __name: \"wind-power\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock291(), _createElementBlock291(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode291(\"path\", {\n fill: \"currentColor\",\n d: \"M160 64q32 0 32 32v832q0 32-32 32t-32-32V96q0-32 32-32m416 354.624 128-11.584V168.96l-128-11.52v261.12zm-64 5.824V151.552L320 134.08V160h-64V64l616.704 56.064A96 96 0 0 1 960 215.68v144.64a96 96 0 0 1-87.296 95.616L256 512V224h64v217.92zm256-23.232 98.88-8.96A32 32 0 0 0 896 360.32V215.68a32 32 0 0 0-29.12-31.872l-98.88-8.96z\"\n })\n ]));\n }\n});\n\n// src/components/wind-power.vue\nvar wind_power_default = wind_power_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/zoom-in.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent292 } from \"vue\";\nimport { createElementVNode as _createElementVNode292, openBlock as _openBlock292, createElementBlock as _createElementBlock292 } from \"vue\";\nvar zoom_in_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent292({\n name: \"ZoomIn\",\n __name: \"zoom-in\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock292(), _createElementBlock292(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode292(\"path\", {\n fill: \"currentColor\",\n d: \"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z\"\n })\n ]));\n }\n});\n\n// src/components/zoom-in.vue\nvar zoom_in_default = zoom_in_vue_vue_type_script_setup_true_lang_default;\n\n// unplugin-vue:/home/runner/work/element-plus-icons/element-plus-icons/packages/vue/src/components/zoom-out.vue?vue&type=script&setup=true&lang.ts\nimport { defineComponent as _defineComponent293 } from \"vue\";\nimport { createElementVNode as _createElementVNode293, openBlock as _openBlock293, createElementBlock as _createElementBlock293 } from \"vue\";\nvar zoom_out_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ _defineComponent293({\n name: \"ZoomOut\",\n __name: \"zoom-out\",\n setup(__props) {\n return (_ctx, _cache) => (_openBlock293(), _createElementBlock293(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\"\n }, [\n _createElementVNode293(\"path\", {\n fill: \"currentColor\",\n d: \"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64\"\n })\n ]));\n }\n});\n\n// src/components/zoom-out.vue\nvar zoom_out_default = zoom_out_vue_vue_type_script_setup_true_lang_default;\nexport {\n add_location_default as AddLocation,\n aim_default as Aim,\n alarm_clock_default as AlarmClock,\n apple_default as Apple,\n arrow_down_default as ArrowDown,\n arrow_down_bold_default as ArrowDownBold,\n arrow_left_default as ArrowLeft,\n arrow_left_bold_default as ArrowLeftBold,\n arrow_right_default as ArrowRight,\n arrow_right_bold_default as ArrowRightBold,\n arrow_up_default as ArrowUp,\n arrow_up_bold_default as ArrowUpBold,\n avatar_default as Avatar,\n back_default as Back,\n baseball_default as Baseball,\n basketball_default as Basketball,\n bell_default as Bell,\n bell_filled_default as BellFilled,\n bicycle_default as Bicycle,\n bottom_default as Bottom,\n bottom_left_default as BottomLeft,\n bottom_right_default as BottomRight,\n bowl_default as Bowl,\n box_default as Box,\n briefcase_default as Briefcase,\n brush_default as Brush,\n brush_filled_default as BrushFilled,\n burger_default as Burger,\n calendar_default as Calendar,\n camera_default as Camera,\n camera_filled_default as CameraFilled,\n caret_bottom_default as CaretBottom,\n caret_left_default as CaretLeft,\n caret_right_default as CaretRight,\n caret_top_default as CaretTop,\n cellphone_default as Cellphone,\n chat_dot_round_default as ChatDotRound,\n chat_dot_square_default as ChatDotSquare,\n chat_line_round_default as ChatLineRound,\n chat_line_square_default as ChatLineSquare,\n chat_round_default as ChatRound,\n chat_square_default as ChatSquare,\n check_default as Check,\n checked_default as Checked,\n cherry_default as Cherry,\n chicken_default as Chicken,\n chrome_filled_default as ChromeFilled,\n circle_check_default as CircleCheck,\n circle_check_filled_default as CircleCheckFilled,\n circle_close_default as CircleClose,\n circle_close_filled_default as CircleCloseFilled,\n circle_plus_default as CirclePlus,\n circle_plus_filled_default as CirclePlusFilled,\n clock_default as Clock,\n close_default as Close,\n close_bold_default as CloseBold,\n cloudy_default as Cloudy,\n coffee_default as Coffee,\n coffee_cup_default as CoffeeCup,\n coin_default as Coin,\n cold_drink_default as ColdDrink,\n collection_default as Collection,\n collection_tag_default as CollectionTag,\n comment_default as Comment,\n compass_default as Compass,\n connection_default as Connection,\n coordinate_default as Coordinate,\n copy_document_default as CopyDocument,\n cpu_default as Cpu,\n credit_card_default as CreditCard,\n crop_default as Crop,\n d_arrow_left_default as DArrowLeft,\n d_arrow_right_default as DArrowRight,\n d_caret_default as DCaret,\n data_analysis_default as DataAnalysis,\n data_board_default as DataBoard,\n data_line_default as DataLine,\n delete_default as Delete,\n delete_filled_default as DeleteFilled,\n delete_location_default as DeleteLocation,\n dessert_default as Dessert,\n discount_default as Discount,\n dish_default as Dish,\n dish_dot_default as DishDot,\n document_default as Document,\n document_add_default as DocumentAdd,\n document_checked_default as DocumentChecked,\n document_copy_default as DocumentCopy,\n document_delete_default as DocumentDelete,\n document_remove_default as DocumentRemove,\n download_default as Download,\n drizzling_default as Drizzling,\n edit_default as Edit,\n edit_pen_default as EditPen,\n eleme_default as Eleme,\n eleme_filled_default as ElemeFilled,\n element_plus_default as ElementPlus,\n expand_default as Expand,\n failed_default as Failed,\n female_default as Female,\n files_default as Files,\n film_default as Film,\n filter_default as Filter,\n finished_default as Finished,\n first_aid_kit_default as FirstAidKit,\n flag_default as Flag,\n fold_default as Fold,\n folder_default as Folder,\n folder_add_default as FolderAdd,\n folder_checked_default as FolderChecked,\n folder_delete_default as FolderDelete,\n folder_opened_default as FolderOpened,\n folder_remove_default as FolderRemove,\n food_default as Food,\n football_default as Football,\n fork_spoon_default as ForkSpoon,\n fries_default as Fries,\n full_screen_default as FullScreen,\n goblet_default as Goblet,\n goblet_full_default as GobletFull,\n goblet_square_default as GobletSquare,\n goblet_square_full_default as GobletSquareFull,\n gold_medal_default as GoldMedal,\n goods_default as Goods,\n goods_filled_default as GoodsFilled,\n grape_default as Grape,\n grid_default as Grid,\n guide_default as Guide,\n handbag_default as Handbag,\n headset_default as Headset,\n help_default as Help,\n help_filled_default as HelpFilled,\n hide_default as Hide,\n histogram_default as Histogram,\n home_filled_default as HomeFilled,\n hot_water_default as HotWater,\n house_default as House,\n ice_cream_default as IceCream,\n ice_cream_round_default as IceCreamRound,\n ice_cream_square_default as IceCreamSquare,\n ice_drink_default as IceDrink,\n ice_tea_default as IceTea,\n info_filled_default as InfoFilled,\n iphone_default as Iphone,\n key_default as Key,\n knife_fork_default as KnifeFork,\n lightning_default as Lightning,\n link_default as Link,\n list_default as List,\n loading_default as Loading,\n location_default as Location,\n location_filled_default as LocationFilled,\n location_information_default as LocationInformation,\n lock_default as Lock,\n lollipop_default as Lollipop,\n magic_stick_default as MagicStick,\n magnet_default as Magnet,\n male_default as Male,\n management_default as Management,\n map_location_default as MapLocation,\n medal_default as Medal,\n memo_default as Memo,\n menu_default as Menu,\n message_default as Message,\n message_box_default as MessageBox,\n mic_default as Mic,\n microphone_default as Microphone,\n milk_tea_default as MilkTea,\n minus_default as Minus,\n money_default as Money,\n monitor_default as Monitor,\n moon_default as Moon,\n moon_night_default as MoonNight,\n more_default as More,\n more_filled_default as MoreFilled,\n mostly_cloudy_default as MostlyCloudy,\n mouse_default as Mouse,\n mug_default as Mug,\n mute_default as Mute,\n mute_notification_default as MuteNotification,\n no_smoking_default as NoSmoking,\n notebook_default as Notebook,\n notification_default as Notification,\n odometer_default as Odometer,\n office_building_default as OfficeBuilding,\n open_default as Open,\n operation_default as Operation,\n opportunity_default as Opportunity,\n orange_default as Orange,\n paperclip_default as Paperclip,\n partly_cloudy_default as PartlyCloudy,\n pear_default as Pear,\n phone_default as Phone,\n phone_filled_default as PhoneFilled,\n picture_default as Picture,\n picture_filled_default as PictureFilled,\n picture_rounded_default as PictureRounded,\n pie_chart_default as PieChart,\n place_default as Place,\n platform_default as Platform,\n plus_default as Plus,\n pointer_default as Pointer,\n position_default as Position,\n postcard_default as Postcard,\n pouring_default as Pouring,\n present_default as Present,\n price_tag_default as PriceTag,\n printer_default as Printer,\n promotion_default as Promotion,\n quartz_watch_default as QuartzWatch,\n question_filled_default as QuestionFilled,\n rank_default as Rank,\n reading_default as Reading,\n reading_lamp_default as ReadingLamp,\n refresh_default as Refresh,\n refresh_left_default as RefreshLeft,\n refresh_right_default as RefreshRight,\n refrigerator_default as Refrigerator,\n remove_default as Remove,\n remove_filled_default as RemoveFilled,\n right_default as Right,\n scale_to_original_default as ScaleToOriginal,\n school_default as School,\n scissor_default as Scissor,\n search_default as Search,\n select_default as Select,\n sell_default as Sell,\n semi_select_default as SemiSelect,\n service_default as Service,\n set_up_default as SetUp,\n setting_default as Setting,\n share_default as Share,\n ship_default as Ship,\n shop_default as Shop,\n shopping_bag_default as ShoppingBag,\n shopping_cart_default as ShoppingCart,\n shopping_cart_full_default as ShoppingCartFull,\n shopping_trolley_default as ShoppingTrolley,\n smoking_default as Smoking,\n soccer_default as Soccer,\n sold_out_default as SoldOut,\n sort_default as Sort,\n sort_down_default as SortDown,\n sort_up_default as SortUp,\n stamp_default as Stamp,\n star_default as Star,\n star_filled_default as StarFilled,\n stopwatch_default as Stopwatch,\n success_filled_default as SuccessFilled,\n sugar_default as Sugar,\n suitcase_default as Suitcase,\n suitcase_line_default as SuitcaseLine,\n sunny_default as Sunny,\n sunrise_default as Sunrise,\n sunset_default as Sunset,\n switch_default as Switch,\n switch_button_default as SwitchButton,\n switch_filled_default as SwitchFilled,\n takeaway_box_default as TakeawayBox,\n ticket_default as Ticket,\n tickets_default as Tickets,\n timer_default as Timer,\n toilet_paper_default as ToiletPaper,\n tools_default as Tools,\n top_default as Top,\n top_left_default as TopLeft,\n top_right_default as TopRight,\n trend_charts_default as TrendCharts,\n trophy_default as Trophy,\n trophy_base_default as TrophyBase,\n turn_off_default as TurnOff,\n umbrella_default as Umbrella,\n unlock_default as Unlock,\n upload_default as Upload,\n upload_filled_default as UploadFilled,\n user_default as User,\n user_filled_default as UserFilled,\n van_default as Van,\n video_camera_default as VideoCamera,\n video_camera_filled_default as VideoCameraFilled,\n video_pause_default as VideoPause,\n video_play_default as VideoPlay,\n view_default as View,\n wallet_default as Wallet,\n wallet_filled_default as WalletFilled,\n warn_triangle_filled_default as WarnTriangleFilled,\n warning_default as Warning,\n warning_filled_default as WarningFilled,\n watch_default as Watch,\n watermelon_default as Watermelon,\n wind_power_default as WindPower,\n zoom_in_default as ZoomIn,\n zoom_out_default as ZoomOut\n};\n","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n// This file is a Node.js-specific implementation of the base64 encoding functions.\n// Aside from the below import statement, this file should be identical to the\n// base64EncodingNode.ts.\n//\n// (See 'Isomorphic Code' section in the package README.md.)\nimport { IsoBuffer } from \"./bufferBrowser.js\";\n/**\n * Converts the provided {@link https://en.wikipedia.org/wiki/Base64 | base64}-encoded string\n * to {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8}.\n *\n * @internal\n */\nexport const fromBase64ToUtf8 = (input) => IsoBuffer.from(input, \"base64\").toString(\"utf8\");\n/**\n * Converts the provided {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8}-encoded string\n * to {@link https://en.wikipedia.org/wiki/Base64 | base64}.\n *\n * @internal\n */\nexport const fromUtf8ToBase64 = (input) => IsoBuffer.from(input, \"utf8\").toString(\"base64\");\n/**\n * Convenience function to convert unknown encoding to utf8 that avoids\n * buffer copies/encode ops when no conversion is needed.\n * @param input - The source string to convert.\n * @param encoding - The source string's encoding.\n *\n * @internal\n */\nexport const toUtf8 = (input, encoding) => {\n switch (encoding) {\n case \"utf8\":\n // eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n case \"utf-8\": {\n return input;\n }\n default: {\n return IsoBuffer.from(input, encoding).toString();\n }\n }\n};\n//# sourceMappingURL=base64EncodingBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as base64js from \"base64-js\";\n/**\n * Converts a Uint8Array to a string of the provided encoding\n * Useful when the array might be an {@link IsoBuffer}.\n *\n * @param arr - The array to convert.\n * @param encoding - Optional target encoding; only \"utf8\" and \"base64\" are\n * supported, with \"utf8\" being default.\n * @returns The converted string.\n *\n * @internal\n */\nexport function Uint8ArrayToString(arr, \n// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\nencoding) {\n switch (encoding) {\n case \"base64\": {\n return base64js.fromByteArray(arr);\n }\n case \"utf8\":\n // eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n case \"utf-8\":\n case undefined: {\n return new TextDecoder().decode(arr);\n }\n default: {\n throw new Error(\"invalid/unsupported encoding\");\n }\n }\n}\n/**\n * Converts a {@link https://en.wikipedia.org/wiki/Base64 | base64} or\n * {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8} string to array buffer.\n *\n * @param encoding - The input string's encoding.\n *\n * @internal\n */\nexport const stringToBuffer = (input, encoding) => IsoBuffer.from(input, encoding).buffer;\n/**\n * Convert binary blob to string format\n *\n * @param blob - the binary blob\n * @param encoding - output string's encoding\n * @returns the blob in string format\n *\n * @internal\n */\nexport const bufferToString = (blob, \n// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\nencoding) => IsoBuffer.from(blob).toString(encoding);\n/**\n * Determines if an object is an array buffer.\n *\n * @remarks Will detect and reject TypedArrays, like Uint8Array.\n * Reason - they can be viewport into Array, they can be accepted, but caller has to deal with\n * math properly (i.e. Take into account byteOffset at minimum).\n * For example, construction of new TypedArray can be in the form of new TypedArray(typedArray) or\n * new TypedArray(buffer, byteOffset, length), but passing TypedArray will result in fist path (and\n * ignoring byteOffice, length).\n *\n * @param obj - The object to determine if it is an ArrayBuffer.\n *\n * @internal\n */\nexport function isArrayBuffer(obj) {\n const maybe = obj;\n return (obj instanceof ArrayBuffer ||\n (typeof maybe === \"object\" &&\n maybe !== null &&\n typeof maybe.byteLength === \"number\" &&\n typeof maybe.slice === \"function\" &&\n maybe.byteOffset === undefined &&\n maybe.buffer === undefined));\n}\n/**\n * Minimal implementation of Buffer for our usages in the browser environment.\n *\n * @internal\n */\nexport class IsoBuffer extends Uint8Array {\n /**\n * Convert the buffer to a string.\n * Only supports encoding the whole string (unlike the Node Buffer equivalent)\n * and only utf8 and base64 encodings.\n *\n * @param encoding - The encoding to use.\n */\n // eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n toString(encoding) {\n return Uint8ArrayToString(this, encoding);\n }\n /**\n * Static constructor\n * @param value - (string | ArrayBuffer)\n * @param encodingOrOffset - (string | number)\n * @param length - (number)\n *\n * @privateRemarks TODO: Use actual types\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n static from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return IsoBuffer.fromString(value, encodingOrOffset);\n // Capture any typed arrays, including Uint8Array (and thus - IsoBuffer!)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n }\n else if (value !== null && typeof value === \"object\" && isArrayBuffer(value.buffer)) {\n // The version of the from function for the node buffer, which takes a buffer or typed array\n // as first parameter, does not have any offset or length parameters. Those are just silently\n // ignored and not taken into account\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n return IsoBuffer.fromArrayBuffer(value.buffer, value.byteOffset, value.byteLength);\n }\n else if (isArrayBuffer(value)) {\n return IsoBuffer.fromArrayBuffer(value, encodingOrOffset, length);\n }\n else {\n throw new TypeError(\"Input value was neither a string nor an ArrayBuffer.\");\n }\n }\n static fromArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n const offset = byteOffset ?? 0;\n const validLength = byteLength ?? arrayBuffer.byteLength - offset;\n if (offset < 0 ||\n offset > arrayBuffer.byteLength ||\n validLength < 0 ||\n validLength + offset > arrayBuffer.byteLength) {\n throw new RangeError(\"Invalid range specified.\");\n }\n return new IsoBuffer(arrayBuffer, offset, validLength);\n }\n static fromString(str, encoding) {\n switch (encoding) {\n case \"base64\": {\n const sanitizedString = this.sanitizeBase64(str);\n const encoded = base64js.toByteArray(sanitizedString);\n return new IsoBuffer(encoded.buffer);\n }\n case \"utf8\":\n // eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n case \"utf-8\":\n case undefined: {\n const encoded = new TextEncoder().encode(str);\n return new IsoBuffer(encoded.buffer);\n }\n default: {\n throw new Error(\"invalid/unsupported encoding\");\n }\n }\n }\n static isBuffer(obj) {\n throw new Error(\"unimplemented\");\n }\n /**\n * Sanitize a base64 string to provide to base64-js library.\n * {@link https://www.npmjs.com/package/base64-js} is not as tolerant of the same malformed base64 as Node'\n * Buffer is.\n */\n static sanitizeBase64(str) {\n let sanitizedStr = str;\n // Remove everything after padding - Node buffer ignores everything\n // after any padding whereas base64-js does not\n sanitizedStr = sanitizedStr.split(\"=\")[0];\n // Remove invalid characters - Node buffer strips invalid characters\n // whereas base64-js replaces them with \"A\"\n sanitizedStr = sanitizedStr.replace(/[^\\w+-/]/g, \"\");\n // Check for missing padding - Node buffer tolerates missing padding\n // whereas base64-js does not\n if (sanitizedStr.length % 4 !== 0) {\n const paddingArray = [\"\", \"===\", \"==\", \"=\"];\n sanitizedStr += paddingArray[sanitizedStr.length % 4];\n }\n return sanitizedStr;\n }\n}\n//# sourceMappingURL=bufferBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This exported \"performance\" member masks the built-in globalThis.performance object\n * as an IsomorphicPerformance, which hides all of its features that aren't compatible\n * between Node and browser implementations. Anything exposed on this performance object\n * is considered safe to use regarless of the environment it runs in.\n *\n * @internal\n */\nexport const performance = globalThis.performance;\n//# sourceMappingURL=performanceIsomorphic.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { EventEmitter } from \"./eventEmitter.cjs\";\n/**\n * Event Emitter helper class the supports emitting typed events.\n * @privateRemarks\n * This should become internal once the classes extending it become internal.\n * @legacy\n * @alpha\n */\nexport class TypedEventEmitter extends EventEmitter {\n constructor() {\n super();\n this.addListener = super.addListener.bind(this);\n this.on = super.on.bind(this);\n this.once = super.once.bind(this);\n this.prependListener = super.prependListener.bind(this);\n this.prependOnceListener = super.prependOnceListener.bind(this);\n this.removeListener = super.removeListener.bind(this);\n this.off = super.off.bind(this);\n }\n}\n//# sourceMappingURL=typedEventEmitter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LoaderHeader, } from \"@fluidframework/container-definitions/internal\";\nimport { GenericError } from \"@fluidframework/telemetry-utils/internal\";\n/* eslint-disable jsdoc/check-indentation */\n/**\n * Loads container and leaves it in a state where it does not process any ops.\n * Container instance returned by this function is in special mode where some functionality that is available in normal use will not work correctly\n * with instance of container returned by this function. Some examples:\n * 1. calling IContainer.connect() will have very little impact on this container as it will not process ops.\n * 2. functionality like waitContainerToCatchUp() or waiting for ops in any other way would hand infinitely, as this container is not processing ops\n * 3. No changes can be made to this container - they will be lost.\n *\n * If sequence number is provided, loads up to this sequence number and stops there, otherwise stops immediately after loading snapshot.\n * In all cases, container is returned disconnected & paused, or an exception is thrown\n * Notes:\n * 1. Ignores LoaderHeader.loadMode headers. Container is always returned with ops applied upt to provided sequence number,\n * or no ops applied at all (if sequence number is not provided)\n * 2. This call can hang infinitately if disconnected from internet (or hit some other conditions, like 429 storm).\n * Compare to Container.load() experience (with default settings) - it either returns failure right away, or succeeds, with\n * ops fetching / delta connection happening in parallel / after container load flow, and thus providing an object (Container instance) to observe\n * network connectivity issues / ability to cancel (IContainer.disconnect) or close container (IContainer.close)\n * This flow needs to fetch ops (potentially connecting to delta connection), and any retriable errors on this path result in infinite retry.\n * If you need to cancel that process, consider supplying AbortSignal parameter.\n * @param loader - loader instance to use to load container\n * @param request - request identifying container instance / load parameters. LoaderHeader.loadMode headers are ignored (see above)\n * @param loadToSequenceNumber - optional sequence number. If provided, ops are processed up to this sequence number.\n * @param signal - optional abort signal that can be used to cancel waiting for the ops.\n * @returns IContainer instance\n *\n * @internal\n */\nexport async function loadContainerPaused(loader, request, loadToSequenceNumber, signal) {\n const container = await loader.resolve({\n url: request.url,\n headers: {\n ...request.headers,\n // ensure we do not process any ops, such that we can examine container before ops starts to flow.\n [LoaderHeader.loadMode]: { opsBeforeReturn: undefined, deltaConnection: \"none\" },\n },\n });\n // Force readonly mode - this will ensure we don't receive an error for the lack of join op\n container.forceReadonly?.(true);\n const dm = container.deltaManager;\n const lastProcessedSequenceNumber = dm.initialSequenceNumber;\n const pauseContainer = () => {\n // eslint-disable-next-line no-void\n void dm.inbound.pause();\n // eslint-disable-next-line no-void\n void dm.outbound.pause();\n };\n // Happy path - we are already there.\n if (loadToSequenceNumber === undefined ||\n lastProcessedSequenceNumber === loadToSequenceNumber) {\n // If we have already reached the desired sequence number, call pauseContainer() to pause immediately.\n pauseContainer();\n return container;\n }\n // If we are trying to pause at a specific sequence number, ensure the latest snapshot is not newer than the desired sequence number.\n if (lastProcessedSequenceNumber > loadToSequenceNumber) {\n const error = new GenericError(\"Cannot satisfy request to pause the container at the specified sequence number. Most recent snapshot is newer than the specified sequence number.\");\n container.close(error);\n throw error;\n }\n let opHandler;\n let onAbort;\n let onClose;\n const promise = new Promise((resolve, reject) => {\n onAbort = () => reject(new GenericError(\"Canceled due to cancellation request.\"));\n onClose = (error) => reject(error);\n // We need to setup a listener to stop op processing once we reach the desired sequence number (if specified).\n opHandler = () => {\n // If there is a specified sequence number, keep processing until we reach it.\n if (loadToSequenceNumber !== undefined &&\n dm.lastSequenceNumber >= loadToSequenceNumber) {\n // Pause op processing once we have processed the desired number of ops.\n pauseContainer();\n resolve();\n }\n };\n // If we have not yet reached the desired sequence number, setup a listener to pause once we reach it.\n signal?.addEventListener(\"abort\", onAbort);\n container.on(\"op\", opHandler);\n container.on(\"closed\", onClose);\n });\n // There are no guarantees on when ops will land in storage.\n // No guarantees that driver implements ops caching (i.e. ops observed in previous session can be served from cache)\n // or that browser will provide caching capabilities / keep the data (localStorage).\n // Thus, we have to ensure we connect to delta storage in order to make forward progress with ops.\n // We also instructed not to fetch / apply any ops from storage above (to be able to install callback above before ops are processed),\n // connect() call will fetch ops as needed.\n container.connect();\n // Wait for the ops to be processed.\n await promise\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n container.close(error);\n throw error;\n })\n .finally(() => {\n // There is not much value in leaving delta connection on. We are not processing ops, we also can't advance to \"connected\" state because of it.\n // We are not sending ops (due to forceReadonly() call above). We are holding collab window and any consensus-based processes.\n // It's better not to have connection in such case, as there are only nagatives, and no positives.\n container.disconnect();\n container.off(\"op\", opHandler);\n container.off(\"closed\", onClose);\n signal?.removeEventListener(\"abort\", onAbort);\n });\n return container;\n}\n/* eslint-enable jsdoc/check-indentation */\n//# sourceMappingURL=loadPaused.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Check if the package.json defines a Fluid package\n * @param pkg - the package json data to check if it is a Fluid package.\n * @legacy\n * @alpha\n */\nexport const isFluidPackage = (pkg) => typeof pkg === \"object\" &&\n typeof pkg?.name === \"string\" &&\n typeof pkg?.fluid === \"object\";\n/**\n * Determines if any object is an IFluidCodeDetails\n * @internal\n */\nexport const isFluidCodeDetails = (details) => {\n const maybeCodeDetails = details;\n return (typeof maybeCodeDetails === \"object\" &&\n (typeof maybeCodeDetails?.package === \"string\" ||\n isFluidPackage(maybeCodeDetails?.package)) &&\n (maybeCodeDetails?.config === undefined || typeof maybeCodeDetails?.config === \"object\"));\n};\n/**\n * @legacy\n * @alpha\n */\nexport const IFluidCodeDetailsComparer = \"IFluidCodeDetailsComparer\";\n//# sourceMappingURL=fluidPackage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Determines if an arbitrary value is an object\n * @param value - The value to check to see if it is an object\n * @returns True if the passed value is an object\n *\n * @internal\n */\nexport const isObject = (value) => typeof value === \"object\" && value !== null;\n/**\n * Determines if an arbitrary value is a promise\n * @param value - The value to check to see if it is a promise\n * @returns True if the passed value is a promise\n *\n * @internal\n */\nexport const isPromiseLike = (value) => isObject(value) && \"then\" in value && typeof value.then === \"function\";\n//# sourceMappingURL=typesGuards.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\n/**\n * Validates the current layout of an .app + .protocol summary tree\n * this is used internally for create new, and single commit summary\n * @internal\n */\nexport function isCombinedAppAndProtocolSummary(summary, ...optionalRootTrees) {\n if (summary?.tree === undefined ||\n summary.tree?.[\".app\"]?.type !== SummaryType.Tree ||\n summary.tree?.[\".protocol\"]?.type !== SummaryType.Tree) {\n return false;\n }\n const treeKeys = Object.keys(summary.tree).filter((t) => !optionalRootTrees.includes(t));\n if (treeKeys.length !== 2) {\n return false;\n }\n return true;\n}\n/**\n * Extract the attributes from the protocol summary.\n * @param protocolSummary - protocol summary from which the values are to be extracted.\n * @internal\n */\nexport function getDocAttributesFromProtocolSummary(protocolSummary) {\n const attributesBlob = protocolSummary.tree.attributes;\n return JSON.parse(attributesBlob.content);\n}\n/**\n * Extract quorum values from the protocol summary.\n * @param protocolSummary - protocol summary from which the values are to be extracted.\n * @internal\n */\nexport function getQuorumValuesFromProtocolSummary(protocolSummary) {\n const quorumValuesBlob = protocolSummary.tree.quorumValues;\n const quorumValues = JSON.parse(quorumValuesBlob.content);\n return quorumValues;\n}\n//# sourceMappingURL=summaryForCreateNew.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Uint8ArrayToString, bufferToString, stringToBuffer, } from \"@fluid-internal/client-utils\";\nimport { assert, compareArrays, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { isCombinedAppAndProtocolSummary, readAndParse, } from \"@fluidframework/driver-utils/internal\";\nimport { LoggingError, UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n/**\n * Utility api to parse the IResolvedUrl.url into specific parts like querystring, path to get\n * deep link info etc.\n * Warning - This function may not be compatible with any Url Resolver's resolved url. It works\n * with urls of type: protocol:///.../..?\n * @param url - This is the IResolvedUrl.url part of the resolved url.\n * @returns The IParsedUrl representing the input URL, or undefined if the format was not supported\n * @legacy\n * @alpha\n */\nexport function tryParseCompatibleResolvedUrl(url) {\n const parsed = new URL(url);\n if (typeof parsed.pathname !== \"string\") {\n throw new LoggingError(\"Failed to parse pathname\");\n }\n const query = parsed.search ?? \"\";\n const regex = /^\\/([^/]*\\/[^/]*)(\\/?.*)$/;\n const match = regex.exec(parsed.pathname);\n return match?.length === 3\n ? {\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: match[1],\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n path: match[2],\n query,\n // URLSearchParams returns null if the param is not provided.\n version: parsed.searchParams.get(\"version\") ?? undefined,\n }\n : undefined;\n}\n/**\n * Combine the app summary and protocol summary in 1 tree.\n * @param appSummary - Summary of the app.\n * @param protocolSummary - Summary of the protocol.\n * @internal\n */\nexport function combineAppAndProtocolSummary(appSummary, protocolSummary) {\n assert(!isCombinedAppAndProtocolSummary(appSummary), 0x5a8 /* app summary is already a combined tree! */);\n assert(!isCombinedAppAndProtocolSummary(protocolSummary), 0x5a9 /* protocol summary is already a combined tree! */);\n const createNewSummary = {\n type: SummaryType.Tree,\n tree: {\n \".protocol\": protocolSummary,\n \".app\": appSummary,\n },\n };\n return createNewSummary;\n}\n/**\n * Converts a summary to snapshot tree and separate its blob contents\n * to align detached container format with IPendingContainerState\n * @param summary - ISummaryTree\n */\nfunction convertSummaryToSnapshotAndBlobs(summary) {\n let blobContents = {};\n const treeNode = {\n blobs: {},\n trees: {},\n id: uuid(),\n unreferenced: summary.unreferenced,\n groupId: summary.groupId,\n };\n const keys = Object.keys(summary.tree);\n for (const key of keys) {\n // TODO change this to use object.entries\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const summaryObject = summary.tree[key];\n switch (summaryObject.type) {\n case SummaryType.Tree: {\n const innerSnapshot = convertSummaryToSnapshotAndBlobs(summaryObject);\n treeNode.trees[key] = innerSnapshot.baseSnapshot;\n blobContents = { ...blobContents, ...innerSnapshot.snapshotBlobs };\n break;\n }\n case SummaryType.Attachment: {\n treeNode.blobs[key] = summaryObject.id;\n break;\n }\n case SummaryType.Blob: {\n const blobId = uuid();\n treeNode.blobs[key] = blobId;\n const contentString = summaryObject.content instanceof Uint8Array\n ? Uint8ArrayToString(summaryObject.content)\n : summaryObject.content;\n blobContents[blobId] = contentString;\n break;\n }\n case SummaryType.Handle: {\n throw new LoggingError(\"No handles should be there in summary in detached container!!\");\n }\n default: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n unreachableCase(summaryObject, `Unknown tree type ${summaryObject.type}`);\n }\n }\n }\n const pendingSnapshot = { baseSnapshot: treeNode, snapshotBlobs: blobContents };\n return pendingSnapshot;\n}\n/**\n * Converts a snapshot to snapshotInfo with its blob contents\n * to align detached container format with IPendingContainerState\n *\n * Note, this assumes the ISnapshot sequence number is defined. Otherwise an assert will be thrown\n * @param snapshot - ISnapshot\n */\nexport function convertSnapshotToSnapshotInfo(snapshot) {\n assert(snapshot.sequenceNumber !== undefined, 0x93a /* Snapshot sequence number is missing */);\n const snapshotBlobs = {};\n for (const [blobId, arrayBufferLike] of snapshot.blobContents.entries()) {\n snapshotBlobs[blobId] = bufferToString(arrayBufferLike, \"utf8\");\n }\n return {\n baseSnapshot: snapshot.snapshotTree,\n snapshotBlobs,\n snapshotSequenceNumber: snapshot.sequenceNumber,\n };\n}\n/**\n * Converts a snapshot to snapshotInfo with its blob contents\n * to align detached container format with IPendingContainerState\n *\n * Note, this assumes the ISnapshot sequence number is defined. Otherwise an assert will be thrown\n * @param snapshot - ISnapshot\n */\nexport function convertSnapshotInfoToSnapshot(snapshotInfo, snapshotSequenceNumber) {\n const blobContents = new Map();\n for (const [blobId, serializedContent] of Object.entries(snapshotInfo.snapshotBlobs)) {\n blobContents.set(blobId, stringToBuffer(serializedContent, \"utf8\"));\n }\n return {\n snapshotTree: snapshotInfo.baseSnapshot,\n blobContents,\n ops: [],\n sequenceNumber: snapshotSequenceNumber,\n latestSequenceNumber: undefined,\n snapshotFormatV: 1,\n };\n}\n/**\n * Converts summary parts into a SnapshotTree and its blob contents.\n * @param protocolSummaryTree - Protocol Summary Tree\n * @param appSummaryTree - App Summary Tree\n */\nfunction convertProtocolAndAppSummaryToSnapshotAndBlobs(protocolSummaryTree, appSummaryTree) {\n const combinedSummary = {\n type: SummaryType.Tree,\n tree: { ...appSummaryTree.tree },\n };\n combinedSummary.tree[\".protocol\"] = protocolSummaryTree;\n const snapshotTreeWithBlobContents = convertSummaryToSnapshotAndBlobs(combinedSummary);\n return snapshotTreeWithBlobContents;\n}\nexport const getSnapshotTreeAndBlobsFromSerializedContainer = (detachedContainerSnapshot) => {\n assert(isCombinedAppAndProtocolSummary(detachedContainerSnapshot), 0x8e6 /* Protocol and App summary trees should be present */);\n const protocolSummaryTree = detachedContainerSnapshot.tree[\".protocol\"];\n const appSummaryTree = detachedContainerSnapshot.tree[\".app\"];\n const snapshotTreeWithBlobContents = convertProtocolAndAppSummaryToSnapshotAndBlobs(protocolSummaryTree, appSummaryTree);\n return snapshotTreeWithBlobContents;\n};\nexport function getProtocolSnapshotTree(snapshot) {\n return \".protocol\" in snapshot.trees ? snapshot.trees[\".protocol\"] : snapshot;\n}\nexport const combineSnapshotTreeAndSnapshotBlobs = (baseSnapshot, snapshotBlobs) => {\n const blobsContents = {};\n // Process blobs in the current level\n for (const [, id] of Object.entries(baseSnapshot.blobs)) {\n const snapshot = snapshotBlobs[id];\n if (snapshot !== undefined) {\n blobsContents[id] = stringToBuffer(snapshot, \"utf8\");\n }\n }\n // Recursively process trees in the current level\n const trees = {};\n for (const [path, tree] of Object.entries(baseSnapshot.trees)) {\n trees[path] = combineSnapshotTreeAndSnapshotBlobs(tree, snapshotBlobs);\n }\n // Create a new snapshot tree with blob contents and processed trees\n const snapshotTreeWithBlobContents = {\n ...baseSnapshot,\n blobsContents,\n trees,\n };\n return snapshotTreeWithBlobContents;\n};\nexport function isDeltaStreamConnectionForbiddenError(error) {\n return (typeof error === \"object\" &&\n error !== null &&\n error?.errorType ===\n DriverErrorTypes.deltaStreamConnectionForbidden);\n}\n/**\n * Validates format in parsed string get from detached container\n * serialization using IPendingDetachedContainerState format.\n */\nfunction isPendingDetachedContainerState(detachedContainerState) {\n if (detachedContainerState?.attached === undefined ||\n detachedContainerState?.baseSnapshot === undefined ||\n detachedContainerState?.snapshotBlobs === undefined ||\n detachedContainerState?.hasAttachmentBlobs === undefined) {\n return false;\n }\n return true;\n}\n/**\n * Parses the given string into {@link IPendingDetachedContainerState} format,\n * with validation (if invalid, throws a UsageError).\n * This is the inverse of the JSON.stringify call in {@link Container.serialize}\n */\nexport function getDetachedContainerStateFromSerializedContainer(serializedContainer) {\n const hasBlobsSummaryTree = \".hasAttachmentBlobs\";\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedContainerState = JSON.parse(serializedContainer);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (isPendingDetachedContainerState(parsedContainerState)) {\n return parsedContainerState;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n }\n else if (isCombinedAppAndProtocolSummary(parsedContainerState)) {\n const { baseSnapshot, snapshotBlobs } = getSnapshotTreeAndBlobsFromSerializedContainer(parsedContainerState);\n const detachedContainerState = {\n attached: false,\n baseSnapshot,\n snapshotBlobs,\n hasAttachmentBlobs: parsedContainerState.tree[hasBlobsSummaryTree] !== undefined,\n };\n return detachedContainerState;\n }\n else {\n throw new UsageError(\"Cannot rehydrate detached container. Incorrect format\");\n }\n}\n/**\n * Blindly parses the given string into {@link IPendingContainerState} format.\n * This is the inverse of the JSON.stringify call in {@link SerializedStateManager.getPendingLocalState}\n */\nexport function getAttachedContainerStateFromSerializedContainer(serializedContainer) {\n return serializedContainer === undefined\n ? undefined\n : JSON.parse(serializedContainer);\n}\n/**\n * Ensures only a single instance of the provided async function is running.\n * If there are multiple calls they will all get the same promise to wait on.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const runSingle = (func) => {\n let running;\n // don't mark this function async, so we return the same promise,\n // rather than one that is wrapped due to async\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n return (...args) => {\n if (running !== undefined) {\n if (!compareArrays(running.args, args)) {\n return Promise.reject(new UsageError(\"Subsequent calls cannot use different arguments.\"));\n }\n return running.result;\n }\n running = { args, result: func(...args).finally(() => (running = undefined)) };\n return running.result;\n };\n};\nexport async function getDocumentAttributes(storage, tree) {\n if (tree === undefined) {\n return {\n minimumSequenceNumber: 0,\n sequenceNumber: 0,\n };\n }\n // Backward compatibility: old docs would have \".attributes\" instead of \"attributes\"\n const attributesHash = \".protocol\" in tree.trees\n ? tree.trees[\".protocol\"].blobs.attributes\n : tree.blobs[\".attributes\"];\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const attributes = await readAndParse(storage, attributesHash);\n return attributes;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { getSnapshotTreeAndBlobsFromSerializedContainer } from \"./utils.js\";\n/**\n * Executes the attach process state machine based on the provided data and services.\n * This method is retriable on failure. Based on the provided initialAttachmentData\n * this method will resume the attachment process and attempt to complete it.\n *\n * @param AttachProcessProps - The data and services necessary to run the attachment process\n * @returns - The attach summary (only if offline load is enabled), or undefined\n */\nexport const runRetriableAttachProcess = async ({ detachedBlobStorage, createOrGetStorageService, setAttachmentData, createAttachmentSummary, offlineLoadEnabled, initialAttachmentData, }) => {\n let currentData = initialAttachmentData;\n if (currentData.blobs === undefined) {\n // If attachment blobs were uploaded in detached state we will go through a different attach flow\n const outstandingAttachmentBlobs = detachedBlobStorage !== undefined && detachedBlobStorage.size > 0;\n // Determine the next phase of attaching which depends on if there are attachment blobs\n // if there are, we will stay detached, so an empty file can be created, and the blobs\n // uploaded, otherwise we will get the summary to create the file with and move to attaching\n currentData = outstandingAttachmentBlobs\n ? {\n state: AttachState.Detached,\n blobs: \"outstanding\",\n redirectTable: new Map(),\n }\n : {\n state: AttachState.Attaching,\n summary: createAttachmentSummary(),\n blobs: \"none\",\n };\n setAttachmentData(currentData);\n }\n // this has to run here, as it is what creates the file\n // and we need to file for all possible cases after this point\n const storage = await createOrGetStorageService(currentData.summary);\n if (currentData.blobs === \"outstanding\") {\n const { redirectTable } = currentData;\n // upload blobs to storage\n assert(!!detachedBlobStorage, 0x24e /* \"assertion for type narrowing\" */);\n // build a table mapping IDs assigned locally to IDs assigned by storage and pass it to runtime to\n // support blob handles that only know about the local IDs\n while (redirectTable.size < detachedBlobStorage.size) {\n const newIds = detachedBlobStorage.getBlobIds().filter((id) => !redirectTable.has(id));\n for (const id of newIds) {\n const blob = await detachedBlobStorage.readBlob(id);\n const response = await storage.createBlob(blob);\n redirectTable.set(id, response.id);\n }\n }\n setAttachmentData((currentData = {\n state: AttachState.Attaching,\n summary: createAttachmentSummary(redirectTable),\n blobs: \"done\",\n }));\n }\n assert(currentData.state === AttachState.Attaching, 0x8e2 /* must be attaching by this point */);\n if (currentData.blobs === \"done\") {\n // done means outstanding blobs were uploaded.\n // in that case an empty file was created, the blobs were uploaded\n // and now this finally uploads the summary\n await storage.uploadSummaryWithContext(currentData.summary, {\n referenceSequenceNumber: 0,\n ackHandle: undefined,\n proposalHandle: undefined,\n });\n }\n const snapshot = offlineLoadEnabled\n ? getSnapshotTreeAndBlobsFromSerializedContainer(currentData.summary)\n : undefined;\n setAttachmentData((currentData = {\n state: AttachState.Attached,\n }));\n return snapshot;\n};\n//# sourceMappingURL=attachment.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Audience represents all clients connected to the op stream.\n */\nexport class Audience extends TypedEventEmitter {\n constructor() {\n super();\n this.members = new Map();\n // We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n super.setMaxListeners(0);\n }\n getSelf() {\n return this._currentClientId === undefined\n ? undefined\n : {\n clientId: this._currentClientId,\n client: this.getMember(this._currentClientId),\n };\n }\n setCurrentClientId(clientId) {\n if (this._currentClientId !== clientId) {\n const oldId = this._currentClientId;\n this._currentClientId = clientId;\n // this.getMember(clientId) could resolve to undefined in these two cases:\n // 1) Feature gates controlling ConnectionStateHandler() behavior are off\n // 2) we are loading from stashed state and audience is empty, but we remember and set prior clientId\n this.emit(\"selfChanged\", oldId === undefined ? undefined : ({ clientId: oldId }), { clientId, client: this.getMember(clientId) });\n }\n }\n /**\n * Adds a new client to the audience\n */\n addMember(clientId, details) {\n // Given that signal delivery is unreliable process, we might observe same client being added twice\n // In such case we should see exactly same payload (IClient), and should not raise event twice!\n if (this.members.has(clientId)) {\n const client = this.members.get(clientId);\n assert(JSON.stringify(client) === JSON.stringify(details), 0x4b2 /* new client has different payload from existing one */);\n }\n else {\n this.members.set(clientId, details);\n this.emit(\"addMember\", clientId, details);\n }\n }\n /**\n * Removes a client from the audience. Only emits an event if a client is actually removed\n * @returns if a client was removed from the audience\n */\n removeMember(clientId) {\n const removedClient = this.members.get(clientId);\n if (removedClient === undefined) {\n return false;\n }\n else {\n this.members.delete(clientId);\n this.emit(\"removeMember\", clientId, removedClient);\n return true;\n }\n }\n /**\n * Retrieves all the members in the audience.\n *\n * @remarks When the container is disconnected, this will keep returning the audience as it was last seen before the\n * container disconnected.\n */\n getMembers() {\n return new Map(this.members);\n }\n /**\n * Retrieves a specific member of the audience.\n *\n * @remarks When the container is disconnected, this will keep returning members from the audience as it was last seen\n * before the container disconnected.\n */\n getMember(clientId) {\n return this.members.get(clientId);\n }\n}\n//# sourceMappingURL=audience.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Defines scope access for a Container/Document.\n * @legacy\n * @alpha\n */\nexport var ScopeType;\n(function (ScopeType) {\n /**\n * Read access is supported on the Container/Document\n */\n ScopeType[\"DocRead\"] = \"doc:read\";\n /**\n * Write access is supported on the Container/Document\n */\n ScopeType[\"DocWrite\"] = \"doc:write\";\n /**\n * User can generate new summaries operations\n */\n ScopeType[\"SummaryWrite\"] = \"summary:write\";\n})(ScopeType || (ScopeType = {}));\n//# sourceMappingURL=scopes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { OnlineStatus, canRetryOnError, isOnline } from \"./network.js\";\n/**\n * @internal\n */\nexport function logNetworkFailure(logger, event, error) {\n const newEvent = { ...event };\n const errorOnlineProp = error?.online;\n newEvent.online =\n typeof errorOnlineProp === \"string\" ? errorOnlineProp : OnlineStatus[isOnline()];\n if (typeof navigator === \"object\" && navigator !== null) {\n const nav = navigator;\n const connection = nav.connection ?? nav.mozConnection ?? nav.webkitConnection;\n if (connection !== null && typeof connection === \"object\") {\n newEvent.connectionType = connection.type;\n }\n }\n // non-retryable errors are fatal and should be logged as errors\n newEvent.category = canRetryOnError(error) ? \"generic\" : \"error\";\n logger.sendTelemetryEvent(newEvent, error);\n}\n//# sourceMappingURL=networkUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { isFluidPackage, } from \"@fluidframework/container-definitions/internal\";\nexport var ReconnectMode;\n(function (ReconnectMode) {\n ReconnectMode[\"Never\"] = \"Never\";\n ReconnectMode[\"Disabled\"] = \"Disabled\";\n ReconnectMode[\"Enabled\"] = \"Enabled\";\n})(ReconnectMode || (ReconnectMode = {}));\n/**\n * Gets the name of the Fluid package.\n * @param codeDetails- - Data structure used to describe the code to load on the Fluid document\n */\nexport const getPackageName = (codeDetails) => {\n // TODO: use a real type\n // This is the normal path that any modern customer would hit\n const containerPackageName = isFluidPackage(codeDetails?.package)\n ? codeDetails?.package.name\n : codeDetails?.package;\n return { name: containerPackageName };\n};\n//# sourceMappingURL=contracts.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter, performance } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport Deque from \"double-ended-queue\";\nexport class DeltaQueue extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n /**\n * Whether or not the queue is paused.\n */\n get paused() {\n return this.pauseCount !== 0;\n }\n get length() {\n return this.q.length;\n }\n get idle() {\n return this.processingPromise === undefined && this.q.length === 0;\n }\n async waitTillProcessingDone() {\n return this.processingPromise ?? { count: 0, duration: 0 };\n }\n /**\n * @param worker - A callback to process a delta.\n */\n constructor(worker) {\n super();\n this.worker = worker;\n this.isDisposed = false;\n this.q = new Deque();\n /**\n * Tracks the number of pause requests for the queue.\n * The DeltaQueue is created initially paused.\n */\n this.pauseCount = 1;\n }\n dispose() {\n throw new Error(\"Not implemented.\");\n this.isDisposed = true;\n }\n clear() {\n this.q.clear();\n }\n peek() {\n return this.q.peekFront();\n }\n toArray() {\n return this.q.toArray();\n }\n push(task) {\n try {\n this.q.push(task);\n this.emit(\"push\", task);\n this.ensureProcessing();\n }\n catch (error) {\n this.emit(\"error\", error);\n }\n }\n async pause() {\n this.pauseCount++;\n // If called from within the processing loop, we are in the middle of processing an op. Return a promise\n // that will resolve when processing has actually stopped.\n await this.waitTillProcessingDone();\n }\n resume() {\n assert(this.pauseCount > 0, 0x0f4 /* \"Nonzero pause-count on resume()\" */);\n this.pauseCount--;\n this.ensureProcessing();\n }\n /**\n * There are several actions that may need to kick off delta processing, so we want to guard against\n * accidental reentrancy. ensureProcessing can be called safely to start the processing loop if it is\n * not already started.\n */\n ensureProcessing() {\n if (this.anythingToProcess() && this.processingPromise === undefined) {\n // Use a resolved promise to start the processing on a separate stack.\n this.processingPromise = Promise.resolve()\n .then(() => {\n assert(this.processingPromise !== undefined, 0x37f /* reentrancy? */);\n const result = this.processDeltas();\n assert(this.processingPromise !== undefined, 0x380 /* reentrancy? */);\n // WARNING: Do not move next line to .finally() clause!\n // It runs async and creates a race condition where incoming ensureProcessing() call observes\n // from previous run while previous run is over (but finally clause was not scheduled yet)\n this.processingPromise = undefined;\n return result;\n })\n .catch((error) => {\n this.error = error;\n this.processingPromise = undefined;\n this.emit(\"error\", error);\n return { count: 0, duration: 0 };\n });\n assert(this.processingPromise !== undefined, 0x381 /* processDeltas() should run async */);\n }\n }\n anythingToProcess() {\n return this.q.length > 0 && !this.paused && this.error === undefined;\n }\n /**\n * Executes the delta processing loop until a stop condition is reached.\n */\n processDeltas() {\n const start = performance.now();\n let count = 0;\n // For grouping to work we must process all local messages immediately and in the single turn.\n // So loop over them until no messages to process, we have become paused, or hit an error.\n while (this.anythingToProcess()) {\n // Get the next message in the queue\n const next = this.q.shift();\n count++;\n // Process the message.\n // We know next is defined since we did a length check just prior to shifting.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.worker(next);\n this.emit(\"op\", next);\n }\n const duration = performance.now() - start;\n if (this.q.length === 0) {\n this.emit(\"idle\", count, duration);\n }\n return { count, duration };\n }\n}\n//# sourceMappingURL=deltaQueue.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport events_pkg from \"events_pkg\";\nconst { EventEmitter } = events_pkg;\n/**\n * Structure for tracking proposals that have been sequenced but not approved yet.\n */\nclass PendingProposal {\n constructor(sequenceNumber, key, value, local) {\n this.sequenceNumber = sequenceNumber;\n this.key = key;\n this.value = value;\n this.local = local;\n }\n}\n/**\n * The QuorumClients is used to track members joining and leaving the collaboration session.\n * @internal\n */\nexport class QuorumClients extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n constructor(snapshot) {\n super();\n this.isDisposed = false;\n this.members = new Map(snapshot);\n this.snapshotCache = snapshot;\n }\n /**\n * Snapshots the current state of the QuorumClients\n * @returns a snapshot of the clients in the quorum\n */\n snapshot() {\n this.snapshotCache ?? (this.snapshotCache = [...this.members]);\n return this.snapshotCache;\n }\n /**\n * Adds a new client to the quorum\n */\n addMember(clientId, details) {\n assert(!!clientId, 0x9a0 /* clientId has to be non-empty string */);\n assert(!this.members.has(clientId), 0x9a1 /* clientId not found */);\n this.members.set(clientId, details);\n this.emit(\"addMember\", clientId, details);\n // clear the cache\n this.snapshotCache = undefined;\n }\n /**\n * Removes a client from the quorum\n */\n removeMember(clientId) {\n assert(!!clientId, 0x9a2 /* clientId has to be non-empty string */);\n assert(this.members.has(clientId), 0x9a3 /* clientId not found */);\n this.members.delete(clientId);\n this.emit(\"removeMember\", clientId);\n // clear the cache\n this.snapshotCache = undefined;\n }\n /**\n * Retrieves all the members in the quorum\n */\n getMembers() {\n return new Map(this.members);\n }\n /**\n * Retrieves a specific member of the quorum\n */\n getMember(clientId) {\n return this.members.get(clientId);\n }\n dispose() {\n this.isDisposed = true;\n }\n}\n/**\n * The QuorumProposals holds a key/value store. Proposed values become finalized in the store once all connected\n * clients have seen the proposal.\n * @internal\n */\nexport class QuorumProposals extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n constructor(snapshot, sendProposal) {\n super();\n this.sendProposal = sendProposal;\n this.isDisposed = false;\n // Event emitter for changes to the environment that affect pending proposal promises.\n this.stateEvents = new EventEmitter();\n this.proposals = new Map(snapshot.proposals.map(([, proposal]) => {\n return [\n proposal.sequenceNumber,\n new PendingProposal(proposal.sequenceNumber, proposal.key, proposal.value, false),\n ];\n }));\n this.values = new Map(snapshot.values);\n this.proposalsSnapshotCache = snapshot.proposals;\n this.valuesSnapshotCache = snapshot.values;\n }\n /**\n * Snapshots the current state of the QuorumProposals\n * @returns arrays of proposals and values\n */\n snapshot() {\n this.proposalsSnapshotCache ?? (this.proposalsSnapshotCache = [...this.proposals].map(([sequenceNumber, proposal]) => [\n sequenceNumber,\n { sequenceNumber, key: proposal.key, value: proposal.value },\n [], // rejections, which has been removed\n ]));\n this.valuesSnapshotCache ?? (this.valuesSnapshotCache = [...this.values]);\n return {\n proposals: this.proposalsSnapshotCache,\n values: this.valuesSnapshotCache,\n };\n }\n /**\n * Returns whether the quorum has achieved a consensus for the given key.\n */\n has(key) {\n return this.values.has(key);\n }\n /**\n * Returns the consensus value for the given key\n */\n get(key) {\n return this.values.get(key)?.value;\n }\n /**\n * Returns additional data about the approved consensus value\n * @deprecated Removed in recent protocol-definitions. Use get() instead.\n */\n getApprovalData(key) {\n return this.values.get(key);\n }\n /**\n * Proposes a new value. Returns a promise that will either:\n * - Resolve when the proposal is accepted\n * - Reject if the proposal fails to send or if the QuorumProposals is disposed\n */\n async propose(key, value) {\n const clientSequenceNumber = this.sendProposal(key, value);\n if (clientSequenceNumber < 0) {\n this.emit(\"error\", { eventName: \"ProposalInDisconnectedState\", key });\n throw new Error(\"Can't propose in disconnected state\");\n }\n return new Promise((resolve, reject) => {\n // The sequence number that our proposal was assigned and went pending.\n // If undefined, then it's not sequenced yet.\n let thisProposalSequenceNumber;\n // A proposal goes through two phases before this promise resolves:\n // 1. Sequencing - waiting for the proposal to be ack'd by the server.\n // 2. Approval - waiting for the proposal to be approved by connected clients.\n const localProposalSequencedHandler = (sequencedCSN, sequenceNumber) => {\n if (sequencedCSN === clientSequenceNumber) {\n thisProposalSequenceNumber = sequenceNumber;\n this.stateEvents.off(\"localProposalSequenced\", localProposalSequencedHandler);\n this.stateEvents.off(\"disconnected\", disconnectedHandler);\n this.stateEvents.on(\"localProposalApproved\", localProposalApprovedHandler);\n }\n };\n const localProposalApprovedHandler = (sequenceNumber) => {\n // Proposals can be uniquely identified by the sequenceNumber they were assigned.\n if (sequenceNumber === thisProposalSequenceNumber) {\n resolve();\n removeListeners();\n }\n };\n // There are two error flows we consider: disconnect and disposal.\n // If we get disconnected before the proposal is sequenced, it has one of two possible futures:\n // 1. We reconnect and see the proposal was sequenced in the meantime.\n // -> The promise can still resolve, once it is approved.\n // 2. We reconnect and see the proposal was not sequenced in the meantime, so it will never sequence.\n // -> The promise rejects.\n const disconnectedHandler = () => {\n // If we haven't seen the ack by the time we disconnect, we hope to see it by the time we reconnect.\n if (thisProposalSequenceNumber === undefined) {\n this.stateEvents.once(\"connected\", () => {\n // If we don't see the ack by the time reconnection finishes, it failed to send.\n if (thisProposalSequenceNumber === undefined) {\n reject(new Error(\"Client disconnected without successfully sending proposal\"));\n removeListeners();\n }\n });\n }\n };\n // If the QuorumProposals is disposed of, we assume something catastrophic has happened\n // All outstanding proposals are considered rejected.\n const disposedHandler = () => {\n reject(new Error(\"QuorumProposals was disposed\"));\n removeListeners();\n };\n // Convenience function to clean up our listeners.\n const removeListeners = () => {\n this.stateEvents.off(\"localProposalSequenced\", localProposalSequencedHandler);\n this.stateEvents.off(\"localProposalApproved\", localProposalApprovedHandler);\n this.stateEvents.off(\"disconnected\", disconnectedHandler);\n this.stateEvents.off(\"disposed\", disposedHandler);\n };\n this.stateEvents.on(\"localProposalSequenced\", localProposalSequencedHandler);\n this.stateEvents.on(\"disconnected\", disconnectedHandler);\n this.stateEvents.on(\"disposed\", disposedHandler);\n });\n }\n /**\n * Begins tracking a new proposal\n */\n addProposal(key, value, sequenceNumber, local, clientSequenceNumber) {\n assert(!this.proposals.has(sequenceNumber), 0x9a4 /* sequenceNumber not found */);\n const proposal = new PendingProposal(sequenceNumber, key, value, local);\n this.proposals.set(sequenceNumber, proposal);\n // Legacy event, from rejection support. May still have some use for clients to learn that a proposal is\n // likely to be approved soon.\n this.emit(\"addProposal\", proposal);\n if (local) {\n this.stateEvents.emit(\"localProposalSequenced\", clientSequenceNumber, sequenceNumber);\n }\n // clear the proposal cache\n this.proposalsSnapshotCache = undefined;\n }\n /**\n * Updates the minimum sequence number. If the MSN advances past the sequence number for any proposal then it\n * becomes an approved value.\n */\n updateMinimumSequenceNumber(message) {\n const msn = message.minimumSequenceNumber;\n // Accept proposals proposals whose sequenceNumber is <= the minimumSequenceNumber\n // Return a sorted list of approved proposals. We sort so that we apply them in their sequence number order\n // TODO this can be optimized if necessary to avoid the linear search+sort\n const completed = [];\n for (const [sequenceNumber, proposal] of this.proposals) {\n if (sequenceNumber <= msn) {\n completed.push(proposal);\n }\n }\n completed.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n for (const proposal of completed) {\n const committedProposal = {\n approvalSequenceNumber: message.sequenceNumber,\n // No longer used. We still stamp a -1 for compat with older versions of the quorum.\n // Can be removed after 0.1035 and higher is ubiquitous.\n commitSequenceNumber: -1,\n key: proposal.key,\n sequenceNumber: proposal.sequenceNumber,\n value: proposal.value,\n };\n this.values.set(committedProposal.key, committedProposal);\n // clear the values cache\n this.valuesSnapshotCache = undefined;\n // check if there are multiple proposals with matching keys\n let proposalSettled = false;\n let proposalKeySeen = false;\n for (const [, p] of this.proposals) {\n if (p.key === committedProposal.key) {\n if (proposalKeySeen) {\n // set proposalSettled to false if matching proposal key is not unique\n proposalSettled = false;\n break;\n }\n else {\n // set proposalSettled to true if the proposal key match is unique thus far\n proposalSettled = true;\n }\n proposalKeySeen = true;\n }\n }\n this.emit(\"approveProposal\", committedProposal.sequenceNumber, committedProposal.key, committedProposal.value, committedProposal.approvalSequenceNumber);\n // emit approveProposalComplete when all pending proposals are processed\n if (proposalSettled) {\n this.emit(\"approveProposalComplete\", committedProposal.sequenceNumber, committedProposal.key, committedProposal.value, committedProposal.approvalSequenceNumber);\n }\n this.proposals.delete(proposal.sequenceNumber);\n // clear the proposals cache\n this.proposalsSnapshotCache = undefined;\n if (proposal.local) {\n this.stateEvents.emit(\"localProposalApproved\", proposal.sequenceNumber);\n }\n }\n }\n setConnectionState(connected) {\n if (connected) {\n this.stateEvents.emit(\"connected\");\n }\n else {\n this.stateEvents.emit(\"disconnected\");\n }\n }\n dispose() {\n this.isDisposed = true;\n this.stateEvents.emit(\"disposed\");\n }\n}\n/**\n * A quorum represents all clients currently within the collaboration window. As well as the values\n * they have agreed upon and any pending proposals.\n * @internal\n */\nexport class Quorum extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n constructor(members, proposals, values, sendProposal) {\n super();\n this.isDisposed = false;\n this.quorumClients = new QuorumClients(members);\n this.quorumClients.on(\"addMember\", (clientId, details) => {\n this.emit(\"addMember\", clientId, details);\n });\n this.quorumClients.on(\"removeMember\", (clientId) => {\n this.emit(\"removeMember\", clientId);\n });\n this.quorumProposals = new QuorumProposals({ proposals, values }, sendProposal);\n this.quorumProposals.on(\"addProposal\", (proposal) => {\n this.emit(\"addProposal\", proposal);\n });\n this.quorumProposals.on(\"approveProposal\", (sequenceNumber, key, value, approvalSequenceNumber) => {\n this.emit(\"approveProposal\", sequenceNumber, key, value, approvalSequenceNumber);\n });\n }\n close() {\n this.removeAllListeners();\n }\n /**\n * Snapshots the entire quorum\n * @returns a quorum snapshot\n */\n snapshot() {\n const members = this.quorumClients.snapshot();\n const { proposals, values } = this.quorumProposals.snapshot();\n return {\n members,\n proposals,\n values,\n };\n }\n /**\n * Returns whether the quorum has achieved a consensus for the given key.\n */\n has(key) {\n return this.quorumProposals.has(key);\n }\n /**\n * Returns the consensus value for the given key\n */\n get(key) {\n return this.quorumProposals.get(key);\n }\n /**\n * Returns additional data about the approved consensus value\n * @deprecated Removed in recent protocol-definitions. Use get() instead.\n */\n getApprovalData(key) {\n return this.quorumProposals.getApprovalData(key);\n }\n /**\n * Adds a new client to the quorum\n */\n addMember(clientId, details) {\n this.quorumClients.addMember(clientId, details);\n }\n /**\n * Removes a client from the quorum\n */\n removeMember(clientId) {\n this.quorumClients.removeMember(clientId);\n }\n /**\n * Retrieves all the members in the quorum\n */\n getMembers() {\n return this.quorumClients.getMembers();\n }\n /**\n * Retrieves a specific member of the quorum\n */\n getMember(clientId) {\n return this.quorumClients.getMember(clientId);\n }\n /**\n * Proposes a new value. Returns a promise that will resolve when the proposal is either accepted, or reject if\n * the proposal fails to send.\n */\n async propose(key, value) {\n return this.quorumProposals.propose(key, value);\n }\n /**\n * Begins tracking a new proposal\n */\n addProposal(key, value, sequenceNumber, local, clientSequenceNumber) {\n return this.quorumProposals.addProposal(key, value, sequenceNumber, local, clientSequenceNumber);\n }\n /**\n * Updates the minimum sequence number. If the MSN advances past the sequence number for any proposal then it\n * becomes an approved value.\n */\n updateMinimumSequenceNumber(message) {\n this.quorumProposals.updateMinimumSequenceNumber(message);\n }\n setConnectionState(connected, clientId) {\n this.quorumProposals.setConnectionState(connected);\n }\n dispose() {\n throw new Error(\"Not implemented.\");\n }\n}\n//# sourceMappingURL=quorum.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { Quorum } from \"./quorum.js\";\n/**\n * Handles protocol specific ops.\n * @internal\n */\nexport class ProtocolOpHandler {\n get quorum() {\n return this._quorum;\n }\n constructor(minimumSequenceNumber, sequenceNumber, members, proposals, values, sendProposal) {\n this.minimumSequenceNumber = minimumSequenceNumber;\n this.sequenceNumber = sequenceNumber;\n this._quorum = new Quorum(members, proposals, values, sendProposal);\n }\n get attributes() {\n return {\n minimumSequenceNumber: this.minimumSequenceNumber,\n sequenceNumber: this.sequenceNumber,\n };\n }\n setConnectionState(connected, clientId) {\n this._quorum.setConnectionState(connected, clientId);\n }\n snapshot() {\n return this._quorum.snapshot();\n }\n close() {\n this._quorum.close();\n }\n processMessage(message, local) {\n // verify it's moving sequentially\n if (message.sequenceNumber !== this.sequenceNumber + 1) {\n throw new Error(`Protocol state is not moving sequentially. ` +\n `Current is ${this.sequenceNumber}. Next is ${message.sequenceNumber}`);\n }\n // Update tracked sequence numbers\n this.sequenceNumber = message.sequenceNumber;\n this.minimumSequenceNumber = message.minimumSequenceNumber;\n let immediateNoOp = false;\n switch (message.type) {\n case MessageType.ClientJoin: {\n const systemJoinMessage = message;\n const join = JSON.parse(systemJoinMessage.data);\n const member = {\n client: join.detail,\n sequenceNumber: systemJoinMessage.sequenceNumber,\n };\n this._quorum.addMember(join.clientId, member);\n break;\n }\n case MessageType.ClientLeave: {\n const systemLeaveMessage = message;\n const clientId = JSON.parse(systemLeaveMessage.data);\n this._quorum.removeMember(clientId);\n break;\n }\n case MessageType.Propose: {\n // back-compat: ADO #1385: This should become unconditional eventually.\n // Can be done only after Container.processRemoteMessage() stops parsing content!\n if (typeof message.contents === \"string\") {\n message.contents = JSON.parse(message.contents);\n }\n const proposal = message.contents;\n this._quorum.addProposal(proposal.key, proposal.value, message.sequenceNumber, local, message.clientSequenceNumber);\n // On a quorum proposal, immediately send a response to expedite the approval.\n immediateNoOp = true;\n break;\n }\n default:\n }\n // Notify the quorum of the MSN from the message. We rely on it to handle duplicate values but may\n // want to move that logic to this class.\n this._quorum.updateMinimumSequenceNumber(message);\n return { immediateNoOp };\n }\n /**\n * Gets the scribe protocol state\n * @param scrubUserData - whether to remove all user data from the quorum members. CAUTION: this will corrupt the quorum if used in a summary.\n */\n getProtocolState(scrubUserData = false) {\n // return a new object every time\n // this ensures future state changes will not affect outside callers\n const snapshot = this._quorum.snapshot();\n if (scrubUserData) {\n // In place, remove any identifying client information\n snapshot.members = snapshot.members.map(([id, sequencedClient]) => [\n id,\n {\n ...sequencedClient,\n client: {\n ...sequencedClient.client,\n user: { id: \"\" },\n },\n },\n ]);\n }\n return {\n sequenceNumber: this.sequenceNumber,\n minimumSequenceNumber: this.minimumSequenceNumber,\n ...snapshot,\n };\n }\n}\n//# sourceMappingURL=protocol.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { canBeCoalescedByService } from \"@fluidframework/driver-utils/internal\";\nimport { ProtocolOpHandler } from \"./protocol/index.js\";\n// ADO: #1986: Start using enum from protocol-base.\nexport var SignalType;\n(function (SignalType) {\n SignalType[\"ClientJoin\"] = \"join\";\n SignalType[\"ClientLeave\"] = \"leave\";\n SignalType[\"Clear\"] = \"clear\";\n})(SignalType || (SignalType = {}));\nexport class ProtocolHandler extends ProtocolOpHandler {\n constructor(attributes, quorumSnapshot, \n // TODO: use a real type (breaking change)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendProposal, audience, shouldClientHaveLeft) {\n super(attributes.minimumSequenceNumber, attributes.sequenceNumber, quorumSnapshot.members, quorumSnapshot.proposals, quorumSnapshot.values, sendProposal);\n this.audience = audience;\n this.shouldClientHaveLeft = shouldClientHaveLeft;\n for (const [clientId, member] of this.quorum.getMembers()) {\n audience.addMember(clientId, member.client);\n }\n // Join / leave signals are ignored for \"write\" clients in favor of join / leave ops\n this.quorum.on(\"addMember\", (clientId, details) => audience.addMember(clientId, details.client));\n this.quorum.on(\"removeMember\", (clientId) => audience.removeMember(clientId));\n for (const [clientId, details] of this.quorum.getMembers()) {\n this.audience.addMember(clientId, details.client);\n }\n }\n processMessage(message, local) {\n // Check and report if we're getting messages from a clientId that we previously\n // flagged as shouldHaveLeft, or from a client that's not in the quorum but should be\n // eslint-disable-next-line unicorn/no-null\n if (message.clientId != null) {\n const client = this.quorum.getMember(message.clientId);\n if (client === undefined && message.type !== MessageType.ClientJoin) {\n // pre-0.58 error message: messageClientIdMissingFromQuorum\n throw new Error(\"Remote message's clientId is missing from the quorum\");\n }\n // Here checking canBeCoalescedByService is used as an approximation of \"is benign to process despite being unexpected\".\n // It's still not good to see these messages from unexpected clientIds, but since they don't harm the integrity of the\n // document we don't need to blow up aggressively.\n if (this.shouldClientHaveLeft(message.clientId) && !canBeCoalescedByService(message)) {\n // pre-0.58 error message: messageClientIdShouldHaveLeft\n throw new Error(\"Remote message's clientId already should have left\");\n }\n }\n return super.processMessage(message, local);\n }\n processSignal(message) {\n const innerContent = message.content;\n switch (innerContent.type) {\n case SignalType.Clear: {\n const members = this.audience.getMembers();\n for (const [clientId, client] of members) {\n if (client.mode === \"read\") {\n this.audience.removeMember(clientId);\n }\n }\n break;\n }\n case SignalType.ClientJoin: {\n const newClient = innerContent.content;\n // Ignore write clients - quorum will control such clients.\n if (newClient.client.mode === \"read\") {\n this.audience.addMember(newClient.clientId, newClient.client);\n }\n break;\n }\n case SignalType.ClientLeave: {\n const leftClientId = innerContent.content;\n // Ignore write clients - quorum will control such clients.\n if (this.audience.getMember(leftClientId)?.mode === \"read\") {\n this.audience.removeMember(leftClientId);\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n}\n/**\n * Function to check whether the protocol handler should process the Signal.\n * The protocol handler should strictly handle only ClientJoin, ClientLeave\n * and Clear signal types.\n */\nexport function protocolHandlerShouldProcessSignal(message) {\n // Signal originates from server\n if (message.clientId === null) {\n const innerContent = message.content;\n return (innerContent.type === SignalType.Clear ||\n innerContent.type === SignalType.ClientJoin ||\n innerContent.type === SignalType.ClientLeave);\n }\n return false;\n}\n//# sourceMappingURL=protocol.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter, performance } from \"@fluid-internal/client-utils\";\nimport { LogLevel, } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes, MessageType, ScopeType, } from \"@fluidframework/driver-definitions/internal\";\nimport { calculateMaxWaitTime, canRetryOnError, createGenericNetworkError, createWriteError, getRetryDelayFromError, isRuntimeMessage, logNetworkFailure, } from \"@fluidframework/driver-utils/internal\";\nimport { GenericError, UsageError, formatTick, generateStack, isFluidError, normalizeError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { ReconnectMode, } from \"./contracts.js\";\nimport { DeltaQueue } from \"./deltaQueue.js\";\nimport { SignalType } from \"./protocol.js\";\nimport { isDeltaStreamConnectionForbiddenError } from \"./utils.js\";\n// We double this value in first try in when we calculate time to wait for in \"calculateMaxWaitTime\" function.\nconst InitialReconnectDelayInMs = 500;\nconst DefaultChunkSize = 16 * 1024;\nconst fatalConnectErrorProp = { fatalConnectError: true };\nfunction getNackReconnectInfo(nackContent) {\n const message = `Nack (${nackContent.type}): ${nackContent.message}`;\n const canRetry = nackContent.code !== 403;\n const retryAfterMs = nackContent.retryAfter === undefined ? undefined : nackContent.retryAfter * 1000;\n return createGenericNetworkError(message, { canRetry, retryAfterMs }, { statusCode: nackContent.code, driverVersion: undefined });\n}\n/**\n * Implementation of IDocumentDeltaConnection that does not support submitting\n * or receiving ops. Used in storage-only mode.\n */\nconst clientNoDeltaStream = {\n mode: \"read\",\n details: { capabilities: { interactive: true } },\n permission: [],\n user: { id: \"storage-only client\" }, // we need some \"fake\" ID here.\n scopes: [],\n};\nconst clientIdNoDeltaStream = \"storage-only client\";\nclass NoDeltaStream extends TypedEventEmitter {\n /**\n * Connection which is not connected to socket.\n * @param storageOnlyReason - Reason on why the connection to delta stream is not allowed.\n * @param readonlyConnectionReason - reason/error if any which lead to using NoDeltaStream.\n */\n constructor(storageOnlyReason, readonlyConnectionReason) {\n super();\n this.storageOnlyReason = storageOnlyReason;\n this.readonlyConnectionReason = readonlyConnectionReason;\n this.clientId = clientIdNoDeltaStream;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.claims = {\n scopes: [ScopeType.DocRead],\n };\n this.mode = \"read\";\n this.existing = true;\n this.maxMessageSize = 0;\n this.version = \"\";\n this.initialMessages = [];\n this.initialSignals = [];\n this.initialClients = [\n { client: clientNoDeltaStream, clientId: clientIdNoDeltaStream },\n ];\n this.serviceConfiguration = {\n maxMessageSize: 0,\n blockSize: 0,\n };\n this.checkpointSequenceNumber = undefined;\n this._disposed = false;\n }\n submit(messages) {\n this.emit(\"nack\", this.clientId, messages.map((operation) => {\n return {\n operation,\n content: { message: \"Cannot submit with storage-only connection\", code: 403 },\n };\n }));\n }\n submitSignal(message) {\n this.emit(\"nack\", this.clientId, {\n operation: message,\n content: { message: \"Cannot submit signal with storage-only connection\", code: 403 },\n });\n }\n get disposed() {\n return this._disposed;\n }\n dispose() {\n this._disposed = true;\n }\n}\nfunction isNoDeltaStreamConnection(connection) {\n return connection instanceof NoDeltaStream;\n}\nconst waitForOnline = async () => {\n // Only wait if we have a strong signal that we're offline - otherwise assume we're online.\n if (globalThis.navigator?.onLine === false && globalThis.addEventListener !== undefined) {\n return new Promise((resolve) => {\n const resolveAndRemoveListener = () => {\n resolve();\n globalThis.removeEventListener(\"online\", resolveAndRemoveListener);\n };\n globalThis.addEventListener(\"online\", resolveAndRemoveListener);\n });\n }\n};\n/**\n * Implementation of IConnectionManager, used by Container class\n * Implements constant connectivity to relay service, by reconnecting in case of lost connection or error.\n * Exposes various controls to influence this process, including manual reconnects, forced read-only mode, etc.\n */\nexport class ConnectionManager {\n get connectionVerboseProps() {\n return this._connectionVerboseProps;\n }\n /**\n * The current connection mode, initially read.\n */\n get connectionMode() {\n return this.connection?.mode ?? \"read\";\n }\n get connected() {\n return this.connection !== undefined;\n }\n get clientId() {\n return this.connection?.clientId;\n }\n /**\n * Details about connection. Returns undefined if there is no active connection.\n */\n get connectionDetails() {\n return this._connectionDetails;\n }\n /**\n * Automatic reconnecting enabled or disabled.\n * If set to Never, then reconnecting will never be allowed.\n */\n get reconnectMode() {\n return this._reconnectMode;\n }\n get maxMessageSize() {\n return this.connection?.serviceConfiguration?.maxMessageSize ?? DefaultChunkSize;\n }\n get version() {\n if (this.connection === undefined) {\n throw new Error(\"Cannot check version without a connection\");\n }\n return this.connection.version;\n }\n get serviceConfiguration() {\n return this.connection?.serviceConfiguration;\n }\n get scopes() {\n return this.connection?.claims.scopes;\n }\n get outbound() {\n return this._outbound;\n }\n /**\n * Returns set of props that can be logged in telemetry that provide some insights / statistics\n * about current or last connection (if there is no connection at the moment)\n */\n get connectionProps() {\n return this.connection === undefined\n ? {\n ...this._connectionProps,\n // Report how many ops this client sent in last disconnected session\n sentOps: this.clientSequenceNumber,\n }\n : this._connectionProps;\n }\n shouldJoinWrite() {\n // We don't have to wait for ack for topmost NoOps. So subtract those.\n const outstandingOps = this.clientSequenceNumberObserved < this.clientSequenceNumber - this.localOpsToIgnore;\n // Previous behavior was to force write mode here only when there are outstanding ops (besides\n // no-ops). The dirty signal from runtime should provide the same behavior, but also support\n // stashed ops that weren't submitted to container layer yet. For safety, we want to retain the\n // same behavior whenever dirty is false.\n const isDirty = this.containerDirty();\n if (outstandingOps !== isDirty) {\n this.logger.sendTelemetryEvent({\n eventName: \"DesiredConnectionModeMismatch\",\n details: JSON.stringify({ outstandingOps, isDirty }),\n });\n }\n return outstandingOps || isDirty;\n }\n /**\n * Tells if container is in read-only mode.\n * Data stores should listen for \"readonly\" notifications and disallow user\n * making changes to data stores.\n * Readonly state can be because of no storage write permission,\n * or due to host forcing readonly mode for container.\n * It is undefined if we have not yet established websocket connection\n * and do not know if user has write access to a file.\n */\n get readonly() {\n return this.readOnlyInfo.readonly;\n }\n get readOnlyInfo() {\n let storageOnly = false;\n let storageOnlyReason;\n if (isNoDeltaStreamConnection(this.connection)) {\n storageOnly = true;\n storageOnlyReason = this.connection.storageOnlyReason;\n }\n if (storageOnly || this._forceReadonly || this._readonlyPermissions === true) {\n return {\n readonly: true,\n forced: this._forceReadonly,\n permissions: this._readonlyPermissions,\n storageOnly,\n storageOnlyReason,\n };\n }\n return { readonly: this._readonlyPermissions };\n }\n static detailsFromConnection(connection, reason) {\n return {\n claims: connection.claims,\n clientId: connection.clientId,\n checkpointSequenceNumber: connection.checkpointSequenceNumber,\n get initialClients() {\n return connection.initialClients;\n },\n mode: connection.mode,\n serviceConfiguration: connection.serviceConfiguration,\n version: connection.version,\n reason,\n };\n }\n constructor(serviceProvider, containerDirty, client, reconnectAllowed, logger, props) {\n this.serviceProvider = serviceProvider;\n this.containerDirty = containerDirty;\n this.client = client;\n this.logger = logger;\n this.props = props;\n /**\n * tracks host requiring read-only mode.\n */\n this._forceReadonly = false;\n /**\n * True if there is pending (async) reconnection from \"read\" to \"write\"\n */\n this.pendingReconnect = false;\n this.clientSequenceNumber = 0;\n this.clientSequenceNumberObserved = 0;\n /**\n * Counts the number of non-runtime ops sent by the client which may not be acked.\n */\n this.localOpsToIgnore = 0;\n this.connectFirstConnection = true;\n this._connectionVerboseProps = {};\n this._connectionProps = {};\n this._disposed = false;\n this.opHandler = (documentId, messagesArg) => {\n const messages = Array.isArray(messagesArg) ? messagesArg : [messagesArg];\n this.props.incomingOpHandler(messages, \"opHandler\");\n };\n this.signalHandler = (signalsArg) => {\n const signals = Array.isArray(signalsArg) ? signalsArg : [signalsArg];\n this.props.signalHandler(signals);\n };\n // Always connect in write mode after getting nacked.\n this.nackHandler = (documentId, messages) => {\n // TODO Why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const message = messages[0];\n if (this._readonlyPermissions === true) {\n this.props.closeHandler(createWriteError(\"writeOnReadOnlyDocument\", { driverVersion: undefined }));\n return;\n }\n const reconnectInfo = getNackReconnectInfo(message.content);\n // If the nack indicates we cannot retry, then close the container outright\n if (!reconnectInfo.canRetry) {\n this.props.closeHandler(reconnectInfo);\n return;\n }\n this.reconnectOnError(\"write\", reconnectInfo);\n };\n // Connection mode is always read on disconnect/error unless the system mode was write.\n this.disconnectHandlerInternal = (disconnectReason) => {\n // Note: we might get multiple disconnect calls on same socket, as early disconnect notification\n // (\"server_disconnect\", ODSP-specific) is mapped to \"disconnect\"\n this.reconnectOnError(this.defaultReconnectionMode, disconnectReason);\n };\n this.errorHandler = (error) => {\n this.reconnectOnError(this.defaultReconnectionMode, error);\n };\n this.clientDetails = this.client.details;\n this.defaultReconnectionMode = this.client.mode;\n this._reconnectMode = reconnectAllowed ? ReconnectMode.Enabled : ReconnectMode.Never;\n // Outbound message queue. The outbound queue is represented as a queue of an array of ops. Ops contained\n // within an array *must* fit within the maxMessageSize and are guaranteed to be ordered sequentially.\n this._outbound = new DeltaQueue((messages) => {\n if (this.connection === undefined) {\n throw new Error(\"Attempted to submit an outbound message without connection\");\n }\n this.connection.submit(messages);\n });\n this._outbound.on(\"error\", (error) => {\n this.props.closeHandler(normalizeError(error));\n });\n }\n dispose(error, switchToReadonly = true) {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n // Ensure that things like triggerConnect() will short circuit\n this._reconnectMode = ReconnectMode.Never;\n this._outbound.clear();\n const disconnectReason = {\n text: \"Closing DeltaManager\",\n error,\n };\n const oldReadonlyValue = this.readonly;\n // This raises \"disconnect\" event if we have active connection.\n this.disconnectFromDeltaStream(disconnectReason);\n if (switchToReadonly) {\n // Notify everyone we are in read-only state.\n // Useful for data stores in case we hit some critical error,\n // to switch to a mode where user edits are not accepted\n this.set_readonlyPermissions(true, oldReadonlyValue, disconnectReason);\n }\n }\n /**\n * Enables or disables automatic reconnecting.\n * Will throw an error if reconnectMode set to Never.\n */\n setAutoReconnect(mode, reason) {\n assert(mode !== ReconnectMode.Never && this._reconnectMode !== ReconnectMode.Never, 0x278 /* \"API is not supported for non-connecting or closed container\" */);\n this._reconnectMode = mode;\n if (mode !== ReconnectMode.Enabled) {\n // immediately disconnect - do not rely on service eventually dropping connection.\n this.disconnectFromDeltaStream(reason);\n }\n }\n /**\n * {@inheritDoc Container.forceReadonly}\n */\n forceReadonly(readonly) {\n if (readonly !== this._forceReadonly) {\n this.logger.sendTelemetryEvent({\n eventName: \"ForceReadOnly\",\n value: readonly,\n });\n }\n const oldValue = this.readonly;\n this._forceReadonly = readonly;\n if (oldValue !== this.readonly) {\n if (this._reconnectMode === ReconnectMode.Never) {\n throw new UsageError(\"API is not supported for non-connecting or closed container\");\n }\n let reconnect = false;\n if (this.readonly === true) {\n // If we switch to readonly while connected, we should disconnect first\n // See comment in the \"readonly\" event handler to deltaManager set up by\n // the ContainerRuntime constructor\n if (this.shouldJoinWrite()) {\n // If we have pending changes, then we will never send them - it smells like\n // host logic error.\n this.logger.sendErrorEvent({ eventName: \"ForceReadonlyPendingChanged\" });\n }\n reconnect = this.disconnectFromDeltaStream({ text: \"Force readonly\" });\n }\n this.props.readonlyChangeHandler(this.readonly);\n if (reconnect) {\n // reconnect if we disconnected from before.\n this.triggerConnect({ text: \"Force Readonly\" }, \"read\");\n }\n }\n }\n set_readonlyPermissions(newReadonlyValue, oldReadonlyValue, readonlyConnectionReason) {\n this._readonlyPermissions = newReadonlyValue;\n if (oldReadonlyValue !== this.readonly) {\n this.props.readonlyChangeHandler(this.readonly, readonlyConnectionReason);\n }\n }\n connect(reason, connectionMode) {\n this.connectCore(reason, connectionMode).catch((error) => {\n const normalizedError = normalizeError(error, { props: fatalConnectErrorProp });\n this.props.closeHandler(normalizedError);\n });\n }\n async connectCore(reason, connectionMode) {\n assert(!this._disposed, 0x26a /* \"not closed\" */);\n let requestedMode = connectionMode ?? this.defaultReconnectionMode;\n // if we have any non-acked ops from last connection, reconnect as \"write\".\n // without that we would connect in view-only mode, which will result in immediate\n // firing of \"connected\" event from Container and switch of current clientId (as tracked\n // by all DDSes). This will make it impossible to figure out if ops actually made it through,\n // so DDSes will immediately resubmit all pending ops, and some of them will be duplicates, corrupting document\n if (this.shouldJoinWrite()) {\n requestedMode = \"write\";\n }\n if (this.connection !== undefined || this.pendingConnection !== undefined) {\n // Connection attempt already completed successfully or is in progress\n // In general, there should be no issues if the modes do not match:\n // If at some point it was Ok to connect as \"read\" (i.e. there were no pending ops we had to track),\n // then it should be Ok to use \"read\" connection even if for some reason request came in to connect as \"write\"\n // (though that should never happen)\n // The opposite should be fine as well: we may have had idle \"write\" connection, and request to reconnect came in,\n // using default \"read\" mode.\n // That all said, let's understand better where such mismatches are coming from.\n const mode = this.connection?.mode ?? this.pendingConnection?.connectionMode;\n if (mode !== requestedMode) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionModeMismatch\",\n connected: this.connection !== undefined,\n mode,\n requestedMode,\n stack: generateStack(),\n });\n }\n return;\n }\n const docService = this.serviceProvider();\n assert(docService !== undefined, 0x2a7 /* \"Container is not attached\" */);\n this.props.establishConnectionHandler(reason);\n let connection;\n if (docService.policies?.storageOnly === true) {\n connection = new NoDeltaStream();\n this.setupNewSuccessfulConnection(connection, \"read\", reason);\n assert(this.pendingConnection === undefined, 0x2b3 /* \"logic error\" */);\n return;\n }\n let delayMs = InitialReconnectDelayInMs;\n let connectRepeatCount = 0;\n const connectStartTime = performance.now();\n let lastError;\n const abortController = new AbortController();\n const abortSignal = abortController.signal;\n this.pendingConnection = {\n abort: () => {\n abortController.abort();\n },\n connectionMode: requestedMode,\n };\n // This loop will keep trying to connect until successful, with a delay between each iteration.\n while (connection === undefined) {\n if (this._disposed) {\n throw new Error(\"Attempting to connect a closed DeltaManager\");\n }\n if (abortSignal.aborted === true) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionAttemptCancelled\",\n attempts: connectRepeatCount,\n duration: formatTick(performance.now() - connectStartTime),\n connectionEstablished: false,\n });\n return;\n }\n connectRepeatCount++;\n try {\n this.client.mode = requestedMode;\n connection = await docService.connectToDeltaStream({\n ...this.client,\n mode: requestedMode,\n });\n if (connection.disposed) {\n // Nobody observed this connection, so drop it on the floor and retry.\n this.logger.sendTelemetryEvent({ eventName: \"ReceivedClosedConnection\" });\n connection = undefined;\n }\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionReceived\",\n connected: connection !== undefined && connection.disposed === false,\n }, undefined, LogLevel.verbose);\n }\n catch (origError) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectToDeltaStreamException\",\n connected: connection !== undefined && connection.disposed === false,\n }, undefined, LogLevel.verbose);\n if (isDeltaStreamConnectionForbiddenError(origError)) {\n connection = new NoDeltaStream(origError.storageOnlyReason, {\n text: origError.message,\n error: origError,\n });\n requestedMode = \"read\";\n break;\n }\n else if (isFluidError(origError) &&\n origError.errorType === DriverErrorTypes.outOfStorageError) {\n // If we get out of storage error from calling joinsession, then use the NoDeltaStream object so\n // that user can at least load the container.\n connection = new NoDeltaStream(undefined, {\n text: origError.message,\n error: origError,\n });\n requestedMode = \"read\";\n break;\n }\n // Socket.io error when we connect to wrong socket, or hit some multiplexing bug\n if (!canRetryOnError(origError)) {\n const error = normalizeError(origError, { props: fatalConnectErrorProp });\n this.props.closeHandler(error);\n throw error;\n }\n // Since the error is retryable this will not log to the error table\n logNetworkFailure(this.logger, {\n attempts: connectRepeatCount,\n delay: delayMs, // milliseconds\n eventName: \"DeltaConnectionFailureToConnect\",\n duration: formatTick(performance.now() - connectStartTime),\n }, origError);\n lastError = origError;\n // We will not perform retries if the container disconnected and the ReconnectMode is set to Disabled or Never\n // so break out of the re-connecting while-loop after first attempt\n if (this.reconnectMode !== ReconnectMode.Enabled) {\n return;\n }\n const waitStartTime = performance.now();\n const retryDelayFromError = getRetryDelayFromError(origError);\n // If the error told us to wait or browser signals us that we are offline, then calculate the time we\n // want to wait for before retrying. then we wait for that time. If the error didn't tell us to wait,\n // let's still wait a little bit before retrying. We can skip this delay if we're confident we're offline,\n // because we probably just need to wait to come back online. But we never have strong signal of being\n // offline, so we at least wait for sometime.\n if (retryDelayFromError !== undefined || globalThis.navigator?.onLine !== false) {\n delayMs = calculateMaxWaitTime(delayMs, origError);\n }\n // Raise event in case the delay was there from the error.\n if (retryDelayFromError !== undefined) {\n this.props.reconnectionDelayHandler(delayMs, origError);\n }\n await new Promise((resolve) => {\n setTimeout(resolve, delayMs);\n });\n // If we believe we're offline, we assume there's no point in trying until we at least think we're online.\n // NOTE: This isn't strictly true for drivers that don't require network (e.g. local driver). Really this logic\n // should probably live in the driver.\n await waitForOnline();\n this.logger.sendPerformanceEvent({\n eventName: \"WaitBetweenConnectionAttempts\",\n duration: performance.now() - waitStartTime,\n details: JSON.stringify({\n retryDelayFromError,\n delayMs,\n }),\n });\n }\n }\n // If we retried more than once, log an event about how long it took (this will not log to error table)\n if (connectRepeatCount > 1) {\n logNetworkFailure(this.logger, {\n eventName: \"MultipleDeltaConnectionFailures\",\n attempts: connectRepeatCount,\n duration: formatTick(performance.now() - connectStartTime),\n }, lastError);\n }\n // Check for abort signal after while loop as well or we've been disposed\n if (abortSignal.aborted === true || this._disposed) {\n connection.dispose();\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionAttemptCancelled\",\n attempts: connectRepeatCount,\n duration: formatTick(performance.now() - connectStartTime),\n connectionEstablished: true,\n });\n return;\n }\n this.setupNewSuccessfulConnection(connection, requestedMode, reason);\n }\n /**\n * Start the connection. Any error should result in container being closed.\n * And report the error if it escapes for any reason.\n * @param args - The connection arguments\n */\n triggerConnect(reason, connectionMode) {\n // reconnect() includes async awaits, and that causes potential race conditions\n // where we might already have a connection. If it were to happen, it's possible that we will connect\n // with different mode to `connectionMode`. Glancing through the caller chains, it looks like code should be\n // fine (if needed, reconnect flow will get triggered again). Places where new mode matters should encode it\n // directly in connectCore - see this.shouldJoinWrite() test as an example.\n // assert(this.connection === undefined, 0x239 /* \"called only in disconnected state\" */);\n if (this.reconnectMode !== ReconnectMode.Enabled) {\n return;\n }\n this.connect(reason, connectionMode);\n }\n /**\n * Disconnect the current connection.\n * @param reason - Text description of disconnect reason to emit with disconnect event\n * @param error - Error causing the disconnect if any.\n * @returns A boolean that indicates if there was an existing connection (or pending connection) to disconnect\n */\n disconnectFromDeltaStream(reason) {\n this.pendingReconnect = false;\n if (this.connection === undefined) {\n if (this.pendingConnection !== undefined) {\n this.cancelConnection(reason);\n return true;\n }\n return false;\n }\n assert(this.pendingConnection === undefined, 0x27b /* \"reentrancy may result in incorrect behavior\" */);\n const connection = this.connection;\n // Avoid any re-entrancy - clear object reference\n this.connection = undefined;\n this._connectionDetails = undefined;\n // Remove listeners first so we don't try to retrigger this flow accidentally through reconnectOnError\n connection.off(\"op\", this.opHandler);\n connection.off(\"signal\", this.signalHandler);\n connection.off(\"nack\", this.nackHandler);\n connection.off(\"disconnect\", this.disconnectHandlerInternal);\n connection.off(\"error\", this.errorHandler);\n connection.off(\"pong\", this.props.pongHandler);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._outbound.pause();\n this._outbound.clear();\n connection.dispose();\n this.props.disconnectHandler(reason);\n this._connectionVerboseProps = {};\n return true;\n }\n /**\n * Cancel in-progress connection attempt.\n */\n cancelConnection(reason) {\n assert(this.pendingConnection !== undefined, 0x345 /* this.pendingConnection is undefined when trying to cancel */);\n this.pendingConnection.abort();\n this.pendingConnection = undefined;\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionCancelReceived\",\n reason: reason.text,\n });\n this.props.cancelConnectionHandler({\n text: `Cancel Pending Connection due to ${reason.text}`,\n error: reason.error,\n });\n }\n /**\n * Once we've successfully gotten a connection, we need to set up state, attach event listeners, and process\n * initial messages.\n * @param connection - The newly established connection\n */\n setupNewSuccessfulConnection(connection, requestedMode, reason) {\n // Old connection should have been cleaned up before establishing a new one\n assert(this.connection === undefined, 0x0e6 /* \"old connection exists on new connection setup\" */);\n assert(!connection.disposed, 0x28a /* \"can't be disposed - Callers need to ensure that!\" */);\n this.pendingConnection = undefined;\n const oldReadonlyValue = this.readonly;\n this.connection = connection;\n // Does information in scopes & mode matches?\n // If we asked for \"write\" and got \"read\", then file is read-only\n // But if we ask read, server can still give us write.\n const readonlyPermission = !connection.claims.scopes.includes(ScopeType.DocWrite);\n if (connection.mode !== requestedMode) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionModeMismatch\",\n requestedMode,\n mode: connection.mode,\n });\n }\n assert(!readonlyPermission || this.connectionMode === \"read\", 0x0e8 /* \"readonly perf with write connection\" */);\n this.set_readonlyPermissions(readonlyPermission, oldReadonlyValue, isNoDeltaStreamConnection(connection) ? connection.readonlyConnectionReason : undefined);\n if (this._disposed) {\n // Raise proper events, Log telemetry event and close connection.\n this.disconnectFromDeltaStream({ text: \"ConnectionManager already closed\" });\n return;\n }\n this._outbound.resume();\n connection.on(\"op\", this.opHandler);\n connection.on(\"signal\", this.signalHandler);\n connection.on(\"nack\", this.nackHandler);\n connection.on(\"disconnect\", this.disconnectHandlerInternal);\n connection.on(\"error\", this.errorHandler);\n connection.on(\"pong\", this.props.pongHandler);\n // Initial messages are always sorted. However, due to early op handler installed by drivers and appending those\n // ops to initialMessages, resulting set is no longer sorted, which would result in client hitting storage to\n // fill in gap. We will recover by cancelling this request once we process remaining ops, but it's a waste that\n // we could avoid\n const initialMessages = connection.initialMessages.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n // Some storages may provide checkpointSequenceNumber to identify how far client is behind.\n let checkpointSequenceNumber = connection.checkpointSequenceNumber;\n this._connectionVerboseProps = {\n clientId: connection.clientId,\n mode: connection.mode,\n };\n // reset connection props\n this._connectionProps = {};\n if (connection.relayServiceAgent !== undefined) {\n this._connectionVerboseProps.relayServiceAgent = connection.relayServiceAgent;\n this._connectionProps.relayServiceAgent = connection.relayServiceAgent;\n }\n this._connectionProps.socketDocumentId = connection.claims.documentId;\n this._connectionProps.connectionMode = connection.mode;\n let last = -1;\n if (initialMessages.length > 0) {\n this._connectionVerboseProps.connectionInitialOpsFrom =\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n initialMessages[0].sequenceNumber;\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n last = initialMessages[initialMessages.length - 1].sequenceNumber;\n this._connectionVerboseProps.connectionInitialOpsTo = last + 1;\n // Update knowledge of how far we are behind, before raising \"connect\" event\n // This is duplication of what incomingOpHandler() does, but we have to raise event before we get there,\n // so duplicating update logic here as well.\n if (checkpointSequenceNumber === undefined || checkpointSequenceNumber < last) {\n checkpointSequenceNumber = last;\n }\n }\n this.props.incomingOpHandler(initialMessages, this.connectFirstConnection ? \"InitialOps\" : \"ReconnectOps\");\n this._connectionDetails = ConnectionManager.detailsFromConnection(connection, reason);\n this._connectionDetails.checkpointSequenceNumber = checkpointSequenceNumber;\n this.props.connectHandler(this._connectionDetails);\n this.connectFirstConnection = false;\n // Synthesize clear & join signals out of initialClients state.\n // This allows us to have single way to process signals, and makes it simpler to initialize\n // protocol in Container.\n const clearSignal = {\n // API uses null\n // eslint-disable-next-line unicorn/no-null\n clientId: null, // system message\n content: JSON.stringify({\n type: SignalType.Clear,\n }),\n };\n // list of signals to process due to this new connection\n let signalsToProcess = [clearSignal];\n const clientJoinSignals = (connection.initialClients ?? []).map((priorClient) => ({\n // API uses null\n // eslint-disable-next-line unicorn/no-null\n clientId: null, // system signal\n content: JSON.stringify({\n type: SignalType.ClientJoin,\n content: priorClient, // ISignalClient\n }),\n }));\n if (clientJoinSignals.length > 0) {\n signalsToProcess = [...signalsToProcess, ...clientJoinSignals];\n }\n // Unfortunately, there is no defined order between initialSignals (including join & leave signals)\n // and connection.initialClients. In practice, connection.initialSignals quite often contains join signal\n // for \"self\" and connection.initialClients does not contain \"self\", so we have to process them after\n // \"clear\" signal above.\n if (connection.initialSignals !== undefined && connection.initialSignals.length > 0) {\n signalsToProcess = [...signalsToProcess, ...connection.initialSignals];\n }\n this.props.signalHandler(signalsToProcess);\n }\n /**\n * Disconnect the current connection and reconnect. Closes the container if it fails.\n * @param connection - The connection that wants to reconnect - no-op if it's different from this.connection\n * @param requestedMode - Read or write\n * @param error - Error reconnect information including whether or not to reconnect\n * @returns A promise that resolves when the connection is reestablished or we stop trying\n */\n reconnectOnError(requestedMode, error) {\n this.reconnect(requestedMode, { text: error.message, error }).catch(this.props.closeHandler);\n }\n /**\n * Disconnect the current connection and reconnect.\n * @param connection - The connection that wants to reconnect - no-op if it's different from this.connection\n * @param requestedMode - Read or write\n * @param error - Error reconnect information including whether or not to reconnect\n * @returns A promise that resolves when the connection is reestablished or we stop trying\n */\n async reconnect(requestedMode, reason) {\n // We quite often get protocol errors before / after observing nack/disconnect\n // we do not want to run through same sequence twice.\n // If we're already disconnected/disconnecting it's not appropriate to call this again.\n assert(this.connection !== undefined, 0x0eb /* \"Missing connection for reconnect\" */);\n this.disconnectFromDeltaStream(reason);\n // We will always trigger reconnect, even if canRetry is false.\n // Any truly fatal error state will result in container close upon attempted reconnect,\n // which is a preferable to closing abruptly when a live connection fails.\n if (reason.error?.canRetry === false) {\n this.logger.sendTelemetryEvent({\n eventName: \"reconnectingDespiteFatalError\",\n reconnectMode: this.reconnectMode,\n }, reason.error);\n }\n if (this.reconnectMode === ReconnectMode.Never) {\n // Do not raise container error if we are closing just because we lost connection.\n // Those errors (like IdleDisconnect) would show up in telemetry dashboards and\n // are very misleading, as first initial reaction - some logic is broken.\n this.props.closeHandler();\n }\n // If closed then we can't reconnect\n if (this._disposed || this.reconnectMode !== ReconnectMode.Enabled) {\n return;\n }\n // If the error tells us to wait before retrying, then do so.\n const delayMs = getRetryDelayFromError(reason.error);\n if (reason.error !== undefined && delayMs !== undefined) {\n this.props.reconnectionDelayHandler(delayMs, reason.error);\n await new Promise((resolve) => {\n setTimeout(resolve, delayMs);\n });\n }\n // If we believe we're offline, we assume there's no point in trying again until we at least think we're online.\n // NOTE: This isn't strictly true for drivers that don't require network (e.g. local driver). Really this logic\n // should probably live in the driver.\n await waitForOnline();\n this.triggerConnect({\n text: reason.error === undefined\n ? `Reconnecting due to: ${reason.text}`\n : \"Reconnecting due to Error\",\n error: reason.error,\n }, requestedMode);\n }\n prepareMessageToSend(message) {\n if (this.readonly === true) {\n assert(this.readOnlyInfo.readonly === true, 0x1f0 /* \"Unexpected mismatch in readonly\" */);\n const error = new GenericError(\"deltaManagerReadonlySubmit\", undefined /* error */, {\n readonly: this.readOnlyInfo.readonly,\n forcedReadonly: this.readOnlyInfo.forced,\n readonlyPermissions: this.readOnlyInfo.permissions,\n storageOnly: this.readOnlyInfo.storageOnly,\n storageOnlyReason: this.readOnlyInfo.storageOnlyReason,\n });\n this.props.closeHandler(error);\n return undefined;\n }\n // reset clientSequenceNumber if we are using new clientId.\n // we keep info about old connection as long as possible to be able to account for all non-acked ops\n // that we pick up on next connection.\n assert(!!this.connection, 0x0e4 /* \"Lost old connection!\" */);\n if (this.lastSubmittedClientId !== this.connection?.clientId) {\n this.lastSubmittedClientId = this.connection?.clientId;\n this.clientSequenceNumber = 0;\n this.clientSequenceNumberObserved = 0;\n }\n if (isRuntimeMessage(message)) {\n this.localOpsToIgnore = 0;\n }\n else {\n this.localOpsToIgnore++;\n }\n return {\n ...message,\n clientSequenceNumber: ++this.clientSequenceNumber,\n };\n }\n submitSignal(content, targetClientId) {\n if (this.connection === undefined) {\n this.logger.sendErrorEvent({ eventName: \"submitSignalDisconnected\" });\n }\n else {\n this.connection.submitSignal(content, targetClientId);\n }\n }\n sendMessages(messages) {\n assert(this.connected, 0x2b4 /* \"not connected on sending ops!\" */);\n // If connection is \"read\" or implicit \"read\" (got leave op for \"write\" connection),\n // then op can't make it through - we will get a nack if op is sent.\n // We can short-circuit this process.\n // Note that we also want nacks to be rare and be treated as catastrophic failures.\n // Be careful with reentrancy though - disconnected event should not be be raised in the\n // middle of the current workflow, but rather on clean stack!\n if (this.connectionMode === \"read\") {\n if (!this.pendingReconnect) {\n this.pendingReconnect = true;\n Promise.resolve()\n .then(async () => {\n if (this.pendingReconnect) {\n // still valid?\n await this.reconnect(\"write\", // connectionMode\n { text: \"Switch to write\" });\n }\n })\n .catch(() => { });\n }\n return;\n }\n assert(!this.pendingReconnect, 0x2b5 /* \"logic error\" */);\n this._outbound.push(messages);\n }\n beforeProcessingIncomingOp(message) {\n // if we have connection, and message is local, then we better treat is as local!\n assert(this.clientId !== message.clientId || this.lastSubmittedClientId === message.clientId, 0x0ee /* \"Not accounting local messages correctly\" */);\n if (this.lastSubmittedClientId !== undefined &&\n this.lastSubmittedClientId === message.clientId) {\n const clientSequenceNumber = message.clientSequenceNumber;\n assert(this.clientSequenceNumberObserved < clientSequenceNumber, 0x0ef /* \"client seq# not growing\" */);\n assert(clientSequenceNumber <= this.clientSequenceNumber, 0x0f0 /* \"Incoming local client seq# > generated by this client\" */);\n this.clientSequenceNumberObserved = clientSequenceNumber;\n }\n if (message.type === MessageType.ClientLeave) {\n const systemLeaveMessage = message;\n const clientId = JSON.parse(systemLeaveMessage.data);\n if (clientId === this.clientId) {\n // We have been kicked out from quorum\n this.logger.sendPerformanceEvent({ eventName: \"ReadConnectionTransition\" });\n // Please see #8483 for more details on why maintaining connection further as is would not work.\n // Short story - connection properties are immutable, and many processes (consensus DDSes, summarizer)\n // assume that connection stays \"write\" connection until disconnect, and act accordingly, which may\n // not work well with de-facto \"read\" connection we are in after receiving own leave op on timeout.\n // Clients need to be able to transition to \"read\" state after some time of inactivity!\n // Note - this may close container!\n this.reconnect(\"read\", // connectionMode\n { text: \"Switch to read\" }).catch((error) => {\n this.logger.sendErrorEvent({ eventName: \"SwitchToReadConnection\" }, error);\n });\n }\n }\n }\n}\n//# sourceMappingURL=connectionManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The state of the Container's connection to the service.\n * @public\n */\nexport var ConnectionState;\n(function (ConnectionState) {\n /**\n * The container is not connected to the ordering service\n * Note - When in this state the container may be about to reconnect,\n * or may remain disconnected until explicitly told to connect.\n */\n ConnectionState[ConnectionState[\"Disconnected\"] = 0] = \"Disconnected\";\n /**\n * The container is disconnected but actively trying to establish a new connection\n * PLEASE NOTE that this numerical value falls out of the order you may expect for this state\n */\n ConnectionState[ConnectionState[\"EstablishingConnection\"] = 3] = \"EstablishingConnection\";\n /**\n * The container has an inbound connection only, and is catching up to the latest known state from the service.\n */\n ConnectionState[ConnectionState[\"CatchingUp\"] = 1] = \"CatchingUp\";\n /**\n * The container is fully connected and syncing\n */\n ConnectionState[ConnectionState[\"Connected\"] = 2] = \"Connected\";\n})(ConnectionState || (ConnectionState = {}));\n//# sourceMappingURL=connectionState.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Monitors a Container's DeltaManager, notifying listeners when all ops have been processed\n * that were known at the time the monitor was created.\n */\nexport class CatchUpMonitor {\n /**\n * Create the CatchUpMonitor, setting the target sequence number to wait for based on DeltaManager's current state.\n */\n constructor(deltaManager, listener) {\n this.deltaManager = deltaManager;\n this.listener = listener;\n this.caughtUp = false;\n this.opHandler = (message) => {\n if (!this.caughtUp && message.sequenceNumber >= this.targetSeqNumber) {\n this.caughtUp = true;\n this.listener();\n }\n };\n this._disposed = false;\n this.targetSeqNumber = this.deltaManager.lastKnownSeqNumber;\n assert(this.targetSeqNumber >= this.deltaManager.lastSequenceNumber, 0x37c /* Cannot wait for seqNumber below last processed sequence number */);\n this.deltaManager.on(\"op\", this.opHandler);\n // Simulate the last processed op to set caughtUp in case we already are\n this.opHandler({ sequenceNumber: this.deltaManager.lastSequenceNumber });\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}\n */\n get disposed() {\n return this._disposed;\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IDisposable.dispose}\n */\n dispose() {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n this.deltaManager.off(\"op\", this.opHandler);\n }\n}\n//# sourceMappingURL=catchUpMonitor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Timer } from \"@fluidframework/core-utils/internal\";\nimport { PerformanceEvent, } from \"@fluidframework/telemetry-utils/internal\";\nimport { CatchUpMonitor } from \"./catchUpMonitor.js\";\nimport { ConnectionState } from \"./connectionState.js\";\n// Based on recent data, it looks like majority of cases where we get stuck are due to really slow or\n// timing out ops fetches. So attempt recovery infrequently. Also fetch uses 30 second timeout, so\n// if retrying fixes the problem, we should not see these events.\nconst JoinOpTimeoutMs = 45000;\n// Timeout waiting for \"self\" join signal, before giving up\nconst JoinSignalTimeoutMs = 10000;\nexport function createConnectionStateHandler(inputs, deltaManager, clientId) {\n const config = inputs.mc.config;\n return createConnectionStateHandlerCore(config.getBoolean(\"Fluid.Container.DisableCatchUpBeforeDeclaringConnected\") !== true, // connectedRaisedWhenCaughtUp\n config.getBoolean(\"Fluid.Container.DisableJoinSignalWait\") !== true, // readClientsWaitForJoinSignal\n inputs, deltaManager, clientId);\n}\nexport function createConnectionStateHandlerCore(connectedRaisedWhenCaughtUp, readClientsWaitForJoinSignal, inputs, deltaManager, clientId) {\n const factory = (handler) => new ConnectionStateHandler(handler, readClientsWaitForJoinSignal, clientId);\n return connectedRaisedWhenCaughtUp\n ? new ConnectionStateCatchup(inputs, factory, deltaManager)\n : factory(inputs);\n}\n/**\n * Class that can be used as a base class for building IConnectionStateHandler adapters / pipeline.\n * It implements both ends of communication interfaces and passes data back and forward\n */\nclass ConnectionStateHandlerPassThrough {\n constructor(inputs, pimplFactory) {\n this.inputs = inputs;\n this.pimpl = pimplFactory(this);\n }\n // #region IConnectionStateHandler\n get connectionState() {\n return this.pimpl.connectionState;\n }\n get pendingClientId() {\n return this.pimpl.pendingClientId;\n }\n get clientId() {\n return this.pimpl.clientId;\n }\n containerSaved() {\n return this.pimpl.containerSaved();\n }\n dispose() {\n return this.pimpl.dispose();\n }\n initProtocol(protocol) {\n return this.pimpl.initProtocol(protocol);\n }\n receivedDisconnectEvent(reason) {\n return this.pimpl.receivedDisconnectEvent(reason);\n }\n establishingConnection(reason) {\n return this.pimpl.establishingConnection(reason);\n }\n cancelEstablishingConnection(reason) {\n return this.pimpl.cancelEstablishingConnection(reason);\n }\n receivedConnectEvent(details) {\n return this.pimpl.receivedConnectEvent(details);\n }\n // #endregion\n // #region IConnectionStateHandlerInputs\n get logger() {\n return this.inputs.logger;\n }\n get mc() {\n return this.inputs.mc;\n }\n connectionStateChanged(value, oldState, reason) {\n return this.inputs.connectionStateChanged(value, oldState, reason);\n }\n shouldClientJoinWrite() {\n return this.inputs.shouldClientJoinWrite();\n }\n get maxClientLeaveWaitTime() {\n return this.inputs.maxClientLeaveWaitTime;\n }\n logConnectionIssue(eventName, category, details) {\n return this.inputs.logConnectionIssue(eventName, category, details);\n }\n clientShouldHaveLeft(clientId) {\n return this.inputs.clientShouldHaveLeft(clientId);\n }\n onCriticalError(error) {\n return this.inputs.onCriticalError(error);\n }\n}\n/**\n * Implementation of IConnectionStateHandler pass-through adapter that waits for specific sequence number\n * before raising connected event\n */\nexport class ConnectionStateCatchup extends ConnectionStateHandlerPassThrough {\n constructor(inputs, pimplFactory, deltaManager) {\n super(inputs, pimplFactory);\n this.deltaManager = deltaManager;\n this.transitionToConnectedState = () => {\n // Defensive measure, we should always be in Connecting state when this is called.\n const state = this.pimpl.connectionState;\n assert(state === ConnectionState.Connected, 0x3e5 /* invariant broken */);\n assert(this._connectionState === ConnectionState.CatchingUp, 0x3e6 /* invariant broken */);\n this._connectionState = ConnectionState.Connected;\n this.inputs.connectionStateChanged(ConnectionState.Connected, ConnectionState.CatchingUp, {\n text: \"caught up\",\n });\n };\n this._connectionState = this.pimpl.connectionState;\n }\n get connectionState() {\n return this._connectionState;\n }\n connectionStateChanged(value, oldState, reason) {\n switch (value) {\n case ConnectionState.Connected: {\n assert(this._connectionState === ConnectionState.CatchingUp, 0x3e1 /* connectivity transitions */);\n // Create catch-up monitor here (not earlier), as we might get more exact info by now about how far\n // client is behind through join signal. This is only true if base layer uses signals (i.e. audience,\n // not quorum, including for \"rea\" connections) to make decisions about moving to \"connected\" state.\n // In addition to that, in its current form, doing this in ConnectionState.CatchingUp is dangerous as\n // we might get callback right away, and it will screw up state transition (as code outside of switch\n // statement will overwrite current state).\n assert(this.catchUpMonitor === undefined, 0x3eb /* catchUpMonitor should be gone */);\n this.catchUpMonitor = new CatchUpMonitor(this.deltaManager, this.transitionToConnectedState);\n return;\n }\n case ConnectionState.Disconnected: {\n this.catchUpMonitor?.dispose();\n this.catchUpMonitor = undefined;\n break;\n }\n // ConnectionState.EstablishingConnection state would be set when we start establishing connection\n // during container.connect() or reconnect because of an error.\n case ConnectionState.EstablishingConnection: {\n assert(this._connectionState === ConnectionState.Disconnected, 0x6d2 /* connectivity transition to establishing connection */);\n break;\n }\n case ConnectionState.CatchingUp: {\n assert(this._connectionState === ConnectionState.EstablishingConnection, 0x3e3 /* connectivity transitions */);\n break;\n }\n default:\n }\n this._connectionState = value;\n this.inputs.connectionStateChanged(value, oldState, reason);\n }\n}\n/**\n * In the lifetime of a container, the connection will likely disconnect and reconnect periodically.\n * This class ensures that any ops sent by this container instance on previous connection are either\n * sequenced or blocked by the server before emitting the new \"connected\" event and allowing runtime to resubmit ops.\n *\n * Each connection is assigned a clientId by the service, and the connection is book-ended by a Join and a Leave op\n * generated by the service. Due to the distributed nature of the Relay Service, in the case of reconnect we cannot\n * make any assumptions about ordering of operations between the old and new connections - i.e. new Join op could\n * be sequenced before old Leave op (and some acks from pending ops that were in flight when we disconnected).\n *\n * The job of this class is to encapsulate the transition period during reconnect, which is identified by\n * ConnectionState.CatchingUp. Specifically, before moving to Connected state with the new clientId, it ensures that:\n *\n * a. We process the Leave op for the previous clientId. This allows us to properly handle any acks from in-flight ops\n * that got sequenced with the old clientId (we'll recognize them as local ops). After the Leave op, any other\n * pending ops can safely be submitted with the new clientId without fear of duplication in the sequenced op stream.\n *\n * b. We process the Join op for the new clientId (identified when the underlying connection was first established),\n * indicating the service is ready to sequence ops sent with the new clientId.\n *\n * c. We process all ops known at the time the underlying connection was established (so we are \"caught up\")\n *\n * For (a) we give up waiting after some time (same timeout as server uses), and go ahead and transition to Connected.\n *\n * For (b) we log telemetry if it takes too long, but still only transition to Connected when the Join op/signal is\n * processed.\n *\n * For (c) this is optional behavior, controlled by the parameters of receivedConnectEvent\n */\nexport class ConnectionStateHandler {\n get connectionState() {\n return this._connectionState;\n }\n get clientId() {\n return this._clientId;\n }\n get pendingClientId() {\n return this._pendingClientId;\n }\n constructor(handler, readClientsWaitForJoinSignal, clientIdFromPausedSession) {\n this.handler = handler;\n this.readClientsWaitForJoinSignal = readClientsWaitForJoinSignal;\n this._connectionState = ConnectionState.Disconnected;\n this._clientId = clientIdFromPausedSession;\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const errorHandler = (error) => this.handler.onCriticalError(error);\n this.prevClientLeftTimer = new Timer(\n // Default is 5 min for which we are going to wait for its own \"leave\" message. This is same as\n // the max time on server after which leave op is sent.\n this.handler.maxClientLeaveWaitTime ?? 300000, () => {\n assert(this.connectionState !== ConnectionState.Connected, 0x2ac /* \"Connected when timeout waiting for leave from previous session fired!\" */);\n this.applyForConnectedState(\"timeout\");\n }, errorHandler);\n this.joinTimer = new Timer(0, // default value is not used - startjoinTimer() explicitly provides timeout\n () => {\n // I've observed timer firing within couple ms from disconnect event, looks like\n // queued timer callback is not cancelled if timer is cancelled while callback sits in the queue.\n if (this.connectionState !== ConnectionState.CatchingUp) {\n return;\n }\n const details = {\n protocolInitialized: this.protocol !== undefined,\n pendingClientId: this.pendingClientId,\n clientJoined: this.hasMember(this.pendingClientId),\n waitingForLeaveOp: this.waitingForLeaveOp,\n };\n this.handler.logConnectionIssue(this.connection?.mode === \"read\" ? \"NoJoinSignal\" : \"NoJoinOp\", // eventName\n \"error\", // category\n details);\n }, errorHandler);\n }\n startjoinTimer() {\n assert(!this.joinTimer.hasTimer, 0x234 /* \"has joinTimer\" */);\n assert(this.connection !== undefined, 0x4b3 /* have connection */);\n this.joinTimer.start(this.connection.mode === \"write\" ? JoinOpTimeoutMs : JoinSignalTimeoutMs);\n }\n stopjoinTimer() {\n assert(this.joinTimer.hasTimer, 0x235 /* \"no joinTimer\" */);\n this.joinTimer.clear();\n }\n get waitingForLeaveOp() {\n return this.prevClientLeftTimer.hasTimer;\n }\n dispose() {\n assert(!this.joinTimer.hasTimer, 0x2a5 /* \"join timer\" */);\n this.prevClientLeftTimer.clear();\n }\n containerSaved() {\n // If we were waiting for moving to Connected state, then only apply for state change. Since the container\n // is now saved and we don't have any ops to roundtrip, we can clear the timer and apply for connected state.\n if (this.waitingForLeaveOp) {\n this.prevClientLeftTimer.clear();\n this.applyForConnectedState(\"containerSaved\");\n }\n }\n receivedAddMemberEvent(clientId) {\n // This is the only one that requires the pending client ID\n if (clientId === this.pendingClientId) {\n if (this.joinTimer.hasTimer) {\n this.stopjoinTimer();\n }\n else if (this.shouldWaitForSelf()) {\n // timer has already fired, meaning it took too long to get join op/signal.\n // Record how long it actually took to recover.\n // This is generic event, as it by itself is not an error.\n // We also have a case where NoJoinOp happens during container boot (we do not report it as error in such case),\n // if this log statement happens after boot - we do not want to consider it error case.\n this.handler.logConnectionIssue(this.connection?.mode === \"read\" ? \"ReceivedJoinSignal\" : \"ReceivedJoinOp\", // eventName\n \"generic\");\n }\n // Start the event in case we are waiting for leave or timeout.\n if (this.waitingForLeaveOp) {\n this.waitEvent = PerformanceEvent.start(this.handler.logger, {\n eventName: \"WaitBeforeClientLeave\",\n details: JSON.stringify({\n waitOnClientId: this._clientId,\n hadOutstandingOps: this.handler.shouldClientJoinWrite(),\n }),\n });\n }\n this.applyForConnectedState(\"addMemberEvent\");\n }\n }\n applyForConnectedState(source) {\n assert(this.protocol !== undefined, 0x236 /* \"In all cases it should be already installed\" */);\n assert(!this.waitingForLeaveOp || this.hasMember(this.clientId), 0x2e2 /* \"Must only wait for leave message when clientId in quorum\" */);\n // Move to connected state only if:\n // 1. We have seen our own \"join\" op (i.e. for this.pendingClientId)\n // 2. There is no \"leave\" timer running, meaning this is our first connection or the previous client has left (via this.prevClientLeftTimer)\n if (this.pendingClientId !== this.clientId &&\n this.hasMember(this.pendingClientId) &&\n !this.waitingForLeaveOp) {\n this.waitEvent?.end({ source });\n this.setConnectionState(ConnectionState.Connected);\n }\n else {\n // Adding this event temporarily so that we can get help debugging if something goes wrong.\n // We may not see any ops due to being disconnected all that time - that's not an error!\n const error = source === \"timeout\" && this.connectionState !== ConnectionState.Disconnected;\n this.handler.logger.sendTelemetryEvent({\n eventName: \"connectedStateRejected\",\n category: error ? \"error\" : \"generic\",\n details: JSON.stringify({\n source,\n pendingClientId: this.pendingClientId,\n clientId: this.clientId,\n waitingForLeaveOp: this.waitingForLeaveOp,\n clientJoined: this.hasMember(this.pendingClientId),\n }),\n });\n }\n }\n receivedRemoveMemberEvent(clientId) {\n // If the client which has left was us, then finish the timer.\n if (this.clientId === clientId && this.waitingForLeaveOp) {\n this.prevClientLeftTimer.clear();\n this.applyForConnectedState(\"removeMemberEvent\");\n }\n }\n receivedDisconnectEvent(reason) {\n this.connection = undefined;\n this.setConnectionState(ConnectionState.Disconnected, reason);\n }\n cancelEstablishingConnection(reason) {\n assert(this._connectionState === ConnectionState.EstablishingConnection, 0x6d3 /* Connection state should be EstablishingConnection */);\n assert(this.connection === undefined, 0x6d4 /* No connection should be present */);\n const oldState = this._connectionState;\n this._connectionState = ConnectionState.Disconnected;\n this.handler.connectionStateChanged(ConnectionState.Disconnected, oldState, reason);\n }\n establishingConnection(reason) {\n const oldState = this._connectionState;\n this._connectionState = ConnectionState.EstablishingConnection;\n this.handler.connectionStateChanged(ConnectionState.EstablishingConnection, oldState, {\n text: `Establishing Connection due to ${reason.text}`,\n error: reason.error,\n });\n }\n /**\n * Tells if need to wait for \"self\" to show up in audience.\n * @returns - true if we should wait for \"self\" to appear in audience.\n * false is returned only for \"read\" connections, and only if this.readClientsWaitForJoinSignal is false.\n */\n shouldWaitForSelf() {\n assert(this.connection !== undefined, 0x4b4 /* all callers call here with active connection */);\n return this.connection.mode === \"write\" || this.readClientsWaitForJoinSignal;\n }\n /**\n * The \"connect\" event indicates the connection to the Relay Service is live.\n * However, some additional conditions must be met before we can fully transition to\n * \"Connected\" state. This function handles that interim period, known as \"Connecting\" state.\n * @param details - Connection details returned from the Relay Service\n * @param deltaManager - DeltaManager to be used for delaying Connected transition until caught up.\n * If it's undefined, then don't delay and transition to Connected as soon as Leave/Join op are accounted for\n */\n receivedConnectEvent(details) {\n this.connection = details;\n const oldState = this._connectionState;\n this._connectionState = ConnectionState.CatchingUp;\n // The following checks are wrong. They are only valid if user has write access to a file.\n // If user lost such access mid-session, user will not be able to get \"write\" connection.\n //\n // const writeConnection = details.mode === \"write\";\n // assert(!this.handler.shouldClientJoinWrite() || writeConnection,\n // 0x30a /* shouldClientJoinWrite should imply this is a writeConnection */);\n // assert(!this.waitingForLeaveOp || writeConnection,\n // 0x2a6 /* \"waitingForLeaveOp should imply writeConnection (we need to be ready to flush pending ops)\" */);\n // Stash the clientID to detect when transitioning from connecting (socket.io channel open) to connected\n // (have received the join message for the client ID)\n // This is especially important in the reconnect case. It's possible there could be outstanding\n // ops sent by this client, so we should keep the old client id until we see our own client's\n // join message. after we see the join message for our new connection with our new client id,\n // we know there can no longer be outstanding ops that we sent with the previous client id.\n this._pendingClientId = details.clientId;\n // IMPORTANT: Report telemetry after we set _pendingClientId, but before transitioning to Connected state\n this.handler.connectionStateChanged(ConnectionState.CatchingUp, oldState, details.reason);\n // Check if we need to wait for join op/signal, and if we need to wait for leave op from previous connection.\n // Pending clientId could have joined already (i.e. join op/signal already processed):\n // We are fetching ops from storage in parallel to connecting to Relay Service,\n // and given async processes, it's possible that we have already processed our own join message before\n // connection was fully established.\n if (!this.hasMember(this._pendingClientId) && this.shouldWaitForSelf()) {\n // We are waiting for our own join op / signal. When it is processed\n // we'll attempt to transition to Connected state via receivedAddMemberEvent() flow.\n this.startjoinTimer();\n }\n else if (!this.waitingForLeaveOp) {\n // We're not waiting for Join or Leave op (if read-only connection those don't even apply),\n // go ahead and declare the state to be Connected!\n // If we are waiting for Leave op still, do nothing for now, we will transition to Connected later.\n this.setConnectionState(ConnectionState.Connected);\n }\n // else - We are waiting for Leave op still, do nothing for now, we will transition to Connected later\n }\n setConnectionState(value, reason) {\n if (this.connectionState === value) {\n // Already in the desired state - exit early\n this.handler.logger.sendErrorEvent({ eventName: \"setConnectionStateSame\", value });\n return;\n }\n const oldState = this._connectionState;\n this._connectionState = value;\n // This is the only place in code that deals with quorum. The rest works with audience\n // The code below ensures that we do not send ops until we know that old \"write\" client's disconnect\n // produced (and sequenced) leave op\n const currentClientInQuorum = this._clientId !== undefined &&\n this.protocol?.quorum?.getMember(this._clientId) !== undefined;\n if (value === ConnectionState.Connected) {\n assert(oldState === ConnectionState.CatchingUp, 0x1d8 /* \"Should only transition from Connecting state\" */);\n // Mark our old client should have left in the quorum if it's still there\n if (currentClientInQuorum) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.handler.clientShouldHaveLeft(this._clientId);\n }\n this._clientId = this.pendingClientId;\n }\n else if (value === ConnectionState.Disconnected) {\n if (this.joinTimer.hasTimer) {\n this.stopjoinTimer();\n }\n // Only wait for \"leave\" message if the connected client exists in the quorum and had some non-acked ops\n // Also check if the timer is not already running as\n // we could receive \"Disconnected\" event multiple times without getting connected and in that case we\n // don't want to reset the timer as we still want to wait on original client which started this timer.\n if (currentClientInQuorum &&\n this.handler.shouldClientJoinWrite() &&\n !this.waitingForLeaveOp // same as !this.prevClientLeftTimer.hasTimer\n ) {\n this.prevClientLeftTimer.restart();\n }\n else {\n // Adding this event temporarily so that we can get help debugging if something goes wrong.\n this.handler.logger.sendTelemetryEvent({\n eventName: \"noWaitOnDisconnected\",\n details: JSON.stringify({\n clientId: this._clientId,\n inQuorum: currentClientInQuorum,\n waitingForLeaveOp: this.waitingForLeaveOp,\n hadOutstandingOps: this.handler.shouldClientJoinWrite(),\n }),\n });\n }\n }\n // Report transition\n this.handler.connectionStateChanged(this._connectionState, oldState, reason);\n // Clear pending state immediately to prepare for reconnect\n // Do it after calling connectionStateChanged() above, such that our telemetry contains pendingClientId on disconnect events\n // and we can pair attempts to connect with disconnects (that's the only ID we have if connection did not move far enough before being disconnected)\n if (value === ConnectionState.Disconnected) {\n this._pendingClientId = undefined;\n }\n }\n get membership() {\n // We could always use audience here.\n // This is true because Audience is a superset of quorum, i.e. when we filter Audience to \"write\" clients,\n // it is exactly the same as quorum! Please see asserts in Audience callbacks setup by initProtocol() enforcing that.\n return this.readClientsWaitForJoinSignal ? this.protocol?.audience : this.protocol?.quorum;\n }\n initProtocol(protocol) {\n this.protocol = protocol;\n this.membership?.on(\"addMember\", (clientId, details) => {\n // This is very important constrain. We rely on it when testing presence of \"self\" in Audience.\n // We do not want to move to \"connected\" state for \"write\" connections when JoinSignal shows up\n // for \"self\" - we want to move to \"connected\" state only when \"join\" op is received.\n assert(details.mode === \"read\" ||\n protocol.quorum.getMember(clientId) !== undefined, 0x4b5 /* Audience is subset of quorum */);\n this.receivedAddMemberEvent(clientId);\n });\n this.membership?.on(\"removeMember\", (clientId) => {\n assert(protocol.quorum.getMember(clientId) === undefined, 0x4b6 /* Audience is subset of quorum */);\n this.receivedRemoveMemberEvent(clientId);\n });\n /* There is a tiny tiny race possible, where these events happen in this order:\n 1. A connection is established (no \"cached\" mode is used, so it happens in parallel / faster than other steps)\n 2. Some other client produces a summary\n 3. We get \"lucky\" and load from that summary as our initial snapshot\n 4. ConnectionStateHandler.initProtocol is called, \"self\" is already in the quorum.\n We could avoid this sequence (and delete test case for it) if we move connection lower in Container.load()\n */\n if (this.hasMember(this.pendingClientId)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.receivedAddMemberEvent(this.pendingClientId);\n }\n assert(!this.waitingForLeaveOp, 0x99d /* leave timer can't be set as we have not had access to quorum */);\n // This check is required for scenario of loading container from pending state, and ensuring there is no way\n // old clientId is still in the quorum (very unlikely, but you never know)\n // if we have a clientId from a previous container we need to wait for its leave message\n // This mimicks check in setConnectionState()\n // Note that we are not consulting this.handler.shouldClientJoinWrite() here\n // It could produce wrong results for stashed ops were never sent to Loader yet, and if this check\n // makes determination only on that (and not uses \"dirty\" events), then it can produce wrong result.\n // In most cases it does not matter, as this client already left quorum. But in really unfortunate case,\n // we might wait even if we could avoid such wait.\n if (this._clientId !== undefined &&\n protocol.quorum?.getMember(this._clientId) !== undefined) {\n this.prevClientLeftTimer.restart();\n }\n }\n hasMember(clientId) {\n return this.membership?.getMember(clientId ?? \"\") !== undefined;\n }\n}\n//# sourceMappingURL=connectionStateHandler.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * {@inheritDoc @fluidframework/container-definitions#IContainerContext}\n */\nexport class ContainerContext {\n get clientId() {\n return this._getClientId();\n }\n /**\n * DISCLAIMER: this id is only for telemetry purposes. Not suitable for any other usages.\n */\n get id() {\n return this._getContainerDiagnosticId() ?? \"\";\n }\n /**\n * When true, ops are free to flow\n * When false, ops should be kept as pending or rejected\n */\n get connected() {\n return this._getConnected();\n }\n constructor(options, scope, baseSnapshot, _version, deltaManager, storage, quorum, audience, loader, submitFn, submitSummaryFn, \n /**\n * @returns clientSequenceNumber of last message in a batch\n */\n submitBatchFn, \n /**\n * `unknown` should be removed once `@alpha` tag is removed from IContainerContext\n * @see {@link https://dev.azure.com/fluidframework/internal/_workitems/edit/7462}\n * Any changes to submitSignalFn `content` should be checked internally by temporarily changing IContainerContext and removing all `unknown`s\n */\n submitSignalFn, disposeFn, closeFn, updateDirtyContainerState, getAbsoluteUrl, _getContainerDiagnosticId, _getClientId, _getAttachState, _getConnected, clientDetails, existing, taggedLogger, pendingLocalState, snapshotWithContents) {\n this.options = options;\n this.scope = scope;\n this.baseSnapshot = baseSnapshot;\n this._version = _version;\n this.deltaManager = deltaManager;\n this.storage = storage;\n this.quorum = quorum;\n this.audience = audience;\n this.loader = loader;\n this.submitFn = submitFn;\n this.submitSummaryFn = submitSummaryFn;\n this.submitBatchFn = submitBatchFn;\n this.submitSignalFn = submitSignalFn;\n this.disposeFn = disposeFn;\n this.closeFn = closeFn;\n this.updateDirtyContainerState = updateDirtyContainerState;\n this.getAbsoluteUrl = getAbsoluteUrl;\n this._getContainerDiagnosticId = _getContainerDiagnosticId;\n this._getClientId = _getClientId;\n this._getAttachState = _getAttachState;\n this._getConnected = _getConnected;\n this.clientDetails = clientDetails;\n this.existing = existing;\n this.taggedLogger = taggedLogger;\n this.pendingLocalState = pendingLocalState;\n this.snapshotWithContents = snapshotWithContents;\n this.supportedFeatures = new Map([\n /**\n * This version of the loader accepts `referenceSequenceNumber`, provided by the container runtime,\n * as a parameter to the `submitBatchFn` and `submitSummaryFn` functions.\n * This is then used to set the reference sequence numbers of the submitted ops in the DeltaManager.\n */\n [\"referenceSequenceNumbers\", true],\n ]);\n }\n getLoadedFromVersion() {\n return this._version;\n }\n get attachState() {\n return this._getAttachState();\n }\n}\n//# sourceMappingURL=containerContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { LoggingError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Error indicating an API is being used improperly resulting in an invalid operation.\n * @internal\n */\nexport class UsageError extends LoggingError {\n constructor(message) {\n super(message, { usageError: true });\n this.errorType = DriverErrorTypes.usageError;\n this.canRetry = false;\n }\n}\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A storage service wrapper whose sole job is to intercept calls to uploadSummaryWithContext and ensure they include\n * the protocol summary, using the provided callback to add it if necessary.\n */\nexport class ProtocolTreeStorageService {\n /**\n *\n * @param internalStorageService - Document storage service responsible to make api calls to the storage.\n * @param addProtocolSummaryIfMissing - Function to add protocol summary tree to the summary. Used in scenarios where single-commit summaries are used.\n * @param shouldSummarizeProtocolTree - Callback function to learn about the service preference on whether single-commit summaries are enabled.\n */\n constructor(internalStorageService, addProtocolSummaryIfMissing, shouldSummarizeProtocolTree) {\n this.internalStorageService = internalStorageService;\n this.addProtocolSummaryIfMissing = addProtocolSummaryIfMissing;\n this.shouldSummarizeProtocolTree = shouldSummarizeProtocolTree;\n this.getSnapshotTree = internalStorageService.getSnapshotTree.bind(internalStorageService);\n this.getSnapshot = internalStorageService.getSnapshot?.bind(internalStorageService);\n this.getVersions = internalStorageService.getVersions.bind(internalStorageService);\n this.createBlob = internalStorageService.createBlob.bind(internalStorageService);\n this.readBlob = internalStorageService.readBlob.bind(internalStorageService);\n this.downloadSummary = internalStorageService.downloadSummary.bind(internalStorageService);\n this.dispose = internalStorageService.dispose.bind(internalStorageService);\n }\n get policies() {\n return this.internalStorageService.policies;\n }\n get disposed() {\n return this.internalStorageService.disposed;\n }\n async uploadSummaryWithContext(summary, context) {\n return this.shouldSummarizeProtocolTree()\n ? this.internalStorageService.uploadSummaryWithContext(this.addProtocolSummaryIfMissing(summary), context)\n : this.internalStorageService.uploadSummaryWithContext(summary, context);\n }\n}\n//# sourceMappingURL=protocolTreeDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { runWithRetry } from \"@fluidframework/driver-utils/internal\";\nimport { GenericError, UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nexport class RetriableDocumentStorageService {\n constructor(internalStorageServiceP, logger) {\n this.internalStorageServiceP = internalStorageServiceP;\n this.logger = logger;\n this._disposed = false;\n this.internalStorageServiceP\n .then((s) => (this.internalStorageService = s))\n .catch(() => { });\n }\n get policies() {\n if (this.internalStorageService) {\n return this.internalStorageService.policies;\n }\n throw new Error(\"storage service not yet instantiated\");\n }\n get disposed() {\n return this._disposed;\n }\n dispose() {\n this._disposed = true;\n }\n async getSnapshotTree(version, scenarioName) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.getSnapshotTree(version, scenarioName)), \"storage_getSnapshotTree\");\n }\n async getSnapshot(snapshotFetchOptions) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => {\n if (s.getSnapshot !== undefined) {\n return s.getSnapshot(snapshotFetchOptions);\n }\n throw new UsageError(\"getSnapshot api should exist on internal storage in RetriableDocStorageService class\");\n }), \"storage_getSnapshot\");\n }\n async readBlob(id) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.readBlob(id)), \"storage_readBlob\");\n }\n async getVersions(\n // API used below returns null\n // eslint-disable-next-line @rushstack/no-new-null\n versionId, count, scenarioName, fetchSource) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.getVersions(versionId, count, scenarioName, fetchSource)), \"storage_getVersions\");\n }\n async uploadSummaryWithContext(summary, context) {\n // Not using retry loop here. Couple reasons:\n // 1. If client lost connectivity, then retry loop will result in uploading stale summary\n // by stale summarizer after connectivity comes back. It will cause failures for this client and for\n // real (new) summarizer. This problem in particular should be solved in future by supplying abort handle\n // on all APIs and caller (ContainerRuntime.submitSummary) aborting call on loss of connectivity\n // 2. Similar, if we get 429 with retryAfter = 10 minutes, it's likely not the right call to retry summary\n // upload in 10 minutes - it's better to keep processing ops and retry later. Though caller needs to take\n // retryAfter into account!\n // But retry loop is required for creation flow (Container.attach)\n assert((context.referenceSequenceNumber === 0) === (context.ackHandle === undefined), 0x251 /* \"creation summary has to have seq=0 && handle === undefined\" */);\n if (context.referenceSequenceNumber !== 0) {\n return this.internalStorageServiceP.then(async (s) => s.uploadSummaryWithContext(summary, context));\n }\n // Creation flow with attachment blobs - need to do retries!\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.uploadSummaryWithContext(summary, context)), \"storage_uploadSummaryWithContext\");\n }\n async downloadSummary(handle) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.downloadSummary(handle)), \"storage_downloadSummary\");\n }\n async createBlob(file) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.createBlob(file)), \"storage_createBlob\");\n }\n checkStorageDisposed(callName, error) {\n if (this._disposed) {\n this.logger.sendTelemetryEvent({\n eventName: `${callName}_abortedStorageDisposed`,\n fetchCallName: callName, // fetchCallName matches logs in runWithRetry.ts\n }, error);\n // pre-0.58 error message: storageServiceDisposedCannotRetry\n throw new GenericError(\"Storage Service is disposed. Cannot retry\", {\n canRetry: false,\n });\n }\n return;\n }\n async runWithRetry(api, callName) {\n return runWithRetry(api, callName, this.logger, {\n onRetry: (_delayInMs, error) => this.checkStorageDisposed(callName, error),\n });\n }\n}\n//# sourceMappingURL=retriableDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { isInstanceOfISnapshot, UsageError } from \"@fluidframework/driver-utils/internal\";\nimport { ProtocolTreeStorageService } from \"./protocolTreeDocumentStorageService.js\";\nimport { RetriableDocumentStorageService } from \"./retriableDocumentStorageService.js\";\nimport { convertSnapshotInfoToSnapshot } from \"./utils.js\";\n/**\n * This class wraps the actual storage and make sure no wrong apis are called according to\n * container attach state.\n */\nexport class ContainerStorageAdapter {\n /**\n * Whether the adapter will enforce sending combined summary trees.\n */\n get summarizeProtocolTree() {\n return this._summarizeProtocolTree === true;\n }\n /**\n * Any loading group id (virtualized) snapshot download from storage will be stored here.\n */\n get loadedGroupIdSnapshots() {\n return this._loadedGroupIdSnapshots;\n }\n /**\n * An adapter that ensures we're using detachedBlobStorage up until we connect to a real service, and then\n * after connecting to a real service augments it with retry and combined summary tree enforcement.\n * @param detachedBlobStorage - The detached blob storage to use up until we connect to a real service\n * @param logger - Telemetry logger\n * @param loadingGroupIdSnapshotsFromPendingState - in offline mode, any loading group snapshots we've downloaded from the service that were stored in the pending state\n * @param addProtocolSummaryIfMissing - a callback to permit the container to inspect the summary we're about to\n * upload, and fix it up with a protocol tree if needed\n * @param enableSummarizeProtocolTree - Enable uploading a protocol summary. Note: preference is given to service policy's \"summarizeProtocolTree\" before this value.\n */\n constructor(\n // eslint-disable-next-line import/no-deprecated\n detachedBlobStorage, logger, \n /**\n * ArrayBufferLikes or utf8 encoded strings, containing blobs from a snapshot\n */\n blobContents = {}, loadingGroupIdSnapshotsFromPendingState, addProtocolSummaryIfMissing, enableSummarizeProtocolTree) {\n this.logger = logger;\n this.blobContents = blobContents;\n this.loadingGroupIdSnapshotsFromPendingState = loadingGroupIdSnapshotsFromPendingState;\n this.addProtocolSummaryIfMissing = addProtocolSummaryIfMissing;\n this.enableSummarizeProtocolTree = enableSummarizeProtocolTree;\n this._loadedGroupIdSnapshots = {};\n this.disposed = false;\n this._storageService = new BlobOnlyStorage(detachedBlobStorage, logger);\n }\n dispose(error) {\n this._storageService?.dispose?.(error);\n this.disposed = true;\n }\n connectToService(service) {\n if (!(this._storageService instanceof BlobOnlyStorage)) {\n return;\n }\n const storageServiceP = service.connectToStorage();\n const retriableStorage = (this._storageService = new RetriableDocumentStorageService(storageServiceP, this.logger));\n // A storage service wrapper which intercept calls to uploadSummaryWithContext and ensure they include\n // the protocol summary, provided single-commit summary is enabled.\n this._storageService = new ProtocolTreeStorageService(retriableStorage, (...props) => {\n this.logger.sendTelemetryEvent({ eventName: \"summarizeProtocolTreeEnabled\" });\n return this.addProtocolSummaryIfMissing(...props);\n }, \n // A callback to ensure we fetch the most updated value of service.policies.summarizeProtocolTree, which could be set\n // based on the response received from the service after connection is established.\n () => {\n // Determine whether or not container should upload the protocol summary along with the summary.\n // This is determined based on what value is set for serve policy's summariProtocolTree value or the enableSummarizeProtocolTree\n // retrievd from the loader options or monitoring context config.\n const shouldSummarizeProtocolTree = service.policies?.summarizeProtocolTree ?? this.enableSummarizeProtocolTree ?? false;\n if (this._summarizeProtocolTree !== shouldSummarizeProtocolTree) {\n this.logger.sendTelemetryEvent({\n eventName: \"isSummarizeProtocolTreeEnabled\",\n details: { value: shouldSummarizeProtocolTree },\n });\n }\n this._summarizeProtocolTree = shouldSummarizeProtocolTree;\n return this._summarizeProtocolTree;\n });\n }\n loadSnapshotFromSnapshotBlobs(snapshotBlobs) {\n for (const [id, value] of Object.entries(snapshotBlobs)) {\n this.blobContents[id] = value;\n }\n }\n clearPendingState() {\n this.loadingGroupIdSnapshotsFromPendingState = undefined;\n }\n get policies() {\n // back-compat 0.40 containerRuntime requests policies even in detached container if storage is present\n // and storage is always present in >=0.41.\n try {\n return this._storageService.policies;\n }\n catch {\n // No-op\n }\n return undefined;\n }\n async getSnapshotTree(version, scenarioName) {\n return this._storageService.getSnapshotTree(version, scenarioName);\n }\n async getSnapshot(snapshotFetchOptions) {\n let snapshot;\n if (this.loadingGroupIdSnapshotsFromPendingState !== undefined &&\n snapshotFetchOptions?.loadingGroupIds?.[0] !== undefined) {\n const localSnapshot = this.loadingGroupIdSnapshotsFromPendingState[snapshotFetchOptions.loadingGroupIds[0]];\n assert(localSnapshot !== undefined, 0x970 /* Local snapshot must be present */);\n snapshot = convertSnapshotInfoToSnapshot(localSnapshot, localSnapshot.snapshotSequenceNumber);\n }\n else {\n if (this._storageService.getSnapshot === undefined) {\n throw new UsageError(\"getSnapshot api should exist in internal storage in ContainerStorageAdapter\");\n }\n snapshot = await this._storageService.getSnapshot(snapshotFetchOptions);\n }\n // Track the latest snapshot for each loading group id\n const loadingGroupIds = snapshotFetchOptions?.loadingGroupIds;\n assert(snapshot.sequenceNumber !== undefined, 0x971 /* Snapshot must have sequence number */);\n if (loadingGroupIds !== undefined) {\n for (const loadingGroupId of loadingGroupIds) {\n // Do we actually want to update the stored snapshot?\n // What if the incoming snapshot is way newer than the stored snapshot?\n // We only want to update the stored snapshot if the incoming snapshot is newer (stored sequence number < incoming sequence number)\n const storedSeqNum = this._loadedGroupIdSnapshots[loadingGroupId]?.sequenceNumber ?? -1;\n if (storedSeqNum < snapshot.sequenceNumber) {\n this._loadedGroupIdSnapshots[loadingGroupId] = snapshot;\n }\n }\n }\n return snapshot;\n }\n async readBlob(id) {\n const maybeBlob = this.blobContents[id];\n if (maybeBlob !== undefined) {\n if (typeof maybeBlob === \"string\") {\n const blob = stringToBuffer(maybeBlob, \"utf8\");\n return blob;\n }\n return maybeBlob;\n }\n return this._storageService.readBlob(id);\n }\n async getVersions(\n // API used below uses null\n // eslint-disable-next-line @rushstack/no-new-null\n versionId, count, scenarioName, fetchSource) {\n return this._storageService.getVersions(versionId, count, scenarioName, fetchSource);\n }\n async uploadSummaryWithContext(summary, context) {\n return this._storageService.uploadSummaryWithContext(summary, context);\n }\n async downloadSummary(handle) {\n return this._storageService.downloadSummary(handle);\n }\n async createBlob(file) {\n return this._storageService.createBlob(file);\n }\n}\n/**\n * Storage which only supports createBlob() and readBlob(). This is used with IDetachedBlobStorage to support\n * blobs in detached containers.\n */\nclass BlobOnlyStorage {\n constructor(\n // eslint-disable-next-line import/no-deprecated\n detachedStorage, logger) {\n this.detachedStorage = detachedStorage;\n this.logger = logger;\n /* eslint-disable @typescript-eslint/unbound-method */\n // eslint-disable-next-line @rushstack/no-new-null\n this.getSnapshotTree = this.notCalled;\n this.getSnapshot = this.notCalled;\n this.getVersions = this.notCalled;\n this.write = this.notCalled;\n this.uploadSummaryWithContext = this.notCalled;\n this.downloadSummary = this.notCalled;\n }\n async createBlob(content) {\n return this.verifyStorage().createBlob(content);\n }\n async readBlob(blobId) {\n return this.verifyStorage().readBlob(blobId);\n }\n // eslint-disable-next-line import/no-deprecated\n verifyStorage() {\n if (this.detachedStorage === undefined) {\n throw new UsageError(\"Real storage calls not allowed in Unattached container\");\n }\n return this.detachedStorage;\n }\n get policies() {\n return this.notCalled();\n }\n /* eslint-enable @typescript-eslint/unbound-method */\n notCalled() {\n this.verifyStorage();\n try {\n // some browsers may not populate stack unless exception is thrown\n throw new Error(\"BlobOnlyStorage not implemented method used\");\n }\n catch (error) {\n this.logger.sendTelemetryEvent({ eventName: \"BlobOnlyStorageWrongCall\" }, error);\n throw error;\n }\n }\n}\n// runtime will write a tree to the summary containing \"attachment\" type entries\n// which reference attachment blobs by ID, along with a blob containing the blob redirect table.\n// However, some drivers do not support the \"attachment\" type and will convert them to \"blob\" type\n// entries. We want to avoid saving these to reduce the size of stashed change blobs, but we\n// need to make sure the blob redirect table is saved.\nconst blobsTreeName = \".blobs\";\nconst redirectTableBlobName = \".redirectTable\";\n/**\n * Get blob contents of a snapshot tree from storage (or, ideally, cache)\n */\nexport async function getBlobContentsFromTree(snapshot, storage) {\n const blobs = {};\n if (isInstanceOfISnapshot(snapshot)) {\n const blobContents = snapshot.blobContents;\n for (const [id, content] of blobContents.entries()) {\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(content, \"utf8\");\n }\n }\n else {\n await getBlobContentsFromTreeCore(snapshot, blobs, storage);\n }\n return blobs;\n}\nasync function getBlobContentsFromTreeCore(tree, blobs, storage, root = true) {\n const treePs = [];\n for (const [key, subTree] of Object.entries(tree.trees)) {\n if (root && key === blobsTreeName) {\n treePs.push(getBlobManagerTreeFromTree(subTree, blobs, storage));\n }\n else {\n treePs.push(getBlobContentsFromTreeCore(subTree, blobs, storage, false));\n }\n }\n for (const id of Object.values(tree.blobs)) {\n const blob = await storage.readBlob(id);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n }\n return Promise.all(treePs);\n}\n// save redirect table from .blobs tree but nothing else\nasync function getBlobManagerTreeFromTree(tree, blobs, storage) {\n const id = tree.blobs[redirectTableBlobName];\n assert(id !== undefined, 0x9ce /* id is undefined in getBlobManagerTreeFromTree */);\n const blob = await storage.readBlob(id);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n}\n/**\n * Extract blob contents from a snapshot tree with blob contents\n */\nexport function getBlobContentsFromTreeWithBlobContents(snapshot) {\n const blobs = {};\n getBlobContentsFromTreeWithBlobContentsCore(snapshot, blobs);\n return blobs;\n}\nfunction getBlobContentsFromTreeWithBlobContentsCore(tree, blobs, root = true) {\n for (const [key, subTree] of Object.entries(tree.trees)) {\n if (root && key === blobsTreeName) {\n getBlobManagerTreeFromTreeWithBlobContents(subTree, blobs);\n }\n else {\n getBlobContentsFromTreeWithBlobContentsCore(subTree, blobs, false);\n }\n }\n for (const id of Object.values(tree.blobs)) {\n const blob = tree.blobsContents?.[id];\n assert(blob !== undefined, 0x2ec /* \"Blob must be present in blobsContents\" */);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n }\n}\n// save redirect table from .blobs tree but nothing else\nfunction getBlobManagerTreeFromTreeWithBlobContents(tree, blobs) {\n const id = tree.blobs[redirectTableBlobName];\n assert(id !== undefined, 0x9cf /* id is undefined in getBlobManagerTreeFromTreeWithBlobContents */);\n const blob = tree.blobsContents?.[id];\n assert(blob !== undefined, 0x70f /* Blob must be present in blobsContents */);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n}\n//# sourceMappingURL=containerStorageAdapter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ContainerErrorTypes } from \"@fluidframework/container-definitions/internal\";\nimport { LoggingError, wrapErrorAndLog, } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Warning emitted when requests to storage are being throttled.\n */\nexport class ThrottlingWarning extends LoggingError {\n constructor(message, retryAfterSeconds, props) {\n super(message, props);\n this.retryAfterSeconds = retryAfterSeconds;\n /**\n * {@inheritDoc @fluidframework/telemetry-utils#IFluidErrorBase.errorType}\n */\n this.errorType = ContainerErrorTypes.throttlingError;\n }\n /**\n * Wrap the given error as a ThrottlingWarning\n * Only preserves the error message, and applies the given retry after to the new warning object\n */\n static wrap(error, retryAfterSeconds, logger) {\n const newErrorFn = (errMsg) => new ThrottlingWarning(errMsg, retryAfterSeconds);\n return wrapErrorAndLog(error, newErrorFn, logger);\n }\n}\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes, MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { MessageType2, NonRetryableError, isRuntimeMessage, } from \"@fluidframework/driver-utils/internal\";\nimport { DataCorruptionError, DataProcessingError, UsageError, extractSafePropertiesFromMessage, isFluidError, normalizeError, safeRaiseEvent, EventEmitterWithErrorHandling, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { DeltaQueue } from \"./deltaQueue.js\";\nimport { ThrottlingWarning } from \"./error.js\";\n/**\n * Determines if message was sent by client, not service\n */\nfunction isClientMessage(message) {\n if (isRuntimeMessage(message)) {\n return true;\n }\n switch (message.type) {\n case MessageType.Propose:\n case MessageType.Reject:\n case MessageType.NoOp:\n case MessageType2.Accept:\n case MessageType.Summarize: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n/**\n * Like assert, but logs only if the condition is false, rather than throwing\n * @param condition - The condition to attest too\n * @param logger - The logger to log with\n * @param event - The string or event to log\n * @returns The outcome of the condition\n */\nfunction logIfFalse(condition, logger, event) {\n if (condition) {\n return true;\n }\n const newEvent = typeof event === \"string\"\n ? { eventName: event, category: \"error\" }\n : { category: \"error\", ...event };\n logger.send(newEvent);\n return false;\n}\n/**\n * Manages the flow of both inbound and outbound messages. This class ensures that shared objects receive delta\n * messages in order regardless of possible network conditions or timings causing out of order delivery.\n */\nexport class DeltaManager extends EventEmitterWithErrorHandling {\n get active() {\n return this._active();\n }\n get disposed() {\n return this._closed;\n }\n get IDeltaSender() {\n return this;\n }\n get inbound() {\n return this._inbound;\n }\n get inboundSignal() {\n return this._inboundSignal;\n }\n get initialSequenceNumber() {\n return this.initSequenceNumber;\n }\n get lastSequenceNumber() {\n return this.lastProcessedSequenceNumber;\n }\n get lastMessage() {\n return this.lastProcessedMessage;\n }\n get lastKnownSeqNumber() {\n return this.lastObservedSeqNumber;\n }\n get minimumSequenceNumber() {\n return this.minSequenceNumber;\n }\n /**\n * Tells if current connection has checkpoint information.\n * I.e. we know how far behind the client was at the time of establishing connection\n */\n get hasCheckpointSequenceNumber() {\n // Valid to be called only if we have active connection.\n assert(this.connectionManager.connected, 0x0df /* \"Missing active connection\" */);\n return this._checkpointSequenceNumber !== undefined;\n }\n // Forwarding connection manager properties / IDeltaManager implementation\n get maxMessageSize() {\n return this.connectionManager.maxMessageSize;\n }\n get version() {\n return this.connectionManager.version;\n }\n get serviceConfiguration() {\n return this.connectionManager.serviceConfiguration;\n }\n get outbound() {\n return this.connectionManager.outbound;\n }\n get readOnlyInfo() {\n return this.connectionManager.readOnlyInfo;\n }\n get clientDetails() {\n return this.connectionManager.clientDetails;\n }\n submit(type, contents, batch = false, metadata, compression, referenceSequenceNumber) {\n // Back-compat ADO:3455\n const backCompatRefSeqNum = referenceSequenceNumber ?? this.lastProcessedSequenceNumber;\n const messagePartial = {\n contents,\n metadata,\n referenceSequenceNumber: backCompatRefSeqNum,\n type,\n compression,\n };\n if (!batch) {\n this.flush();\n }\n const message = this.connectionManager.prepareMessageToSend(messagePartial);\n if (message === undefined) {\n return -1;\n }\n assert(isClientMessage(message), 0x419 /* client sends non-client message */);\n if (contents !== undefined) {\n this.opsSize += contents.length;\n }\n this.messageBuffer.push(message);\n if (message.type === MessageType.NoOp) {\n this.noOpCount++;\n }\n this.emit(\"submitOp\", message);\n if (!batch) {\n this.flush();\n }\n return message.clientSequenceNumber;\n }\n submitSignal(content, targetClientId) {\n return this.connectionManager.submitSignal(content, targetClientId);\n }\n flush() {\n const batch = this.messageBuffer;\n if (batch.length === 0) {\n return;\n }\n this.messageBuffer = [];\n // The prepareFlush event allows listeners to append metadata to the batch prior to submission.\n this.emit(\"prepareSend\", batch);\n if (batch.length === 1) {\n assert(\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n batch[0].metadata?.batch === undefined, 0x3c9 /* no batch markup on single message */);\n }\n else {\n assert(\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n batch[0].metadata?.batch === true, 0x3ca /* no start batch markup */);\n assert(\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n batch[batch.length - 1].metadata?.batch === false, 0x3cb /* no end batch markup */);\n }\n this.connectionManager.sendMessages(batch);\n assert(this.messageBuffer.length === 0, 0x3cc /* reentrancy */);\n }\n get connectionProps() {\n return {\n sequenceNumber: this.lastSequenceNumber,\n opsSize: this.opsSize > 0 ? this.opsSize : undefined,\n deltaManagerState: this._disposed ? \"disposed\" : this._closed ? \"closed\" : \"open\",\n ...this.connectionManager.connectionProps,\n };\n }\n /**\n * Log error event with a bunch of internal to DeltaManager information about state of op processing\n * Used to diagnose connectivity issues related to op processing (i.e. cases where for some reason\n * we stop processing ops that results in no processing join op and thus moving to connected state)\n * @param event - Event to log.\n */\n logConnectionIssue(event) {\n assert(this.connectionManager.connected, 0x238 /* \"called only in connected state\" */);\n const pendingSorted = this.pending.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n this.logger.sendTelemetryEvent({\n ...event,\n // This directly tells us if fetching ops is in flight, and thus likely the reason of\n // stalled op processing\n fetchReason: this.fetchReason,\n // A bunch of useful sequence numbers to understand if we are holding some ops from processing\n lastQueuedSequenceNumber: this.lastQueuedSequenceNumber, // last sequential op\n lastProcessedSequenceNumber: this.lastProcessedSequenceNumber, // same as above, but after processing\n lastObserved: this.lastObservedSeqNumber, // last sequence we ever saw; may have gaps with above.\n // connection info\n ...this.connectionManager.connectionVerboseProps,\n pendingOps: this.pending.length, // Do we have any pending ops?\n pendingFirst: pendingSorted[0]?.sequenceNumber, // is the first pending op the one that we are missing?\n haveHandler: this.handler !== undefined, // do we have handler installed?\n inboundLength: this.inbound.length,\n inboundPaused: this.inbound.paused,\n });\n }\n constructor(serviceProvider, logger, _active, createConnectionManager) {\n super((name, error) => {\n this.logger.sendErrorEvent({\n eventName: \"DeltaManagerEventHandlerException\",\n name: typeof name === \"string\" ? name : undefined,\n }, error);\n this.close(normalizeError(error));\n });\n this.serviceProvider = serviceProvider;\n this.logger = logger;\n this._active = _active;\n this.pending = [];\n // A boolean used to assert that ops are not being sent while processing another op.\n this.currentlyProcessingOps = false;\n // The minimum sequence number and last sequence number received from the server\n this.minSequenceNumber = 0;\n // There are three numbers we track\n // * lastQueuedSequenceNumber is the last queued sequence number. If there are gaps in seq numbers, then this number\n // is not updated until we cover that gap, so it increases each time by 1.\n // * lastObservedSeqNumber is an estimation of last known sequence number for container in storage. It's initially\n // populated at web socket connection time (if storage provides that info) and is updated once ops shows up.\n // It's never less than lastQueuedSequenceNumber\n // * lastProcessedSequenceNumber - last processed sequence number\n this.lastQueuedSequenceNumber = 0;\n this.lastObservedSeqNumber = 0;\n this.lastProcessedSequenceNumber = 0;\n /**\n * Count the number of noops sent by the client which may not be acked\n */\n this.noOpCount = 0;\n /**\n * Track clientSequenceNumber of the last op\n */\n this.lastClientSequenceNumber = 0;\n /**\n * Track down the ops size.\n */\n this.opsSize = 0;\n // The sequence number we initially loaded from\n // In case of reading from a snapshot or pending state, its value will be equal to\n // the last message that got serialized.\n this.initSequenceNumber = 0;\n this._closed = false;\n this._disposed = false;\n this.throttlingIdSet = new Set();\n this.timeTillThrottling = 0;\n this.closeAbortController = new AbortController();\n this.deltaStorageDelayId = uuid();\n this.deltaStreamDelayId = uuid();\n this.messageBuffer = [];\n const props = {\n incomingOpHandler: (messages, reason) => {\n try {\n this.enqueueMessages(messages, reason);\n }\n catch (error) {\n this.logger.sendErrorEvent({ eventName: \"EnqueueMessages_Exception\" }, error);\n this.close(normalizeError(error));\n }\n },\n signalHandler: (signals) => {\n for (const signal of signals) {\n this._inboundSignal.push(signal);\n }\n },\n reconnectionDelayHandler: (delayMs, error) => this.emitDelayInfo(this.deltaStreamDelayId, delayMs, error),\n closeHandler: (error) => this.close(error),\n disconnectHandler: (reason) => this.disconnectHandler(reason),\n connectHandler: (connection) => this.connectHandler(connection),\n pongHandler: (latency) => this.emit(\"pong\", latency),\n readonlyChangeHandler: (readonly, readonlyConnectionReason) => {\n safeRaiseEvent(this, this.logger, \"readonly\", readonly, readonlyConnectionReason);\n },\n establishConnectionHandler: (reason) => this.establishingConnection(reason),\n cancelConnectionHandler: (reason) => this.cancelEstablishingConnection(reason),\n };\n this.connectionManager = createConnectionManager(props);\n this._inbound = new DeltaQueue((op) => {\n this.processInboundMessage(op);\n });\n this._inbound.on(\"error\", (error) => {\n this.close(DataProcessingError.wrapIfUnrecognized(error, \"deltaManagerInboundErrorHandler\", this.lastMessage));\n });\n // Inbound signal queue\n this._inboundSignal = new DeltaQueue((message) => {\n if (this.handler === undefined) {\n throw new Error(\"Attempted to process an inbound signal without a handler attached\");\n }\n this.handler.processSignal({\n clientId: message.clientId,\n content: JSON.parse(message.content),\n });\n });\n this._inboundSignal.on(\"error\", (error) => {\n this.close(normalizeError(error));\n });\n // Initially, all queues are created paused.\n // - outbound is flipped back and forth in setupNewSuccessfulConnection / disconnectFromDeltaStream\n // - inbound & inboundSignal are resumed in attachOpHandler() when we have handler setup\n }\n cancelEstablishingConnection(reason) {\n this.emit(\"cancelEstablishingConnection\", reason);\n }\n establishingConnection(reason) {\n this.emit(\"establishingConnection\", reason);\n }\n connectHandler(connection) {\n this.refreshDelayInfo(this.deltaStreamDelayId);\n const props = this.connectionManager.connectionVerboseProps;\n props.connectionLastQueuedSequenceNumber = this.lastQueuedSequenceNumber;\n props.connectionLastObservedSeqNumber = this.lastObservedSeqNumber;\n const checkpointSequenceNumber = connection.checkpointSequenceNumber;\n this._checkpointSequenceNumber = checkpointSequenceNumber;\n if (checkpointSequenceNumber !== undefined) {\n this.updateLatestKnownOpSeqNumber(checkpointSequenceNumber);\n }\n // We cancel all ops on lost of connectivity, and rely on DDSes to resubmit them.\n // Semantics are not well defined for batches (and they are broken right now on disconnects anyway),\n // but it's safe to assume (until better design is put into place) that batches should not exist\n // across multiple connections. Right now we assume runtime will not submit any ops in disconnected\n // state. As requirements change, so should these checks.\n assert(this.messageBuffer.length === 0, 0x0e9 /* \"messageBuffer is not empty on new connection\" */);\n this.opsSize = 0;\n this.noOpCount = 0;\n this.emit(\"connect\", connection, checkpointSequenceNumber === undefined\n ? undefined\n : this.lastObservedSeqNumber - this.lastSequenceNumber);\n // If we got some initial ops, then we know the gap and call above fetched ops to fill it.\n // Same is true for \"write\" mode even if we have no ops - we will get \"join\" own op very very soon.\n // However if we are connecting as view-only, then there is no good signal to realize if client is behind.\n // Thus we have to hit storage to see if any ops are there.\n if (checkpointSequenceNumber !== undefined) {\n // We know how far we are behind (roughly). If it's non-zero gap, fetch ops right away.\n if (checkpointSequenceNumber > this.lastQueuedSequenceNumber) {\n this.fetchMissingDeltas(\"AfterConnection\");\n }\n // we do not know the gap, and we will not learn about it if socket is quite - have to ask.\n }\n else if (connection.mode === \"read\") {\n this.fetchMissingDeltas(\"AfterReadConnection\");\n }\n }\n /**\n * Sets the sequence number from which inbound messages should be returned\n * @param snapshotSequenceNumber - The sequence number of the snapshot at which the document loaded from.\n * @param lastProcessedSequenceNumber - The last processed sequence number, for offline, it should be greater than the sequence number.\n * Setting lastProcessedSequenceNumber allows the DeltaManager to skip downloading and processing ops that have already been processed.\n */\n async attachOpHandler(minSequenceNumber, snapshotSequenceNumber, handler, prefetchType = \"none\", lastProcessedSequenceNumber = snapshotSequenceNumber) {\n this.initSequenceNumber = snapshotSequenceNumber;\n this.lastProcessedSequenceNumber = lastProcessedSequenceNumber;\n this.minSequenceNumber = minSequenceNumber;\n this.lastQueuedSequenceNumber = lastProcessedSequenceNumber;\n this.lastObservedSeqNumber = lastProcessedSequenceNumber;\n // We will use same check in other places to make sure all the seq number above are set properly.\n assert(this.handler === undefined, 0x0e2 /* \"DeltaManager already has attached op handler!\" */);\n this.handler = handler;\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n assert(!!this.handler, 0x0e3 /* \"Newly set op handler is null/undefined!\" */);\n // There should be no pending fetch!\n // This API is called right after attachOpHandler by Container.load().\n // We might have connection already and it might have called fetchMissingDeltas() from\n // setupNewSuccessfulConnection. But it should do nothing, because there is no way to fetch ops before\n // we know snapshot sequence number that is set in attachOpHandler. So all such calls should be noop.\n assert(this.fetchReason === undefined, 0x268 /* \"There can't be pending fetch that early in boot sequence!\" */);\n if (this._closed) {\n return;\n }\n this._inbound.resume();\n this._inboundSignal.resume();\n if (prefetchType !== \"none\") {\n const cacheOnly = prefetchType === \"cached\";\n await this.fetchMissingDeltasCore(`DocumentOpen_${prefetchType}`, cacheOnly);\n // Keep going with fetching ops from storage once we have all cached ops in.\n // But do not block load and make this request async / not blocking this api.\n // Ops processing will start once cached ops are in and and will stop when queue is empty\n // (which in most cases will happen when we are done processing cached ops)\n if (cacheOnly) {\n // fire and forget\n this.fetchMissingDeltas(\"PostDocumentOpen\");\n }\n }\n // Ensure there is no need to call this.processPendingOps() at the end of boot sequence\n assert(this.fetchReason !== undefined || this.pending.length === 0, 0x269 /* \"pending ops are not dropped\" */);\n }\n connect(args) {\n const fetchOpsFromStorage = args.fetchOpsFromStorage ?? true;\n logIfFalse(this.handler !== undefined || !fetchOpsFromStorage, this.logger, \"CantFetchWithoutBaseline\"); // can't fetch if no baseline\n // Note: There is race condition here.\n // We want to issue request to storage as soon as possible, to\n // reduce latency of becoming current, thus this code here.\n // But there is no ordering between fetching OPs and connection to delta stream\n // As result, we might be behind by the time we connect to delta stream\n // In case of r/w connection, that's not an issue, because we will hear our\n // own \"join\" message and realize any gap client has in ops.\n // But for view-only connection, we have no such signal, and with no traffic\n // on the wire, we might be always behind.\n // See comment at the end of \"connect\" handler\n if (fetchOpsFromStorage) {\n this.fetchMissingDeltas(args.reason.text);\n }\n this.connectionManager.connect(args.reason, args.mode);\n }\n async getDeltas(from, // inclusive\n to, // exclusive\n fetchReason, callback, cacheOnly) {\n const docService = this.serviceProvider();\n if (docService === undefined) {\n throw new Error(\"Delta manager is not attached\");\n }\n if (this.deltaStorage === undefined) {\n this.deltaStorage = await docService.connectToDeltaStorage();\n }\n let cancelFetch;\n if (to === undefined) {\n // Unbound requests are made to proactively fetch ops, but also get up to date in cases where socket\n // is silent (and connection is \"read\", thus we might not have any data on how far client is behind).\n // Once we have any op coming in from socket, we can cancel it as it's not needed any more.\n // That said, if we have socket connection, make sure we got ops up to checkpointSequenceNumber!\n cancelFetch = (op) => op.sequenceNumber >= this.lastObservedSeqNumber;\n }\n else {\n const lastExpectedOp = to - 1; // make it inclusive!\n // It is possible that due to asynchrony (including await above), required ops were already\n // received through delta stream. Validate that before moving forward.\n if (this.lastQueuedSequenceNumber >= lastExpectedOp) {\n this.logger.sendPerformanceEvent({\n reason: fetchReason,\n eventName: \"ExtraStorageCall\",\n early: true,\n from,\n to,\n ...this.connectionManager.connectionVerboseProps,\n });\n return;\n }\n // Be prepared for the case where webSocket would receive the ops that we are trying to fill through\n // storage. Ideally it should never happen (i.e. ops on socket are always ordered, and thus once we\n // detected gap, this gap can't be filled in later on through websocket).\n // And in practice that does look like the case. The place where this code gets hit is if we lost\n // connection and reconnected (likely to another box), and new socket's initial ops contains these ops.\n cancelFetch = (op) => op.sequenceNumber >= lastExpectedOp;\n }\n const controller = new AbortController();\n let opsFromFetch = false;\n const opListener = (op) => {\n assert(op.sequenceNumber === this.lastQueuedSequenceNumber, 0x23a /* \"seq#'s\" */);\n // Ops that are coming from this request should not cancel itself.\n // This is useless for known ranges (to is defined) as it means request is over either way.\n // And it will cancel unbound request too early, not allowing us to learn where the end of the file is.\n if (!opsFromFetch && cancelFetch(op)) {\n controller.abort(\"DeltaManager getDeltas fetch cancelled\");\n this._inbound.off(\"push\", opListener);\n }\n };\n try {\n this._inbound.on(\"push\", opListener);\n assert(this.closeAbortController.signal.onabort === null, 0x1e8 /* \"reentrancy\" */);\n this.closeAbortController.signal.addEventListener(\"abort\", () => controller.abort(this.closeAbortController.signal.reason));\n const stream = this.deltaStorage.fetchMessages(from, // inclusive\n to, // exclusive\n controller.signal, cacheOnly, fetchReason);\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const result = await stream.read();\n if (result.done) {\n break;\n }\n try {\n opsFromFetch = true;\n callback(result.value);\n }\n finally {\n opsFromFetch = false;\n }\n }\n }\n finally {\n if (controller.signal.aborted) {\n this.logger.sendTelemetryEvent({\n eventName: \"DeltaManager_GetDeltasAborted\",\n fetchReason,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n reason: controller.signal.reason,\n });\n }\n // eslint-disable-next-line unicorn/no-null, unicorn/prefer-add-event-listener\n this.closeAbortController.signal.onabort = null;\n this._inbound.off(\"push\", opListener);\n assert(!opsFromFetch, 0x289 /* \"logic error\" */);\n }\n }\n /**\n * Closes the connection and clears inbound & outbound queues.\n *\n * Differences from dispose:\n * - close will trigger readonly notification\n * - close emits \"closed\"\n * - close cannot be called after dispose\n */\n close(error) {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this.connectionManager.dispose(error, true /* switchToReadonly */);\n this.clearQueues();\n this.emit(\"closed\", error);\n }\n /**\n * Disposes the connection and clears the inbound & outbound queues.\n *\n * Differences from close:\n * - dispose will emit \"disposed\"\n * - dispose will remove all listeners\n * - dispose can be called after closure\n */\n dispose(error) {\n if (this._disposed) {\n return;\n }\n if (error !== undefined && !isFluidError(error)) {\n throw new UsageError(\"Error must be a Fluid error\");\n }\n this._disposed = true;\n this._closed = true; // We consider \"disposed\" as a further state than \"closed\"\n this.connectionManager.dispose(error, false /* switchToReadonly */);\n this.clearQueues();\n // This needs to be the last thing we do (before removing listeners), as it causes\n // Container to dispose context and break ability of data stores / runtime to \"hear\" from delta manager.\n this.emit(\"disposed\", error);\n this.removeAllListeners();\n }\n clearQueues() {\n this.closeAbortController.abort(\"DeltaManager is closed\");\n this._inbound.clear();\n this._inboundSignal.clear();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._inbound.pause();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._inboundSignal.pause();\n // Drop pending messages - this will ensure catchUp() does not go into infinite loop\n this.pending = [];\n }\n refreshDelayInfo(id) {\n this.throttlingIdSet.delete(id);\n if (this.throttlingIdSet.size === 0) {\n this.timeTillThrottling = 0;\n }\n }\n disconnectHandler(reason) {\n this.messageBuffer.length = 0;\n this.emit(\"disconnect\", reason.text, reason.error);\n }\n /**\n * Emit info about a delay in service communication on account of throttling.\n * @param id - Id of the connection that is delayed\n * @param delayMs - Duration of the delay\n * @param error - error object indicating the throttling\n */\n emitDelayInfo(id, delayMs, error) {\n const timeNow = Date.now();\n this.throttlingIdSet.add(id);\n if (delayMs > 0 && timeNow + delayMs > this.timeTillThrottling) {\n this.timeTillThrottling = timeNow + delayMs;\n const throttlingWarning = ThrottlingWarning.wrap(error, delayMs / 1000 /* retryAfterSeconds */, this.logger);\n this.emit(\"throttled\", throttlingWarning);\n }\n }\n // returns parts of message (in string format) that should never change for a given message.\n // Used for message comparison. It attempts to avoid comparing fields that potentially may differ.\n // for example, it's not clear if serverMetadata or timestamp property is a property of message or server state.\n // We only extract the most obvious fields that are sufficient (with high probability) to detect sequence number\n // reuse.\n // Also payload goes to telemetry, so no content or anything else that shouldn't be logged for privacy reasons\n // Note: It's possible for a duplicate op to be broadcasted and have everything the same except the timestamp.\n comparableMessagePayload(m) {\n return `${m.clientId}-${m.type}-${m.minimumSequenceNumber}-${m.referenceSequenceNumber}-${m.timestamp}`;\n }\n enqueueMessages(messages, reason, allowGaps = false) {\n if (this.handler === undefined) {\n // We did not setup handler yet.\n // This happens when we connect to web socket faster than we get attributes for container\n // and thus faster than attachOpHandler() is called\n // this.lastProcessedSequenceNumber is still zero, so we can't rely on this.fetchMissingDeltas()\n // to do the right thing.\n this.pending = [...this.pending, ...messages];\n return;\n }\n // Pending ops should never just hang around for nothing.\n // This invariant will stay true through this function execution,\n // so there is no need to process pending ops here.\n // It's responsibility of\n // - attachOpHandler()\n // - fetchMissingDeltas() after it's done with querying storage\n assert(this.pending.length === 0 || this.fetchReason !== undefined, 0x1e9 /* \"Pending ops\" */);\n if (messages.length === 0) {\n return;\n }\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const from = messages[0].sequenceNumber;\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const last = messages[messages.length - 1].sequenceNumber;\n // Report stats about missing and duplicate ops\n // This helps better understand why we fetch ops from storage, and thus may delay\n // getting current / sending ops\n // It's possible that this batch is already too late - do not bother\n if (last > this.lastQueuedSequenceNumber) {\n let prev = from - 1;\n const initialGap = prev - this.lastQueuedSequenceNumber;\n let firstMissing;\n let duplicate = 0;\n let gap = 0;\n // Count all gaps and duplicates\n for (const message of messages) {\n if (message.sequenceNumber === prev) {\n duplicate++;\n }\n else if (message.sequenceNumber !== prev + 1) {\n gap++;\n if (firstMissing === undefined) {\n firstMissing = prev + 1;\n }\n }\n prev = message.sequenceNumber;\n }\n let eventName;\n // Report if we found some issues\n if (duplicate !== 0 ||\n (gap !== 0 && !allowGaps) ||\n (initialGap > 0 && this.fetchReason === undefined)) {\n eventName = \"enqueueMessages\";\n // Also report if we are fetching ops, and same range comes in, thus making this fetch obsolete.\n }\n else if (this.fetchReason !== undefined &&\n this.fetchReason !== reason &&\n from <= this.lastQueuedSequenceNumber + 1 &&\n last > this.lastQueuedSequenceNumber) {\n eventName = \"enqueueMessagesExtraFetch\";\n }\n // Report if there is something to report\n // Do not report when pending fetch is in progress, as such reporting will not\n // correctly take into account pending ops.\n if (eventName !== undefined) {\n this.logger.sendPerformanceEvent({\n eventName,\n reason,\n previousReason: this.prevEnqueueMessagesReason,\n from,\n to: last + 1, // exclusive, being consistent with the other telemetry / APIs\n length: messages.length,\n fetchReason: this.fetchReason,\n duplicate: duplicate > 0 ? duplicate : undefined,\n initialGap: initialGap === 0 ? undefined : initialGap,\n gap: gap > 0 ? gap : undefined,\n firstMissing,\n dmInitialSeqNumber: this.initialSequenceNumber,\n ...this.connectionManager.connectionVerboseProps,\n });\n }\n }\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.updateLatestKnownOpSeqNumber(messages[messages.length - 1].sequenceNumber);\n const n = this.previouslyProcessedMessage?.sequenceNumber;\n assert(n === undefined || n === this.lastQueuedSequenceNumber, 0x0ec /* \"Unexpected value for previously processed message's sequence number\" */);\n for (const message of messages) {\n // Check that the messages are arriving in the expected order\n if (message.sequenceNumber <= this.lastQueuedSequenceNumber) {\n // Validate that we do not have data loss, i.e. sequencing is reset and started again\n // with numbers that this client already observed before.\n if (this.previouslyProcessedMessage?.sequenceNumber === message.sequenceNumber) {\n const message1 = this.comparableMessagePayload(this.previouslyProcessedMessage);\n const message2 = this.comparableMessagePayload(message);\n if (message1 !== message2) {\n const error = new NonRetryableError(\n // This looks like a data corruption but the culprit was that the file was overwritten\n // in storage. See PR #5882.\n // Likely to be an issue with Fluid Services. Content does not match previous client\n // knowledge about this file. If the file is overwritten for any reason, this error can be\n // hit. One example is that some clients could be submitting ops to two different service\n // instances such that the same sequence number is reused for two different ops.\n // pre-0.58 error message: twoMessagesWithSameSeqNumAndDifferentPayload\n \"Found two messages with the same sequenceNumber but different payloads. Likely to be a \" +\n \"service issue\", DriverErrorTypes.fileOverwrittenInStorage, {\n clientId: this.connectionManager.clientId,\n sequenceNumber: message.sequenceNumber,\n message1,\n message2,\n driverVersion: undefined,\n });\n this.close(error);\n }\n }\n }\n else if (message.sequenceNumber === this.lastQueuedSequenceNumber + 1) {\n this.lastQueuedSequenceNumber = message.sequenceNumber;\n this.previouslyProcessedMessage = message;\n this._inbound.push(message);\n }\n else {\n this.pending.push(message);\n this.fetchMissingDeltas(reason, message.sequenceNumber);\n }\n }\n // When / if we report a gap in ops in the future, we want telemetry to correctly reflect source\n // of prior ops. But if we have some out of order ops (this.pending), then reporting current reason\n // becomes not accurate, as the gap existed before current batch, so we should just report \"unknown\".\n this.prevEnqueueMessagesReason = this.pending.length > 0 ? \"unknown\" : reason;\n }\n processInboundMessage(message) {\n const startTime = Date.now();\n assert(!this.currentlyProcessingOps, 0x3af /* Already processing ops. */);\n this.currentlyProcessingOps = true;\n this.lastProcessedMessage = message;\n const isString = typeof message.clientId === \"string\";\n assert(message.clientId === null || isString, 0x41a /* undefined or string */);\n // All client messages are coming from some client, and should have clientId,\n // and non-client message should not have clientId. But, there are two exceptions:\n // 1. (Legacy) We can see message.type === \"attach\" or \"chunkedOp\" for legacy files before RTM\n // 2. Non-immediate noops (contents: null) can be sent by service without clientId\n if (!isString && isClientMessage(message) && message.type !== MessageType.NoOp) {\n throw new DataCorruptionError(\"Mismatch in clientId\", {\n ...extractSafePropertiesFromMessage(message),\n messageType: message.type,\n });\n }\n // TODO Remove after SPO picks up the latest build.\n if (typeof message.contents === \"string\" &&\n message.contents !== \"\" &&\n message.type !== MessageType.ClientLeave) {\n message.contents = JSON.parse(message.contents);\n }\n // Validate client sequence number has no gap. Decrement the noOpCount by gap\n // If the count ends up negative, that means we have a real gap and throw error\n if (this.connectionManager.clientId !== undefined &&\n this.connectionManager.clientId === message.clientId) {\n if (message.type === MessageType.NoOp) {\n this.noOpCount--;\n }\n const clientSeqNumGap = message.clientSequenceNumber - this.lastClientSequenceNumber - 1;\n this.noOpCount -= clientSeqNumGap;\n if (this.noOpCount < 0) {\n throw new Error(`gap in client sequence number: ${clientSeqNumGap}`);\n }\n this.lastClientSequenceNumber = message.clientSequenceNumber;\n }\n this.connectionManager.beforeProcessingIncomingOp(message);\n // Watch the minimum sequence number and be ready to update as needed\n if (this.minSequenceNumber > message.minimumSequenceNumber) {\n // This indicates that an invalid series of ops was received by this client.\n // In the unlikely case where these ops have been truly sequenced and persisted to storage,\n // this document is corrupted - It will fail here on boot every time.\n // The more likely scenario, based on the realities of production service operation, is that\n // something has changed out from under the file on the server, such that the service lost some ops\n // which this client already processed - the very ops that made this _next_ op to appear invalid.\n // In this case, only this client will fail (and lose this recent data), but others will be able to connect and continue.\n throw DataProcessingError.create(\n // error message through v0.57: msnMovesBackwards\n // error message through v2.1: \"Found a lower minimumSequenceNumber (msn) than previously recorded\",\n \"Invalid MinimumSequenceNumber from service - document may have been restored to previous state\", \"DeltaManager.processInboundMessage\", message, {\n clientId: this.connectionManager.clientId,\n });\n }\n // Client ops: MSN has to be lower than sequence #, as client can continue to send ops with same\n // reference sequence number as this op.\n // System ops (when no clients are connected) are the only ops where equation is possible.\n const diff = message.sequenceNumber - message.minimumSequenceNumber;\n if (diff < 0 || (diff === 0 && message.clientId !== null)) {\n throw new DataCorruptionError(\"MSN has to be lower than sequence #\", extractSafePropertiesFromMessage(message));\n }\n this.minSequenceNumber = message.minimumSequenceNumber;\n if (message.sequenceNumber !== this.lastProcessedSequenceNumber + 1) {\n // pre-0.58 error message: nonSequentialSequenceNumber\n throw new DataCorruptionError(\"Found a non-Sequential sequenceNumber\", {\n ...extractSafePropertiesFromMessage(message),\n clientId: this.connectionManager.clientId,\n });\n }\n this.lastProcessedSequenceNumber = message.sequenceNumber;\n // a bunch of code assumes that this is true\n assert(this.lastProcessedSequenceNumber <= this.lastObservedSeqNumber, 0x267 /* \"lastObservedSeqNumber should be updated first\" */);\n if (this.handler === undefined) {\n throw new Error(\"Attempted to process an inbound message without a handler attached\");\n }\n this.handler.process(message);\n this.currentlyProcessingOps = false;\n const endTime = Date.now();\n // Should be last, after changing this.lastProcessedSequenceNumber above, as many callers\n // test this.lastProcessedSequenceNumber instead of using op.sequenceNumber itself.\n this.emit(\"op\", message, endTime - startTime);\n }\n /**\n * Retrieves the missing deltas between the given sequence numbers\n */\n fetchMissingDeltas(reasonArg, to) {\n this.fetchMissingDeltasCore(reasonArg, false /* cacheOnly */, to).catch((error) => {\n this.logger.sendErrorEvent({ eventName: \"fetchMissingDeltasException\" }, error);\n });\n }\n /**\n * Retrieves the missing deltas between the given sequence numbers\n */\n async fetchMissingDeltasCore(reason, cacheOnly, to) {\n // Exit out early if we're already fetching deltas\n if (this.fetchReason !== undefined) {\n return;\n }\n if (this._closed) {\n this.logger.sendTelemetryEvent({\n eventName: \"fetchMissingDeltasClosedConnection\",\n reason,\n });\n return;\n }\n if (this.handler === undefined) {\n // We do not poses yet any information\n assert(this.lastQueuedSequenceNumber === 0, 0x26b /* \"initial state\" */);\n return;\n }\n try {\n let from = this.lastQueuedSequenceNumber + 1;\n const n = this.previouslyProcessedMessage?.sequenceNumber;\n if (n !== undefined) {\n // If we already processed at least one op, then we have this.previouslyProcessedMessage populated\n // and can use it to validate that we are operating on same file, i.e. it was not overwritten.\n // Knowing about this mechanism, we could ask for op we already observed to increase validation.\n // This is especially useful when coming out of offline mode or loading from\n // very old cached (by client / driver) snapshot.\n assert(n === this.lastQueuedSequenceNumber, 0x0f2 /* \"previouslyProcessedMessage\" */);\n assert(from > 1, 0x0f3 /* \"not positive\" */);\n from--;\n }\n const fetchReason = `${reason}_fetch`;\n this.fetchReason = fetchReason;\n await this.getDeltas(from, to, fetchReason, (messages) => {\n this.refreshDelayInfo(this.deltaStorageDelayId);\n this.enqueueMessages(messages, fetchReason);\n }, cacheOnly);\n }\n catch (error) {\n this.logger.sendErrorEvent({ eventName: \"GetDeltas_Exception\" }, error);\n this.close(normalizeError(error));\n }\n finally {\n this.refreshDelayInfo(this.deltaStorageDelayId);\n this.fetchReason = undefined;\n this.processPendingOps(reason);\n }\n }\n /**\n * Sorts pending ops and attempts to apply them\n */\n processPendingOps(reason) {\n if (this._closed) {\n return;\n }\n assert(this.handler !== undefined, 0x26c /* \"handler should be installed\" */);\n const pendingSorted = this.pending.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n this.pending = [];\n // Given that we do not track where these ops came from any more, it's not very\n // actionably to report gaps in this range.\n this.enqueueMessages(pendingSorted, `${reason}_pending`, true /* allowGaps */);\n // Re-entrancy is ignored by fetchMissingDeltas, execution will come here when it's over\n if (this.fetchReason === undefined) {\n // See issue #7312 for more details\n // We observe cases where client gets into situation where it is not aware of missing ops\n // (i.e. client being behind), and as such, does not attempt to fetch them.\n // In some cases client may not have enough signal (example - \"read\" connection that is silent -\n // there is no easy way for client to realize it's behind, see a bit of commentary / logic at the\n // end of setupNewSuccessfulConnection). In other cases it should be able to learn that info (\"write\"\n // connection, learn by receiving its own join op), but data suggest it does not happen.\n // In 50% of these cases we do know we are behind through checkpointSequenceNumber on connection object\n // and thus can leverage that to trigger recovery. But this is not going to solve all the problems\n // (the other 50%), and thus these errors below should be looked at even if code below results in\n // recovery.\n // eslint-disable-next-line unicorn/no-lonely-if -- Docs make more sense like this\n if (this.lastQueuedSequenceNumber < this.lastObservedSeqNumber) {\n this.fetchMissingDeltas(\"OpsBehind\");\n }\n }\n }\n updateLatestKnownOpSeqNumber(seq) {\n if (this.lastObservedSeqNumber < seq) {\n this.lastObservedSeqNumber = seq;\n }\n }\n}\n//# sourceMappingURL=deltaManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { assert, isObject } from \"@fluidframework/core-utils/internal\";\nconst MemoryDetachedBlobStorageIdentifier = Symbol();\nfunction isMemoryDetachedBlobStorage(\n// eslint-disable-next-line import/no-deprecated\ndetachedStorage) {\n return (isObject(detachedStorage) &&\n MemoryDetachedBlobStorageIdentifier in detachedStorage &&\n detachedStorage[MemoryDetachedBlobStorageIdentifier] ===\n MemoryDetachedBlobStorageIdentifier);\n}\nexport function serializeMemoryDetachedBlobStorage(\n// eslint-disable-next-line import/no-deprecated\ndetachedStorage) {\n if (detachedStorage !== undefined &&\n detachedStorage.size > 0 &&\n isMemoryDetachedBlobStorage(detachedStorage)) {\n return detachedStorage.serialize();\n }\n}\nexport function tryInitializeMemoryDetachedBlobStorage(\n// eslint-disable-next-line import/no-deprecated\ndetachedStorage, attachmentBlobs) {\n if (!isMemoryDetachedBlobStorage(detachedStorage)) {\n throw new Error(\"DetachedBlobStorage was not provided to the loader during serialize so cannot be provided during rehydrate.\");\n }\n assert(detachedStorage.size === 0, 0x99e /* Blob storage already initialized */);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const maybeAttachmentBlobs = JSON.parse(attachmentBlobs);\n assert(Array.isArray(maybeAttachmentBlobs), 0x99f /* Invalid attachmentBlobs */);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n detachedStorage.initialize(maybeAttachmentBlobs);\n}\n// eslint-disable-next-line import/no-deprecated\nexport function createMemoryDetachedBlobStorage() {\n const blobs = [];\n const storage = {\n [MemoryDetachedBlobStorageIdentifier]: MemoryDetachedBlobStorageIdentifier,\n createBlob: async (file) => ({\n id: `${blobs.push(file) - 1}`,\n }),\n readBlob: async (id) => blobs[Number(id)] ?? Promise.reject(new Error(`Blob not found: ${id}`)),\n get size() {\n return blobs.length;\n },\n getBlobIds: () => blobs.map((_, i) => `${i}`),\n dispose: () => blobs.splice(0),\n serialize: () => JSON.stringify(blobs.map((b) => bufferToString(b, \"utf8\"))),\n initialize: (attachmentBlobs) => blobs.push(...attachmentBlobs.map((maybeBlob) => stringToBuffer(maybeBlob, \"utf8\"))),\n };\n return storage;\n}\n//# sourceMappingURL=memoryBlobStorage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert, Timer } from \"@fluidframework/core-utils/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nconst defaultNoopTimeFrequency = 2000;\nconst defaultNoopCountFrequency = 50;\n// Here are key considerations when deciding conditions for when to send non-immediate noops:\n// 1. Sending them too often results in increase in file size and bandwidth, as well as catch up performance\n// 2. Sending too infrequently ensures that collab window is large, and as result Sequence DDS would have\n// large catchUp blobs - see Issue #6364\n// 3. Similarly, processes that rely on \"core\" snapshot (and can't parse trailing ops, including above), like search\n// parser in SPO, will result in non-accurate results due to presence of catch up blobs.\n// 4. Ordering service used 250ms timeout to coalesce non-immediate noops. It was changed to 2000 ms to allow more\n// aggressive noop sending from client side.\n// 5. Number of ops sent by all clients is proportional to number of \"write\" clients (every client sends noops),\n// but number of sequenced noops is a function of time (one op per 2 seconds at most).\n// We should consider impact to both outbound traffic (might be huge, depends on number of clients) and file size.\n// Please also see Issue #5629 for more discussions.\n//\n// With that, the current algorithm is as follows:\n// 1. Sent noop 2000 ms of receiving an op if no ops were sent by this client within this timeframe.\n// This will ensure that MSN moves forward with reasonable speed. If that results in too many sequenced noops,\n// server timeout of 2000ms should be reconsidered to be increased.\n// 2. If there are more than 50 ops received without sending any ops, send noop to keep collab window small.\n// Note that system ops (including noops themselves) are excluded, so it's 1 noop per 50 real ops.\nexport class NoopHeuristic extends TypedEventEmitter {\n constructor(NoopTimeFrequency = defaultNoopTimeFrequency, NoopCountFrequency = defaultNoopCountFrequency) {\n super();\n this.NoopCountFrequency = NoopCountFrequency;\n this.opsProcessedSinceOpSent = 0;\n if (NoopTimeFrequency !== Number.POSITIVE_INFINITY) {\n this.timer = new Timer(NoopTimeFrequency, () => {\n // We allow the timer to expire even if an op is sent or we disconnect.\n // This condition is to guard against trying to send a noop anyway in that case.\n if (this.opsProcessedSinceOpSent !== 0) {\n this.emit(\"wantsNoop\");\n }\n });\n }\n }\n /**\n * Schedules as ack to the server to update the reference sequence number\n */\n notifyMessageProcessed(message) {\n // We don't acknowledge no-ops to avoid acknowledgement cycles (i.e. ack the MSN\n // update, which updates the MSN, then ack the update, etc...).\n // Intent here is for runtime (and DDSes) not to keep too much tracking state / memory\n // due to runtime ops from other clients.\n if (!isRuntimeMessage(message)) {\n return;\n }\n this.opsProcessedSinceOpSent++;\n if (this.opsProcessedSinceOpSent === this.NoopCountFrequency) {\n // Wait to send a noop if we are still synchronously processing ops. This guards against two things:\n // 1. If we're processing many ops, we may pass the frequency threshold many times. We only need to send one noop at the very end in this case.\n // 2. We may send another (non-noop) op in response to processing those ops, e.g. an Accept op.\n queueMicrotask(() => {\n if (this.opsProcessedSinceOpSent >= this.NoopCountFrequency) {\n this.emit(\"wantsNoop\");\n assert(this.opsProcessedSinceOpSent === 0, 0x243 /* \"Expected a noop to be synchronously sent\" */);\n }\n return;\n });\n }\n if (this.timer !== undefined) {\n // Start the timer if we newly have ops that want a noop.\n // If the timer was already running (e.g. we surpassed the op count and sent a noop) this will reset it to its full duration.\n if (this.opsProcessedSinceOpSent === 1) {\n this.timer.restart();\n }\n assert(this.timer.hasTimer, 0x242 /* \"has timer\" */);\n }\n }\n notifyDisconnect() {\n // No need to noop for any ops processed prior to disconnect - we are already removed from MSN calculation.\n this.opsProcessedSinceOpSent = 0;\n }\n notifyMessageSent() {\n // Sending any message is as good as a noop for updating MSN.\n this.opsProcessedSinceOpSent = 0;\n }\n}\n//# sourceMappingURL=noopHeuristic.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport function initQuorumValuesFromCodeDetails(source) {\n // Seed the base quorum to be an empty list with a code quorum set\n const committedCodeProposal = {\n key: \"code\",\n value: source,\n approvalSequenceNumber: 0,\n commitSequenceNumber: 0,\n sequenceNumber: 0,\n };\n return [[\"code\", committedCodeProposal]];\n}\n//# sourceMappingURL=quorum.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { Timer, assert } from \"@fluidframework/core-utils/internal\";\nimport { FetchSource, } from \"@fluidframework/driver-definitions/internal\";\nimport { getSnapshotTree } from \"@fluidframework/driver-utils/internal\";\nimport { PerformanceEvent, UsageError, createChildMonitoringContext, } from \"@fluidframework/telemetry-utils/internal\";\nimport { getBlobContentsFromTree, } from \"./containerStorageAdapter.js\";\nimport { convertSnapshotToSnapshotInfo, getDocumentAttributes } from \"./utils.js\";\n/**\n * Helper class to manage the state of the container needed for proper serialization.\n *\n * It holds the pendingLocalState the container was rehydrated from (if any),\n * as well as the snapshot to be used for serialization.\n * It also keeps track of container dirty state and which local ops have been processed\n */\nexport class SerializedStateManager {\n /**\n * @param pendingLocalState - The pendingLocalState being rehydrated, if any (undefined when loading directly from storage)\n * @param subLogger - Container's logger to use as parent for our logger\n * @param storageAdapter - Storage adapter for fetching snapshots\n * @param _offlineLoadEnabled - Is serializing/rehydrating containers allowed?\n * @param containerEvent - Source of the \"saved\" event when the container has all its pending state uploaded\n * @param containerDirty - Is the container \"dirty\"? That's the opposite of \"saved\" - there is pending state that may not have been received yet by the service.\n */\n constructor(pendingLocalState, subLogger, storageAdapter, _offlineLoadEnabled, containerEvent, containerDirty, supportGetSnapshotApi, snapshotRefreshTimeoutMs) {\n this.pendingLocalState = pendingLocalState;\n this.storageAdapter = storageAdapter;\n this._offlineLoadEnabled = _offlineLoadEnabled;\n this.containerDirty = containerDirty;\n this.supportGetSnapshotApi = supportGetSnapshotApi;\n this.processedOps = [];\n this.lastSavedOpSequenceNumber = 0;\n this.snapshotRefreshTimeoutMs = 60 * 60 * 24 * 1000;\n this.mc = createChildMonitoringContext({\n logger: subLogger,\n namespace: \"serializedStateManager\",\n });\n this.snapshotRefreshTimeoutMs = snapshotRefreshTimeoutMs ?? this.snapshotRefreshTimeoutMs;\n this.refreshTimer = new Timer(this.snapshotRefreshTimeoutMs, () => this.tryRefreshSnapshot());\n // special case handle. Obtaining the last saved op seq num to avoid\n // refreshing the snapshot before we have processed it. It could cause\n // a subsequent stashing to have a newer snapshot than allowed.\n if (pendingLocalState && pendingLocalState.savedOps.length > 0) {\n const savedOpsSize = pendingLocalState.savedOps.length;\n this.lastSavedOpSequenceNumber =\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n pendingLocalState.savedOps[savedOpsSize - 1].sequenceNumber;\n }\n containerEvent.on(\"saved\", () => this.updateSnapshotAndProcessedOpsMaybe());\n }\n get offlineLoadEnabled() {\n return this._offlineLoadEnabled;\n }\n /**\n * Promise that will resolve (or reject) once we've tried to download the latest snapshot(s) from storage\n * only intended to be used for testing purposes.\n * @returns The snapshot sequence number associated with the latest fetched snapshot\n */\n get refreshSnapshotP() {\n return this._refreshSnapshotP;\n }\n /**\n * Called whenever an incoming op is processed by the Container\n */\n addProcessedOp(message) {\n if (this.offlineLoadEnabled) {\n this.processedOps.push(message);\n this.updateSnapshotAndProcessedOpsMaybe();\n }\n }\n /**\n * This wraps the basic functionality of fetching the snapshot for this container during Container load.\n *\n * If we have pendingLocalState, we get the snapshot from there.\n * Otherwise, fetch it from storage (according to specifiedVersion if provided).\n *\n * @param specifiedVersion - If a version is specified and we don't have pendingLocalState, fetch this version from storage.\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree.\n * @returns The snapshot to boot the container from\n */\n async fetchSnapshot(specifiedVersion) {\n if (this.pendingLocalState === undefined) {\n const { baseSnapshot, version } = await getSnapshot(this.mc, this.storageAdapter, this.supportGetSnapshotApi(), specifiedVersion);\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n // non-interactive clients will not have any pending state we want to save\n if (this.offlineLoadEnabled) {\n const snapshotBlobs = await getBlobContentsFromTree(baseSnapshot, this.storageAdapter);\n const attributes = await getDocumentAttributes(this.storageAdapter, baseSnapshotTree);\n this.snapshot = {\n baseSnapshot: baseSnapshotTree,\n snapshotBlobs,\n snapshotSequenceNumber: attributes.sequenceNumber,\n };\n this.refreshTimer.start();\n }\n return { baseSnapshot, version };\n }\n else {\n const { baseSnapshot, snapshotBlobs } = this.pendingLocalState;\n const attributes = await getDocumentAttributes(this.storageAdapter, baseSnapshot);\n this.snapshot = {\n baseSnapshot,\n snapshotBlobs,\n snapshotSequenceNumber: attributes.sequenceNumber,\n };\n this.tryRefreshSnapshot();\n const blobContents = new Map();\n for (const [id, value] of Object.entries(snapshotBlobs)) {\n blobContents.set(id, stringToBuffer(value, \"utf8\"));\n }\n const iSnapshot = {\n sequenceNumber: this.snapshot.snapshotSequenceNumber,\n snapshotTree: baseSnapshot,\n blobContents,\n latestSequenceNumber: undefined,\n ops: [],\n snapshotFormatV: 1,\n };\n return { baseSnapshot: iSnapshot, version: undefined };\n }\n }\n tryRefreshSnapshot() {\n if (this.mc.config.getBoolean(\"Fluid.Container.enableOfflineSnapshotRefresh\") === true &&\n this._refreshSnapshotP === undefined &&\n this.latestSnapshot === undefined) {\n // Don't block on the refresh snapshot call - it is for the next time we serialize, not booting this incarnation\n this._refreshSnapshotP = this.refreshLatestSnapshot(this.supportGetSnapshotApi());\n this._refreshSnapshotP\n .catch((error) => {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"RefreshLatestSnapshotFailed\",\n error,\n });\n })\n .finally(() => {\n this._refreshSnapshotP = undefined;\n });\n }\n }\n /**\n * Fetch the latest snapshot for the container, including delay-loaded groupIds if pendingLocalState was provided and contained any groupIds.\n * Note that this will update the StorageAdapter's cached snapshots for the groupIds (if present)\n *\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree (must be true to fetch by groupIds)\n */\n async refreshLatestSnapshot(supportGetSnapshotApi) {\n this.latestSnapshot = await getLatestSnapshotInfo(this.mc, this.storageAdapter, supportGetSnapshotApi);\n // These are loading groupIds that the containerRuntime has requested over its lifetime.\n // We will fetch the latest snapshot for the groupIds, which will update storageAdapter.loadedGroupIdSnapshots's cache\n const downloadedGroupIds = Object.keys(this.storageAdapter.loadedGroupIdSnapshots);\n if (supportGetSnapshotApi && downloadedGroupIds.length > 0) {\n assert(this.storageAdapter.getSnapshot !== undefined, 0x972 /* getSnapshot should exist */);\n // (This is a separate network call from above because it requires work for storage to add a special base groupId)\n const snapshot = await this.storageAdapter.getSnapshot({\n versionId: undefined,\n scenarioName: \"getLatestSnapshotInfo\",\n cacheSnapshot: false,\n loadingGroupIds: downloadedGroupIds,\n fetchSource: FetchSource.noCache,\n });\n assert(snapshot !== undefined, 0x973 /* Snapshot should exist */);\n }\n return this.updateSnapshotAndProcessedOpsMaybe();\n }\n /**\n * Updates class snapshot and processedOps if we have a new snapshot and it's among processedOps range.\n */\n updateSnapshotAndProcessedOpsMaybe() {\n const snapshotSequenceNumber = this.latestSnapshot?.snapshotSequenceNumber;\n if (snapshotSequenceNumber === undefined ||\n this.processedOps.length === 0 ||\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.processedOps[this.processedOps.length - 1].sequenceNumber <\n this.lastSavedOpSequenceNumber ||\n this.containerDirty()) {\n // can't refresh latest snapshot until we have processed the ops up to it.\n // Pending state would be behind the latest snapshot.\n return -1;\n }\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstProcessedOpSequenceNumber = this.processedOps[0].sequenceNumber;\n const lastProcessedOpSequenceNumber = \n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.processedOps[this.processedOps.length - 1].sequenceNumber;\n if (snapshotSequenceNumber < firstProcessedOpSequenceNumber) {\n // Snapshot seq number is older than our first processed op, which could mean we're fetching\n // the same snapshot that we already have or snapshot is too old, implicating an unexpected behavior.\n this.mc.logger.sendTelemetryEvent({\n eventName: \"OldSnapshotFetchWhileRefreshing\",\n snapshotSequenceNumber,\n firstProcessedOpSequenceNumber,\n lastProcessedOpSequenceNumber,\n stashedSnapshotSequenceNumber: this.snapshot?.snapshotSequenceNumber,\n });\n this.latestSnapshot = undefined;\n this.refreshTimer.restart();\n }\n else if (snapshotSequenceNumber <= lastProcessedOpSequenceNumber) {\n // Snapshot seq num is between the first and last processed op.\n // Remove the ops that are already part of the snapshot\n this.processedOps.splice(0, snapshotSequenceNumber - firstProcessedOpSequenceNumber + 1);\n this.snapshot = this.latestSnapshot;\n this.latestSnapshot = undefined;\n this.refreshTimer.restart();\n this.mc.logger.sendTelemetryEvent({\n eventName: \"SnapshotRefreshed\",\n snapshotSequenceNumber,\n firstProcessedOpSequenceNumber,\n newFirstProcessedOpSequenceNumber: \n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.processedOps.length === 0 ? undefined : this.processedOps[0].sequenceNumber,\n });\n }\n return snapshotSequenceNumber;\n }\n /**\n * When the Container attaches, we need to stash the initial snapshot (a form of the attach summary).\n * This method is only meant to be used by Container.attach() to set the initial\n * base snapshot when attaching.\n * @param snapshot - snapshot and blobs collected while attaching (a form of the attach summary)\n */\n setInitialSnapshot(snapshot) {\n if (this.offlineLoadEnabled) {\n assert(this.snapshot === undefined, 0x937 /* inital snapshot should only be defined once */);\n assert(snapshot !== undefined, 0x938 /* attachment snapshot should be defined */);\n const { baseSnapshot, snapshotBlobs } = snapshot;\n const attributesHash = \".protocol\" in baseSnapshot.trees\n ? baseSnapshot.trees[\".protocol\"].blobs.attributes\n : baseSnapshot.blobs[\".attributes\"];\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-non-null-assertion\n const attributes = JSON.parse(snapshotBlobs[attributesHash]);\n assert(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n attributes.sequenceNumber === 0, 0x939 /* trying to set a non attachment snapshot */);\n this.snapshot = {\n ...snapshot,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n snapshotSequenceNumber: attributes.sequenceNumber,\n };\n this.refreshTimer.start();\n }\n }\n /**\n * Assembles and serializes the {@link IPendingContainerState} for the container,\n * to be stored and used to rehydrate the container at a later time.\n */\n async getPendingLocalState(props, clientId, runtime, resolvedUrl) {\n return PerformanceEvent.timedExecAsync(this.mc.logger, {\n eventName: \"getPendingLocalState\",\n details: {\n notifyImminentClosure: props.notifyImminentClosure,\n sessionExpiryTimerStarted: props.sessionExpiryTimerStarted,\n snapshotSequenceNumber: props.snapshotSequenceNumber,\n processedOpsSize: this.processedOps.length,\n },\n clientId,\n }, async () => {\n if (!this.offlineLoadEnabled) {\n throw new UsageError(\"Can't get pending local state unless offline load is enabled\");\n }\n assert(this.snapshot !== undefined, 0x8e5 /* no base data */);\n const pendingRuntimeState = await runtime.getPendingLocalState({\n ...props,\n snapshotSequenceNumber: this.snapshot.snapshotSequenceNumber,\n sessionExpiryTimerStarted: this.snapshot.snapshotFetchedTime,\n });\n // This conversion is required because ArrayBufferLike doesn't survive JSON.stringify\n const loadedGroupIdSnapshots = {};\n let hasGroupIdSnapshots = false;\n const groupIdSnapshots = Object.entries(this.storageAdapter.loadedGroupIdSnapshots);\n if (groupIdSnapshots.length > 0) {\n for (const [groupId, snapshot] of groupIdSnapshots) {\n hasGroupIdSnapshots = true;\n loadedGroupIdSnapshots[groupId] = convertSnapshotToSnapshotInfo(snapshot);\n }\n }\n const pendingState = {\n attached: true,\n pendingRuntimeState,\n baseSnapshot: this.snapshot.baseSnapshot,\n snapshotBlobs: this.snapshot.snapshotBlobs,\n loadedGroupIdSnapshots: hasGroupIdSnapshots ? loadedGroupIdSnapshots : undefined,\n savedOps: this.processedOps,\n url: resolvedUrl.url,\n clientId,\n };\n return JSON.stringify(pendingState);\n });\n }\n}\n/**\n * Retrieves the most recent snapshot and returns its info.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing methods to retrieve the snapshot.\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree.\n * @returns a SnapshotInfo object containing the snapshot tree, snapshot blobs and its sequence number.\n */\nexport async function getLatestSnapshotInfo(mc, storageAdapter, supportGetSnapshotApi) {\n return PerformanceEvent.timedExecAsync(mc.logger, { eventName: \"GetLatestSnapshotInfo\" }, async () => {\n // get the latest non cached snapshot version\n const specifiedVersion = await storageAdapter.getVersions(\n // eslint-disable-next-line unicorn/no-null\n null, 1, \"getLatestSnapshotInfo\", FetchSource.noCache);\n const { baseSnapshot } = await getSnapshot(mc, storageAdapter, supportGetSnapshotApi, specifiedVersion[0]?.id);\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n const snapshotFetchedTime = Date.now();\n const snapshotBlobs = await getBlobContentsFromTree(baseSnapshot, storageAdapter);\n const attributes = await getDocumentAttributes(storageAdapter, baseSnapshotTree);\n const snapshotSequenceNumber = attributes.sequenceNumber;\n return {\n baseSnapshot: baseSnapshotTree,\n snapshotBlobs,\n snapshotSequenceNumber,\n snapshotFetchedTime,\n };\n }).catch(() => undefined);\n}\n/**\n * Retrieves a snapshot from the storage adapter and transforms it into an ISnapshotTree object.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing methods to retrieve the snapshot.\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree.\n * @param specifiedVersion - An optional version string specifying the version of the snapshot tree to fetch.\n * @returns - An ISnapshotTree and its version.\n */\nasync function getSnapshot(mc, storageAdapter, supportGetSnapshotApi, specifiedVersion) {\n const { snapshot, version } = supportGetSnapshotApi\n ? await fetchISnapshot(mc, storageAdapter, specifiedVersion)\n : await fetchISnapshotTree(mc, storageAdapter, specifiedVersion);\n assert(snapshot !== undefined, 0x8e4 /* Snapshot should exist */);\n return { baseSnapshot: snapshot, version };\n}\n/**\n * Fetches an ISnapshot from a storage adapter based on the specified version.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing a getSnapshot method to retrieve the ISnapshot and version.\n * @param specifiedVersion - An optional version string specifying the version of the snapshot tree to fetch.\n * @returns - The fetched snapshot tree and its version.\n */\nexport async function fetchISnapshot(mc, storageAdapter, specifiedVersion) {\n const snapshot = await storageAdapter.getSnapshot?.({ versionId: specifiedVersion });\n const version = snapshot?.snapshotTree.id === undefined\n ? undefined\n : {\n id: snapshot.snapshotTree.id,\n treeId: snapshot.snapshotTree.id,\n };\n if (snapshot === undefined && specifiedVersion !== undefined) {\n mc.logger.sendErrorEvent({\n eventName: \"getSnapshotTreeFailed\",\n id: specifiedVersion,\n });\n }\n else if (snapshot !== undefined && version?.id === undefined) {\n mc.logger.sendErrorEvent({\n eventName: \"getSnapshotFetchedTreeWithoutVersionId\",\n hasVersion: version !== undefined, // if hasVersion is true, this means that the contract with the service was broken.\n });\n }\n return { snapshot, version };\n}\n/**\n * Fetches an ISnapshotTree from a storage adapter based on the specified version.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing methods to retrieve the ISnapshotTree and version.\n * @param specifiedVersion - An optional version string specifying the version of the snapshot tree to fetch.\n * @returns - The fetched snapshot tree and its version.\n */\nexport async function fetchISnapshotTree(mc, storageAdapter, specifiedVersion) {\n // API uses null\n // eslint-disable-next-line unicorn/no-null\n const versions = await storageAdapter.getVersions(specifiedVersion ?? null, 1);\n const version = versions[0];\n if (version === undefined && specifiedVersion !== undefined) {\n // We should have a defined version to load from if specified version requested\n mc.logger.sendErrorEvent({\n eventName: \"NoVersionFoundWhenSpecified\",\n id: specifiedVersion,\n });\n }\n const snapshot = (await storageAdapter.getSnapshotTree(version)) ?? undefined;\n if (snapshot === undefined && version !== undefined) {\n mc.logger.sendErrorEvent({ eventName: \"getSnapshotTreeFailed\", id: version.id });\n }\n else if (snapshot !== undefined && version?.id === undefined) {\n mc.logger.sendErrorEvent({\n eventName: \"getSnapshotFetchedTreeWithoutVersionId\",\n hasVersion: version !== undefined, // if hasVersion is true, this means that the contract with the service was broken.\n });\n }\n return { snapshot, version };\n}\n//# sourceMappingURL=serializedStateManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable unicorn/consistent-function-scoping */\nimport { TypedEventEmitter, performance } from \"@fluid-internal/client-utils\";\nimport { AttachState, } from \"@fluidframework/container-definitions\";\nimport { isFluidCodeDetails, } from \"@fluidframework/container-definitions/internal\";\nimport { LogLevel, } from \"@fluidframework/core-interfaces\";\nimport { assert, isPromiseLike, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType, } from \"@fluidframework/driver-definitions\";\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { getSnapshotTree, MessageType2, OnlineStatus, isCombinedAppAndProtocolSummary, isInstanceOfISnapshot, isOnline, readAndParse, runWithRetry, } from \"@fluidframework/driver-utils/internal\";\nimport { EventEmitterWithErrorHandling, GenericError, PerformanceEvent, UsageError, connectedEventName, createChildLogger, createChildMonitoringContext, formatTick, normalizeError, raiseConnectedEvent, wrapError, loggerToMonitoringContext, } from \"@fluidframework/telemetry-utils/internal\";\nimport structuredClone from \"@ungap/structured-clone\";\nimport { v4 as uuid } from \"uuid\";\nimport { runRetriableAttachProcess, } from \"./attachment.js\";\nimport { Audience } from \"./audience.js\";\nimport { ConnectionManager } from \"./connectionManager.js\";\nimport { ConnectionState } from \"./connectionState.js\";\nimport { createConnectionStateHandler, } from \"./connectionStateHandler.js\";\nimport { ContainerContext } from \"./containerContext.js\";\nimport { ContainerStorageAdapter } from \"./containerStorageAdapter.js\";\nimport { ReconnectMode, getPackageName, } from \"./contracts.js\";\nimport { DeltaManager } from \"./deltaManager.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { RelativeLoader } from \"./loader.js\";\nimport { serializeMemoryDetachedBlobStorage, createMemoryDetachedBlobStorage, tryInitializeMemoryDetachedBlobStorage, } from \"./memoryBlobStorage.js\";\nimport { NoopHeuristic } from \"./noopHeuristic.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { ProtocolHandler, protocolHandlerShouldProcessSignal, } from \"./protocol.js\";\nimport { initQuorumValuesFromCodeDetails } from \"./quorum.js\";\nimport { SerializedStateManager, } from \"./serializedStateManager.js\";\nimport { combineAppAndProtocolSummary, combineSnapshotTreeAndSnapshotBlobs, getDetachedContainerStateFromSerializedContainer, getDocumentAttributes, getProtocolSnapshotTree, getSnapshotTreeAndBlobsFromSerializedContainer, runSingle, } from \"./utils.js\";\nconst detachedContainerRefSeqNumber = 0;\nconst dirtyContainerEvent = \"dirty\";\nconst savedContainerEvent = \"saved\";\nconst packageNotFactoryError = \"Code package does not implement IRuntimeFactory\";\n/**\n * Waits until container connects to delta storage and gets up-to-date.\n *\n * Useful when resolving URIs and hitting 404, due to container being loaded from (stale) snapshot and not being\n * up to date. Host may chose to wait in such case and retry resolving URI.\n *\n * Warning: Will wait infinitely for connection to establish if there is no connection.\n * May result in deadlock if Container.disconnect() is called and never followed by a call to Container.connect().\n *\n * @returns `true`: container is up to date, it processed all the ops that were know at the time of first connection.\n *\n * `false`: storage does not provide indication of how far the client is. Container processed all the ops known to it,\n * but it maybe still behind.\n *\n * @throws an error beginning with `\"Container closed\"` if the container is closed before it catches up.\n * @legacy\n * @alpha\n */\nexport async function waitContainerToCatchUp(container) {\n // Make sure we stop waiting if container is closed.\n if (container.closed) {\n throw new UsageError(\"waitContainerToCatchUp: Container closed\");\n }\n return new Promise((resolve, reject) => {\n const deltaManager = container.deltaManager;\n const closedCallback = (err) => {\n container.off(\"closed\", closedCallback);\n const baseMessage = \"Container closed while waiting to catch up\";\n reject(err === undefined\n ? new GenericError(baseMessage)\n : wrapError(err, (innerMessage) => new GenericError(`${baseMessage}: ${innerMessage}`)));\n };\n container.on(\"closed\", closedCallback);\n // Depending on config, transition to \"connected\" state may include the guarantee\n // that all known ops have been processed. If so, we may introduce additional wait here.\n // Waiting for \"connected\" state in either case gets us at least to our own Join op\n // which is a reasonable approximation of \"caught up\"\n const waitForOps = () => {\n assert(container.connectionState === ConnectionState.CatchingUp ||\n container.connectionState === ConnectionState.Connected, 0x0cd /* \"Container disconnected while waiting for ops!\" */);\n const hasCheckpointSequenceNumber = deltaManager.hasCheckpointSequenceNumber;\n const connectionOpSeqNumber = deltaManager.lastKnownSeqNumber;\n assert(deltaManager.lastSequenceNumber <= connectionOpSeqNumber, 0x266 /* \"lastKnownSeqNumber should never be below last processed sequence number\" */);\n if (deltaManager.lastSequenceNumber === connectionOpSeqNumber) {\n container.off(\"closed\", closedCallback);\n resolve(hasCheckpointSequenceNumber);\n return;\n }\n const callbackOps = (message) => {\n if (connectionOpSeqNumber <= message.sequenceNumber) {\n container.off(\"closed\", closedCallback);\n resolve(hasCheckpointSequenceNumber);\n deltaManager.off(\"op\", callbackOps);\n }\n };\n deltaManager.on(\"op\", callbackOps);\n };\n // We can leverage DeltaManager's \"connect\" event here and test for ConnectionState.Disconnected\n // But that works only if service provides us checkPointSequenceNumber\n // Our internal testing is based on R11S that does not, but almost all tests connect as \"write\" and\n // use this function to catch up, so leveraging our own join op as a fence/barrier\n if (container.connectionState === ConnectionState.Connected) {\n waitForOps();\n return;\n }\n const callback = () => {\n container.off(connectedEventName, callback);\n waitForOps();\n };\n container.on(connectedEventName, callback);\n if (container.connectionState === ConnectionState.Disconnected) {\n container.connect();\n }\n });\n}\nconst getCodeProposal = (quorum) => quorum.get(\"code\") ?? quorum.get(\"code2\");\n/**\n * Helper function to report to telemetry cases where operation takes longer than expected (200ms)\n * @param logger - logger to use\n * @param eventName - event name\n * @param action - functor to call and measure\n */\nexport async function ReportIfTooLong(logger, eventName, action) {\n const event = PerformanceEvent.start(logger, { eventName });\n const props = await action();\n if (event.duration > 200) {\n event.end(props);\n }\n}\nconst summarizerClientType = \"summarizer\";\nexport class Container extends EventEmitterWithErrorHandling {\n /**\n * Load an existing container.\n */\n static async load(loadProps, createProps) {\n const { version, pendingLocalState, loadMode, resolvedUrl } = loadProps;\n const container = new Container(createProps, loadProps);\n return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: \"Load\", ...loadMode }, async (event) => new Promise((resolve, reject) => {\n const defaultMode = { opsBeforeReturn: \"cached\" };\n // if we have pendingLocalState, anything we cached is not useful and we shouldn't wait for connection\n // to return container, so ignore this value and use undefined for opsBeforeReturn\n const mode = pendingLocalState\n ? { ...(loadMode ?? defaultMode), opsBeforeReturn: undefined }\n : loadMode ?? defaultMode;\n const onClosed = (err) => {\n // pre-0.58 error message: containerClosedWithoutErrorDuringLoad\n reject(err ?? new GenericError(\"Container closed without error during load\"));\n };\n container.on(\"closed\", onClosed);\n container\n .load(version, mode, resolvedUrl, pendingLocalState)\n .finally(() => {\n container.removeListener(\"closed\", onClosed);\n })\n .then((props) => {\n event.end({ ...props });\n resolve(container);\n }, (error) => {\n const err = normalizeError(error);\n // Depending where error happens, we can be attempting to connect to web socket\n // and continuously retrying (consider offline mode)\n // Host has no container to close, so it's prudent to do it here\n // Note: We could only dispose the container instead of just close but that would\n // the telemetry where users sometimes search for ContainerClose event to look\n // for load failures. So not removing this at this time.\n container.close(err);\n container.dispose(err);\n onClosed(err);\n });\n }), { start: true, end: true, cancel: \"generic\" });\n }\n /**\n * Create a new container in a detached state.\n */\n static async createDetached(createProps, codeDetails) {\n const container = new Container(createProps);\n return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: \"CreateDetached\" }, async (_event) => {\n await container.createDetached(codeDetails);\n return container;\n }, { start: true, end: true, cancel: \"generic\" });\n }\n /**\n * Create a new container in a detached state that is initialized with a\n * snapshot from a previous detached container.\n * @param createProps - Config options for this new container instance\n * @param snapshot - A stringified {@link IPendingDetachedContainerState}, e.g. generated via {@link serialize}\n */\n static async rehydrateDetachedFromSnapshot(createProps, snapshot) {\n const container = new Container(createProps);\n return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: \"RehydrateDetachedFromSnapshot\" }, async (_event) => {\n const detachedContainerState = getDetachedContainerStateFromSerializedContainer(snapshot);\n await container.rehydrateDetachedFromSnapshot(detachedContainerState);\n return container;\n }, { start: true, end: true, cancel: \"generic\" });\n }\n setLoaded() {\n // It's conceivable the container could be closed when this is called\n // Only transition states if currently loading\n if (this._lifecycleState === \"loading\") {\n this._lifecycleState = \"loaded\";\n // Connections transitions are delayed till we are loaded.\n // This is done by holding ops and signals until the end of load sequence\n // (calling this.handleDeltaConnectionArg() after setLoaded() call)\n // If this assert fires, it means our logic managing connection flow is wrong, and the logic below is also wrong.\n assert(this.connectionState !== ConnectionState.Connected, 0x969 /* not connected yet */);\n // Track membership changes and update connection state accordingly\n // We do this call here, instead of doing it in initializeProtocolState() due to pendingLocalState.\n // When we load from stashed state, we let connectionStateHandler know about clientId from previous container instance.\n // But we will play trailing ops from snapshot, including potentially playing join & leave ops for that same clientId!\n // In other words, if connectionStateHandler has access to Quorum early in load sequence, it will see events (in stashed ops mode)\n // in the order that is not possible in real life, that it may not expect.\n // Ideally, we should supply pendingLocalState?.clientId here as well, not in constructor, but it does not matter (at least today)\n this.connectionStateHandler.initProtocol(this.protocolHandler);\n // Propagate current connection state through the system.\n const readonly = this.readOnlyInfo.readonly ?? false;\n // This call does not look like needed any more, with delaying all connection-related events past loaded phase.\n // Yet, there could be some customer code that would break if we do not deliver it.\n // Will be removed in further PRs with proper changeset.\n this.setContextConnectedState(false /* connected */, readonly);\n // Deliver delayed calls to DeltaManager - we ignored \"connect\" events while loading.\n const cm = this._deltaManager.connectionManager;\n if (cm.connected) {\n const details = cm.connectionDetails;\n assert(details !== undefined, 0x96a /* should have details if connected */);\n this.connectionStateHandler.receivedConnectEvent(details);\n }\n }\n }\n get closed() {\n return (this._lifecycleState === \"closing\" || this._lifecycleState === \"closed\" || this.disposed);\n }\n get loaded() {\n return this._lifecycleState === \"loaded\";\n }\n get disposed() {\n return this._lifecycleState === \"disposing\" || this._lifecycleState === \"disposed\";\n }\n get runtime() {\n if (this._runtime === undefined) {\n throw new Error(\"Attempted to access runtime before it was defined\");\n }\n return this._runtime;\n }\n get protocolHandler() {\n if (this._protocolHandler === undefined) {\n throw new Error(\"Attempted to access protocolHandler before it was defined\");\n }\n return this._protocolHandler;\n }\n get connectionMode() {\n return this._deltaManager.connectionManager.connectionMode;\n }\n get resolvedUrl() {\n /**\n * All attached containers will have a document service,\n * this is required, as attached containers are attached to\n * a service. Detached containers will neither have a document\n * service or a resolved url as they only exist locally.\n * in order to create a document service a resolved url must\n * first be obtained, this is how the container is identified.\n * Because of this, the document service's resolved url\n * is always the same as the containers, as we had to\n * obtain the resolved url, and then create the service from it.\n */\n return this.service?.resolvedUrl;\n }\n get readOnlyInfo() {\n return this._deltaManager.readOnlyInfo;\n }\n get containerMetadata() {\n return this._containerMetadata;\n }\n /**\n * Sends signal to runtime (and data stores) to be read-only.\n * Hosts may have read only views, indicating to data stores that no edits are allowed.\n * This is independent from this._readonlyPermissions (permissions) and this.connectionMode\n * (server can return \"write\" mode even when asked for \"read\")\n * Leveraging same \"readonly\" event as runtime & data stores should behave the same in such case\n * as in read-only permissions.\n * But this.active can be used by some DDSes to figure out if ops can be sent\n * (for example, read-only view still participates in code proposals / upgrades decisions)\n *\n * Forcing Readonly does not prevent DDS from generating ops. It is up to user code to honour\n * the readonly flag. If ops are generated, they will accumulate locally and not be sent. If\n * there are pending in the outbound queue, it will stop sending until force readonly is\n * cleared.\n *\n * @param readonly - set or clear force readonly.\n */\n forceReadonly(readonly) {\n this._deltaManager.connectionManager.forceReadonly(readonly);\n }\n get deltaManager() {\n return this._deltaManager;\n }\n get connectionState() {\n return this.connectionStateHandler.connectionState;\n }\n get connected() {\n return this.connectionStateHandler.connectionState === ConnectionState.Connected;\n }\n /**\n * clientId of the latest connection. Changes only once client is connected, caught up and fully loaded.\n * Changes to clientId are delayed through container loading sequence and delived once container is fully loaded.\n * clientId does not reset on lost connection - old value persists until new connection is fully established.\n */\n get clientId() {\n return this.protocolHandler.audience.getSelf()?.clientId;\n }\n get isInteractiveClient() {\n return this.deltaManager.clientDetails.capabilities.interactive;\n }\n supportGetSnapshotApi() {\n const supportGetSnapshotApi = this.mc.config.getBoolean(\"Fluid.Container.UseLoadingGroupIdForSnapshotFetch2\") ===\n true && this.service?.policies?.supportGetSnapshotApi === true;\n return supportGetSnapshotApi;\n }\n /**\n * Get the code details that are currently specified for the container.\n * @returns The current code details if any are specified, undefined if none are specified.\n */\n getSpecifiedCodeDetails() {\n return this.getCodeDetailsFromQuorum();\n }\n /**\n * Get the code details that were used to load the container.\n * @returns The code details that were used to load the container if it is loaded, undefined if it is not yet\n * loaded.\n */\n getLoadedCodeDetails() {\n return this._loadedCodeDetails;\n }\n /**\n * Retrieves the audience associated with the document\n */\n get audience() {\n return this.protocolHandler.audience;\n }\n /**\n * Returns true if container is dirty.\n * Which means data loss if container is closed at that same moment\n * Most likely that happens when there is no network connection to Relay Service\n */\n get isDirty() {\n return this._dirtyContainer;\n }\n /**\n * {@inheritDoc @fluidframework/container-definitions#IContainer.entryPoint}\n */\n async getEntryPoint() {\n if (this._disposed) {\n throw new UsageError(\"The context is already disposed\");\n }\n if (this._runtime !== undefined) {\n return this._runtime.getEntryPoint?.();\n }\n return new Promise((resolve, reject) => {\n const runtimeInstantiatedHandler = () => {\n assert(this._runtime !== undefined, 0x5a3 /* runtimeInstantiated fired but runtime is still undefined */);\n resolve(this._runtime.getEntryPoint?.());\n this._lifecycleEvents.off(\"disposed\", disposedHandler);\n };\n const disposedHandler = () => {\n reject(new Error(\"ContainerContext was disposed\"));\n this._lifecycleEvents.off(\"runtimeInstantiated\", runtimeInstantiatedHandler);\n };\n this._lifecycleEvents.once(\"runtimeInstantiated\", runtimeInstantiatedHandler);\n this._lifecycleEvents.once(\"disposed\", disposedHandler);\n });\n }\n constructor(createProps, loadProps) {\n super((name, error) => {\n this.mc.logger.sendErrorEvent({\n eventName: \"ContainerEventHandlerException\",\n name: typeof name === \"string\" ? name : undefined,\n }, error);\n this.close(normalizeError(error));\n });\n /**\n * Lifecycle state of the container, used mainly to prevent re-entrancy and telemetry\n *\n * States are allowed to progress to further states:\n * \"loading\" - \"loaded\" - \"closing\" - \"disposing\" - \"closed\" - \"disposed\"\n *\n * For example, moving from \"closed\" to \"disposing\" is not allowed since it is an earlier state.\n *\n * loading: Container has been created, but is not yet in normal/loaded state\n * loaded: Container is in normal/loaded state\n * closing: Container has started closing process (for re-entrancy prevention)\n * disposing: Container has started disposing process (for re-entrancy prevention)\n * closed: Container has closed\n * disposed: Container has been disposed\n */\n this._lifecycleState = \"loading\";\n /**\n * During initialization we pause the inbound queues. We track this state to ensure we only call resume once\n */\n this.inboundQueuePausedFromInit = true;\n this.firstConnection = true;\n this.connectionTransitionTimes = [];\n this._dirtyContainer = false;\n this.attachmentData = { state: AttachState.Detached };\n this.clientsWhoShouldHaveLeft = new Set();\n this._containerMetadata = {};\n this.setAutoReconnectTime = performance.now();\n this._lifecycleEvents = new TypedEventEmitter();\n this._disposed = false;\n this.attach = runSingle(async (request, attachProps) => {\n await PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"Attach\" }, async () => {\n if (this._lifecycleState !== \"loaded\" ||\n this.attachmentData.state === AttachState.Attached) {\n // pre-0.58 error message: containerNotValidForAttach\n throw new UsageError(`The Container is not in a valid state for attach [${this._lifecycleState}] and [${this.attachState}]`);\n }\n const normalizeErrorAndClose = (error) => {\n const newError = normalizeError(error);\n this.close(newError);\n // add resolved URL on error object so that host has the ability to find this document and delete it\n newError.addTelemetryProperties({\n resolvedUrl: this.service?.resolvedUrl?.url,\n });\n return newError;\n };\n const setAttachmentData = (attachmentData) => {\n const previousState = this.attachmentData.state;\n this.attachmentData = attachmentData;\n const state = this.attachmentData.state;\n if (state !== previousState && state !== AttachState.Detached) {\n try {\n this.runtime.setAttachState(state);\n this.emit(state.toLocaleLowerCase());\n }\n catch (error) {\n throw normalizeErrorAndClose(error);\n }\n }\n };\n const createAttachmentSummary = (redirectTable) => {\n try {\n assert(this.deltaManager.inbound.length === 0, 0x0d6 /* \"Inbound queue should be empty when attaching\" */);\n return combineAppAndProtocolSummary(this.runtime.createSummary(redirectTable), this.captureProtocolSummary());\n }\n catch (error) {\n throw normalizeErrorAndClose(error);\n }\n };\n const createOrGetStorageService = async (summary) => {\n // Actually go and create the resolved document\n if (this.service === undefined) {\n const createNewResolvedUrl = await this.urlResolver.resolve(request);\n assert(this.client.details.type !== summarizerClientType &&\n createNewResolvedUrl !== undefined, 0x2c4 /* \"client should not be summarizer before container is created\" */);\n this.service = await runWithRetry(async () => this.serviceFactory.createContainer(summary, createNewResolvedUrl, this.subLogger, false), \"containerAttach\", this.mc.logger, {\n cancel: this._deltaManager.closeAbortController.signal,\n });\n }\n this.storageAdapter.connectToService(this.service);\n return this.storageAdapter;\n };\n let attachP = runRetriableAttachProcess({\n initialAttachmentData: this.attachmentData,\n offlineLoadEnabled: this.serializedStateManager.offlineLoadEnabled,\n detachedBlobStorage: this.detachedBlobStorage,\n setAttachmentData,\n createAttachmentSummary,\n createOrGetStorageService,\n });\n // only enable the new behavior if the config is set\n if (this.mc.config.getBoolean(\"Fluid.Container.RetryOnAttachFailure\") !== true) {\n attachP = attachP.catch((error) => {\n throw normalizeErrorAndClose(error);\n });\n }\n // If offline load is enabled, attachP will return the attach summary (in Snapshot format) so we can initialize SerializedStateManager\n const snapshotWithBlobs = await attachP;\n this.serializedStateManager.setInitialSnapshot(snapshotWithBlobs);\n if (!this.closed) {\n this.detachedBlobStorage?.dispose?.();\n this.handleDeltaConnectionArg(attachProps?.deltaConnection, {\n fetchOpsFromStorage: false,\n reason: { text: \"createDetached\" },\n });\n }\n }, { start: true, end: true, cancel: \"generic\" });\n });\n this.getAbsoluteUrl = async (relativeUrl) => {\n if (this.resolvedUrl === undefined) {\n return undefined;\n }\n return this.urlResolver.getAbsoluteUrl(this.resolvedUrl, relativeUrl, getPackageName(this._loadedCodeDetails));\n };\n this.metadataUpdateHandler = (metadata) => {\n this._containerMetadata = { ...this._containerMetadata, ...metadata };\n this.emit(\"metadataUpdate\", metadata);\n };\n this.updateDirtyContainerState = (dirty) => {\n if (this._dirtyContainer === dirty) {\n return;\n }\n this._dirtyContainer = dirty;\n this.emit(dirty ? dirtyContainerEvent : savedContainerEvent);\n };\n const { canReconnect, clientDetailsOverride, urlResolver, documentServiceFactory, codeLoader, options, scope, subLogger, detachedBlobStorage, protocolHandlerBuilder, } = createProps;\n this.connectionTransitionTimes[ConnectionState.Disconnected] = performance.now();\n const pendingLocalState = loadProps?.pendingLocalState;\n this._canReconnect = canReconnect ?? true;\n this.clientDetailsOverride = clientDetailsOverride;\n this.urlResolver = urlResolver;\n this.serviceFactory = documentServiceFactory;\n this.codeLoader = codeLoader;\n // Warning: this is only a shallow clone. Mutation of any individual loader option will mutate it for\n // all clients that were loaded from the same loader (including summarizer clients).\n // Tracking alternative ways to handle this in AB#4129.\n this.options = { ...options };\n this.scope = scope;\n this.protocolHandlerBuilder =\n protocolHandlerBuilder ??\n ((attributes, quorumSnapshot, sendProposal) => new ProtocolHandler(attributes, quorumSnapshot, sendProposal, new Audience(), (clientId) => this.clientsWhoShouldHaveLeft.has(clientId)));\n // Note that we capture the createProps here so we can replicate the creation call when we want to clone.\n this.clone = async (_loadProps, createParamOverrides) => {\n return Container.load(_loadProps, {\n ...createProps,\n ...createParamOverrides,\n });\n };\n this._containerId = uuid();\n this.client = Container.setupClient(this._containerId, options.client, this.clientDetailsOverride);\n // Create logger for data stores to use\n const type = this.client.details.type;\n const interactive = this.client.details.capabilities.interactive;\n const clientType = `${interactive ? \"interactive\" : \"noninteractive\"}${type !== undefined && type !== \"\" ? `/${type}` : \"\"}`;\n // Need to use the property getter for docId because for detached flow we don't have the docId initially.\n // We assign the id later so property getter is used.\n this.subLogger = createChildLogger({\n logger: subLogger,\n properties: {\n all: {\n clientType, // Differentiating summarizer container from main container\n containerId: this._containerId,\n docId: () => this.resolvedUrl?.id,\n containerAttachState: () => this.attachState,\n containerLifecycleState: () => this._lifecycleState,\n containerConnectionState: () => ConnectionState[this.connectionState],\n serializedContainer: pendingLocalState !== undefined,\n },\n // we need to be judicious with our logging here to avoid generating too much data\n // all data logged here should be broadly applicable, and not specific to a\n // specific error or class of errors\n error: {\n // load information to associate errors with the specific load point\n dmInitialSeqNumber: () => this._deltaManager?.initialSequenceNumber,\n dmLastProcessedSeqNumber: () => this._deltaManager?.lastSequenceNumber,\n dmLastKnownSeqNumber: () => this._deltaManager?.lastKnownSeqNumber,\n containerLoadedFromVersionId: () => this._loadedFromVersion?.id,\n containerLoadedFromVersionDate: () => this._loadedFromVersion?.date,\n // message information to associate errors with the specific execution state\n // dmLastMsqSeqNumber: if present, same as dmLastProcessedSeqNumber\n dmLastMsqSeqNumber: () => this.deltaManager?.lastMessage?.sequenceNumber,\n dmLastMsqSeqTimestamp: () => this.deltaManager?.lastMessage?.timestamp,\n dmLastMsqSeqClientId: () => this.deltaManager?.lastMessage?.clientId === null\n ? \"null\"\n : this.deltaManager?.lastMessage?.clientId,\n dmLastMsgClientSeq: () => this.deltaManager?.lastMessage?.clientSequenceNumber,\n connectionStateDuration: () => \n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n performance.now() - this.connectionTransitionTimes[this.connectionState],\n },\n },\n });\n // Prefix all events in this file with container-loader\n this.mc = createChildMonitoringContext({ logger: this.subLogger, namespace: \"Container\" });\n this._deltaManager = this.createDeltaManager();\n this.connectionStateHandler = createConnectionStateHandler({\n logger: this.mc.logger,\n // WARNING: logger on this context should not including getters like containerConnectionState above (on this.subLogger),\n // as that will result in attempt to dereference this.connectionStateHandler from this call while it's still undefined.\n mc: loggerToMonitoringContext(subLogger),\n connectionStateChanged: (value, oldState, reason) => {\n this.logConnectionStateChangeTelemetry(value, oldState, reason);\n if (this.loaded) {\n this.propagateConnectionState(value === ConnectionState.Disconnected\n ? reason\n : undefined /* disconnectedReason */);\n }\n },\n shouldClientJoinWrite: () => this._deltaManager.connectionManager.shouldJoinWrite(),\n maxClientLeaveWaitTime: options.maxClientLeaveWaitTime,\n logConnectionIssue: (eventName, category, details) => {\n const mode = this.connectionMode;\n // We get here when socket does not receive any ops on \"write\" connection, including\n // its own join op.\n // Report issues only if we already loaded container - op processing is paused while container is loading,\n // so we always time-out processing of join op in cases where fetching snapshot takes a minute.\n // It's not a problem with op processing itself - such issues should be tracked as part of boot perf monitoring instead.\n this._deltaManager.logConnectionIssue({\n eventName,\n mode,\n category: this._lifecycleState === \"loading\" ? \"generic\" : category,\n duration: performance.now() -\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.connectionTransitionTimes[ConnectionState.CatchingUp],\n ...(details === undefined ? {} : { details: JSON.stringify(details) }),\n });\n // This assert is important for many reasons:\n // 1) Cosmetic / OCE burden: It's useless to raise NoJoinOp error events, if we are loading, as that's most\n // likely to happen if snapshot loading takes too long. During this time we are not processing ops so there is no\n // way to move to \"connected\" state, and thus \"NoJoin\" timer would fire (see\n // IConnectionStateHandler.logConnectionIssue() callback and related code in ConnectStateHandler class implementation).\n // But these events do not tell us anything about connectivity pipeline / op processing pipeline,\n // only that boot is slow, and we have events for that.\n // 2) Doing recovery below is useless in loading mode, for the reasons described above. At the same time we can't\n // not do it, as maybe we lost JoinSignal for \"self\", and when loading is done, we never move to connected\n // state. So we would have to do (in most cases) useless infinite reconnect loop while we are loading.\n assert(this.loaded, 0x96b /* connection issues can be raised only after container is loaded */);\n // If this is \"write\" connection, it took too long to receive join op. But in most cases that's due\n // to very slow op fetches and we will eventually get there.\n // For \"read\" connections, we get here due to join signal for \"self\" not arriving on time.\n // Attempt to recover by reconnecting.\n if (mode === \"read\" && category === \"error\") {\n const reason = { text: \"NoJoinSignal\" };\n this.disconnectInternal(reason);\n this.connectInternal({ reason, fetchOpsFromStorage: false });\n }\n },\n clientShouldHaveLeft: (clientId) => {\n this.clientsWhoShouldHaveLeft.add(clientId);\n },\n onCriticalError: (error) => {\n this.close(normalizeError(error));\n },\n }, this.deltaManager, pendingLocalState?.clientId);\n this.on(savedContainerEvent, () => {\n this.connectionStateHandler.containerSaved();\n });\n // We expose our storage publicly, so it's possible others may call uploadSummaryWithContext() with a\n // non-combined summary tree (in particular, ContainerRuntime.submitSummary). We'll intercept those calls\n // using this callback and fix them up.\n const addProtocolSummaryIfMissing = (summaryTree) => isCombinedAppAndProtocolSummary(summaryTree) === true\n ? summaryTree\n : combineAppAndProtocolSummary(summaryTree, this.captureProtocolSummary());\n // Whether the combined summary tree has been forced on by either the supportedFeatures flag by the service or the the loader option or the monitoring context\n const enableSummarizeProtocolTree = this.mc.config.getBoolean(\"Fluid.Container.summarizeProtocolTree2\") ??\n options.summarizeProtocolTree;\n this.detachedBlobStorage =\n detachedBlobStorage ??\n (this.mc.config.getBoolean(\"Fluid.Container.MemoryBlobStorageEnabled\") === true\n ? createMemoryDetachedBlobStorage()\n : undefined);\n this.storageAdapter = new ContainerStorageAdapter(this.detachedBlobStorage, this.mc.logger, pendingLocalState?.snapshotBlobs, pendingLocalState?.loadedGroupIdSnapshots, addProtocolSummaryIfMissing, enableSummarizeProtocolTree);\n const offlineLoadEnabled = (this.isInteractiveClient &&\n this.mc.config.getBoolean(\"Fluid.Container.enableOfflineLoad\")) ??\n options.enableOfflineLoad === true;\n this.serializedStateManager = new SerializedStateManager(pendingLocalState, this.subLogger, this.storageAdapter, offlineLoadEnabled, this, () => this._deltaManager.connectionManager.shouldJoinWrite(), () => this.supportGetSnapshotApi(), this.mc.config.getNumber(\"Fluid.Container.snapshotRefreshTimeoutMs\"));\n const isDomAvailable = typeof document === \"object\" &&\n document !== null &&\n typeof document.addEventListener === \"function\" &&\n document.addEventListener !== null;\n // keep track of last time page was visible for telemetry (on interactive clients only)\n if (isDomAvailable && interactive) {\n this.lastVisible = document.hidden ? performance.now() : undefined;\n this.visibilityEventHandler = () => {\n if (document.hidden) {\n this.lastVisible = performance.now();\n }\n else {\n // settimeout so this will hopefully fire after disconnect event if being hidden caused it\n setTimeout(() => {\n this.lastVisible = undefined;\n }, 0);\n }\n };\n document.addEventListener(\"visibilitychange\", this.visibilityEventHandler);\n }\n }\n /**\n * Retrieves the quorum associated with the document\n */\n getQuorum() {\n return this.protocolHandler.quorum;\n }\n dispose(error) {\n this._deltaManager.dispose(error);\n this.verifyClosed();\n }\n close(error) {\n // 1. Ensure that close sequence is exactly the same no matter if it's initiated by host or by DeltaManager\n // 2. We need to ensure that we deliver disconnect event to runtime properly. See connectionStateChanged\n // handler. We only deliver events if container fully loaded. Transitioning from \"loading\" ->\n // \"closing\" will lose that info (can also solve by tracking extra state).\n this._deltaManager.close(error);\n this.verifyClosed();\n }\n verifyClosed() {\n assert(this.connectionState === ConnectionState.Disconnected, 0x0cf /* \"disconnect event was not raised!\" */);\n assert(this._lifecycleState === \"closed\" || this._lifecycleState === \"disposed\", 0x314 /* Container properly closed */);\n }\n closeCore(error) {\n assert(!this.closed, 0x315 /* re-entrancy */);\n try {\n // Ensure that we raise all key events even if one of these throws\n try {\n // Raise event first, to ensure we capture _lifecycleState before transition.\n // This gives us a chance to know what errors happened on open vs. on fully loaded container.\n // Log generic events instead of error events if container is in loading state, as most errors are not really FF errors\n // which can pollute telemetry for real bugs\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ContainerClose\",\n category: this._lifecycleState !== \"loading\" && error !== undefined ? \"error\" : \"generic\",\n }, error);\n this._lifecycleState = \"closing\";\n // Back-compat for Old driver\n if (this.service?.off !== undefined) {\n this.service?.off(\"metadataUpdate\", this.metadataUpdateHandler);\n }\n this._protocolHandler?.close();\n this.connectionStateHandler.dispose();\n }\n catch (newError) {\n this.mc.logger.sendErrorEvent({ eventName: \"ContainerCloseException\" }, newError);\n }\n this.emit(\"closed\", error);\n if (this.visibilityEventHandler !== undefined) {\n document.removeEventListener(\"visibilitychange\", this.visibilityEventHandler);\n }\n }\n finally {\n this._lifecycleState = \"closed\";\n // There is no user for summarizer, so we need to ensure dispose is called\n if (this.client.details.type === summarizerClientType) {\n this.dispose(error);\n }\n }\n }\n disposeCore(error) {\n assert(!this._disposed, 0x54c /* Container already disposed */);\n this._disposed = true;\n try {\n // Ensure that we raise all key events even if one of these throws\n try {\n // Raise event first, to ensure we capture _lifecycleState before transition.\n // This gives us a chance to know what errors happened on open vs. on fully loaded container.\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ContainerDispose\",\n // Only log error if container isn't closed\n category: !this.closed && error !== undefined ? \"error\" : \"generic\",\n }, error);\n // ! Progressing from \"closed\" to \"disposing\" is not allowed\n if (this._lifecycleState !== \"closed\") {\n this._lifecycleState = \"disposing\";\n }\n this._protocolHandler?.close();\n this.connectionStateHandler.dispose();\n const maybeError = error === undefined ? undefined : new Error(error.message);\n this._runtime?.dispose(maybeError);\n this.storageAdapter.dispose();\n // Notify storage about critical errors. They may be due to disconnect between client & server knowledge\n // about file, like file being overwritten in storage, but client having stale local cache.\n // Driver need to ensure all caches are cleared on critical errors\n this.service?.dispose(error);\n }\n catch (error_) {\n this.mc.logger.sendErrorEvent({ eventName: \"ContainerDisposeException\" }, error_);\n }\n this.emit(\"disposed\", error);\n this.removeAllListeners();\n if (this.visibilityEventHandler !== undefined) {\n document.removeEventListener(\"visibilitychange\", this.visibilityEventHandler);\n }\n }\n finally {\n this._lifecycleState = \"disposed\";\n this._lifecycleEvents.emit(\"disposed\");\n }\n }\n async closeAndGetPendingLocalState(stopBlobAttachingSignal) {\n // runtime matches pending ops to successful ones by clientId and client seq num, so we need to close the\n // container at the same time we get pending state, otherwise this container could reconnect and resubmit with\n // a new clientId and a future container using stale pending state without the new clientId would resubmit them\n const pendingState = await this.getPendingLocalStateCore({\n notifyImminentClosure: true,\n stopBlobAttachingSignal,\n });\n this.close();\n return pendingState;\n }\n /**\n * Serialize current container state required to rehydrate to the same position without dataloss.\n * Note: The container must already be attached. For detached containers use {@link serialize}\n * @returns stringified {@link IPendingContainerState} for the container\n */\n async getPendingLocalState() {\n return this.getPendingLocalStateCore({ notifyImminentClosure: false });\n }\n async getPendingLocalStateCore(props) {\n if (this.closed || this._disposed) {\n throw new UsageError(\"Pending state cannot be retried if the container is closed or disposed\");\n }\n assert(this.attachmentData.state === AttachState.Attached, 0x0d1 /* \"Container should be attached before close\" */);\n assert(this.resolvedUrl !== undefined && this.resolvedUrl.type === \"fluid\", 0x0d2 /* \"resolved url should be valid Fluid url\" */);\n const pendingState = await this.serializedStateManager.getPendingLocalState(props, this.clientId, this.runtime, this.resolvedUrl);\n return pendingState;\n }\n get attachState() {\n return this.attachmentData.state;\n }\n /**\n * Serialize current container state required to rehydrate to the same position without dataloss.\n * Note: The container must be detached and not closed. For attached containers use\n * {@link getPendingLocalState} or {@link closeAndGetPendingLocalState}\n * @returns stringified {@link IPendingDetachedContainerState} for the container\n */\n serialize() {\n if (this.attachmentData.state === AttachState.Attached || this.closed) {\n throw new UsageError(\"Container must not be attached or closed.\");\n }\n const attachingData = this.attachmentData.state === AttachState.Attaching ? this.attachmentData : undefined;\n const combinedSummary = attachingData?.summary ??\n combineAppAndProtocolSummary(this.runtime.createSummary(), this.captureProtocolSummary());\n const { baseSnapshot, snapshotBlobs } = getSnapshotTreeAndBlobsFromSerializedContainer(combinedSummary);\n const pendingRuntimeState = attachingData === undefined ? undefined : this.runtime.getPendingLocalState();\n assert(!isPromiseLike(pendingRuntimeState), 0x8e3 /* should not be a promise */);\n const detachedContainerState = {\n attached: false,\n baseSnapshot,\n snapshotBlobs,\n pendingRuntimeState,\n hasAttachmentBlobs: this.detachedBlobStorage !== undefined && this.detachedBlobStorage.size > 0,\n attachmentBlobs: serializeMemoryDetachedBlobStorage(this.detachedBlobStorage),\n };\n return JSON.stringify(detachedContainerState);\n }\n setAutoReconnectInternal(mode, reason) {\n const currentMode = this._deltaManager.connectionManager.reconnectMode;\n if (currentMode === mode) {\n return;\n }\n const now = performance.now();\n const duration = now - this.setAutoReconnectTime;\n this.setAutoReconnectTime = now;\n this.mc.logger.sendTelemetryEvent({\n eventName: mode === ReconnectMode.Enabled ? \"AutoReconnectEnabled\" : \"AutoReconnectDisabled\",\n connectionMode: this.connectionMode,\n connectionState: ConnectionState[this.connectionState],\n duration,\n });\n this._deltaManager.connectionManager.setAutoReconnect(mode, reason);\n }\n connect() {\n if (this.closed) {\n throw new UsageError(`The Container is closed and cannot be connected`);\n }\n else if (this.attachState !== AttachState.Attached) {\n throw new UsageError(`The Container is not attached and cannot be connected`);\n }\n else if (!this.connected) {\n // Note: no need to fetch ops as we do it preemptively as part of DeltaManager.attachOpHandler().\n // If there is gap, we will learn about it once connected, but the gap should be small (if any),\n // assuming that connect() is called quickly after initial container boot.\n this.connectInternal({\n reason: { text: \"DocumentConnect\" },\n fetchOpsFromStorage: false,\n });\n }\n }\n connectInternal(args) {\n assert(!this.closed, 0x2c5 /* \"Attempting to connect() a closed Container\" */);\n assert(this.attachState === AttachState.Attached, 0x2c6 /* \"Attempting to connect() a container that is not attached\" */);\n // Set Auto Reconnect Mode\n const mode = ReconnectMode.Enabled;\n this.setAutoReconnectInternal(mode, args.reason);\n // Resume processing ops and connect to delta stream\n this.resumeInternal(args);\n }\n disconnect() {\n if (this.closed) {\n throw new UsageError(`The Container is closed and cannot be disconnected`);\n }\n else {\n this.disconnectInternal({ text: \"DocumentDisconnect\" });\n }\n }\n disconnectInternal(reason) {\n assert(!this.closed, 0x2c7 /* \"Attempting to disconnect() a closed Container\" */);\n // Set Auto Reconnect Mode\n const mode = ReconnectMode.Disabled;\n this.setAutoReconnectInternal(mode, reason);\n }\n resumeInternal(args) {\n assert(!this.closed, 0x0d9 /* \"Attempting to connect() a closed DeltaManager\" */);\n // Resume processing ops\n if (this.inboundQueuePausedFromInit) {\n // This assert guards against possibility of ops/signals showing up too soon, while\n // container is not ready yet to receive them. We can hit it only if some internal code call into here,\n // as public API like Container.connect() can be only called when user got back container object, i.e.\n // it is already fully loaded.\n assert(this.loaded, 0x96c /* connect() can be called only in fully loaded state */);\n this.inboundQueuePausedFromInit = false;\n this._deltaManager.inbound.resume();\n this._deltaManager.inboundSignal.resume();\n }\n // Ensure connection to web socket\n this.connectToDeltaStream(args);\n }\n async proposeCodeDetails(codeDetails) {\n if (!isFluidCodeDetails(codeDetails)) {\n throw new Error(\"Provided codeDetails are not IFluidCodeDetails\");\n }\n if (this.codeLoader.IFluidCodeDetailsComparer) {\n const comparison = await this.codeLoader.IFluidCodeDetailsComparer.compare(codeDetails, this.getCodeDetailsFromQuorum());\n if (comparison !== undefined && comparison <= 0) {\n throw new Error(\"Proposed code details should be greater than the current\");\n }\n }\n return this.protocolHandler.quorum\n .propose(\"code\", codeDetails)\n .then(() => true)\n .catch(() => false);\n }\n async processCodeProposal() {\n const codeDetails = this.getCodeDetailsFromQuorum();\n await Promise.all([\n this.deltaManager.inbound.pause(),\n this.deltaManager.inboundSignal.pause(),\n ]);\n if ((await this.satisfies(codeDetails)) === true) {\n this.deltaManager.inbound.resume();\n this.deltaManager.inboundSignal.resume();\n return;\n }\n // pre-0.58 error message: existingContextDoesNotSatisfyIncomingProposal\n const error = new GenericError(\"Existing context does not satisfy incoming proposal\");\n this.close(error);\n }\n /**\n * Determines if the currently loaded module satisfies the incoming constraint code details\n */\n async satisfies(constraintCodeDetails) {\n // If we have no module, it can't satisfy anything.\n if (this._loadedModule === undefined) {\n return false;\n }\n const comparers = [];\n const maybeCompareCodeLoader = this.codeLoader;\n if (maybeCompareCodeLoader.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareCodeLoader.IFluidCodeDetailsComparer);\n }\n const maybeCompareExport = this._loadedModule?.module.fluidExport;\n if (maybeCompareExport?.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareExport.IFluidCodeDetailsComparer);\n }\n // If there are no comparers, then it's impossible to know if the currently loaded package satisfies\n // the incoming constraint, so we return false. Assuming it does not satisfy is safer, to force a reload\n // rather than potentially running with incompatible code.\n if (comparers.length === 0) {\n return false;\n }\n for (const comparer of comparers) {\n const satisfies = await comparer.satisfies(this._loadedModule?.details, constraintCodeDetails);\n if (satisfies === false) {\n return false;\n }\n }\n return true;\n }\n connectToDeltaStream(args) {\n // All agents need \"write\" access, including summarizer.\n if (!this._canReconnect || !this.client.details.capabilities.interactive) {\n args.mode = \"write\";\n }\n this._deltaManager.connect(args);\n }\n async createDocumentService(serviceProvider) {\n const service = await serviceProvider();\n // Back-compat for Old driver\n if (service.on !== undefined) {\n service.on(\"metadataUpdate\", this.metadataUpdateHandler);\n }\n return service;\n }\n /**\n * Load container.\n *\n * @param specifiedVersion - Version SHA to load snapshot. If not specified, will fetch the latest snapshot.\n */\n async load(specifiedVersion, loadMode, resolvedUrl, pendingLocalState) {\n const timings = { phase1: performance.now() };\n this.service = await this.createDocumentService(async () => this.serviceFactory.createDocumentService(resolvedUrl, this.subLogger, this.client.details.type === summarizerClientType));\n // Except in cases where it has stashed ops or requested by feature gate, the container will connect in \"read\" mode\n const mode = this.mc.config.getBoolean(\"Fluid.Container.ForceWriteConnection\") === true ||\n (pendingLocalState?.savedOps.length ?? 0) > 0\n ? \"write\"\n : \"read\";\n const connectionArgs = {\n reason: { text: \"DocumentOpen\" },\n mode,\n fetchOpsFromStorage: false,\n };\n // Start websocket connection as soon as possible. Note that there is no op handler attached yet, but the\n // DeltaManager is resilient to this and will wait to start processing ops until after it is attached.\n if (loadMode.deltaConnection === undefined) {\n this.connectToDeltaStream(connectionArgs);\n }\n this.storageAdapter.connectToService(this.service);\n this.attachmentData = {\n state: AttachState.Attached,\n };\n timings.phase2 = performance.now();\n // Fetch specified snapshot.\n const { baseSnapshot, version } = await this.serializedStateManager.fetchSnapshot(specifiedVersion);\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n this._loadedFromVersion = version;\n const attributes = await getDocumentAttributes(this.storageAdapter, baseSnapshotTree);\n // If we saved ops, we will replay them and don't need DeltaManager to fetch them\n const lastProcessedSequenceNumber = pendingLocalState?.savedOps[pendingLocalState.savedOps.length - 1]?.sequenceNumber ??\n attributes.sequenceNumber;\n let opsBeforeReturnP;\n // Attach op handlers to finish initialization and be able to start processing ops\n // Kick off any ops fetching if required.\n switch (loadMode.opsBeforeReturn) {\n case undefined: {\n // Start prefetch, but not set opsBeforeReturnP - boot is not blocked by it!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.attachDeltaManagerOpHandler(attributes, loadMode.deltaConnection === \"none\" ? \"none\" : \"all\", lastProcessedSequenceNumber);\n break;\n }\n case \"cached\":\n case \"all\": {\n opsBeforeReturnP = this.attachDeltaManagerOpHandler(attributes, loadMode.opsBeforeReturn, lastProcessedSequenceNumber);\n break;\n }\n default: {\n unreachableCase(loadMode.opsBeforeReturn);\n }\n }\n // ...load in the existing quorum\n // Initialize the protocol handler\n await this.initializeProtocolStateFromSnapshot(attributes, this.storageAdapter, baseSnapshotTree);\n // If we are loading from pending state, we start with old clientId.\n // We switch to latest connection clientId only after setLoaded().\n assert(this.clientId === undefined, 0x96d /* there should be no clientId yet */);\n if (pendingLocalState?.clientId !== undefined) {\n this.protocolHandler.audience.setCurrentClientId(pendingLocalState?.clientId);\n }\n timings.phase3 = performance.now();\n const codeDetails = this.getCodeDetailsFromQuorum();\n await this.instantiateRuntime(codeDetails, baseSnapshotTree, \n // give runtime a dummy value so it knows we're loading from a stash blob\n pendingLocalState ? pendingLocalState?.pendingRuntimeState ?? {} : undefined, isInstanceOfISnapshot(baseSnapshot) ? baseSnapshot : undefined);\n // replay saved ops\n if (pendingLocalState) {\n for (const message of pendingLocalState.savedOps) {\n this.processRemoteMessage({\n ...message,\n metadata: { ...message.metadata, savedOp: true },\n });\n // allow runtime to apply stashed ops at this op's sequence number\n await this.runtime.notifyOpReplay?.(message);\n }\n pendingLocalState.savedOps = [];\n this.storageAdapter.clearPendingState();\n }\n // We might have hit some failure that did not manifest itself in exception in this flow,\n // do not start op processing in such case - static version of Container.load() will handle it correctly.\n if (!this.closed) {\n if (opsBeforeReturnP !== undefined) {\n this._deltaManager.inbound.resume();\n await PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"WaitOps\" }, async () => opsBeforeReturnP);\n await PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"WaitOpProcessing\" }, async () => this._deltaManager.inbound.waitTillProcessingDone());\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._deltaManager.inbound.pause();\n }\n // Internal context is fully loaded at this point\n // Move to loaded before calling this.handleDeltaConnectionArg() - latter allows ops & signals in, which\n // may result in container moving to \"connected\" state. Such transitions are allowed only in loaded state.\n this.setLoaded();\n this.handleDeltaConnectionArg(loadMode.deltaConnection);\n }\n // Safety net: static version of Container.load() should have learned about it through \"closed\" handler.\n // But if that did not happen for some reason, fail load for sure.\n // Otherwise we can get into situations where container is closed and does not try to connect to ordering\n // service, but caller does not know that (callers do expect container to be not closed on successful path\n // and listen only on \"closed\" event)\n if (this.closed) {\n throw new Error(\"Container was closed while load()\");\n }\n timings.end = performance.now();\n this.subLogger.sendTelemetryEvent({\n eventName: \"LoadStagesTimings\",\n details: JSON.stringify(timings),\n }, undefined, LogLevel.verbose);\n return {\n sequenceNumber: attributes.sequenceNumber,\n version: version?.id,\n dmLastProcessedSeqNumber: this._deltaManager.lastSequenceNumber,\n dmLastKnownSeqNumber: this._deltaManager.lastKnownSeqNumber,\n };\n }\n async createDetached(codeDetails) {\n const attributes = {\n sequenceNumber: detachedContainerRefSeqNumber,\n minimumSequenceNumber: 0,\n };\n await this.attachDeltaManagerOpHandler(attributes);\n // Need to just seed the source data in the code quorum. Quorum itself is empty\n const qValues = initQuorumValuesFromCodeDetails(codeDetails);\n this.initializeProtocolState(attributes, {\n members: [],\n proposals: [],\n values: qValues,\n });\n await this.instantiateRuntime(codeDetails, undefined);\n this.setLoaded();\n }\n async rehydrateDetachedFromSnapshot({ baseSnapshot, snapshotBlobs, hasAttachmentBlobs, attachmentBlobs, pendingRuntimeState, }) {\n if (hasAttachmentBlobs) {\n if (attachmentBlobs !== undefined) {\n tryInitializeMemoryDetachedBlobStorage(this.detachedBlobStorage, attachmentBlobs);\n }\n assert(this.detachedBlobStorage !== undefined && this.detachedBlobStorage.size > 0, 0x250 /* \"serialized container with attachment blobs must be rehydrated with detached blob storage\" */);\n }\n const snapshotTreeWithBlobContents = combineSnapshotTreeAndSnapshotBlobs(baseSnapshot, snapshotBlobs);\n this.storageAdapter.loadSnapshotFromSnapshotBlobs(snapshotBlobs);\n const attributes = await getDocumentAttributes(this.storageAdapter, snapshotTreeWithBlobContents);\n await this.attachDeltaManagerOpHandler(attributes);\n // Initialize the protocol handler\n const baseTree = getProtocolSnapshotTree(snapshotTreeWithBlobContents);\n const qValues = await readAndParse(this.storageAdapter, \n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n baseTree.blobs.quorumValues);\n this.initializeProtocolState(attributes, {\n members: [],\n proposals: [],\n values: qValues,\n });\n const codeDetails = this.getCodeDetailsFromQuorum();\n await this.instantiateRuntime(codeDetails, snapshotTreeWithBlobContents, pendingRuntimeState);\n this.setLoaded();\n }\n async initializeProtocolStateFromSnapshot(attributes, storage, snapshot) {\n const quorumSnapshot = {\n members: [],\n proposals: [],\n values: [],\n };\n if (snapshot !== undefined) {\n const baseTree = getProtocolSnapshotTree(snapshot);\n [quorumSnapshot.members, quorumSnapshot.proposals, quorumSnapshot.values] =\n await Promise.all([\n readAndParse(storage, \n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n baseTree.blobs.quorumMembers),\n readAndParse(storage, \n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n baseTree.blobs.quorumProposals),\n readAndParse(storage, \n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n baseTree.blobs.quorumValues),\n ]);\n }\n this.initializeProtocolState(attributes, quorumSnapshot);\n }\n initializeProtocolState(attributes, quorumSnapshot) {\n const protocol = this.protocolHandlerBuilder(attributes, quorumSnapshot, (key, value) => \n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.submitMessage(MessageType.Propose, JSON.stringify({ key, value })));\n const protocolLogger = createChildLogger({\n logger: this.subLogger,\n namespace: \"ProtocolHandler\",\n });\n protocol.quorum.on(\"error\", (error) => {\n protocolLogger.sendErrorEvent(error);\n });\n protocol.quorum.on(\"addProposal\", (proposal) => {\n if (proposal.key === \"code\" || proposal.key === \"code2\") {\n this.emit(\"codeDetailsProposed\", proposal.value, proposal);\n }\n });\n protocol.quorum.on(\"approveProposal\", (sequenceNumber, key, value) => {\n if (key === \"code\" || key === \"code2\") {\n if (!isFluidCodeDetails(value)) {\n this.mc.logger.sendErrorEvent({\n eventName: \"CodeProposalNotIFluidCodeDetails\",\n });\n }\n this.processCodeProposal().catch((error) => {\n const normalizedError = normalizeError(error);\n this.close(normalizedError);\n throw error;\n });\n }\n });\n // we need to make sure this member get set in a synchronous context,\n // or other things can happen after the object that will be set is created, but not yet set\n // this was breaking this._initialClients handling\n //\n this._protocolHandler = protocol;\n }\n captureProtocolSummary() {\n const quorumSnapshot = this.protocolHandler.snapshot();\n const summary = {\n tree: {\n attributes: {\n content: JSON.stringify(this.protocolHandler.attributes),\n type: SummaryType.Blob,\n },\n quorumMembers: {\n content: JSON.stringify(quorumSnapshot.members),\n type: SummaryType.Blob,\n },\n quorumProposals: {\n content: JSON.stringify(quorumSnapshot.proposals),\n type: SummaryType.Blob,\n },\n quorumValues: {\n content: JSON.stringify(quorumSnapshot.values),\n type: SummaryType.Blob,\n },\n },\n type: SummaryType.Tree,\n };\n return summary;\n }\n getCodeDetailsFromQuorum() {\n const quorum = this.protocolHandler.quorum;\n const pkg = getCodeProposal(quorum);\n return pkg;\n }\n static setupClient(containerId, loaderOptionsClient, clientDetailsOverride) {\n const client = loaderOptionsClient === undefined\n ? {\n details: {\n capabilities: { interactive: true },\n },\n mode: \"read\", // default reconnection mode on lost connection / connection error\n permission: [],\n scopes: [],\n user: { id: \"\" },\n }\n : structuredClone(loaderOptionsClient);\n if (clientDetailsOverride !== undefined) {\n client.details = {\n ...client.details,\n ...clientDetailsOverride,\n capabilities: {\n ...client.details.capabilities,\n ...clientDetailsOverride?.capabilities,\n },\n };\n }\n client.details.environment = [\n client.details.environment,\n ` loaderVersion:${pkgVersion}`,\n ` containerId:${containerId}`,\n ].join(\";\");\n return client;\n }\n /**\n * Returns true if connection is active, i.e. it's \"write\" connection and\n * container runtime was notified about this connection (i.e. we are up-to-date and could send ops).\n * This happens after client received its own joinOp and thus is in the quorum.\n * If it's not true, runtime is not in position to send ops.\n */\n activeConnection() {\n return (this.connectionState === ConnectionState.Connected && this.connectionMode === \"write\");\n }\n createDeltaManager() {\n const serviceProvider = () => this.service;\n const deltaManager = new DeltaManager(serviceProvider, createChildLogger({ logger: this.subLogger, namespace: \"DeltaManager\" }), () => this.activeConnection(), (props) => new ConnectionManager(serviceProvider, () => this.isDirty, this.client, this._canReconnect, createChildLogger({ logger: this.subLogger, namespace: \"ConnectionManager\" }), props));\n // Disable inbound queues as Container is not ready to accept any ops until we are fully loaded!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n deltaManager.inbound.pause();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n deltaManager.inboundSignal.pause();\n deltaManager.on(\"connect\", (details, _opsBehind) => {\n assert(this.connectionMode === details.mode, 0x4b7 /* mismatch */);\n // Delay raising events until setLoaded()\n // Here are some of the reasons why this design is chosen:\n // 1. Various processes track speed of connection. But we are not processing ops or signal while container is loading,\n // and thus we can't move forward across connection modes. This results in telemetry errors (like NoJoinOp) that\n // have nothing to do with connection flow itself\n // 2. This also makes it hard to reason about recovery (like reconnection) in case we might have lost JoinSignal. Reconnecting\n // in loading phase is useless (get back to same state), but at the same time not doing it may result in broken connection\n // without recovery (after we loaded).\n // 3. We expose non-consistent view. ContainerRuntime may start loading in non-connected state, but end in connected, with\n // no events telling about it (until we loaded). Most of the code relies on a fact that state changes when events fire.\n // This will not delay any processes (as observed by the user). I.e. once container moves to loaded phase,\n // we immediately would transition across all phases, if we have proper signals / ops ready.\n if (this.loaded) {\n this.connectionStateHandler.receivedConnectEvent(details);\n }\n });\n deltaManager.on(\"establishingConnection\", (reason) => {\n this.connectionStateHandler.establishingConnection(reason);\n });\n deltaManager.on(\"cancelEstablishingConnection\", (reason) => {\n this.connectionStateHandler.cancelEstablishingConnection(reason);\n });\n deltaManager.on(\"disconnect\", (text, error) => {\n this.noopHeuristic?.notifyDisconnect();\n const reason = { text, error };\n // Symmetry with \"connect\" events\n if (this.loaded) {\n this.connectionStateHandler.receivedDisconnectEvent(reason);\n }\n else if (!this.closed) {\n // Raise cancellation to get state machine back to initial state\n this.connectionStateHandler.cancelEstablishingConnection(reason);\n }\n });\n deltaManager.on(\"throttled\", (warning) => {\n const warn = warning;\n // Some \"warning\" events come from outside the container and are logged\n // elsewhere (e.g. summarizing container). We shouldn't log these here.\n if (warn.logged !== true) {\n this.mc.logger.sendTelemetryEvent({ eventName: \"ContainerWarning\" }, warn);\n }\n this.emit(\"warning\", warn);\n });\n deltaManager.on(\"readonly\", (readonly) => {\n if (this.loaded) {\n this.setContextConnectedState(this.connectionState === ConnectionState.Connected, readonly);\n }\n this.emit(\"readonly\", readonly);\n });\n deltaManager.on(\"closed\", (error) => {\n this.closeCore(error);\n });\n deltaManager.on(\"disposed\", (error) => {\n this.disposeCore(error);\n });\n return deltaManager;\n }\n async attachDeltaManagerOpHandler(attributes, prefetchType, lastProcessedSequenceNumber) {\n return this._deltaManager.attachOpHandler(attributes.minimumSequenceNumber /* minimumSequenceNumber */, attributes.sequenceNumber /* snapshotSequenceNumber */, {\n process: (message) => this.processRemoteMessage(message),\n processSignal: (message) => {\n this.processSignal(message);\n },\n } /* handler to process incoming delta messages */, prefetchType, lastProcessedSequenceNumber);\n }\n logConnectionStateChangeTelemetry(value, oldState, reason) {\n // Log actual event\n const time = performance.now();\n this.connectionTransitionTimes[value] = time;\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const duration = time - this.connectionTransitionTimes[oldState];\n let durationFromDisconnected;\n let connectionInitiationReason;\n let autoReconnect;\n let checkpointSequenceNumber;\n let opsBehind;\n if (value === ConnectionState.Disconnected) {\n autoReconnect = this._deltaManager.connectionManager.reconnectMode;\n }\n else {\n if (value === ConnectionState.Connected) {\n durationFromDisconnected =\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n time - this.connectionTransitionTimes[ConnectionState.Disconnected];\n durationFromDisconnected = formatTick(durationFromDisconnected);\n }\n else if (value === ConnectionState.CatchingUp) {\n // This info is of most interesting while Catching Up.\n checkpointSequenceNumber = this.deltaManager.lastKnownSeqNumber;\n // Need to check that we have already loaded and fetched the snapshot.\n if (this.deltaManager.hasCheckpointSequenceNumber && this.loaded) {\n opsBehind = checkpointSequenceNumber - this.deltaManager.lastSequenceNumber;\n }\n }\n connectionInitiationReason = this.firstConnection ? \"InitialConnect\" : \"AutoReconnect\";\n }\n this.mc.logger.sendPerformanceEvent({\n eventName: `ConnectionStateChange_${ConnectionState[value]}`,\n from: ConnectionState[oldState],\n duration,\n durationFromDisconnected,\n reason: reason?.text,\n connectionInitiationReason,\n pendingClientId: this.connectionStateHandler.pendingClientId,\n clientId: this.connectionStateHandler.clientId,\n autoReconnect,\n opsBehind,\n online: OnlineStatus[isOnline()],\n lastVisible: this.lastVisible === undefined ? undefined : performance.now() - this.lastVisible,\n checkpointSequenceNumber,\n quorumSize: this._protocolHandler?.quorum.getMembers().size,\n isDirty: this.isDirty,\n ...this._deltaManager.connectionProps,\n }, reason?.error);\n if (value === ConnectionState.Connected) {\n this.firstConnection = false;\n }\n }\n propagateConnectionState(disconnectedReason) {\n const connected = this.connectionState === ConnectionState.Connected;\n if (connected) {\n const clientId = this.connectionStateHandler.clientId;\n assert(clientId !== undefined, 0x96e /* there has to be clientId */);\n this.protocolHandler.audience.setCurrentClientId(clientId);\n }\n // We communicate only transitions to Connected & Disconnected states, skipping all other states.\n // This can be changed in the future, for example we likely should add \"CatchingUp\" event on Container.\n if (this.connectionState !== ConnectionState.Connected &&\n this.connectionState !== ConnectionState.Disconnected) {\n return;\n }\n // Both protocol and context should not be undefined if we got so far.\n this.setContextConnectedState(connected, this.readOnlyInfo.readonly ?? false);\n this.protocolHandler.setConnectionState(connected, this.clientId);\n raiseConnectedEvent(this.mc.logger, this, connected, this.clientId, disconnectedReason?.text);\n }\n // back-compat: ADO #1385: Remove in the future, summary op should come through submitSummaryMessage()\n submitContainerMessage(type, contents, batch, metadata) {\n switch (type) {\n case MessageType.Operation: {\n return this.submitMessage(type, JSON.stringify(contents), batch, metadata);\n }\n case MessageType.Summarize: {\n return this.submitSummaryMessage(contents);\n }\n default: {\n const newError = new GenericError(\"invalidContainerSubmitOpType\", undefined /* error */, { messageType: type });\n this.close(newError);\n return -1;\n }\n }\n }\n /**\n * Gets the `clientSequenceNumber` of last message in a batch.\n */\n submitBatch(batch, referenceSequenceNumber) {\n let clientSequenceNumber = -1;\n for (const message of batch) {\n clientSequenceNumber = this.submitMessage(MessageType.Operation, message.contents, true, // batch\n message.metadata, message.compression, referenceSequenceNumber);\n }\n this._deltaManager.flush();\n return clientSequenceNumber;\n }\n submitSummaryMessage(summary, referenceSequenceNumber) {\n // github #6451: this is only needed for staging so the server\n // know when the protocol tree is included\n // this can be removed once all clients send\n // protocol tree by default\n if (summary.details === undefined) {\n summary.details = {};\n }\n summary.details.includesProtocolTree = this.storageAdapter.summarizeProtocolTree;\n return this.submitMessage(MessageType.Summarize, JSON.stringify(summary), false /* batch */, undefined /* metadata */, undefined /* compression */, referenceSequenceNumber);\n }\n submitMessage(type, contents, batch, metadata, compression, referenceSequenceNumber) {\n if (this.connectionState !== ConnectionState.Connected) {\n this.mc.logger.sendErrorEvent({ eventName: \"SubmitMessageWithNoConnection\", type });\n return -1;\n }\n this.noopHeuristic?.notifyMessageSent();\n return this._deltaManager.submit(type, contents, batch, metadata, compression, referenceSequenceNumber);\n }\n /**\n * Processes incoming delta messages\n * @param message - delta message received from the server\n */\n processRemoteMessage(message) {\n const local = this.clientId === message.clientId;\n // Allow the protocol handler to process the message\n const result = this.protocolHandler.processMessage(message, local);\n // Forward messages to the loaded runtime for processing\n this.runtime.process(message, local);\n this.serializedStateManager.addProcessedOp(message);\n // Inactive (not in quorum or not writers) clients don't take part in the minimum sequence number calculation.\n if (this.activeConnection()) {\n if (this.noopHeuristic === undefined) {\n const serviceConfiguration = this.deltaManager.serviceConfiguration;\n // Note that config from first connection will be used for this container's lifetime.\n // That means that if relay service changes settings, such changes will impact only newly booted\n // clients.\n // All existing will continue to use settings they got earlier.\n assert(serviceConfiguration !== undefined, 0x2e4 /* \"there should be service config for active connection\" */);\n this.noopHeuristic = new NoopHeuristic(serviceConfiguration.noopTimeFrequency, serviceConfiguration.noopCountFrequency);\n this.noopHeuristic.on(\"wantsNoop\", () => {\n // On disconnect we notify the heuristic which should prevent it from wanting a noop.\n // Hitting this assert would imply we lost activeConnection between notifying the heuristic of a processed message and\n // running the microtask that the heuristic queued in response.\n assert(this.activeConnection(), 0x241 /* \"Trying to send noop without active connection\" */);\n this.submitMessage(MessageType.NoOp);\n });\n }\n this.noopHeuristic.notifyMessageProcessed(message);\n // The contract with the protocolHandler is that returning \"immediateNoOp\" is equivalent to \"please immediately accept the proposal I just processed\".\n if (result.immediateNoOp === true) {\n // ADO:1385: Remove cast and use MessageType once definition changes propagate\n this.submitMessage(MessageType2.Accept);\n }\n }\n this.emit(\"op\", message);\n }\n // unknown should be removed once `@alpha` tag is removed from IContainerContext\n submitSignal(content, targetClientId) {\n this._deltaManager.submitSignal(JSON.stringify(content), targetClientId);\n }\n processSignal(message) {\n // No clientId indicates a system signal message.\n if (protocolHandlerShouldProcessSignal(message)) {\n this.protocolHandler.processSignal(message);\n }\n else {\n const local = this.clientId === message.clientId;\n this.runtime.processSignal(message, local);\n }\n }\n async instantiateRuntime(codeDetails, snapshotTree, pendingLocalState, snapshot) {\n assert(this._runtime?.disposed !== false, 0x0dd /* \"Existing runtime not disposed\" */);\n // The relative loader will proxy requests to '/' to the loader itself assuming no non-cache flags\n // are set. Global requests will still go directly to the loader\n const maybeLoader = this.scope;\n const loader = new RelativeLoader(this, maybeLoader.ILoader);\n const loadCodeResult = await PerformanceEvent.timedExecAsync(this.subLogger, { eventName: \"CodeLoad\" }, async () => this.codeLoader.load(codeDetails));\n this._loadedModule = {\n module: loadCodeResult.module,\n // An older interface ICodeLoader could return an IFluidModule which didn't have details.\n // If we're using one of those older ICodeLoaders, then we fix up the module with the specified details here.\n // TODO: Determine if this is still a realistic scenario or if this fixup could be removed.\n details: loadCodeResult.details ?? codeDetails,\n };\n const fluidExport = this._loadedModule.module.fluidExport;\n const runtimeFactory = fluidExport?.IRuntimeFactory;\n if (runtimeFactory === undefined) {\n throw new Error(packageNotFactoryError);\n }\n const existing = snapshotTree !== undefined;\n const context = new ContainerContext(this.options, this.scope, snapshotTree, this._loadedFromVersion, this._deltaManager, this.storageAdapter, this.protocolHandler.quorum, this.protocolHandler.audience, loader, (type, contents, batch, metadata) => this.submitContainerMessage(type, contents, batch, metadata), (summaryOp, referenceSequenceNumber) => this.submitSummaryMessage(summaryOp, referenceSequenceNumber), (batch, referenceSequenceNumber) => this.submitBatch(batch, referenceSequenceNumber), (content, targetClientId) => this.submitSignal(content, targetClientId), (error) => this.dispose(error), (error) => this.close(error), this.updateDirtyContainerState, this.getAbsoluteUrl, () => this.resolvedUrl?.id, () => this.clientId, () => this.attachState, () => this.connected, this._deltaManager.clientDetails, existing, this.subLogger, pendingLocalState, snapshot);\n this._runtime = await PerformanceEvent.timedExecAsync(this.subLogger, { eventName: \"InstantiateRuntime\" }, async () => runtimeFactory.instantiateRuntime(context, existing));\n this._lifecycleEvents.emit(\"runtimeInstantiated\");\n this._loadedCodeDetails = codeDetails;\n }\n /**\n * Set the connected state of the ContainerContext\n * This controls the \"connected\" state of the ContainerRuntime as well\n * @param connected - Is the container currently connected?\n * @param readonly - Is the container in readonly mode?\n */\n setContextConnectedState(connected, readonly) {\n if (this._runtime?.disposed === false && this.loaded) {\n /**\n * We want to lie to the ContainerRuntime when we are in readonly mode to prevent issues with pending\n * ops getting through to the DeltaManager.\n * The ContainerRuntime's \"connected\" state simply means it is ok to send ops\n * See https://dev.azure.com/fluidframework/internal/_workitems/edit/1246\n */\n this.runtime.setConnectionState(connected && !readonly, this.clientId);\n }\n }\n handleDeltaConnectionArg(deltaConnectionArg, connectionArgs) {\n // This ensures that we allow transitions to \"connected\" state only after container has been fully loaded\n // and we propagate such events to container runtime. All events prior to being loaded are ignored.\n // This means if we get here in non-loaded state, we might not deliver proper events to container runtime,\n // and runtime implementation may miss such events.\n assert(this.loaded, 0x96f /* has to be called after container transitions to loaded state */);\n switch (deltaConnectionArg) {\n case undefined: {\n if (connectionArgs) {\n // connect to delta stream now since we did not before\n this.connectToDeltaStream(connectionArgs);\n }\n }\n // intentional fallthrough\n case \"delayed\": {\n assert(this.inboundQueuePausedFromInit, 0x346 /* inboundQueuePausedFromInit should be true */);\n this.inboundQueuePausedFromInit = false;\n this._deltaManager.inbound.resume();\n this._deltaManager.inboundSignal.resume();\n break;\n }\n case \"none\": {\n break;\n }\n default: {\n unreachableCase(deltaConnectionArg);\n }\n }\n }\n}\n//# sourceMappingURL=container.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { createMultiSinkLogger, eventNamespaceSeparator, formatTick, } from \"@fluidframework/telemetry-utils/internal\";\n// This import style is necessary to ensure the emitted JS code works in both CJS and ESM.\nimport debugPkg from \"debug\";\nconst { debug: registerDebug } = debugPkg;\n/**\n * Implementation of debug logger\n */\nexport class DebugLogger {\n /**\n * Mix in debug logger with another logger.\n * Returned logger will output events to both newly created debug logger, as well as base logger\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param propertyGetters - Getters to add additional properties to all events\n * @param baseLogger - Base logger to output events (in addition to debug logger being created). Can be undefined.\n */\n static mixinDebugLogger(namespace, baseLogger, properties) {\n // Setup base logger upfront, such that host can disable it (if needed)\n const debug = registerDebug(namespace);\n // Create one for errors that is always enabled\n // It can be silenced by replacing console.error if the debug namespace is not enabled.\n const debugErr = registerDebug(namespace);\n debugErr.log = function (...args) {\n if (debug.enabled === true) {\n // if the namespace is enabled, just use the default logger\n registerDebug.log(...args);\n }\n else {\n // other wise, use the console logger (which could be replaced and silenced)\n console.error(...args);\n }\n };\n debugErr.enabled = true;\n return createMultiSinkLogger({\n namespace,\n loggers: [baseLogger, new DebugLogger(debug, debugErr)],\n properties,\n tryInheritProperties: true,\n });\n }\n constructor(debug, debugErr) {\n this.debug = debug;\n this.debugErr = debugErr;\n }\n /**\n * Send an event to debug loggers\n *\n * @param event - the event to send\n */\n send(event) {\n const newEvent = { ...event };\n const isError = newEvent.category === \"error\";\n let logger = isError ? this.debugErr : this.debug;\n // Use debug's coloring schema for base of the event\n const index = event.eventName.lastIndexOf(eventNamespaceSeparator);\n const name = event.eventName.slice(Math.max(0, index + 1));\n if (index > 0) {\n logger = logger.extend(event.eventName.slice(0, index));\n }\n newEvent.eventName = undefined;\n let tick = \"\";\n tick = `tick=${formatTick(performance.now())}`;\n // Extract stack to put it last, but also to avoid escaping '\\n' in it by JSON.stringify below\n const stack = newEvent.stack ?? \"\";\n newEvent.stack = undefined;\n // Watch out for circular references - they can come from two sources\n // 1) error object - we do not control it and should remove it and retry\n // 2) properties supplied by telemetry caller - that's a bug that should be addressed!\n let payload;\n try {\n payload = JSON.stringify(newEvent);\n }\n catch {\n newEvent.error = undefined;\n payload = JSON.stringify(newEvent);\n }\n if (payload === \"{}\") {\n payload = \"\";\n }\n // Force errors out, to help with diagnostics\n if (isError) {\n logger.enabled = true;\n }\n // Print multi-line.\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n logger(`${name} ${payload} ${tick} ${stack}`);\n }\n}\n//# sourceMappingURL=debugLogger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LoaderHeader, } from \"@fluidframework/container-definitions/internal\";\nimport { PerformanceEvent, createChildMonitoringContext, mixinMonitoringContext, sessionStorageConfigProvider, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { Container } from \"./container.js\";\nimport { DebugLogger } from \"./debugLogger.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { getAttachedContainerStateFromSerializedContainer, tryParseCompatibleResolvedUrl, } from \"./utils.js\";\nfunction ensureResolvedUrlDefined(resolved) {\n if (resolved === undefined) {\n throw new Error(`Object is not a IResolveUrl.`);\n }\n}\n/**\n * @internal\n */\nexport class RelativeLoader {\n constructor(container, loader) {\n this.container = container;\n this.loader = loader;\n }\n async resolve(request) {\n if (request.url.startsWith(\"/\")) {\n ensureResolvedUrlDefined(this.container.resolvedUrl);\n const container = await this.container.clone({\n resolvedUrl: { ...this.container.resolvedUrl },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n version: request.headers?.[LoaderHeader.version] ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n loadMode: request.headers?.[LoaderHeader.loadMode],\n }, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n canReconnect: request.headers?.[LoaderHeader.reconnect],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n clientDetailsOverride: request.headers?.[LoaderHeader.clientDetails],\n });\n return container;\n }\n if (this.loader === undefined) {\n throw new Error(\"Cannot resolve external containers\");\n }\n return this.loader.resolve(request);\n }\n}\n/**\n * Manages Fluid resource loading\n * @legacy\n * @alpha\n */\nexport class Loader {\n constructor(loaderProps) {\n const { urlResolver, documentServiceFactory, codeLoader, options, scope, logger, detachedBlobStorage, configProvider, protocolHandlerBuilder, } = loaderProps;\n const telemetryProps = {\n loaderId: uuid(),\n loaderVersion: pkgVersion,\n };\n const subMc = mixinMonitoringContext(DebugLogger.mixinDebugLogger(\"fluid:telemetry\", logger, {\n all: telemetryProps,\n }), sessionStorageConfigProvider.value, configProvider);\n this.services = {\n urlResolver,\n documentServiceFactory,\n codeLoader,\n options: options ?? {},\n scope: options?.provideScopeLoader === false ? { ...scope } : { ...scope, ILoader: this },\n detachedBlobStorage,\n protocolHandlerBuilder,\n subLogger: subMc.logger,\n };\n this.mc = createChildMonitoringContext({\n logger: this.services.subLogger,\n namespace: \"Loader\",\n });\n }\n async createDetachedContainer(codeDetails, createDetachedProps) {\n return Container.createDetached({\n ...createDetachedProps,\n ...this.services,\n }, codeDetails);\n }\n async rehydrateDetachedContainerFromSnapshot(snapshot, createDetachedProps) {\n return Container.rehydrateDetachedFromSnapshot({\n ...createDetachedProps,\n ...this.services,\n }, snapshot);\n }\n async resolve(request, pendingLocalState) {\n const eventName = pendingLocalState === undefined ? \"Resolve\" : \"ResolveWithPendingState\";\n return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName }, async () => {\n return this.resolveCore(request, getAttachedContainerStateFromSerializedContainer(pendingLocalState));\n });\n }\n async resolveCore(request, pendingLocalState) {\n const resolvedAsFluid = await this.services.urlResolver.resolve(request);\n ensureResolvedUrlDefined(resolvedAsFluid);\n // Parse URL into data stores\n const parsed = tryParseCompatibleResolvedUrl(resolvedAsFluid.url);\n if (parsed === undefined) {\n throw new Error(`Invalid URL ${resolvedAsFluid.url}`);\n }\n if (pendingLocalState !== undefined) {\n const parsedPendingUrl = tryParseCompatibleResolvedUrl(pendingLocalState.url);\n if (parsedPendingUrl?.id !== parsed.id ||\n parsedPendingUrl?.path.replace(/\\/$/, \"\") !== parsed.path.replace(/\\/$/, \"\")) {\n const message = `URL ${resolvedAsFluid.url} does not match pending state URL ${pendingLocalState.url}`;\n throw new Error(message);\n }\n }\n request.headers ?? (request.headers = {});\n // If set in both query string and headers, use query string. Also write the value from the query string into the header either way.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n request.headers[LoaderHeader.version] =\n parsed.version ?? request.headers[LoaderHeader.version];\n return this.loadContainer(request, resolvedAsFluid, pendingLocalState);\n }\n async loadContainer(request, resolvedUrl, pendingLocalState) {\n return Container.load({\n resolvedUrl,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n version: request.headers?.[LoaderHeader.version] ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n loadMode: request.headers?.[LoaderHeader.loadMode],\n pendingLocalState,\n }, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n canReconnect: request.headers?.[LoaderHeader.reconnect],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n clientDetailsOverride: request.headers?.[LoaderHeader.clientDetails],\n ...this.services,\n });\n }\n}\n//# sourceMappingURL=loader.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This abstract class implements IDocumentServiceFactory interface. It uses delegation pattern.\n * It delegates all calls to IDocumentServiceFactory implementation passed to constructor.\n */\nexport class DocumentServiceFactoryProxy {\n constructor(_serviceFactory) {\n this._serviceFactory = _serviceFactory;\n }\n get serviceFactory() {\n return this._serviceFactory;\n }\n async createContainer(createNewSummary, createNewResolvedUrl, logger, clientIsSummarizer) {\n return this.serviceFactory.createContainer(createNewSummary, createNewResolvedUrl, logger, clientIsSummarizer);\n }\n async createDocumentService(resolvedUrl, logger, clientIsSummarizer) {\n return this.serviceFactory.createDocumentService(resolvedUrl, logger, clientIsSummarizer);\n }\n}\n//# sourceMappingURL=documentServiceFactoryProxy.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\n/**\n * This abstract class implements IDocumentService interface. It uses delegation pattern.\n * It delegates all calls to IDocumentService implementation passed to constructor.\n */\nexport class DocumentServiceProxy extends TypedEventEmitter {\n constructor(_service) {\n super();\n this._service = _service;\n }\n get service() {\n return this._service;\n }\n async connectToStorage() {\n return this._service.connectToStorage();\n }\n async connectToDeltaStorage() {\n return this._service.connectToDeltaStorage();\n }\n async connectToDeltaStream(client) {\n return this._service.connectToDeltaStream(client);\n }\n dispose(error) {\n this._service.dispose(error);\n }\n get resolvedUrl() {\n return this._service.resolvedUrl;\n }\n}\n//# sourceMappingURL=documentServiceProxy.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @public\n */\nexport var SummaryCompressionAlgorithm;\n(function (SummaryCompressionAlgorithm) {\n SummaryCompressionAlgorithm[SummaryCompressionAlgorithm[\"None\"] = 0] = \"None\";\n SummaryCompressionAlgorithm[SummaryCompressionAlgorithm[\"LZ4\"] = 1] = \"LZ4\";\n})(SummaryCompressionAlgorithm || (SummaryCompressionAlgorithm = {}));\nexport const DefaultCompressionStorageConfig = {\n algorithm: SummaryCompressionAlgorithm.LZ4,\n minSizeToCompress: 500,\n};\n//# sourceMappingURL=compressionTypes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType, } from \"@fluidframework/driver-definitions\";\nimport { compress, decompress } from \"lz4js\";\nimport { DocumentStorageServiceProxy } from \"../../../documentStorageServiceProxy.js\";\nimport { SummaryCompressionAlgorithm } from \"../index.js\";\n/**\n * @internal\n */\nexport const blobHeadersBlobName = \".metadata.blobHeaders\";\nconst metadataBlobName = \".metadata\";\n/**\n * This class is a proxy for the IDocumentStorageService that compresses and decompresses blobs in the summary.\n * The identification of the compressed blobs is done by adding a compression markup blob to the summary.\n * Even if the markup blob is present, it does not mean that all blobs are compressed. The blob,\n * which is compressed also contain the compression algorithm enumerated value from the\n * SummaryCompressionAlgorithm enumeration in the first byte . If the blob is not\n * commpressed, it contains the first byte equals to SummaryCompressionAlgorithm.None .\n * In case, the markup blob is present, it is expected that the first byte of the markup blob\n * will contain the info about the compression. If the first byte is not present, it is assumed\n * that the compression is not enabled and no first prefix byte is present in the blobs.\n * @public\n */\nexport class DocumentStorageServiceCompressionAdapter extends DocumentStorageServiceProxy {\n constructor(service, _config) {\n super(service);\n this._config = _config;\n this._isCompressionEnabled = false;\n }\n get service() {\n return this.internalStorageService;\n }\n /**\n * This method returns `true` if there is a compression markup byte in the blob, otherwise `false`.\n * @param blob - The blob to compress.\n * @returns `true` if there is a compression markup byte in the blob, otherwise `false`.\n */\n static hasPrefix(blob) {\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstByte = IsoBuffer.from(blob)[0];\n // eslint-disable-next-line no-bitwise\n return (firstByte & 0xf0) === 0xb0;\n }\n /**\n * This method reads the first byte from the given blob and maps that byte to the compression algorithm.\n * @param blob - The maybe compressed blob.\n */\n static readAlgorithmFromBlob(blob) {\n return !this.hasPrefix(blob)\n ? SummaryCompressionAlgorithm.None\n : // TODO why are we non null asserting here?\n // eslint-disable-next-line no-bitwise, @typescript-eslint/no-non-null-assertion\n IsoBuffer.from(blob)[0] & 0x0f;\n }\n /**\n * This method writes the given algorithm to the blob as the first byte.\n * @param blob - The blob to write the algorithm to.\n * @param algorithm - The algorithm to write.\n * @returns The blob with the algorithm as the first byte.\n */\n static writeAlgorithmToBlob(blob, algorithm) {\n if (algorithm === SummaryCompressionAlgorithm.None) {\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstByte = IsoBuffer.from(blob)[0];\n // eslint-disable-next-line no-bitwise\n if ((firstByte & 0xf0) !== 0xb0) {\n return blob;\n }\n }\n assert(algorithm < 0x10, 0x6f5 /* Algorithm should be less than 0x10 */);\n const blobView = new Uint8Array(blob);\n const blobLength = blobView.length;\n const newBlob = new Uint8Array(blobLength + 1);\n // eslint-disable-next-line no-bitwise\n const prefix = 0xb0 | algorithm;\n newBlob[0] = prefix;\n newBlob.set(blobView, 1);\n return IsoBuffer.from(newBlob);\n }\n /**\n * This method removes the algorithm markup prefix from the blob (1 byte)\n * @param blob - The blob to remove the prefix from.\n * @returns The blob without the prefix.\n */\n static removePrefixFromBlobIfPresent(blob) {\n const blobView = new Uint8Array(blob);\n return this.hasPrefix(blob) ? IsoBuffer.from(blobView.subarray(1)) : blob;\n }\n /**\n * This method converts the given argument to Uint8Array. If the parameter is already Uint8Array,\n * it is just returned as is. If the parameter is string, it is converted to Uint8Array using\n * TextEncoder.\n * @param input - The input to convert to Uint8Array.\n * @returns The Uint8Array representation of the input.\n */\n static toBinaryArray(input) {\n return typeof input === \"string\" ? new TextEncoder().encode(input) : input;\n }\n /**\n * This method encodes the given blob according to the given config.\n * @param file - The blob to encode.\n * @param config - The config to use for encoding.\n * @returns The encoded blob.\n */\n static encodeBlob(file, config) {\n let maybeCompressed;\n let algorithm = config.algorithm;\n if (new Uint8Array(file).length < config.minSizeToCompress) {\n maybeCompressed = file;\n algorithm = SummaryCompressionAlgorithm.None;\n }\n else if (algorithm === SummaryCompressionAlgorithm.None) {\n maybeCompressed = file;\n }\n else if (algorithm === SummaryCompressionAlgorithm.LZ4) {\n const compressed = compress(file);\n maybeCompressed = compressed;\n }\n else {\n throw new Error(`Unknown Algorithm ${config.algorithm}`);\n }\n maybeCompressed = DocumentStorageServiceCompressionAdapter.writeAlgorithmToBlob(maybeCompressed, algorithm);\n return maybeCompressed;\n }\n /**\n * This method decodes the given blob.\n * @param file - The blob to decode.\n * @returns The decoded blob.\n */\n static decodeBlob(file) {\n let decompressed;\n let originalBlob;\n let algorithm;\n if (this.hasPrefix(file)) {\n algorithm = DocumentStorageServiceCompressionAdapter.readAlgorithmFromBlob(file);\n originalBlob = this.removePrefixFromBlobIfPresent(file);\n }\n else {\n algorithm = SummaryCompressionAlgorithm.None;\n originalBlob = file;\n }\n if (algorithm === SummaryCompressionAlgorithm.None) {\n decompressed = originalBlob;\n }\n else if (algorithm === SummaryCompressionAlgorithm.LZ4) {\n decompressed = decompress(originalBlob);\n }\n else {\n throw new Error(`Unknown Algorithm ${algorithm}`);\n }\n return decompressed;\n }\n /**\n * This method traverses the SummaryObject recursively. If it finds the ISummaryBlob object,\n * it applies encoding/decoding on it according to the given isEncode flag.\n * @param isEncode - True if the encoding should be applied, false if the decoding should be applied.\n * @param input - The summary object to traverse.\n * @param encoder - The encoder function to use.\n * @param decoder - The decoder function to use.\n * @param config - The config to use for encoding.\n * @param context - The summary context.\n * @returns The summary object with the encoded/decoded blob.\n */\n static recursivelyReplace(isEncode, input, encoder, decoder, config, context) {\n assert(typeof input === \"object\", 0x6f6 /* input must be a non-null object */);\n const maybeReplaced = isEncode ? encoder(input, config) : decoder(input);\n if (maybeReplaced !== input) {\n return maybeReplaced;\n }\n let clone;\n for (const key of Object.keys(input)) {\n const value = input[key];\n if (Boolean(value) && typeof value === \"object\") {\n const replaced = this.recursivelyReplace(isEncode, value, encoder, decoder, config, context);\n if (replaced !== value) {\n clone = clone ?? (Array.isArray(input) ? [...input] : { ...input });\n clone[key] = replaced;\n }\n }\n }\n return (clone ?? input);\n }\n /**\n * This method traverses the SummaryTree recursively. If it finds the ISummaryBlob object with the key '.metadata',\n * it returns the summary tree containing that blob.\n *\n * @param summary - The summary tree to traverse.\n * @returns The summary tree containing the metadata blob.\n */\n static findMetadataHolderSummary(summary) {\n assert(typeof summary === \"object\", 0x6f7 /* summary must be a non-null object */);\n for (const [key, value] of Object.entries(summary.tree)) {\n if (Boolean(value) && value.type === SummaryType.Tree) {\n const found = this.findMetadataHolderSummary(value);\n if (found) {\n return found;\n }\n }\n if (Boolean(value) && key === metadataBlobName && value.type === SummaryType.Blob) {\n return summary;\n }\n }\n return undefined;\n }\n /**\n * This method obtains the summary tree containing the metadata blob. It returns the content\n * of the tree atribute.\n * @param summary - The summary tree to traverse.\n * @returns The content of the tree attribute of the summary tree containing the metadata blob.\n */\n static getMetadataHolderTree(summary) {\n const metadataHolder = this.findMetadataHolderSummary(summary);\n assert(metadataHolder !== undefined, 0x6f8 /* metadataHolder must be a non-null object */);\n const metadataHolderTree = metadataHolder.tree;\n return metadataHolderTree;\n }\n /**\n * This method adds the compression markup blob to the nested summary tree containing the metadata blob.\n * @param summary - The top summary tree to put the compression markup blob into.\n */\n static putCompressionMarkup(summary) {\n const metadataHolderTree = DocumentStorageServiceCompressionAdapter.getMetadataHolderTree(summary);\n metadataHolderTree[blobHeadersBlobName] = {\n type: 2,\n content: \"\",\n };\n }\n /**\n * This method traverses the SnapshotTree recursively. If it finds the ISummaryBlob object with the key '.metadata',\n * it checks, if the SummaryTree holder of that object also contains the compression markup blob. If it is found,\n * it returns true, otherwise false.\n * @param snapshot - The snapshot tree to traverse.\n * @returns True if the compression markup blob is found, otherwise false.\n */\n static hasCompressionMarkup(snapshot) {\n assert(typeof snapshot === \"object\", 0x6f9 /* snapshot must be a non-null object */);\n for (const key of Object.keys(snapshot.blobs)) {\n if (key === metadataBlobName) {\n const value = snapshot.blobs[blobHeadersBlobName];\n if (value !== undefined) {\n return true;\n }\n }\n }\n for (const key of Object.keys(snapshot.trees)) {\n const value = snapshot[key];\n if (value !== undefined) {\n const found = this.hasCompressionMarkup(value);\n if (found) {\n return found;\n }\n }\n }\n return false;\n }\n /**\n * This method performs compression of the blobs in the summary tree.\n * @param summary - The summary tree to compress.\n * @param config - The compression config.\n * @returns The compressed summary tree.\n */\n static compressSummary(summary, config) {\n this.putCompressionMarkup(summary);\n const prep = DocumentStorageServiceCompressionAdapter.recursivelyReplace(true, summary, DocumentStorageServiceCompressionAdapter.blobEncoder, DocumentStorageServiceCompressionAdapter.blobDecoder, config);\n //\tconsole.log(`Miso summary-blob Summary Upload: ${JSON.stringify(prep).length}`);\n return prep;\n }\n /**\n * This method read blob from the storage and decompresses it if it is compressed.\n * @param id - The id of the blob to read.\n * @returns The decompressed blob.\n */\n async readBlob(id) {\n const originalBlob = await super.readBlob(id);\n if (!this._isCompressionEnabled) {\n return originalBlob;\n }\n else {\n const decompressedBlob = DocumentStorageServiceCompressionAdapter.decodeBlob(originalBlob);\n //\t\t\tconsole.log(`Miso summary-blob Blob read END : ${id} ${decompressedBlob.byteLength}`);\n return decompressedBlob;\n }\n }\n /**\n * This method loads the snapshot tree from the server. It also checks, if the compression markup blob is present\n * and setups the compression flag accordingly. It also identifies the blobs that are not compressed and do not contain\n * algorithm byte prefix and store them.\n * @param version - The version of the snapshot tree to load.\n * @param scenarioName - The scenario name of the snapshot tree to load.\n * @returns The snapshot tree.\n */\n async getSnapshotTree(version, scenarioName) {\n const snapshotTree = await super.getSnapshotTree(version, scenarioName);\n this._isCompressionEnabled =\n snapshotTree !== undefined &&\n snapshotTree !== null &&\n DocumentStorageServiceCompressionAdapter.hasCompressionMarkup(snapshotTree);\n return snapshotTree;\n }\n /**\n * This method uploads the summary to the storage. It performs compression of the blobs in the summary tree.\n * @param summary - The summary tree to upload.\n * @param context - The summary context.\n * @returns The ID of the uploaded summary.\n */\n async uploadSummaryWithContext(summary, context) {\n const prep = DocumentStorageServiceCompressionAdapter.compressSummary(summary, this._config);\n return super.uploadSummaryWithContext(prep, context);\n }\n /**\n * This method downloads the summary from the storage and then applies decompression on the compressed blobs.\n * @param id - The ID of the summary to be downloaded\n * @returns The summary with decompressed blobs\n */\n async downloadSummary(id) {\n const summary = await super.downloadSummary(id);\n return !this._isCompressionEnabled\n ? summary\n : DocumentStorageServiceCompressionAdapter.recursivelyReplace(false, summary, DocumentStorageServiceCompressionAdapter.blobEncoder, DocumentStorageServiceCompressionAdapter.blobDecoder, this._config);\n }\n}\n/**\n * This method encodes the blob inside the given summary object of the SummaryType.Blob type using the given config\n * containing the compression algorithm.\n * @param input - The summary object to encode.\n * @param config - The config containing the compression algorithm.\n * @returns The summary object with the encoded blob.\n */\nDocumentStorageServiceCompressionAdapter.blobEncoder = (input, config) => {\n if (input.type === SummaryType.Blob) {\n const summaryBlob = input;\n const original = DocumentStorageServiceCompressionAdapter.toBinaryArray(summaryBlob.content);\n const processed = DocumentStorageServiceCompressionAdapter.encodeBlob(original, config);\n const newSummaryBlob = {\n type: SummaryType.Blob,\n content: IsoBuffer.from(processed),\n };\n return newSummaryBlob;\n }\n else {\n return input;\n }\n};\n/**\n * This method decodes the blob inside the given summary object of the SummaryType.Blob type.\n * @param input - The summary object to decode.\n * @returns The summary object with the decoded blob.\n */\nDocumentStorageServiceCompressionAdapter.blobDecoder = (input) => {\n if (input.type === SummaryType.Blob) {\n const summaryBlob = input;\n const original = DocumentStorageServiceCompressionAdapter.toBinaryArray(summaryBlob.content);\n const processed = DocumentStorageServiceCompressionAdapter.decodeBlob(original);\n const newSummaryBlob = {\n type: SummaryType.Blob,\n content: IsoBuffer.from(processed),\n };\n return newSummaryBlob;\n }\n else {\n return input;\n }\n};\n//# sourceMappingURL=documentStorageServiceSummaryBlobCompressionAdapter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DocumentServiceProxy } from \"../../documentServiceProxy.js\";\nimport { DocumentStorageServiceCompressionAdapter as DocumentStorageServiceSummaryBlobCompressionAdapter } from \"./summaryblob/index.js\";\nexport class DocumentServiceCompressionAdapter extends DocumentServiceProxy {\n constructor(service, _config) {\n super(service);\n this._config = _config;\n // Back-compat Old driver\n if (service.on !== undefined) {\n service.on(\"metadataUpdate\", (metadata) => this.emit(\"metadataUpdate\", metadata));\n }\n }\n async connectToStorage() {\n const storage = await super.connectToStorage();\n const wrapped = new DocumentStorageServiceSummaryBlobCompressionAdapter(storage, this._config);\n await wrapped.getSnapshotTree();\n return wrapped;\n }\n}\n//# sourceMappingURL=documentServiceCompressionAdapter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DocumentServiceFactoryProxy } from \"../../documentServiceFactoryProxy.js\";\nimport { DocumentServiceCompressionAdapter } from \"./documentServiceCompressionAdapter.js\";\nimport { DocumentStorageServiceCompressionAdapter as DocumentStorageServiceSummaryBlobCompressionAdapter } from \"./summaryblob/index.js\";\nexport class DocumentServiceFactoryCompressionAdapter extends DocumentServiceFactoryProxy {\n constructor(serviceFactory, _config) {\n super(serviceFactory);\n this._config = _config;\n }\n async createContainer(createNewSummary, createNewResolvedUrl, logger, clientIsSummarizer) {\n if (createNewSummary !== undefined) {\n const configForInitial = this._config;\n const newAppSumary = DocumentStorageServiceSummaryBlobCompressionAdapter.compressSummary(createNewSummary.tree[\".app\"], configForInitial);\n createNewSummary.tree[\".app\"] = newAppSumary;\n }\n const service = await this.serviceFactory.createContainer(createNewSummary, createNewResolvedUrl, logger, clientIsSummarizer);\n return new DocumentServiceCompressionAdapter(service, this._config);\n }\n async createDocumentService(resolvedUrl) {\n const service = await this.serviceFactory.createDocumentService(resolvedUrl);\n return new DocumentServiceCompressionAdapter(service, this._config);\n }\n}\n//# sourceMappingURL=documentServiceFactoryCompressionAdapter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DefaultCompressionStorageConfig, DocumentServiceFactoryCompressionAdapter, } from \"./compression/index.js\";\n/**\n * This method optionally applies compression to the given document service factory. The compression\n * must be enabled by setting the config to true or by passing a compression config object.\n * @param documentServiceFactory - The document service factory to apply compression to.\n * @param config - The compression configuration.\n * @returns The document service factory possibly with compression applied.\n * @internal\n */\nexport function applyStorageCompression(documentServiceFactory, config) {\n if (config === undefined || config === false) {\n return documentServiceFactory;\n }\n else if (config === true) {\n return applyStorageCompressionInternal(DocumentServiceFactoryCompressionAdapter, documentServiceFactory);\n }\n else {\n assert(isCompressionConfig(config), 0x6f4 /* Invalid compression config */);\n return applyStorageCompressionInternal(DocumentServiceFactoryCompressionAdapter, documentServiceFactory, config);\n }\n}\n/**\n * This method applies compression to the given document service factory.\n * @param documentServiceFactory - The document service factory to apply compression to.\n * @param config - The compression configuration.\n * @returns The document service factory with compression applied.\n */\nfunction applyStorageCompressionInternal(constructor, documentServiceFactory, config = DefaultCompressionStorageConfig) {\n if (config.algorithm === undefined) {\n return documentServiceFactory;\n }\n return new constructor(documentServiceFactory, config);\n}\n/**\n * This method checks whether given objects contains\n * a properties expected for the interface ICompressionStorageConfig.\n */\nexport function isCompressionConfig(config) {\n return (config !== undefined &&\n (config.algorithm !== undefined || config.minSizeToCompress !== undefined));\n}\n//# sourceMappingURL=predefinedAdapters.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { AttachState, } from \"@fluidframework/container-definitions\";\n/**\n * Creates an {@link IFluidContainer} from the provided `container` and `rootDataObject`.\n *\n * @internal\n */\nexport function createFluidContainer(props) {\n return new FluidContainer(props.container, props.rootDataObject);\n}\n/**\n * Check that the provided `container` is an internal {@link IFluidContainerInternal}.\n *\n * @internal\n */\nexport function isInternalFluidContainer(container) {\n // IFluidContainer is sealed; so we never expect an `IFluidContainer` not to be\n // `IFluidContainerInternal` implemented by `FluidContainer`. To be caution,\n // we use `instanceof` to confirm.\n return container instanceof FluidContainer;\n}\n/**\n * {@link IFluidContainer} implementation.\n *\n * @typeparam TContainerSchema - Used to determine the type of 'initialObjects'.\n * @remarks\n *\n * Note: this implementation is not complete. Consumers who rely on {@link IFluidContainer.attach}\n * will need to utilize or provide a service-specific implementation of this type that implements that method.\n */\nclass FluidContainer extends TypedEventEmitter {\n constructor(container, rootDataObject) {\n super();\n this.container = container;\n this.rootDataObject = rootDataObject;\n this.connectedHandler = () => this.emit(\"connected\");\n this.disconnectedHandler = () => this.emit(\"disconnected\");\n this.disposedHandler = (error) => this.emit(\"disposed\", error);\n this.savedHandler = () => this.emit(\"saved\");\n this.dirtyHandler = () => this.emit(\"dirty\");\n container.on(\"connected\", this.connectedHandler);\n container.on(\"closed\", this.disposedHandler);\n container.on(\"disconnected\", this.disconnectedHandler);\n container.on(\"saved\", this.savedHandler);\n container.on(\"dirty\", this.dirtyHandler);\n }\n get isDirty() {\n return this.container.isDirty;\n }\n get attachState() {\n return this.container.attachState;\n }\n get disposed() {\n return this.container.closed;\n }\n get connectionState() {\n return this.container.connectionState;\n }\n get initialObjects() {\n return this.rootDataObject.initialObjects;\n }\n /**\n * Incomplete base implementation of {@link IFluidContainer.attach}.\n *\n * @remarks\n *\n * Note: this implementation will unconditionally throw.\n * Consumers who rely on this will need to utilize or provide a service specific implementation of this base type\n * that provides an implementation of this method.\n *\n * The reason is because externally we are presenting a separation between the service and the `FluidContainer`,\n * but internally this separation is not there.\n */\n async attach(props) {\n if (this.container.attachState !== AttachState.Detached) {\n throw new Error(\"Cannot attach container. Container is not in detached state.\");\n }\n throw new Error(\"Cannot attach container. Attach method not provided.\");\n }\n async connect() {\n this.container.connect?.();\n }\n async disconnect() {\n this.container.disconnect?.();\n }\n async create(objectClass) {\n return this.rootDataObject.create(objectClass);\n }\n dispose() {\n this.container.close();\n this.container.off(\"connected\", this.connectedHandler);\n this.container.off(\"closed\", this.disposedHandler);\n this.container.off(\"disconnected\", this.disconnectedHandler);\n this.container.off(\"saved\", this.savedHandler);\n this.container.off(\"dirty\", this.dirtyHandler);\n }\n}\n//# sourceMappingURL=fluidContainer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\n/**\n * Creates a service audience for the provided container.\n *\n * @param container - The container with which the audience is associated.\n * @param createServiceMember - A function for creating audience members.\n *\n * @typeParam TMember - The {@link IMember} representation used by the audience.\n *\n * @internal\n */\nexport function createServiceAudience(props) {\n return new ServiceAudience(props.container, props.createServiceMember);\n}\n/**\n * Base class for providing audience information for sessions interacting with {@link IFluidContainer}\n *\n * @remarks\n *\n * This can be extended by different service-specific client packages to additional parameters to\n * the user and client details returned in {@link IMember}.\n *\n * @typeParam TMember - A service-specific {@link IMember} implementation.\n *\n * @internal\n */\nclass ServiceAudience extends TypedEventEmitter {\n constructor(\n /**\n * Fluid Container to read the audience from.\n */\n container, createServiceMember) {\n super();\n this.container = container;\n this.createServiceMember = createServiceMember;\n /**\n * Retain the most recent member list.\n *\n * @remarks\n *\n * This is so we have more information about a member leaving the audience in the `removeMember` event.\n *\n * It allows us to match the behavior of the `addMember` event where it only fires on a change to the members this\n * class exposes (and would actually produce a change in what `getMembers` returns).\n *\n * It also allows us to provide the client details in the event which makes it easier to find that client connection\n * in a map keyed on the `userId` and not `clientId`.\n *\n * This map will always be up-to-date in a `removeMember` event because it is set once at construction and in\n * every `addMember` event. It is mapped `clientId` to `M` to be better work with what the {@link IServiceAudience}\n * events provide.\n */\n this.lastMembers = new Map();\n this.audience = container.audience;\n // getMembers will assign lastMembers so the removeMember event has what it needs\n // in case it would fire before getMembers otherwise gets called the first time\n this.getMembers();\n this.audience.on(\"addMember\", (clientId, details) => {\n if (this.shouldIncludeAsMember(details)) {\n const member = this.getMember(clientId);\n this.emit(\"memberAdded\", clientId, member);\n this.emit(\"membersChanged\");\n }\n });\n this.audience.on(\"removeMember\", (clientId) => {\n if (this.lastMembers.has(clientId)) {\n this.emit(\"memberRemoved\", clientId, this.lastMembers.get(clientId));\n this.emit(\"membersChanged\");\n }\n });\n this.container.on(\"connected\", () => this.emit(\"membersChanged\"));\n }\n /**\n * {@inheritDoc IServiceAudience.getMembers}\n */\n getMembers() {\n const users = new Map();\n const clientMemberMap = new Map();\n // Iterate through the members and get the user specifics.\n for (const [clientId, member] of this.audience.getMembers()) {\n if (this.shouldIncludeAsMember(member)) {\n const userId = member.user.id;\n // Ensure we're tracking the user\n let user = users.get(userId);\n if (user === undefined) {\n user = this.createServiceMember(member);\n users.set(userId, user);\n }\n // Add this connection to their collection\n user.connections.push({ id: clientId, mode: member.mode });\n clientMemberMap.set(clientId, user);\n }\n }\n this.lastMembers = clientMemberMap;\n return users;\n }\n /**\n * {@inheritDoc IServiceAudience.getMyself}\n */\n getMyself() {\n const clientId = this.container.clientId;\n if (clientId === undefined) {\n return undefined;\n }\n const member = this.getMember(clientId);\n if (member === undefined) {\n return undefined;\n }\n const myself = { ...member, currentConnection: clientId };\n return myself;\n }\n getMember(clientId) {\n // Fetch the user ID assoicated with this client ID from the runtime\n const internalAudienceMember = this.audience.getMember(clientId);\n if (internalAudienceMember === undefined) {\n return undefined;\n }\n // Return the member object with any other clients associated for this user\n const allMembers = this.getMembers();\n const member = allMembers.get(internalAudienceMember?.user.id);\n if (member === undefined) {\n throw new Error(`Attempted to fetch client ${clientId} that is not part of the current member list`);\n }\n return member;\n }\n /**\n * Provides ability for the inheriting class to include/omit specific members.\n * An example use case is omitting the summarizer client.\n *\n * @param member - Member to be included/omitted.\n */\n shouldIncludeAsMember(member) {\n // Include only human members\n return member.details.capabilities.interactive;\n }\n}\n//# sourceMappingURL=serviceAudience.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @internal\n */\nexport const RBColor = {\n RED: 0,\n BLACK: 1,\n};\n/**\n * @internal\n */\nexport class RedBlackTree {\n constructor(compareKeys, aug) {\n this.compareKeys = compareKeys;\n this.aug = aug;\n }\n makeNode(key, data, color, size) {\n return { key, data, color, size };\n }\n isRed(node) {\n return !!node && node.color === RBColor.RED;\n }\n nodeSize(node) {\n return node ? node.size : 0;\n }\n size() {\n return this.nodeSize(this.root);\n }\n isEmpty() {\n return !this.root;\n }\n get(key) {\n if (key !== undefined) {\n return this.nodeGet(this.root, key);\n }\n }\n nodeGet(node, key) {\n let _node = node;\n while (_node) {\n const cmp = this.compareKeys(key, _node.key);\n if (cmp < 0) {\n _node = _node.left;\n }\n else if (cmp > 0) {\n _node = _node.right;\n }\n else {\n return _node;\n }\n }\n }\n contains(key) {\n return this.get(key);\n }\n gather(key, matcher) {\n const results = [];\n if (key !== undefined) {\n this.nodeGather(this.root, results, key, matcher);\n }\n return results;\n }\n nodeGather(node, results, key, matcher) {\n if (node) {\n if (matcher.continueSubtree(node.left, key)) {\n this.nodeGather(node.left, results, key, matcher);\n }\n if (matcher.matchNode(node, key)) {\n results.push(node);\n }\n if (matcher.continueSubtree(node.right, key)) {\n this.nodeGather(node.right, results, key, matcher);\n }\n }\n }\n walkExactMatchesForward(compareFn, actionFn, continueLeftFn, continueRightFn) {\n this.nodeWalkExactMatchesForward(this.root, compareFn, actionFn, continueLeftFn, continueRightFn);\n }\n nodeWalkExactMatchesForward(node, compareFn, actionFn, continueLeftFn, continueRightFn) {\n if (!node) {\n return;\n }\n const result = compareFn(node);\n if (continueLeftFn(result)) {\n this.nodeWalkExactMatchesForward(node.left, compareFn, actionFn, continueLeftFn, continueRightFn);\n }\n if (result === 0) {\n actionFn(node);\n }\n if (continueRightFn(result)) {\n this.nodeWalkExactMatchesForward(node.right, compareFn, actionFn, continueLeftFn, continueRightFn);\n }\n }\n walkExactMatchesBackward(compareFn, actionFn, continueLeftFn, continueRightFn) {\n this.nodeWalkExactMatchesBackward(this.root, compareFn, actionFn, continueLeftFn, continueRightFn);\n }\n nodeWalkExactMatchesBackward(node, compareFn, actionFn, continueLeftFn, continueRightFn) {\n if (!node) {\n return;\n }\n const result = compareFn(node);\n if (continueRightFn(result)) {\n this.nodeWalkExactMatchesBackward(node.right, compareFn, actionFn, continueLeftFn, continueRightFn);\n }\n if (result === 0) {\n actionFn(node);\n }\n if (continueLeftFn(result)) {\n this.nodeWalkExactMatchesBackward(node.left, compareFn, actionFn, continueLeftFn, continueRightFn);\n }\n }\n put(key, data, conflict) {\n if (key !== undefined) {\n if (data === undefined) {\n this.remove(key);\n }\n else {\n this.root = this.nodePut(this.root, key, data, conflict);\n this.root.color = RBColor.BLACK;\n }\n }\n }\n nodePut(node, key, data, conflict) {\n let _node = node;\n if (_node) {\n const cmp = this.compareKeys(key, _node.key);\n if (cmp < 0) {\n _node.left = this.nodePut(_node.left, key, data, conflict);\n }\n else if (cmp > 0) {\n _node.right = this.nodePut(_node.right, key, data, conflict);\n }\n else {\n if (conflict) {\n const kd = conflict(key, _node.key, data, _node.data);\n if (kd.key) {\n _node.key = kd.key;\n }\n _node.data = kd.data ?? data;\n }\n else {\n _node.data = data;\n }\n }\n if (this.isRed(_node.right) && !this.isRed(_node.left)) {\n _node = this.rotateLeft(_node);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this.isRed(_node.left) && this.isRed(_node.left.left)) {\n _node = this.rotateRight(_node);\n }\n if (this.isRed(_node.left) && this.isRed(_node.right)) {\n this.flipColors(_node);\n }\n _node.size = this.nodeSize(_node.left) + this.nodeSize(_node.right) + 1;\n if (this.aug) {\n this.updateLocal(_node);\n }\n return _node;\n }\n else {\n return this.makeNode(key, data, RBColor.RED, 1);\n }\n }\n updateLocal(node) {\n if (this.aug) {\n if (this.isRed(node.left)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.aug.update(node.left);\n }\n if (this.isRed(node.right)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.aug.update(node.right);\n }\n this.aug.update(node);\n }\n }\n nodeRemoveMin(node) {\n let _node = node;\n if (_node.left) {\n if (!this.isRed(_node.left) && !this.isRed(_node.left.left)) {\n _node = this.moveRedLeft(_node);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _node.left = this.nodeRemoveMin(_node.left);\n return this.balance(_node);\n }\n }\n remove(key) {\n if (key !== undefined) {\n if (!this.contains(key)) {\n return;\n }\n this.removeExisting(key);\n }\n // TODO: error on undefined key\n }\n removeExisting(key) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!this.isRed(this.root.left) && !this.isRed(this.root.right)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.root.color = RBColor.RED;\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.root = this.nodeRemove(this.root, key);\n }\n nodeRemove(node, key) {\n let _node = node;\n if (this.compareKeys(key, _node.key) < 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!this.isRed(_node.left) && !this.isRed(_node.left.left)) {\n _node = this.moveRedLeft(_node);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _node.left = this.nodeRemove(_node.left, key);\n }\n else {\n if (this.isRed(_node.left)) {\n _node = this.rotateRight(_node);\n }\n if (this.compareKeys(key, _node.key) === 0 && !_node.right) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!this.isRed(_node.right) && !this.isRed(_node.right.left)) {\n _node = this.moveRedRight(_node);\n }\n if (this.compareKeys(key, _node.key) === 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const subtreeMin = this.nodeMin(_node.right);\n _node.key = subtreeMin.key;\n _node.data = subtreeMin.data;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _node.right = this.nodeRemoveMin(_node.right);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _node.right = this.nodeRemove(_node.right, key);\n }\n }\n return this.balance(_node);\n }\n /**\n * Finds the largest node that is less than or equal to a given key.\n */\n floor(key) {\n if (!this.isEmpty()) {\n return this.nodeFloor(this.root, key);\n }\n }\n nodeFloor(node, key) {\n if (node) {\n const cmp = this.compareKeys(key, node.key);\n if (cmp === 0) {\n return node;\n }\n else if (cmp < 0) {\n return this.nodeFloor(node.left, key);\n }\n else {\n const rightFloor = this.nodeFloor(node.right, key);\n return rightFloor ?? node;\n }\n }\n }\n /**\n * Finds the smallest node that is greater than or equal to a given key.\n */\n ceil(key) {\n if (!this.isEmpty()) {\n return this.nodeCeil(this.root, key);\n }\n }\n nodeCeil(node, key) {\n if (node) {\n const cmp = this.compareKeys(key, node.key);\n if (cmp === 0) {\n return node;\n }\n else if (cmp > 0) {\n return this.nodeCeil(node.right, key);\n }\n else {\n const leftCeil = this.nodeCeil(node.left, key);\n return leftCeil ?? node;\n }\n }\n }\n min() {\n if (this.root) {\n return this.nodeMin(this.root);\n }\n }\n nodeMin(node) {\n return node.left ? this.nodeMin(node.left) : node;\n }\n max() {\n if (this.root) {\n return this.nodeMax(this.root);\n }\n }\n nodeMax(node) {\n return node.right ? this.nodeMax(node.right) : node;\n }\n rotateRight(node) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const leftChild = node.left;\n node.left = leftChild.right;\n leftChild.right = node;\n leftChild.color = leftChild.right.color;\n leftChild.right.color = RBColor.RED;\n leftChild.size = node.size;\n node.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;\n if (this.aug) {\n this.updateLocal(node);\n this.updateLocal(leftChild);\n }\n return leftChild;\n }\n rotateLeft(node) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const rightChild = node.right;\n node.right = rightChild.left;\n rightChild.left = node;\n rightChild.color = rightChild.left.color;\n rightChild.left.color = RBColor.RED;\n rightChild.size = node.size;\n node.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;\n if (this.aug) {\n this.updateLocal(node);\n this.updateLocal(rightChild);\n }\n return rightChild;\n }\n oppositeColor(c) {\n return c === RBColor.BLACK ? RBColor.RED : RBColor.BLACK;\n }\n flipColors(node) {\n node.color = this.oppositeColor(node.color);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n node.left.color = this.oppositeColor(node.left.color);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n node.right.color = this.oppositeColor(node.right.color);\n }\n moveRedLeft(node) {\n let _node = node;\n this.flipColors(_node);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this.isRed(_node.right.left)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _node.right = this.rotateRight(_node.right);\n _node = this.rotateLeft(_node);\n this.flipColors(_node);\n }\n return _node;\n }\n moveRedRight(node) {\n let _node = node;\n this.flipColors(_node);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this.isRed(_node.left.left)) {\n _node = this.rotateRight(_node);\n this.flipColors(_node);\n }\n return _node;\n }\n balance(input) {\n let node = input;\n if (this.isRed(node.right)) {\n node = this.rotateLeft(node);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this.isRed(node.left) && this.isRed(node.left.left)) {\n node = this.rotateRight(node);\n }\n if (this.isRed(node.left) && this.isRed(node.right)) {\n this.flipColors(node);\n }\n node.size = this.nodeSize(node.left) + this.nodeSize(node.right) + 1;\n if (this.aug) {\n this.aug.update(node);\n }\n return node;\n }\n mapRange(action, accum, start, end) {\n this.nodeMap(this.root, action, accum, start, end);\n }\n map(action, accum) {\n // TODO: optimize to avoid comparisons\n this.nodeMap(this.root, action, accum);\n }\n keys() {\n const keyList = [];\n const actions = {\n showStructure: true,\n infix: (node) => {\n keyList.push(node.key);\n return true;\n },\n };\n this.walk(actions);\n return keyList;\n }\n /**\n * Depth-first traversal with custom action; if action returns\n * false, traversal is halted.\n * @param action - action to apply to each node\n */\n walk(actions) {\n this.nodeWalk(this.root, actions);\n }\n walkBackward(actions) {\n this.nodeWalkBackward(this.root, actions);\n }\n nodeWalk(node, actions) {\n let go = true;\n if (node) {\n if (actions.pre && (!!actions.showStructure || node.color === RBColor.BLACK)) {\n go = actions.pre(node);\n }\n if (node.left) {\n go = this.nodeWalk(node.left, actions);\n }\n if (go && actions.infix && (!!actions.showStructure || node.color === RBColor.BLACK)) {\n go = actions.infix(node);\n }\n if (go) {\n go = this.nodeWalk(node.right, actions);\n }\n if (go && actions.post && (!!actions.showStructure || node.color === RBColor.BLACK)) {\n go = actions.post(node);\n }\n }\n return go;\n }\n nodeWalkBackward(node, actions) {\n let go = true;\n if (node) {\n if (actions.pre && (!!actions.showStructure || node.color === RBColor.BLACK)) {\n go = actions.pre(node);\n }\n if (node.right) {\n go = this.nodeWalkBackward(node.right, actions);\n }\n if (go && actions.infix && (!!actions.showStructure || node.color === RBColor.BLACK)) {\n go = actions.infix(node);\n }\n if (go) {\n go = this.nodeWalkBackward(node.left, actions);\n }\n if (go && actions.post && (!!actions.showStructure || node.color === RBColor.BLACK)) {\n go = actions.post(node);\n }\n }\n return go;\n }\n nodeMap(node, action, accum, start, end) {\n let _start = start;\n let _end = end;\n if (!node) {\n return true;\n }\n if (_start === undefined) {\n _start = this.nodeMin(node).key;\n }\n if (_end === undefined) {\n _end = this.nodeMax(node).key;\n }\n const cmpStart = this.compareKeys(_start, node.key);\n const cmpEnd = this.compareKeys(_end, node.key);\n let go = true;\n if (cmpStart < 0) {\n go = this.nodeMap(node.left, action, accum, _start, _end);\n }\n if (go && cmpStart <= 0 && cmpEnd >= 0) {\n // REVIEW: test for black node here\n go = action(node, accum);\n }\n if (go && cmpEnd > 0) {\n go = this.nodeMap(node.right, action, accum, _start, _end);\n }\n return go;\n }\n}\n//# sourceMappingURL=rbTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _a, _b;\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { readAndParse } from \"@fluidframework/driver-utils/internal\";\nimport { RedBlackTree } from \"@fluidframework/merge-tree/internal\";\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\nimport { SharedObject, ValueType, bindHandles, parseHandles, } from \"@fluidframework/shared-object-base/internal\";\nimport { UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nimport path from \"path-browserify\";\nimport { LocalValueMaker } from \"./localValues.js\";\n// We use path-browserify since this code can run safely on the server or the browser.\n// We standardize on using posix slashes everywhere.\nconst posix = path.posix;\nconst snapshotFileName = \"header\";\n/**\n * The comparator essentially performs the following procedure to determine the order of subdirectory creation:\n * 1. If subdirectory A has a non-negative 'seq' and subdirectory B has a negative 'seq', subdirectory A is always placed first due to\n * the policy that acknowledged subdirectories precede locally created ones that have not been committed yet.\n *\n * 2. When both subdirectories A and B have a non-negative 'seq', they are compared as follows:\n * - If A and B have different 'seq', they are ordered based on 'seq', and the one with the lower 'seq' will be positioned ahead. Notably this rule\n * should not be applied in the directory ordering, since the lowest 'seq' is -1, when the directory is created locally but not acknowledged yet.\n * - In the case where A and B have equal 'seq', the one with the lower 'clientSeq' will be positioned ahead. This scenario occurs when grouped\n * batching is enabled, and a lower 'clientSeq' indicates that it was processed earlier after the batch was ungrouped.\n *\n * 3. When both subdirectories A and B have a negative 'seq', they are compared as follows:\n * - If A and B have different 'seq', the one with lower 'seq' will be positioned ahead, which indicates the corresponding creation message was\n * acknowledged by the server earlier.\n * - If A and B have equal 'seq', the one with lower 'clientSeq' will be placed at the front. This scenario suggests that both subdirectories A\n * and B were created locally and not acknowledged yet, with the one possessing the lower 'clientSeq' being created earlier.\n *\n * 4. A 'seq' value of zero indicates that the subdirectory was created in detached state, and it is considered acknowledged for the\n * purpose of ordering.\n */\nconst seqDataComparator = (a, b) => {\n if (isAcknowledgedOrDetached(a)) {\n if (isAcknowledgedOrDetached(b)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return a.seq === b.seq ? a.clientSeq - b.clientSeq : a.seq - b.seq;\n }\n else {\n return -1;\n }\n }\n else {\n if (isAcknowledgedOrDetached(b)) {\n return 1;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return a.seq === b.seq ? a.clientSeq - b.clientSeq : a.seq - b.seq;\n }\n }\n};\nfunction isAcknowledgedOrDetached(seqData) {\n return seqData.seq >= 0;\n}\n/**\n * A utility class for tracking associations between keys and their creation indices.\n * This is relevant to support map iteration in insertion order, see\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator/%40%40iterator\n *\n * TODO: It can be combined with the creation tracker utilized in SharedMap\n */\nclass DirectoryCreationTracker {\n constructor() {\n this.indexToKey = new RedBlackTree(seqDataComparator);\n this.keyToIndex = new Map();\n }\n set(key, seqData) {\n this.indexToKey.put(seqData, key);\n this.keyToIndex.set(key, seqData);\n }\n has(keyOrSeqData) {\n return typeof keyOrSeqData === \"string\"\n ? this.keyToIndex.has(keyOrSeqData)\n : this.indexToKey.get(keyOrSeqData) !== undefined;\n }\n delete(keyOrSeqData) {\n if (this.has(keyOrSeqData)) {\n if (typeof keyOrSeqData === \"string\") {\n const seqData = this.keyToIndex.get(keyOrSeqData);\n this.keyToIndex.delete(keyOrSeqData);\n this.indexToKey.remove(seqData);\n }\n else {\n const key = this.indexToKey.get(keyOrSeqData)?.data;\n this.indexToKey.remove(keyOrSeqData);\n this.keyToIndex.delete(key);\n }\n }\n }\n /**\n * Retrieves all subdirectories with creation order that satisfy an optional constraint function.\n * @param constraint - An optional constraint function that filters keys.\n * @returns An array of keys that satisfy the constraint (or all keys if no constraint is provided).\n */\n keys(constraint) {\n const keys = [];\n this.indexToKey.mapRange((node) => {\n if (!constraint || constraint(node.data)) {\n keys.push(node.data);\n }\n return true;\n }, keys);\n return keys;\n }\n get size() {\n return this.keyToIndex.size;\n }\n}\n/**\n * {@inheritDoc ISharedDirectory}\n *\n * @example\n *\n * ```typescript\n * mySharedDirectory.createSubDirectory(\"a\").createSubDirectory(\"b\").createSubDirectory(\"c\").set(\"foo\", val1);\n * const mySubDir = mySharedDirectory.getWorkingDirectory(\"/a/b/c\");\n * mySubDir.get(\"foo\"); // returns val1\n * ```\n *\n * @sealed\n * @legacy\n * @alpha\n */\nexport class SharedDirectory extends SharedObject {\n /**\n * {@inheritDoc IDirectory.absolutePath}\n */\n get absolutePath() {\n return this.root.absolutePath;\n }\n /**\n * Constructs a new shared directory. If the object is non-local an id and service interfaces will\n * be provided.\n * @param id - String identifier for the SharedDirectory\n * @param runtime - Data store runtime\n * @param type - Type identifier\n */\n constructor(id, runtime, attributes) {\n super(id, runtime, attributes, \"fluid_directory_\");\n /**\n * String representation for the class.\n */\n this[_a] = \"SharedDirectory\";\n /**\n * Root of the SharedDirectory, most operations on the SharedDirectory itself act on the root.\n */\n this.root = new SubDirectory({ seq: 0, clientSeq: 0 }, new Set(), this, this.runtime, this.serializer, posix.sep, this.logger);\n /**\n * Mapping of op types to message handlers.\n */\n this.messageHandlers = new Map();\n this.localValueMaker = new LocalValueMaker();\n this.setMessageHandlers();\n // Mirror the containedValueChanged op on the SharedDirectory\n this.root.on(\"containedValueChanged\", (changed, local) => {\n this.emit(\"containedValueChanged\", changed, local, this);\n });\n this.root.on(\"subDirectoryCreated\", (relativePath, local) => {\n this.emit(\"subDirectoryCreated\", relativePath, local, this);\n });\n this.root.on(\"subDirectoryDeleted\", (relativePath, local) => {\n this.emit(\"subDirectoryDeleted\", relativePath, local, this);\n });\n }\n /**\n * {@inheritDoc IDirectory.get}\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key) {\n return this.root.get(key);\n }\n /**\n * {@inheritDoc IDirectory.set}\n */\n set(key, value) {\n this.root.set(key, value);\n return this;\n }\n dispose(error) {\n this.root.dispose(error);\n }\n get disposed() {\n return this.root.disposed;\n }\n /**\n * Deletes the given key from within this IDirectory.\n * @param key - The key to delete\n * @returns True if the key existed and was deleted, false if it did not exist\n */\n delete(key) {\n return this.root.delete(key);\n }\n /**\n * Deletes all keys from within this IDirectory.\n */\n clear() {\n this.root.clear();\n }\n /**\n * Checks whether the given key exists in this IDirectory.\n * @param key - The key to check\n * @returns True if the key exists, false otherwise\n */\n has(key) {\n return this.root.has(key);\n }\n /**\n * The number of entries under this IDirectory.\n */\n get size() {\n return this.root.size;\n }\n /**\n * Issue a callback on each entry under this IDirectory.\n * @param callback - Callback to issue\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n forEach(callback) {\n // eslint-disable-next-line unicorn/no-array-for-each, unicorn/no-array-callback-reference\n this.root.forEach(callback);\n }\n /**\n * Get an iterator over the entries under this IDirectory.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.root[Symbol.iterator]();\n }\n /**\n * Get an iterator over the entries under this IDirectory.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entries() {\n return this.root.entries();\n }\n /**\n * {@inheritDoc IDirectory.countSubDirectory}\n */\n countSubDirectory() {\n return this.root.countSubDirectory();\n }\n /**\n * Get an iterator over the keys under this IDirectory.\n * @returns The iterator\n */\n keys() {\n return this.root.keys();\n }\n /**\n * Get an iterator over the values under this IDirectory.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values() {\n return this.root.values();\n }\n /**\n * {@inheritDoc IDirectory.createSubDirectory}\n */\n createSubDirectory(subdirName) {\n return this.root.createSubDirectory(subdirName);\n }\n /**\n * {@inheritDoc IDirectory.getSubDirectory}\n */\n getSubDirectory(subdirName) {\n return this.root.getSubDirectory(subdirName);\n }\n /**\n * {@inheritDoc IDirectory.hasSubDirectory}\n */\n hasSubDirectory(subdirName) {\n return this.root.hasSubDirectory(subdirName);\n }\n /**\n * {@inheritDoc IDirectory.deleteSubDirectory}\n */\n deleteSubDirectory(subdirName) {\n return this.root.deleteSubDirectory(subdirName);\n }\n /**\n * {@inheritDoc IDirectory.subdirectories}\n */\n subdirectories() {\n return this.root.subdirectories();\n }\n /**\n * {@inheritDoc IDirectory.getWorkingDirectory}\n */\n getWorkingDirectory(relativePath) {\n const absolutePath = this.makeAbsolute(relativePath);\n if (absolutePath === posix.sep) {\n return this.root;\n }\n let currentSubDir = this.root;\n const subdirs = absolutePath.slice(1).split(posix.sep);\n for (const subdir of subdirs) {\n currentSubDir = currentSubDir.getSubDirectory(subdir);\n if (!currentSubDir) {\n return undefined;\n }\n }\n return currentSubDir;\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}\n */\n summarizeCore(serializer, telemetryContext) {\n return this.serializeDirectory(this.root, serializer);\n }\n /**\n * Submits an operation\n * @param op - Op to submit\n * @param localOpMetadata - The local metadata associated with the op. We send a unique id that is used to track\n * this op while it has not been ack'd. This will be sent when we receive this op back from the server.\n */\n submitDirectoryMessage(op, localOpMetadata) {\n this.submitLocalMessage(op, localOpMetadata);\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}\n */\n onDisconnect() { }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}\n */\n reSubmitCore(content, localOpMetadata) {\n const message = content;\n const handler = this.messageHandlers.get(message.type);\n assert(handler !== undefined, 0x00d /* Missing message handler for message type */);\n handler.submit(message, localOpMetadata);\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}\n */\n async loadCore(storage) {\n const data = await readAndParse(storage, snapshotFileName);\n const newFormat = data;\n if (Array.isArray(newFormat.blobs)) {\n // New storage format\n this.populate(newFormat.content);\n await Promise.all(newFormat.blobs.map(async (value) => {\n const dataExtra = await readAndParse(storage, value);\n this.populate(dataExtra);\n }));\n }\n else {\n // Old storage format\n this.populate(data);\n }\n }\n /**\n * Populate the directory with the given directory data.\n * @param data - A JSON string containing serialized directory data\n */\n populate(data) {\n const stack = [];\n stack.push([this.root, data]);\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [currentSubDir, currentSubDirObject] = stack.pop();\n if (currentSubDirObject.subdirectories) {\n // Utilize a map to store the seq -> clientSeq for the newly created subdirectory\n const tempSeqNums = new Map();\n for (const [subdirName, subdirObject] of Object.entries(currentSubDirObject.subdirectories)) {\n let newSubDir = currentSubDir.getSubDirectory(subdirName);\n let seqData;\n if (!newSubDir) {\n const createInfo = subdirObject.ci;\n // We do not store the client sequence number in the storage because the order has already been\n // guaranteed during the serialization process. As a result, it is only essential to utilize the\n // \"fake\" client sequence number to signify the loading order, and there is no need to retain\n // the actual client sequence number at this point.\n if (createInfo !== undefined && createInfo.csn > 0) {\n if (!tempSeqNums.has(createInfo.csn)) {\n tempSeqNums.set(createInfo.csn, 0);\n }\n let fakeClientSeq = tempSeqNums.get(createInfo.csn);\n seqData = { seq: createInfo.csn, clientSeq: fakeClientSeq };\n tempSeqNums.set(createInfo.csn, ++fakeClientSeq);\n }\n else {\n /**\n * 1. If csn is -1, then initialize it with 0, otherwise we will never process ops for this\n * sub directory. This could be done at serialization time too, but we need to maintain\n * back compat too and also we will actually know the state when it was serialized.\n * 2. We need to make the csn = -1 and csn = 0 share the same counter, there are cases\n * where both -1 and 0 coexist within a single document.\n */\n seqData = {\n seq: 0,\n clientSeq: ++currentSubDir.localCreationSeq,\n };\n }\n newSubDir = new SubDirectory(seqData, createInfo === undefined ? new Set() : new Set(createInfo.ccIds), this, this.runtime, this.serializer, posix.join(currentSubDir.absolutePath, subdirName), this.logger);\n currentSubDir.populateSubDirectory(subdirName, newSubDir);\n // Record the newly inserted subdirectory to the creation tracker\n currentSubDir.ackedCreationSeqTracker.set(subdirName, {\n ...seqData,\n });\n }\n stack.push([newSubDir, subdirObject]);\n }\n }\n if (currentSubDirObject.storage) {\n for (const [key, serializable] of Object.entries(currentSubDirObject.storage)) {\n const localValue = this.makeLocal(key, currentSubDir.absolutePath, \n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n parseHandles(serializable, this.serializer));\n currentSubDir.populateStorage(key, localValue);\n }\n }\n }\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}\n */\n processCore(message, local, localOpMetadata) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (message.type === MessageType.Operation) {\n const op = message.contents;\n const handler = this.messageHandlers.get(op.type);\n assert(handler !== undefined, 0x00e /* Missing message handler for message type */);\n handler.process(message, op, local, localOpMetadata);\n }\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.rollback}\n */\n rollback(content, localOpMetadata) {\n const op = content;\n const subdir = this.getWorkingDirectory(op.path);\n if (subdir) {\n subdir.rollback(op, localOpMetadata);\n }\n }\n /**\n * Converts the given relative path to absolute against the root.\n * @param relativePath - The path to convert\n */\n makeAbsolute(relativePath) {\n return posix.resolve(posix.sep, relativePath);\n }\n /**\n * The remote ISerializableValue we're receiving (either as a result of a snapshot load or an incoming set op)\n * will have the information we need to create a real object, but will not be the real object yet. For example,\n * we might know it's a map and the ID but not have the actual map or its data yet. makeLocal's job\n * is to convert that information into a real object for local usage.\n * @param key - Key of element being converted\n * @param absolutePath - Path of element being converted\n * @param serializable - The remote information that we can convert into a real object\n * @returns The local value that was produced\n */\n makeLocal(key, absolutePath, \n // eslint-disable-next-line import/no-deprecated\n serializable) {\n assert(serializable.type === ValueType[ValueType.Plain] ||\n serializable.type === ValueType[ValueType.Shared], 0x1e4 /* \"Unexpected serializable type\" */);\n return this.localValueMaker.fromSerializable(serializable, this.serializer, this.handle);\n }\n /**\n * This checks if there is pending delete op for local delete for a any subdir in the relative path.\n * @param relativePath - path of sub directory.\n * @returns `true` if there is pending delete, `false` otherwise.\n */\n isSubDirectoryDeletePending(relativePath) {\n const absolutePath = this.makeAbsolute(relativePath);\n if (absolutePath === posix.sep) {\n return false;\n }\n let currentParent = this.root;\n const nodeList = absolutePath.split(posix.sep);\n let start = 1;\n while (start < nodeList.length) {\n // Non null asserting, this loop only runs while start in in the bounds of the array\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const subDirName = nodeList[start];\n if (currentParent.isSubDirectoryDeletePending(subDirName)) {\n return true;\n }\n currentParent = currentParent.getSubDirectory(subDirName);\n if (currentParent === undefined) {\n return true;\n }\n start += 1;\n }\n return false;\n }\n /**\n * Set the message handlers for the directory.\n */\n setMessageHandlers() {\n this.messageHandlers.set(\"clear\", {\n process: (msg, op, local, localOpMetadata) => {\n const subdir = this.getWorkingDirectory(op.path);\n // If there is pending delete op for any subDirectory in the op.path, then don't apply the this op\n // as we are going to delete this subDirectory.\n if (subdir && !this.isSubDirectoryDeletePending(op.path)) {\n subdir.processClearMessage(msg, op, local, localOpMetadata);\n }\n },\n submit: (op, localOpMetadata) => {\n const subdir = this.getWorkingDirectory(op.path);\n if (subdir) {\n subdir.resubmitClearMessage(op, localOpMetadata);\n }\n },\n });\n this.messageHandlers.set(\"delete\", {\n process: (msg, op, local, localOpMetadata) => {\n const subdir = this.getWorkingDirectory(op.path);\n // If there is pending delete op for any subDirectory in the op.path, then don't apply the this op\n // as we are going to delete this subDirectory.\n if (subdir && !this.isSubDirectoryDeletePending(op.path)) {\n subdir.processDeleteMessage(msg, op, local, localOpMetadata);\n }\n },\n submit: (op, localOpMetadata) => {\n const subdir = this.getWorkingDirectory(op.path);\n if (subdir) {\n subdir.resubmitKeyMessage(op, localOpMetadata);\n }\n },\n });\n this.messageHandlers.set(\"set\", {\n process: (msg, op, local, localOpMetadata) => {\n const subdir = this.getWorkingDirectory(op.path);\n // If there is pending delete op for any subDirectory in the op.path, then don't apply the this op\n // as we are going to delete this subDirectory.\n if (subdir && !this.isSubDirectoryDeletePending(op.path)) {\n const context = local ? undefined : this.makeLocal(op.key, op.path, op.value);\n subdir.processSetMessage(msg, op, context, local, localOpMetadata);\n }\n },\n submit: (op, localOpMetadata) => {\n const subdir = this.getWorkingDirectory(op.path);\n if (subdir) {\n subdir.resubmitKeyMessage(op, localOpMetadata);\n }\n },\n });\n this.messageHandlers.set(\"createSubDirectory\", {\n process: (msg, op, local, localOpMetadata) => {\n const parentSubdir = this.getWorkingDirectory(op.path);\n // If there is pending delete op for any subDirectory in the op.path, then don't apply the this op\n // as we are going to delete this subDirectory.\n if (parentSubdir && !this.isSubDirectoryDeletePending(op.path)) {\n parentSubdir.processCreateSubDirectoryMessage(msg, op, local, localOpMetadata);\n }\n },\n submit: (op, localOpMetadata) => {\n const parentSubdir = this.getWorkingDirectory(op.path);\n if (parentSubdir) {\n // We don't reuse the metadata but send a new one on each submit.\n parentSubdir.resubmitSubDirectoryMessage(op, localOpMetadata);\n }\n },\n });\n this.messageHandlers.set(\"deleteSubDirectory\", {\n process: (msg, op, local, localOpMetadata) => {\n const parentSubdir = this.getWorkingDirectory(op.path);\n // If there is pending delete op for any subDirectory in the op.path, then don't apply the this op\n // as we are going to delete this subDirectory.\n if (parentSubdir && !this.isSubDirectoryDeletePending(op.path)) {\n parentSubdir.processDeleteSubDirectoryMessage(msg, op, local, localOpMetadata);\n }\n },\n submit: (op, localOpMetadata) => {\n const parentSubdir = this.getWorkingDirectory(op.path);\n if (parentSubdir) {\n // We don't reuse the metadata but send a new one on each submit.\n parentSubdir.resubmitSubDirectoryMessage(op, localOpMetadata);\n }\n },\n });\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}\n */\n applyStashedOp(op) {\n const directoryOp = op;\n const dir = this.getWorkingDirectory(directoryOp.path);\n switch (directoryOp.type) {\n case \"clear\": {\n dir?.clear();\n break;\n }\n case \"createSubDirectory\": {\n dir?.createSubDirectory(directoryOp.subdirName);\n break;\n }\n case \"delete\": {\n dir?.delete(directoryOp.key);\n break;\n }\n case \"deleteSubDirectory\": {\n dir?.deleteSubDirectory(directoryOp.subdirName);\n break;\n }\n case \"set\": {\n dir?.set(directoryOp.key, this.localValueMaker.fromSerializable(directoryOp.value, this.serializer, this.handle).value);\n break;\n }\n default: {\n unreachableCase(directoryOp);\n }\n }\n }\n serializeDirectory(root, serializer, telemetryContext) {\n const MinValueSizeSeparateSnapshotBlob = 8 * 1024;\n const builder = new SummaryTreeBuilder();\n let counter = 0;\n const blobs = [];\n const stack = [];\n const content = {};\n stack.push([root, content]);\n while (stack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [currentSubDir, currentSubDirObject] = stack.pop();\n currentSubDirObject.ci = currentSubDir.getSerializableCreateInfo();\n for (const [key, value] of currentSubDir.getSerializedStorage(serializer)) {\n if (!currentSubDirObject.storage) {\n currentSubDirObject.storage = {};\n }\n // eslint-disable-next-line import/no-deprecated\n const result = {\n type: value.type,\n value: value.value && JSON.parse(value.value),\n };\n if (value.value && value.value.length >= MinValueSizeSeparateSnapshotBlob) {\n const extraContent = {};\n let largeContent = extraContent;\n if (currentSubDir.absolutePath !== posix.sep) {\n for (const dir of currentSubDir.absolutePath.slice(1).split(posix.sep)) {\n const subDataObject = {};\n largeContent.subdirectories = { [dir]: subDataObject };\n largeContent = subDataObject;\n }\n }\n largeContent.storage = { [key]: result };\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n builder.addBlob(blobName, JSON.stringify(extraContent));\n }\n else {\n currentSubDirObject.storage[key] = result;\n }\n }\n for (const [subdirName, subdir] of currentSubDir.subdirectories()) {\n if (!currentSubDirObject.subdirectories) {\n currentSubDirObject.subdirectories = {};\n }\n const subDataObject = {};\n currentSubDirObject.subdirectories[subdirName] = subDataObject;\n stack.push([subdir, subDataObject]);\n }\n }\n const newFormat = {\n blobs,\n content,\n };\n builder.addBlob(snapshotFileName, JSON.stringify(newFormat));\n return builder.getSummaryTree();\n }\n}\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nfunction isKeyEditLocalOpMetadata(metadata) {\n return (metadata !== undefined &&\n typeof metadata.pendingMessageId === \"number\" &&\n metadata.type === \"edit\");\n}\nfunction isClearLocalOpMetadata(metadata) {\n return (metadata !== undefined &&\n metadata.type === \"clear\" &&\n typeof metadata.pendingMessageId === \"number\" &&\n typeof metadata.previousStorage === \"object\");\n}\nfunction isSubDirLocalOpMetadata(metadata) {\n return (metadata !== undefined &&\n (metadata.type === \"createSubDir\" || metadata.type === \"deleteSubDir\"));\n}\nfunction isDirectoryLocalOpMetadata(metadata) {\n return (isKeyEditLocalOpMetadata(metadata) ||\n isClearLocalOpMetadata(metadata) ||\n isSubDirLocalOpMetadata(metadata));\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n// eslint-disable-next-line @rushstack/no-new-null\nfunction assertNonNullClientId(clientId) {\n assert(clientId !== null, 0x6af /* client id should never be null */);\n}\nlet hasLoggedDirectoryInconsistency = false;\n/**\n * Node of the directory tree.\n * @sealed\n */\nclass SubDirectory extends TypedEventEmitter {\n /**\n * Constructor.\n * @param sequenceNumber - Message seq number at which this was created.\n * @param clientIds - Ids of client which created this directory.\n * @param directory - Reference back to the SharedDirectory to perform operations\n * @param runtime - The data store runtime this directory is associated with\n * @param serializer - The serializer to serialize / parse handles\n * @param absolutePath - The absolute path of this IDirectory\n */\n constructor(seqData, clientIds, directory, runtime, serializer, absolutePath, logger) {\n super();\n this.seqData = seqData;\n this.clientIds = clientIds;\n this.directory = directory;\n this.runtime = runtime;\n this.serializer = serializer;\n this.absolutePath = absolutePath;\n this.logger = logger;\n /**\n * Tells if the sub directory is deleted or not.\n */\n this._deleted = false;\n /**\n * String representation for the class.\n */\n this[_b] = \"SubDirectory\";\n /**\n * The in-memory data the directory is storing.\n */\n this._storage = new Map();\n /**\n * The subdirectories the directory is holding.\n */\n this._subdirectories = new Map();\n /**\n * Keys that have been modified locally but not yet ack'd from the server. This is for operations on keys like\n * set/delete operations on keys. The value of this map is list of pendingMessageIds at which that key\n * was modified. We don't store the type of ops, and behaviour of key ops are different from behaviour of sub\n * directory ops, so we have separate map from subDirectories tracker.\n */\n this.pendingKeys = new Map();\n /**\n * Subdirectories that have been deleted locally but not yet ack'd from the server. This maintains the record\n * of delete op that are pending or yet to be acked from server. This is maintained just to track the locally\n * deleted sub directory.\n */\n this.pendingDeleteSubDirectoriesTracker = new Map();\n /**\n * Subdirectories that have been created locally but not yet ack'd from the server. This maintains the record\n * of create op that are pending or yet to be acked from server. This is maintained just to track the locally\n * created sub directory.\n */\n this.pendingCreateSubDirectoriesTracker = new Map();\n /**\n * This is used to assign a unique id to every outgoing operation and helps in tracking unack'd ops.\n */\n this.pendingMessageId = -1;\n /**\n * The pending ids of any clears that have been performed locally but not yet ack'd from the server\n */\n this.pendingClearMessageIds = [];\n /**\n * Assigns a unique ID to each subdirectory created locally but pending for acknowledgement, facilitating the tracking\n * of the creation order.\n */\n this.localCreationSeq = 0;\n this.localCreationSeqTracker = new DirectoryCreationTracker();\n this.ackedCreationSeqTracker = new DirectoryCreationTracker();\n }\n dispose(error) {\n this._deleted = true;\n this.emit(\"disposed\", this);\n }\n /**\n * Unmark the deleted property only when rolling back delete.\n */\n undispose() {\n this._deleted = false;\n this.emit(\"undisposed\", this);\n }\n get disposed() {\n return this._deleted;\n }\n throwIfDisposed() {\n if (this._deleted) {\n throw new UsageError(\"Cannot access Disposed subDirectory\");\n }\n }\n /**\n * Checks whether the given key exists in this IDirectory.\n * @param key - The key to check\n * @returns True if the key exists, false otherwise\n */\n has(key) {\n this.throwIfDisposed();\n return this._storage.has(key);\n }\n /**\n * {@inheritDoc IDirectory.get}\n */\n get(key) {\n this.throwIfDisposed();\n return this._storage.get(key)?.value;\n }\n /**\n * {@inheritDoc IDirectory.set}\n */\n set(key, value) {\n this.throwIfDisposed();\n // Undefined/null keys can't be serialized to JSON in the manner we currently snapshot.\n if (key === undefined || key === null) {\n throw new Error(\"Undefined and null keys are not supported\");\n }\n // Create a local value and serialize it.\n const localValue = this.directory.localValueMaker.fromInMemory(value);\n bindHandles(localValue, this.serializer, this.directory.handle);\n // Set the value locally.\n const previousValue = this.setCore(key, localValue, true);\n // If we are not attached, don't submit the op.\n if (!this.directory.isAttached()) {\n return this;\n }\n const op = {\n key,\n path: this.absolutePath,\n type: \"set\",\n value: { type: localValue.type, value: localValue.value },\n };\n this.submitKeyMessage(op, previousValue);\n return this;\n }\n /**\n * {@inheritDoc IDirectory.countSubDirectory}\n */\n countSubDirectory() {\n return this._subdirectories.size;\n }\n /**\n * {@inheritDoc IDirectory.createSubDirectory}\n */\n createSubDirectory(subdirName) {\n this.throwIfDisposed();\n // Undefined/null subdirectory names can't be serialized to JSON in the manner we currently snapshot.\n if (subdirName === undefined || subdirName === null) {\n throw new Error(\"SubDirectory name may not be undefined or null\");\n }\n if (subdirName.includes(posix.sep)) {\n throw new Error(`SubDirectory name may not contain ${posix.sep}`);\n }\n // Create the sub directory locally first.\n const isNew = this.createSubDirectoryCore(subdirName, true, this.getLocalSeq(), this.runtime.clientId ?? \"detached\");\n const subDir = this._subdirectories.get(subdirName);\n assert(subDir !== undefined, 0x5aa /* subdirectory should exist after creation */);\n // If we are not attached, don't submit the op.\n if (!this.directory.isAttached()) {\n return subDir;\n }\n // Only submit the op, if it is newly created.\n if (isNew) {\n const op = {\n path: this.absolutePath,\n subdirName,\n type: \"createSubDirectory\",\n };\n this.submitCreateSubDirectoryMessage(op);\n }\n return subDir;\n }\n /**\n * Gets the Sequence Data which should be used for local changes.\n *\n * @remarks While detached, 0 is used rather than -1 to represent a change which should be universally known (as opposed to known\n * only by the local client). This ensures that if the directory is later attached, none of its data needs to be updated (the values\n * last set while detached will now be known to any new client, until they are changed).\n *\n * The client sequence number is incremented by 1 for maintaining the internal order of locally created subdirectories\n *\n * @privateRemarks TODO: Convert these conventions to named constants. The semantics used here match those for merge-tree.\n */\n getLocalSeq() {\n return this.directory.isAttached()\n ? { seq: -1, clientSeq: ++this.localCreationSeq }\n : { seq: 0, clientSeq: ++this.localCreationSeq };\n }\n /**\n * {@inheritDoc IDirectory.getSubDirectory}\n */\n getSubDirectory(subdirName) {\n this.throwIfDisposed();\n return this._subdirectories.get(subdirName);\n }\n /**\n * {@inheritDoc IDirectory.hasSubDirectory}\n */\n hasSubDirectory(subdirName) {\n this.throwIfDisposed();\n return this._subdirectories.has(subdirName);\n }\n /**\n * {@inheritDoc IDirectory.deleteSubDirectory}\n */\n deleteSubDirectory(subdirName) {\n this.throwIfDisposed();\n // Delete the sub directory locally first.\n const subDir = this.deleteSubDirectoryCore(subdirName, true);\n // If we are not attached, don't submit the op.\n if (!this.directory.isAttached()) {\n return subDir !== undefined;\n }\n // Only submit the op, if the directory existed and we deleted it.\n if (subDir !== undefined) {\n const op = {\n path: this.absolutePath,\n subdirName,\n type: \"deleteSubDirectory\",\n };\n this.submitDeleteSubDirectoryMessage(op, subDir);\n }\n return subDir !== undefined;\n }\n /**\n * {@inheritDoc IDirectory.subdirectories}\n */\n subdirectories() {\n this.throwIfDisposed();\n const ackedSubdirsInOrder = this.ackedCreationSeqTracker.keys();\n const localSubdirsInOrder = this.localCreationSeqTracker.keys((key) => !this.ackedCreationSeqTracker.has(key));\n const subdirNames = [...ackedSubdirsInOrder, ...localSubdirsInOrder];\n if (subdirNames.length !== this._subdirectories.size) {\n // TODO: AB#7022: Hitting this block indicates that the eventual consistency scheme for ordering subdirectories\n // has failed. Fall back to previous directory behavior, which didn't guarantee ordering.\n // It's not currently clear how to reach this state, so log some diagnostics to help understand the issue.\n // This whole block should eventually be replaced by an assert that the two sizes align.\n if (!hasLoggedDirectoryInconsistency) {\n this.logger.sendTelemetryEvent({\n eventName: \"inconsistentSubdirectoryOrdering\",\n localKeyCount: this.localCreationSeqTracker.size,\n ackedKeyCount: this.ackedCreationSeqTracker.size,\n subdirNamesLength: subdirNames.length,\n subdirectoriesSize: this._subdirectories.size,\n });\n hasLoggedDirectoryInconsistency = true;\n }\n return this._subdirectories.entries();\n }\n const entriesIterator = {\n index: 0,\n dirs: this._subdirectories,\n next() {\n if (this.index < subdirNames.length) {\n // Non null asserting, we've checked that the index is inside the bounds of the array.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const subdirName = subdirNames[this.index];\n this.index++;\n const subdir = this.dirs.get(subdirName);\n assert(subdir !== undefined, 0x8ac /* Could not find expected sub-directory. */);\n return { value: [subdirName, subdir], done: false };\n }\n return { value: undefined, done: true };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return entriesIterator;\n }\n /**\n * {@inheritDoc IDirectory.getWorkingDirectory}\n */\n getWorkingDirectory(relativePath) {\n this.throwIfDisposed();\n return this.directory.getWorkingDirectory(this.makeAbsolute(relativePath));\n }\n /**\n * This checks if there is pending delete op for local delete for a given child subdirectory.\n * @param subDirName - directory name.\n * @returns true if there is pending delete.\n */\n isSubDirectoryDeletePending(subDirName) {\n if (this.pendingDeleteSubDirectoriesTracker.has(subDirName)) {\n return true;\n }\n return false;\n }\n /**\n * Deletes the given key from within this IDirectory.\n * @param key - The key to delete\n * @returns True if the key existed and was deleted, false if it did not exist\n */\n delete(key) {\n this.throwIfDisposed();\n // Delete the key locally first.\n const previousValue = this.deleteCore(key, true);\n // If we are not attached, don't submit the op.\n if (!this.directory.isAttached()) {\n return previousValue !== undefined;\n }\n const op = {\n key,\n path: this.absolutePath,\n type: \"delete\",\n };\n this.submitKeyMessage(op, previousValue);\n return previousValue !== undefined;\n }\n /**\n * Deletes all keys from within this IDirectory.\n */\n clear() {\n this.throwIfDisposed();\n // If we are not attached, don't submit the op.\n if (!this.directory.isAttached()) {\n this.clearCore(true);\n return;\n }\n const copy = new Map(this._storage);\n this.clearCore(true);\n const op = {\n path: this.absolutePath,\n type: \"clear\",\n };\n this.submitClearMessage(op, copy);\n }\n /**\n * Issue a callback on each entry under this IDirectory.\n * @param callback - Callback to issue\n */\n forEach(callback) {\n this.throwIfDisposed();\n // eslint-disable-next-line unicorn/no-array-for-each\n this._storage.forEach((localValue, key, map) => {\n callback(localValue.value, key, map);\n });\n }\n /**\n * The number of entries under this IDirectory.\n */\n get size() {\n this.throwIfDisposed();\n return this._storage.size;\n }\n /**\n * Get an iterator over the entries under this IDirectory.\n * @returns The iterator\n */\n entries() {\n this.throwIfDisposed();\n const localEntriesIterator = this._storage.entries();\n const iterator = {\n next() {\n const nextVal = localEntriesIterator.next();\n return nextVal.done\n ? { value: undefined, done: true }\n : { value: [nextVal.value[0], nextVal.value[1].value], done: false };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return iterator;\n }\n /**\n * Get an iterator over the keys under this IDirectory.\n * @returns The iterator\n */\n keys() {\n this.throwIfDisposed();\n return this._storage.keys();\n }\n /**\n * Get an iterator over the values under this IDirectory.\n * @returns The iterator\n */\n values() {\n this.throwIfDisposed();\n const localValuesIterator = this._storage.values();\n const iterator = {\n next() {\n const nextVal = localValuesIterator.next();\n return nextVal.done\n ? { value: undefined, done: true }\n : { value: nextVal.value.value, done: false };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return iterator;\n }\n /**\n * Get an iterator over the entries under this IDirectory.\n * @returns The iterator\n */\n [(_b = Symbol.toStringTag, Symbol.iterator)]() {\n this.throwIfDisposed();\n return this.entries();\n }\n /**\n * Process a clear operation.\n * @param msg - The message from the server to apply.\n * @param op - The op to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n */\n processClearMessage(msg, op, local, localOpMetadata) {\n this.throwIfDisposed();\n if (!this.isMessageForCurrentInstanceOfSubDirectory(msg)) {\n return;\n }\n if (local) {\n assert(isClearLocalOpMetadata(localOpMetadata), 0x00f /* pendingMessageId is missing from the local client's operation */);\n const pendingClearMessageId = this.pendingClearMessageIds.shift();\n assert(pendingClearMessageId === localOpMetadata.pendingMessageId, 0x32a /* pendingMessageId does not match */);\n return;\n }\n this.clearExceptPendingKeys(false);\n }\n /**\n * Process a delete operation.\n * @param msg - The message from the server to apply.\n * @param op - The op to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n */\n processDeleteMessage(msg, op, local, localOpMetadata) {\n this.throwIfDisposed();\n if (!(this.isMessageForCurrentInstanceOfSubDirectory(msg) &&\n this.needProcessStorageOperation(op, local, localOpMetadata))) {\n return;\n }\n this.deleteCore(op.key, local);\n }\n /**\n * Process a set operation.\n * @param msg - The message from the server to apply.\n * @param op - The op to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n */\n processSetMessage(msg, op, context, local, localOpMetadata) {\n this.throwIfDisposed();\n if (!(this.isMessageForCurrentInstanceOfSubDirectory(msg) &&\n this.needProcessStorageOperation(op, local, localOpMetadata))) {\n return;\n }\n // needProcessStorageOperation should have returned false if local is true\n // so we can assume context is not undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.setCore(op.key, context, local);\n }\n /**\n * Process a create subdirectory operation.\n * @param msg - The message from the server to apply.\n * @param op - The op to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n */\n processCreateSubDirectoryMessage(msg, op, local, localOpMetadata) {\n this.throwIfDisposed();\n if (!(this.isMessageForCurrentInstanceOfSubDirectory(msg) &&\n this.needProcessSubDirectoryOperation(msg, op, local, localOpMetadata))) {\n return;\n }\n assertNonNullClientId(msg.clientId);\n this.createSubDirectoryCore(op.subdirName, local, { seq: msg.sequenceNumber, clientSeq: msg.clientSequenceNumber }, msg.clientId);\n }\n /**\n * Process a delete subdirectory operation.\n * @param msg - The message from the server to apply.\n * @param op - The op to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n */\n processDeleteSubDirectoryMessage(msg, op, local, localOpMetadata) {\n this.throwIfDisposed();\n if (!(this.isMessageForCurrentInstanceOfSubDirectory(msg) &&\n this.needProcessSubDirectoryOperation(msg, op, local, localOpMetadata))) {\n return;\n }\n this.deleteSubDirectoryCore(op.subdirName, local);\n }\n /**\n * Submit a clear operation.\n * @param op - The operation\n */\n submitClearMessage(op, previousValue) {\n this.throwIfDisposed();\n const pendingMsgId = ++this.pendingMessageId;\n this.pendingClearMessageIds.push(pendingMsgId);\n const metadata = {\n type: \"clear\",\n pendingMessageId: pendingMsgId,\n previousStorage: previousValue,\n };\n this.directory.submitDirectoryMessage(op, metadata);\n }\n /**\n * Resubmit a clear operation.\n * @param op - The operation\n */\n resubmitClearMessage(op, localOpMetadata) {\n assert(isClearLocalOpMetadata(localOpMetadata), 0x32b /* Invalid localOpMetadata for clear */);\n // We don't reuse the metadata pendingMessageId but send a new one on each submit.\n const pendingClearMessageId = this.pendingClearMessageIds.shift();\n // Only submit the op, if we have record for it, otherwise it is possible that the older instance\n // is already deleted, in which case we don't need to submit the op.\n if (pendingClearMessageId === localOpMetadata.pendingMessageId) {\n this.submitClearMessage(op, localOpMetadata.previousStorage);\n }\n }\n /**\n * Get a new pending message id for the op and cache it to track the pending op\n */\n getKeyMessageId(op) {\n // We don't reuse the metadata pendingMessageId but send a new one on each submit.\n const pendingMessageId = ++this.pendingMessageId;\n const pendingMessageIds = this.pendingKeys.get(op.key);\n if (pendingMessageIds === undefined) {\n this.pendingKeys.set(op.key, [pendingMessageId]);\n }\n else {\n pendingMessageIds.push(pendingMessageId);\n }\n return pendingMessageId;\n }\n /**\n * Submit a key operation.\n * @param op - The operation\n * @param previousValue - The value of the key before this op\n */\n submitKeyMessage(op, previousValue) {\n this.throwIfDisposed();\n const pendingMessageId = this.getKeyMessageId(op);\n const localMetadata = { type: \"edit\", pendingMessageId, previousValue };\n this.directory.submitDirectoryMessage(op, localMetadata);\n }\n /**\n * Submit a key message to remote clients based on a previous submit.\n * @param op - The map key message\n * @param localOpMetadata - Metadata from the previous submit\n */\n resubmitKeyMessage(op, localOpMetadata) {\n assert(isKeyEditLocalOpMetadata(localOpMetadata), 0x32d /* Invalid localOpMetadata in submit */);\n // clear the old pending message id\n const pendingMessageIds = this.pendingKeys.get(op.key);\n // Only submit the op, if we have record for it, otherwise it is possible that the older instance\n // is already deleted, in which case we don't need to submit the op.\n if (pendingMessageIds !== undefined) {\n const index = pendingMessageIds.indexOf(localOpMetadata.pendingMessageId);\n if (index === -1) {\n return;\n }\n pendingMessageIds.splice(index, 1);\n if (pendingMessageIds.length === 0) {\n this.pendingKeys.delete(op.key);\n }\n this.submitKeyMessage(op, localOpMetadata.previousValue);\n }\n }\n incrementPendingSubDirCount(map, subDirName) {\n const count = map.get(subDirName) ?? 0;\n map.set(subDirName, count + 1);\n }\n decrementPendingSubDirCount(map, subDirName) {\n const count = map.get(subDirName) ?? 0;\n map.set(subDirName, count - 1);\n if (count <= 1) {\n map.delete(subDirName);\n }\n }\n /**\n * Update the count for pending create/delete of the sub directory so that it can be validated on receiving op\n * or while resubmitting the op.\n */\n updatePendingSubDirMessageCount(op) {\n if (op.type === \"deleteSubDirectory\") {\n this.incrementPendingSubDirCount(this.pendingDeleteSubDirectoriesTracker, op.subdirName);\n }\n else if (op.type === \"createSubDirectory\") {\n this.incrementPendingSubDirCount(this.pendingCreateSubDirectoriesTracker, op.subdirName);\n }\n }\n /**\n * Submit a create subdirectory operation.\n * @param op - The operation\n */\n submitCreateSubDirectoryMessage(op) {\n this.throwIfDisposed();\n this.updatePendingSubDirMessageCount(op);\n const localOpMetadata = {\n type: \"createSubDir\",\n };\n this.directory.submitDirectoryMessage(op, localOpMetadata);\n }\n /**\n * Submit a delete subdirectory operation.\n * @param op - The operation\n * @param subDir - Any subdirectory deleted by the op\n */\n submitDeleteSubDirectoryMessage(op, subDir) {\n this.throwIfDisposed();\n this.updatePendingSubDirMessageCount(op);\n const localOpMetadata = {\n type: \"deleteSubDir\",\n subDirectory: subDir,\n };\n this.directory.submitDirectoryMessage(op, localOpMetadata);\n }\n /**\n * Submit a subdirectory operation again\n * @param op - The operation\n * @param localOpMetadata - metadata submitted with the op originally\n */\n resubmitSubDirectoryMessage(op, localOpMetadata) {\n assert(isSubDirLocalOpMetadata(localOpMetadata), 0x32f /* Invalid localOpMetadata for sub directory op */);\n // Only submit the op, if we have record for it, otherwise it is possible that the older instance\n // is already deleted, in which case we don't need to submit the op.\n if (localOpMetadata.type === \"createSubDir\" &&\n !this.pendingCreateSubDirectoriesTracker.has(op.subdirName)) {\n return;\n }\n else if (localOpMetadata.type === \"deleteSubDir\" &&\n !this.pendingDeleteSubDirectoriesTracker.has(op.subdirName)) {\n return;\n }\n if (localOpMetadata.type === \"createSubDir\") {\n this.decrementPendingSubDirCount(this.pendingCreateSubDirectoriesTracker, op.subdirName);\n this.submitCreateSubDirectoryMessage(op);\n }\n else {\n this.decrementPendingSubDirCount(this.pendingDeleteSubDirectoriesTracker, op.subdirName);\n this.submitDeleteSubDirectoryMessage(op, localOpMetadata.subDirectory);\n }\n }\n /**\n * Get the storage of this subdirectory in a serializable format, to be used in snapshotting.\n * @param serializer - The serializer to use to serialize handles in its values.\n * @returns The JSONable string representing the storage of this subdirectory\n */\n *getSerializedStorage(serializer) {\n this.throwIfDisposed();\n for (const [key, localValue] of this._storage) {\n const value = localValue.makeSerialized(serializer, this.directory.handle);\n const res = [key, value];\n yield res;\n }\n }\n getSerializableCreateInfo() {\n this.throwIfDisposed();\n const createInfo = {\n csn: this.seqData.seq,\n ccIds: [...this.clientIds],\n };\n return createInfo;\n }\n /**\n * Populate a key value in this subdirectory's storage, to be used when loading from snapshot.\n * @param key - The key to populate\n * @param localValue - The local value to populate into it\n */\n populateStorage(key, localValue) {\n this.throwIfDisposed();\n this._storage.set(key, localValue);\n }\n /**\n * Populate a subdirectory into this subdirectory, to be used when loading from snapshot.\n * @param subdirName - The name of the subdirectory to add\n * @param newSubDir - The new subdirectory to add\n */\n populateSubDirectory(subdirName, newSubDir) {\n this.throwIfDisposed();\n this._subdirectories.set(subdirName, newSubDir);\n }\n /**\n * Retrieve the local value at the given key. This is used to get value type information stashed on the local\n * value so op handlers can be retrieved\n * @param key - The key to retrieve from\n * @returns The local value\n */\n getLocalValue(key) {\n this.throwIfDisposed();\n return this._storage.get(key);\n }\n /**\n * Remove the pendingMessageId from the map tracking it on rollback\n * @param map - map tracking the pending messages\n * @param key - key of the edit in the op\n */\n rollbackPendingMessageId(map, key, pendingMessageId) {\n const pendingMessageIds = map.get(key);\n const lastPendingMessageId = pendingMessageIds?.pop();\n if (!pendingMessageIds || lastPendingMessageId !== pendingMessageId) {\n throw new Error(\"Rollback op does not match last pending\");\n }\n if (pendingMessageIds.length === 0) {\n map.delete(key);\n }\n }\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n /**\n * Rollback a local op\n * @param op - The operation to rollback\n * @param localOpMetadata - The local metadata associated with the op.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rollback(op, localOpMetadata) {\n if (!isDirectoryLocalOpMetadata(localOpMetadata)) {\n throw new Error(\"Invalid localOpMetadata\");\n }\n if (op.type === \"clear\" && localOpMetadata.type === \"clear\") {\n for (const [key, localValue] of localOpMetadata.previousStorage.entries()) {\n this.setCore(key, localValue, true);\n }\n const lastPendingClearId = this.pendingClearMessageIds.pop();\n if (lastPendingClearId === undefined ||\n lastPendingClearId !== localOpMetadata.pendingMessageId) {\n throw new Error(\"Rollback op does match last clear\");\n }\n }\n else if ((op.type === \"delete\" || op.type === \"set\") &&\n localOpMetadata.type === \"edit\") {\n const key = op.key;\n assert(key !== undefined, 0x8ad /* \"key\" property is missing from edit operation. */);\n assert(typeof key === \"string\", 0x8ae /* \"key\" property in edit operation is misconfigured. Expected a string. */);\n if (localOpMetadata.previousValue === undefined) {\n this.deleteCore(key, true);\n }\n else {\n this.setCore(key, localOpMetadata.previousValue, true);\n }\n this.rollbackPendingMessageId(this.pendingKeys, key, localOpMetadata.pendingMessageId);\n }\n else if (op.type === \"createSubDirectory\" && localOpMetadata.type === \"createSubDir\") {\n const subdirName = op.subdirName;\n assert(subdirName !== undefined, 0x8af /* \"subdirName\" property is missing from \"createSubDirectory\" operation. */);\n assert(typeof subdirName === \"string\", 0x8b0 /* \"subdirName\" property in \"createSubDirectory\" operation is misconfigured. Expected a string. */);\n this.deleteSubDirectoryCore(subdirName, true);\n this.decrementPendingSubDirCount(this.pendingCreateSubDirectoriesTracker, subdirName);\n }\n else if (op.type === \"deleteSubDirectory\" && localOpMetadata.type === \"deleteSubDir\") {\n const subdirName = op.subdirName;\n assert(subdirName !== undefined, 0x8b1 /* \"subdirName\" property is missing from \"deleteSubDirectory\" operation. */);\n assert(typeof subdirName === \"string\", 0x8b2 /* \"subdirName\" property in \"deleteSubDirectory\" operation is misconfigured. Expected a string. */);\n if (localOpMetadata.subDirectory !== undefined) {\n this.undeleteSubDirectoryTree(localOpMetadata.subDirectory);\n // don't need to register events because deleting never unregistered\n this._subdirectories.set(subdirName, localOpMetadata.subDirectory);\n // Restore the record in creation tracker\n if (isAcknowledgedOrDetached(localOpMetadata.subDirectory.seqData)) {\n this.ackedCreationSeqTracker.set(subdirName, {\n ...localOpMetadata.subDirectory.seqData,\n });\n }\n else {\n this.localCreationSeqTracker.set(subdirName, {\n ...localOpMetadata.subDirectory.seqData,\n });\n }\n this.emit(\"subDirectoryCreated\", subdirName, true, this);\n }\n this.decrementPendingSubDirCount(this.pendingDeleteSubDirectoriesTracker, subdirName);\n }\n else {\n throw new Error(\"Unsupported op for rollback\");\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n /**\n * Converts the given relative path into an absolute path.\n * @param path - Relative path to convert\n * @returns The equivalent absolute path\n */\n makeAbsolute(relativePath) {\n return posix.resolve(this.absolutePath, relativePath);\n }\n /**\n * If our local operations that have not yet been ack'd will eventually overwrite an incoming operation, we should\n * not process the incoming operation.\n * @param op - Operation to check\n * @param local - Whether the operation originated from the local client\n * @param localOpMetadata - For local client ops, this is the metadata that was submitted with the op.\n * For ops from a remote client, this will be undefined.\n * @returns True if the operation should be processed, false otherwise\n */\n needProcessStorageOperation(op, local, localOpMetadata) {\n if (this.pendingClearMessageIds.length > 0) {\n if (local) {\n // Remove all pendingMessageIds lower than first pendingClearMessageId.\n // Non null asserting, because of pendingClearMessageIds length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstPendingClearMessageId = this.pendingClearMessageIds[0];\n assert(localOpMetadata !== undefined &&\n isKeyEditLocalOpMetadata(localOpMetadata) &&\n localOpMetadata.pendingMessageId < firstPendingClearMessageId, 0x010 /* \"Received out of order storage op when there is an unackd clear message\" */);\n const pendingKeyMessageIdArray = this.pendingKeys.get(op.key);\n if (pendingKeyMessageIdArray !== undefined) {\n let index = 0;\n // Non-null asserting because we maintain that the pendingKeyMessageIdArray will only exist if it is non-empty.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n while (pendingKeyMessageIdArray[index] < firstPendingClearMessageId) {\n index += 1;\n }\n const newPendingKeyMessageId = pendingKeyMessageIdArray.splice(index);\n if (newPendingKeyMessageId.length === 0) {\n this.pendingKeys.delete(op.key);\n }\n else {\n this.pendingKeys.set(op.key, newPendingKeyMessageId);\n }\n }\n }\n // If I have a NACK clear, we can ignore all ops.\n return false;\n }\n const pendingKeyMessageIds = this.pendingKeys.get(op.key);\n if (pendingKeyMessageIds !== undefined) {\n // Found an NACK op, clear it from the directory if the latest sequence number in the directory\n // match the message's and don't process the op.\n if (local) {\n assert(localOpMetadata !== undefined && isKeyEditLocalOpMetadata(localOpMetadata), 0x011 /* pendingMessageId is missing from the local client's operation */);\n if (pendingKeyMessageIds[0] !== localOpMetadata.pendingMessageId) {\n // TODO: AB#7742: Hitting this block indicates that the pending message Id received\n // is not consistent with the \"next\" local op\n this.logger.sendTelemetryEvent({\n eventName: \"unexpectedPendingMessage\",\n expectedPendingMessage: pendingKeyMessageIds[0],\n actualPendingMessage: localOpMetadata.pendingMessageId,\n expectedPendingMessagesLength: pendingKeyMessageIds.length,\n });\n }\n pendingKeyMessageIds.shift();\n if (pendingKeyMessageIds.length === 0) {\n this.pendingKeys.delete(op.key);\n }\n }\n return false;\n }\n // If we don't have a NACK op on the key, we need to process the remote ops.\n return !local;\n }\n /**\n * This return true if the message is for the current instance of this sub directory. As the sub directory\n * can be deleted and created again, then this finds if the message is for current instance of directory or not.\n * @param msg - message for the directory\n */\n isMessageForCurrentInstanceOfSubDirectory(msg) {\n // If the message is either from the creator of directory or this directory was created when\n // container was detached or in case this directory is already live(known to other clients)\n // and the op was created after the directory was created then apply this op.\n return ((msg.clientId !== null && this.clientIds.has(msg.clientId)) ||\n this.clientIds.has(\"detached\") ||\n (this.seqData.seq !== -1 && this.seqData.seq <= msg.referenceSequenceNumber));\n }\n /**\n * If our local operations that have not yet been ack'd will eventually overwrite an incoming operation, we should\n * not process the incoming operation.\n * @param op - Operation to check\n * @param local - Whether the message originated from the local client\n * @param message - The message\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n * @returns True if the operation should be processed, false otherwise\n */\n needProcessSubDirectoryOperation(msg, op, local, localOpMetadata) {\n assertNonNullClientId(msg.clientId);\n const pendingDeleteCount = this.pendingDeleteSubDirectoriesTracker.get(op.subdirName);\n const pendingCreateCount = this.pendingCreateSubDirectoriesTracker.get(op.subdirName);\n if ((pendingDeleteCount !== undefined && pendingDeleteCount > 0) ||\n (pendingCreateCount !== undefined && pendingCreateCount > 0)) {\n if (local) {\n assert(isSubDirLocalOpMetadata(localOpMetadata), 0x012 /* pendingMessageId is missing from the local client's operation */);\n if (localOpMetadata.type === \"deleteSubDir\") {\n assert(pendingDeleteCount !== undefined && pendingDeleteCount > 0, 0x6c2 /* pendingDeleteCount should exist */);\n this.decrementPendingSubDirCount(this.pendingDeleteSubDirectoriesTracker, op.subdirName);\n }\n else if (localOpMetadata.type === \"createSubDir\") {\n assert(pendingCreateCount !== undefined && pendingCreateCount > 0, 0x6c3 /* pendingCreateCount should exist */);\n this.decrementPendingSubDirCount(this.pendingCreateSubDirectoriesTracker, op.subdirName);\n }\n }\n if (op.type === \"deleteSubDirectory\") {\n const resetSubDirectoryTree = (directory) => {\n if (!directory) {\n return;\n }\n // If this is delete op and we have keys in this subDirectory, then we need to delete these\n // keys except the pending ones as they will be sequenced after this delete.\n directory.clearExceptPendingKeys(local);\n // In case of delete op, we need to reset the creation seqNum, clientSeqNum and client ids of\n // creators as the previous directory is getting deleted and we will initialize again when\n // we will receive op for the create again.\n directory.seqData.seq = -1;\n directory.seqData.clientSeq = -1;\n directory.clientIds.clear();\n // Do the same thing for the subtree of the directory. If create is not pending for a child, then just\n // delete it.\n const subDirectories = directory.subdirectories();\n for (const [subDirName, subDir] of subDirectories) {\n if (directory.pendingCreateSubDirectoriesTracker.has(subDirName)) {\n resetSubDirectoryTree(subDir);\n continue;\n }\n directory.deleteSubDirectoryCore(subDirName, false);\n }\n };\n const subDirectory = this._subdirectories.get(op.subdirName);\n // Clear the creation tracker record\n this.ackedCreationSeqTracker.delete(op.subdirName);\n resetSubDirectoryTree(subDirectory);\n }\n if (op.type === \"createSubDirectory\") {\n const dir = this._subdirectories.get(op.subdirName);\n // Child sub directory create seq number can't be lower than the parent subdirectory.\n // The sequence number for multiple ops can be the same when multiple createSubDirectory occurs with grouped batching enabled, thus <= and not just <.\n if (this.seqData.seq !== -1 && this.seqData.seq <= msg.sequenceNumber) {\n if (dir?.seqData.seq === -1) {\n // Only set the sequence data based on the first message\n dir.seqData.seq = msg.sequenceNumber;\n dir.seqData.clientSeq = msg.clientSequenceNumber;\n // set the creation seq in tracker\n if (!this.ackedCreationSeqTracker.has(op.subdirName) &&\n !this.pendingDeleteSubDirectoriesTracker.has(op.subdirName)) {\n this.ackedCreationSeqTracker.set(op.subdirName, {\n seq: msg.sequenceNumber,\n clientSeq: msg.clientSequenceNumber,\n });\n if (local) {\n this.localCreationSeqTracker.delete(op.subdirName);\n }\n }\n }\n // The client created the dir at or after the dirs seq, so list its client id as a creator.\n if (dir !== undefined &&\n !dir.clientIds.has(msg.clientId) &&\n dir.seqData.seq <= msg.sequenceNumber) {\n dir.clientIds.add(msg.clientId);\n }\n }\n }\n return false;\n }\n return !local;\n }\n /**\n * Clear all keys in memory in response to a remote clear, but retain keys we have modified but not yet been ack'd.\n */\n clearExceptPendingKeys(local) {\n // Assuming the pendingKeys is small and the map is large\n // we will get the value for the pendingKeys and clear the map\n const temp = new Map();\n for (const [key] of this.pendingKeys) {\n const value = this._storage.get(key);\n // If this key is already deleted, then we don't need to add it again.\n if (value !== undefined) {\n temp.set(key, value);\n }\n }\n this.clearCore(local);\n for (const [key, value] of temp.entries()) {\n this.setCore(key, value, true);\n }\n }\n /**\n * Clear implementation used for both locally sourced clears as well as incoming remote clears.\n * @param local - Whether the message originated from the local client\n */\n clearCore(local) {\n this._storage.clear();\n this.directory.emit(\"clear\", local, this.directory);\n }\n /**\n * Delete implementation used for both locally sourced deletes as well as incoming remote deletes.\n * @param key - The key being deleted\n * @param local - Whether the message originated from the local client\n * @returns Previous local value of the key if it existed, undefined if it did not exist\n */\n deleteCore(key, local) {\n const previousLocalValue = this._storage.get(key);\n const previousValue = previousLocalValue?.value;\n const successfullyRemoved = this._storage.delete(key);\n if (successfullyRemoved) {\n const event = { key, path: this.absolutePath, previousValue };\n this.directory.emit(\"valueChanged\", event, local, this.directory);\n const containedEvent = { key, previousValue };\n this.emit(\"containedValueChanged\", containedEvent, local, this);\n }\n return previousLocalValue;\n }\n /**\n * Set implementation used for both locally sourced sets as well as incoming remote sets.\n * @param key - The key being set\n * @param value - The value being set\n * @param local - Whether the message originated from the local client\n * @returns Previous local value of the key, if any\n */\n setCore(key, value, local) {\n const previousLocalValue = this._storage.get(key);\n const previousValue = previousLocalValue?.value;\n this._storage.set(key, value);\n const event = { key, path: this.absolutePath, previousValue };\n this.directory.emit(\"valueChanged\", event, local, this.directory);\n const containedEvent = { key, previousValue };\n this.emit(\"containedValueChanged\", containedEvent, local, this);\n return previousLocalValue;\n }\n /**\n * Create subdirectory implementation used for both locally sourced creation as well as incoming remote creation.\n * @param subdirName - The name of the subdirectory being created\n * @param local - Whether the message originated from the local client\n * @param seqData - Sequence number and client sequence number at which this directory is created\n * @param clientId - Id of client which created this directory.\n * @returns True if is newly created, false if it already existed.\n */\n createSubDirectoryCore(subdirName, local, seqData, clientId) {\n const subdir = this._subdirectories.get(subdirName);\n if (subdir === undefined) {\n const absolutePath = posix.join(this.absolutePath, subdirName);\n const subDir = new SubDirectory({ ...seqData }, new Set([clientId]), this.directory, this.runtime, this.serializer, absolutePath, this.logger);\n /**\n * Store the sequnce numbers of newly created subdirectory to the proper creation tracker, based\n * on whether the creation behavior has been ack'd or not\n */\n if (isAcknowledgedOrDetached(seqData)) {\n this.ackedCreationSeqTracker.set(subdirName, { ...seqData });\n }\n else {\n this.localCreationSeqTracker.set(subdirName, { ...seqData });\n }\n this.registerEventsOnSubDirectory(subDir, subdirName);\n this._subdirectories.set(subdirName, subDir);\n this.emit(\"subDirectoryCreated\", subdirName, local, this);\n return true;\n }\n else {\n subdir.clientIds.add(clientId);\n }\n return false;\n }\n registerEventsOnSubDirectory(subDirectory, subDirName) {\n subDirectory.on(\"subDirectoryCreated\", (relativePath, local) => {\n this.emit(\"subDirectoryCreated\", posix.join(subDirName, relativePath), local, this);\n });\n subDirectory.on(\"subDirectoryDeleted\", (relativePath, local) => {\n this.emit(\"subDirectoryDeleted\", posix.join(subDirName, relativePath), local, this);\n });\n }\n /**\n * Delete subdirectory implementation used for both locally sourced creation as well as incoming remote creation.\n * @param subdirName - The name of the subdirectory being deleted\n * @param local - Whether the message originated from the local client\n */\n deleteSubDirectoryCore(subdirName, local) {\n const previousValue = this._subdirectories.get(subdirName);\n // This should make the subdirectory structure unreachable so it can be GC'd and won't appear in snapshots\n // Might want to consider cleaning out the structure more exhaustively though? But not when rollback.\n if (previousValue !== undefined) {\n this._subdirectories.delete(subdirName);\n /**\n * Remove the corresponding record from the proper creation tracker, based on whether the subdirectory has been\n * ack'd already or still not committed yet (could be both).\n */\n if (this.ackedCreationSeqTracker.has(subdirName)) {\n this.ackedCreationSeqTracker.delete(subdirName);\n }\n if (this.localCreationSeqTracker.has(subdirName)) {\n this.localCreationSeqTracker.delete(subdirName);\n }\n this.disposeSubDirectoryTree(previousValue);\n this.emit(\"subDirectoryDeleted\", subdirName, local, this);\n }\n return previousValue;\n }\n disposeSubDirectoryTree(directory) {\n if (!directory) {\n return;\n }\n // Dispose the subdirectory tree. This will dispose the subdirectories from bottom to top.\n const subDirectories = directory.subdirectories();\n for (const [_, subDirectory] of subDirectories) {\n this.disposeSubDirectoryTree(subDirectory);\n }\n if (typeof directory.dispose === \"function\") {\n directory.dispose();\n }\n }\n undeleteSubDirectoryTree(directory) {\n // Restore deleted subdirectory tree. Need to undispose the current directory first, then get access to the iterator.\n // This will unmark \"deleted\" from the subdirectories from top to bottom.\n directory.undispose();\n for (const [_, subDirectory] of directory.subdirectories()) {\n this.undeleteSubDirectoryTree(subDirectory);\n }\n }\n}\n//# sourceMappingURL=directory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { createSharedObjectKind } from \"@fluidframework/shared-object-base/internal\";\nimport { SharedDirectory as SharedDirectoryInternal } from \"./directory.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\n/**\n * {@link @fluidframework/datastore-definitions#IChannelFactory} for {@link ISharedDirectory}.\n *\n * @sealed\n * @legacy\n * @alpha\n */\nexport class DirectoryFactory {\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\n get type() {\n return DirectoryFactory.Type;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\n get attributes() {\n return DirectoryFactory.Attributes;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n async load(runtime, id, services, attributes) {\n const directory = new SharedDirectoryInternal(id, runtime, attributes);\n await directory.load(services);\n return directory;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}\n */\n create(runtime, id) {\n const directory = new SharedDirectoryInternal(id, runtime, DirectoryFactory.Attributes);\n directory.initializeLocal();\n return directory;\n }\n}\n/**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\nDirectoryFactory.Type = \"https://graph.microsoft.com/types/directory\";\n/**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\nDirectoryFactory.Attributes = {\n type: DirectoryFactory.Type,\n snapshotFormatVersion: \"0.1\",\n packageVersion: pkgVersion,\n};\n/**\n * Entrypoint for {@link ISharedDirectory} creation.\n * @legacy\n * @alpha\n */\nexport const SharedDirectory = createSharedObjectKind(DirectoryFactory);\n//# sourceMappingURL=directoryFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { create404Response } from \"@fluidframework/runtime-utils/internal\";\n/**\n * This is a bare-bones base class that does basic setup and enables for factory on an initialize call.\n * You probably don't want to inherit from this data store directly unless\n * you are creating another base data store class\n *\n * @typeParam I - The optional input types used to strongly type the data object\n * @legacy\n * @alpha\n */\nexport class PureDataObject extends TypedEventEmitter {\n get id() {\n return this.runtime.id;\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IProvideFluidLoadable.IFluidLoadable}\n */\n get IFluidLoadable() {\n return this;\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IProvideFluidHandle.IFluidHandle}\n */\n get IFluidHandle() {\n return this.handle;\n }\n /**\n * Handle to a data store\n */\n get handle() {\n // PureDataObjectFactory already provides an entryPoint initialization function to the data store runtime,\n // so this object should always have access to a non-null entryPoint. Need to cast because PureDataObject\n // tried to be too smart with its typing for handles :).\n assert(this.runtime.entryPoint !== undefined, 0x46b /* EntryPoint was undefined */);\n return this.runtime.entryPoint;\n }\n static async getDataObject(runtime) {\n const obj = await runtime.entryPoint.get();\n return obj;\n }\n constructor(props) {\n super();\n this.runtime = props.runtime;\n this.context = props.context;\n this.providers = props.providers;\n this.initProps = props.initProps;\n }\n /**\n * Return this object if someone requests it directly\n * We will return this object in two scenarios:\n *\n * 1. the request url is a \"/\"\n *\n * 2. the request url is empty\n */\n async request(req) {\n return req.url === \"\" || req.url === \"/\" || req.url.startsWith(\"/?\")\n ? { mimeType: \"fluid/object\", status: 200, value: this }\n : create404Response(req);\n }\n /**\n * Call this API to ensure PureDataObject is fully initialized.\n * Initialization happens on demand, only on as-needed bases.\n * In most cases you should allow factory/object to decide when to finish initialization.\n * But if you are supplying your own implementation of DataStoreRuntime factory and overriding some methods\n * and need a fully initialized object, then you can call this API to ensure object is fully initialized.\n */\n async finishInitialization(existing) {\n if (this.initializeP !== undefined) {\n return this.initializeP;\n }\n this.initializeP = this.initializeInternal(existing);\n return this.initializeP;\n }\n /**\n * Internal initialize implementation. Overwriting this will change the flow of the PureDataObject and should\n * generally not be done.\n *\n * Calls initializingFirstTime, initializingFromExisting, and hasInitialized. Caller is\n * responsible for ensuring this is only invoked once.\n */\n async initializeInternal(existing) {\n await this.preInitialize();\n if (existing) {\n assert(this.initProps === undefined, 0x0be /* \"Trying to initialize from existing while initProps is set!\" */);\n await this.initializingFromExisting();\n }\n else {\n await this.initializingFirstTime(this.context.createProps ?? this.initProps);\n }\n await this.hasInitialized();\n }\n /**\n * Called every time the data store is initialized, before initializingFirstTime or\n * initializingFromExisting is called.\n */\n async preInitialize() { }\n /**\n * Called the first time the data store is initialized (new creations with a new\n * data store runtime)\n *\n * @param props - Optional props to be passed in on create\n */\n async initializingFirstTime(props) { }\n /**\n * Called every time but the first time the data store is initialized (creations\n * with an existing data store runtime)\n */\n async initializingFromExisting() { }\n /**\n * Called every time the data store is initialized after create or existing.\n */\n async hasInitialized() { }\n}\n//# sourceMappingURL=pureDataObject.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n// eslint-disable-next-line import/no-deprecated\nimport { MapFactory, SharedDirectory, } from \"@fluidframework/map/internal\";\nimport { PureDataObject } from \"./pureDataObject.js\";\n/**\n * DataObject is a base data store that is primed with a root directory. It\n * ensures that it is created and ready before you can access it.\n *\n * Having a single root directory allows for easier development. Instead of creating\n * and registering channels with the runtime any new DDS that is set on the root\n * will automatically be registered.\n *\n * @typeParam I - The optional input types used to strongly type the data object\n * @legacy\n * @alpha\n */\nexport class DataObject extends PureDataObject {\n constructor() {\n super(...arguments);\n this.rootDirectoryId = \"root\";\n }\n /**\n * The root directory will either be ready or will return an error. If an error is thrown\n * the root has not been correctly created/set.\n */\n get root() {\n if (!this.internalRoot) {\n throw new Error(this.getUninitializedErrorString(`root`));\n }\n return this.internalRoot;\n }\n /**\n * Initializes internal objects and calls initialization overrides.\n * Caller is responsible for ensuring this is only invoked once.\n */\n async initializeInternal(existing) {\n if (existing) {\n // data store has a root directory so we just need to set it before calling initializingFromExisting\n this.internalRoot = (await this.runtime.getChannel(this.rootDirectoryId));\n // This will actually be an ISharedMap if the channel was previously created by the older version of\n // DataObject which used a SharedMap. Since SharedMap and SharedDirectory are compatible unless\n // SharedDirectory-only commands are used on SharedMap, this will mostly just work for compatibility.\n if (this.internalRoot.attributes.type === MapFactory.Type) {\n this.runtime.logger.send({\n category: \"generic\",\n eventName: \"MapDataObject\",\n message: \"Legacy document, SharedMap is masquerading as SharedDirectory in DataObject\",\n });\n }\n }\n else {\n // Create a root directory and register it before calling initializingFirstTime\n // eslint-disable-next-line import/no-deprecated\n this.internalRoot = SharedDirectory.create(this.runtime, this.rootDirectoryId);\n this.internalRoot.bindToContext();\n }\n await super.initializeInternal(existing);\n }\n /**\n * Generates an error string indicating an item is uninitialized.\n * @param item - The name of the item that was uninitialized.\n */\n getUninitializedErrorString(item) {\n return `${item} must be initialized before being accessed.`;\n }\n}\n/**\n * Utility for creating SharedObjectKind instances for data objects.\n * @internal\n */\nexport function createDataObjectKind(factory) {\n return factory;\n}\n//# sourceMappingURL=dataObject.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { RequestParser, create404Response } from \"@fluidframework/runtime-utils/internal\";\n/**\n * The RuntimeRequestHandlerBuilder creates a runtime request handler based on request handlers.\n * The provided handlers sequentially applied until one is able to satisfy the request.\n */\nclass RuntimeRequestHandlerBuilder {\n constructor() {\n // eslint-disable-next-line import/no-deprecated\n this.handlers = [];\n }\n // eslint-disable-next-line import/no-deprecated\n pushHandler(...handlers) {\n if (handlers !== undefined) {\n this.handlers.push(...handlers);\n }\n }\n async handleRequest(request, runtime) {\n const parser = RequestParser.create(request);\n for (const handler of this.handlers) {\n const response = await handler(parser, runtime);\n if (response !== undefined) {\n return response;\n }\n }\n return create404Response(request);\n }\n}\n/**\n * Deprecated.\n *\n * @deprecated Will be removed once Loader LTS version is \"2.0.0-internal.7.0.0\". Migrate all usage of IFluidRouter to the \"entryPoint\" pattern. Refer to Removing-IFluidRouter.md\n *\n * @internal\n */\nexport function buildRuntimeRequestHandler(\n// eslint-disable-next-line import/no-deprecated\n...handlers) {\n const builder = new RuntimeRequestHandlerBuilder();\n builder.pushHandler(...handlers);\n return async (request, runtime) => builder.handleRequest(request, runtime);\n}\n//# sourceMappingURL=runtimeRequestHandlerBuilder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport class RuntimeFactoryHelper {\n get IRuntimeFactory() {\n return this;\n }\n async instantiateRuntime(context, existing) {\n const runtime = await this.preInitialize(context, existing);\n await (existing\n ? this.instantiateFromExisting(runtime)\n : this.instantiateFirstTime(runtime));\n await this.hasInitialized(runtime);\n return runtime;\n }\n async instantiateFirstTime(_runtime) { }\n async instantiateFromExisting(_runtime) { }\n async hasInitialized(_runtime) { }\n}\n//# sourceMappingURL=runtimeFactoryHelper.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport const IFluidDependencySynthesizer = \"IFluidDependencySynthesizer\";\n//# sourceMappingURL=IFluidDependencySynthesizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LazyPromise } from \"@fluidframework/core-utils/internal\";\nimport { IFluidDependencySynthesizer } from \"./IFluidDependencySynthesizer.js\";\n/**\n * DependencyContainer is similar to a IoC Container. It takes providers and will\n * synthesize an object based on them when requested.\n * @legacy\n * @alpha\n */\nexport class DependencyContainer {\n get IFluidDependencySynthesizer() {\n return this;\n }\n constructor(...parents) {\n this.providers = new Map();\n this.parents = parents.filter((v) => v !== undefined);\n }\n /**\n * Add a new provider\n * @param type - Name of the Type T being provided\n * @param provider - A provider that will resolve the T correctly when asked\n * @throws - If passing a type that's already registered\n */\n register(type, provider) {\n if (this.providers.has(type)) {\n throw new Error(`Attempting to register a provider of type ${String(type)} that already exists`);\n }\n this.providers.set(type, provider);\n }\n /**\n * Remove a provider\n * @param type - Name of the provider to remove\n */\n unregister(type) {\n if (this.providers.has(type)) {\n this.providers.delete(type);\n }\n }\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n */\n synthesize(optionalTypes, requiredTypes) {\n const base = {};\n this.generateRequired(base, requiredTypes);\n this.generateOptional(base, optionalTypes);\n Object.defineProperty(base, IFluidDependencySynthesizer, { get: () => this });\n return base;\n }\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n * @param excludeParents - If true, exclude checking parent registries\n */\n has(type, excludeParents) {\n if (this.providers.has(type)) {\n return true;\n }\n if (excludeParents !== true) {\n return this.parents.some((p) => p.has(type));\n }\n return false;\n }\n /**\n * @deprecated Needed for backwards compatability.\n */\n getProvider(provider) {\n // this was removed, but some partners have trouble with back compat where they\n // use invalid patterns with FluidObject and IFluidDependencySynthesizer\n // this is just for back compat until those are removed\n if (this.has(provider)) {\n if (this.providers.has(provider)) {\n return this.providers.get(provider);\n }\n for (const parent of this.parents) {\n if (parent instanceof DependencyContainer) {\n return parent.getProvider(provider);\n }\n else {\n // older implementations of the IFluidDependencySynthesizer exposed getProvider\n const maybeGetProvider = parent;\n if (maybeGetProvider?.getProvider !== undefined) {\n return maybeGetProvider.getProvider(provider);\n }\n }\n }\n }\n }\n generateRequired(base, types) {\n if (types === undefined) {\n return;\n }\n for (const key of Object.keys(types)) {\n const provider = this.resolveProvider(key);\n if (provider === undefined) {\n throw new Error(`Object attempted to be created without registered required provider ${String(key)}`);\n }\n Object.defineProperty(base, key, provider);\n }\n }\n generateOptional(base, types) {\n if (types === undefined) {\n return;\n }\n for (const key of Object.keys(types)) {\n // back-compat: in 0.56 we allow undefined in the types, but we didn't before\n // this will keep runtime back compat, eventually we should support undefined properties\n // rather than properties that return promises that resolve to undefined\n const provider = this.resolveProvider(key) ?? { get: async () => undefined };\n Object.defineProperty(base, key, provider);\n }\n }\n resolveProvider(t) {\n // If we have the provider return it\n const provider = this.providers.get(t);\n if (provider === undefined) {\n for (const parent of this.parents) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const sp = { [t]: t };\n const syn = parent.synthesize(sp, {});\n const descriptor = Object.getOwnPropertyDescriptor(syn, t);\n if (descriptor !== undefined) {\n return descriptor;\n }\n }\n return undefined;\n }\n // The double nested gets are required for lazy loading the provider resolution\n if (typeof provider === \"function\") {\n return {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n get() {\n if (provider && typeof provider === \"function\") {\n return Promise.resolve(this[IFluidDependencySynthesizer])\n .then(async (fds) => provider(fds))\n .then((p) => p?.[t]);\n }\n },\n };\n }\n return {\n get() {\n if (provider) {\n return new LazyPromise(async () => {\n return Promise.resolve(provider).then((p) => {\n if (p) {\n return p[t];\n }\n });\n });\n }\n },\n };\n }\n}\n//# sourceMappingURL=dependencyContainer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ContainerRuntime, FluidDataStoreRegistry, } from \"@fluidframework/container-runtime/internal\";\nimport { \n// eslint-disable-next-line import/no-deprecated\nbuildRuntimeRequestHandler, } from \"@fluidframework/request-handler/internal\";\nimport { RuntimeFactoryHelper } from \"@fluidframework/runtime-utils/internal\";\nimport { DependencyContainer, } from \"@fluidframework/synthesize/internal\";\n/**\n * BaseContainerRuntimeFactory produces container runtimes with the specified data store and service registries,\n * request handlers, runtimeOptions, and entryPoint initialization function.\n * It can be subclassed to implement a first-time initialization procedure for the containers it creates.\n * @legacy\n * @alpha\n */\nexport class BaseContainerRuntimeFactory extends RuntimeFactoryHelper {\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IProvideFluidDataStoreRegistry.IFluidDataStoreRegistry}\n */\n get IFluidDataStoreRegistry() {\n return this.registry;\n }\n constructor(props) {\n super();\n this.registryEntries = props.registryEntries;\n this.dependencyContainer = props.dependencyContainer;\n this.runtimeOptions = props.runtimeOptions;\n this.provideEntryPoint = props.provideEntryPoint;\n this.requestHandlers = props.requestHandlers ?? [];\n this.registry = new FluidDataStoreRegistry(this.registryEntries);\n }\n async instantiateFirstTime(runtime) {\n await this.containerInitializingFirstTime(runtime);\n await this.containerHasInitialized(runtime);\n }\n async instantiateFromExisting(runtime) {\n await this.containerHasInitialized(runtime);\n }\n async preInitialize(context, existing) {\n const scope = context.scope;\n if (this.dependencyContainer) {\n const dc = new DependencyContainer(this.dependencyContainer, scope.IFluidDependencySynthesizer);\n scope.IFluidDependencySynthesizer = dc;\n }\n return ContainerRuntime.loadRuntime({\n context,\n existing,\n runtimeOptions: this.runtimeOptions,\n registryEntries: this.registryEntries,\n containerScope: scope,\n // eslint-disable-next-line import/no-deprecated\n requestHandler: buildRuntimeRequestHandler(...this.requestHandlers),\n provideEntryPoint: this.provideEntryPoint,\n });\n }\n /**\n * Subclasses may override containerInitializingFirstTime to perform any setup steps at the time the container\n * is created. This likely includes creating any initial data stores that are expected to be there at the outset.\n * @param runtime - The container runtime for the container being initialized\n */\n async containerInitializingFirstTime(runtime) { }\n /**\n * Subclasses may override containerHasInitialized to perform any steps after the container has initialized.\n * This likely includes loading any data stores that are expected to be there at the outset.\n * @param runtime - The container runtime for the container being initialized\n */\n async containerHasInitialized(runtime) { }\n}\n//# sourceMappingURL=baseContainerRuntimeFactory.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DataProcessingError } from \"@fluidframework/telemetry-utils/internal\";\nconst stashedOpMetadataMark = Symbol();\nfunction createStashedOpMetadata() {\n const arr = [];\n Object.defineProperty(arr, stashedOpMetadataMark, {\n value: stashedOpMetadataMark,\n writable: false,\n enumerable: true,\n });\n return arr;\n}\nfunction isStashedOpMetadata(md) {\n return (Array.isArray(md) &&\n stashedOpMetadataMark in md &&\n md[stashedOpMetadataMark] === stashedOpMetadataMark);\n}\nfunction processWithStashedOpMetadataHandling(content, localOpMetaData, func) {\n if (isStashedOpMetadata(localOpMetaData)) {\n localOpMetaData.forEach(({ contents, metadata }) => func(contents, metadata));\n }\n else {\n func(content, localOpMetaData);\n }\n}\nexport class ChannelDeltaConnection {\n get handler() {\n assert(!!this._handler, 0x177 /* \"Missing delta handler\" */);\n return this._handler;\n }\n get connected() {\n return this._connected;\n }\n constructor(_connected, submitFn, dirty, isAttachedAndVisible) {\n this._connected = _connected;\n this.submitFn = submitFn;\n this.dirty = dirty;\n this.isAttachedAndVisible = isAttachedAndVisible;\n }\n attach(handler) {\n assert(this._handler === undefined, 0x178 /* \"Missing delta handler on attach\" */);\n this._handler = handler;\n }\n setConnectionState(connected) {\n this._connected = connected;\n this.handler.setConnectionState(connected);\n }\n process(message, local, localOpMetadata) {\n try {\n // catches as data processing error whether or not they come from async pending queues\n processWithStashedOpMetadataHandling(message.contents, localOpMetadata, (contents, metadata) => this.handler.process({ ...message, contents }, local, metadata));\n }\n catch (error) {\n throw DataProcessingError.wrapIfUnrecognized(error, \"channelDeltaConnectionFailedToProcessMessage\", message);\n }\n }\n reSubmit(content, localOpMetadata) {\n processWithStashedOpMetadataHandling(content, localOpMetadata, this.handler.reSubmit.bind(this.handler));\n }\n rollback(content, localOpMetadata) {\n if (this.handler.rollback === undefined) {\n throw new Error(\"Handler doesn't support rollback\");\n }\n processWithStashedOpMetadataHandling(content, localOpMetadata, this.handler.rollback.bind(this.handler));\n }\n applyStashedOp(content) {\n try {\n this.stashedOpMd = this.isAttachedAndVisible() ? createStashedOpMetadata() : undefined;\n this.handler.applyStashedOp(content);\n return this.stashedOpMd;\n }\n finally {\n this.stashedOpMd = undefined;\n }\n }\n submit(contents, metadata) {\n if (this.stashedOpMd !== undefined) {\n this.stashedOpMd.push({ contents, metadata });\n }\n else {\n this.submitFn(contents, metadata);\n }\n }\n}\n//# sourceMappingURL=channelDeltaConnection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @internal\n */\nexport function getNormalizedObjectStoragePathParts(path) {\n let normalizePath = path;\n if (normalizePath.startsWith(\"/\")) {\n normalizePath = normalizePath.substr(1);\n }\n if (normalizePath.endsWith(\"/\")) {\n normalizePath = normalizePath.substr(0, normalizePath.length - 1);\n }\n if (normalizePath.length > 0) {\n return normalizePath.split(\"/\");\n }\n return [];\n}\n/**\n * @internal\n */\nexport async function listBlobsAtTreePath(inputTree, path) {\n const pathParts = getNormalizedObjectStoragePathParts(path);\n let tree = inputTree;\n while (tree?.entries !== undefined && pathParts.length > 0) {\n const part = pathParts.shift();\n const treeEntry = tree.entries.find((value) => {\n return value.type === \"Tree\" && value.path === part ? true : false;\n });\n // this check is largely superfluous due to the same check being done\n // immediately above. the type system, however, is not aware of this.\n // so we must redundantly determine that the entry's type is \"Tree\"\n tree = treeEntry?.type === \"Tree\" ? treeEntry.value : undefined;\n }\n if (tree?.entries === undefined || pathParts.length !== 0) {\n throw new Error(\"path does not exist\");\n }\n return tree.entries.filter((e) => e.type === \"Blob\").map((e) => e.path);\n}\n//# sourceMappingURL=objectstorageutils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { getNormalizedObjectStoragePathParts } from \"@fluidframework/runtime-utils/internal\";\nexport class ChannelStorageService {\n static flattenTree(base, tree, results) {\n for (const [path, subtree] of Object.entries(tree.trees)) {\n ChannelStorageService.flattenTree(`${base}${path}/`, subtree, results);\n }\n for (const [blobName, blobId] of Object.entries(tree.blobs)) {\n results[`${base}${blobName}`] = blobId;\n }\n }\n constructor(tree, storage, logger, extraBlobs) {\n this.tree = tree;\n this.storage = storage;\n this.logger = logger;\n this.extraBlobs = extraBlobs;\n this.flattenedTree = {};\n // Create a map from paths to blobs\n if (tree !== undefined) {\n ChannelStorageService.flattenTree(\"\", tree, this.flattenedTree);\n }\n }\n async contains(path) {\n return this.flattenedTree[path] !== undefined;\n }\n async readBlob(path) {\n const id = await this.getIdForPath(path);\n assert(id !== undefined, 0x9d7 /* id is undefined in ChannelStorageService.readBlob() */);\n const blob = this.extraBlobs !== undefined ? this.extraBlobs.get(id) : undefined;\n if (blob !== undefined) {\n return blob;\n }\n const blobP = this.storage.readBlob(id);\n blobP.catch((error) => this.logger.sendErrorEvent({ eventName: \"ChannelStorageBlobError\" }, error));\n return blobP;\n }\n async list(path) {\n let tree = this.tree;\n const pathParts = getNormalizedObjectStoragePathParts(path);\n while (tree !== undefined && pathParts.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const part = pathParts.shift();\n tree = tree.trees[part];\n }\n if (tree === undefined || pathParts.length !== 0) {\n throw new Error(\"path does not exist\");\n }\n return Object.keys(tree?.blobs ?? {});\n }\n async getIdForPath(path) {\n return this.flattenedTree[path];\n }\n}\n//# sourceMappingURL=channelStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { readAndParse } from \"@fluidframework/driver-utils/internal\";\nimport { addBlobToSummary } from \"@fluidframework/runtime-utils/internal\";\nimport { DataCorruptionError, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { ChannelDeltaConnection } from \"./channelDeltaConnection.js\";\nimport { ChannelStorageService } from \"./channelStorageService.js\";\nexport const attributesBlobKey = \".attributes\";\nexport function createChannelServiceEndpoints(connected, submitFn, dirtyFn, isAttachedAndVisible, storageService, logger, tree, extraBlobs) {\n const deltaConnection = new ChannelDeltaConnection(connected, (message, localOpMetadata) => submitFn(message, localOpMetadata), dirtyFn, isAttachedAndVisible);\n const objectStorage = new ChannelStorageService(tree, storageService, logger, extraBlobs);\n return {\n deltaConnection,\n objectStorage,\n };\n}\n/** Used to get the channel's summary for the DDS or DataStore attach op */\nexport function summarizeChannel(channel, fullTree = false, trackState = false, telemetryContext) {\n const summarizeResult = channel.getAttachSummary(fullTree, trackState, telemetryContext);\n // Add the channel attributes to the returned result.\n addBlobToSummary(summarizeResult, attributesBlobKey, JSON.stringify(channel.attributes));\n return summarizeResult;\n}\nexport async function summarizeChannelAsync(channel, fullTree = false, trackState = false, telemetryContext, incrementalSummaryContext) {\n const summarizeResult = await channel.summarize(fullTree, trackState, telemetryContext, incrementalSummaryContext);\n // Add the channel attributes to the returned result.\n addBlobToSummary(summarizeResult, attributesBlobKey, JSON.stringify(channel.attributes));\n return summarizeResult;\n}\nexport async function loadChannelFactoryAndAttributes(dataStoreContext, services, channelId, registry, attachMessageType) {\n let attributes;\n if (await services.objectStorage.contains(attributesBlobKey)) {\n attributes = await readAndParse(services.objectStorage, attributesBlobKey);\n }\n // This is a backward compatibility case where the attach message doesn't include attributes. They must\n // include attach message type.\n // Since old attach messages will not have attributes, we need to keep this as long as we support old attach\n // messages.\n const channelFactoryType = attributes ? attributes.type : attachMessageType;\n if (channelFactoryType === undefined) {\n throw new DataCorruptionError(\"channelTypeNotAvailable\", tagCodeArtifacts({\n channelId,\n dataStoreId: dataStoreContext.id,\n dataStorePackagePath: dataStoreContext.packagePath.join(\"/\"),\n channelFactoryType,\n }));\n }\n const factory = registry.get(channelFactoryType);\n if (factory === undefined) {\n throw new DataCorruptionError(\"channelFactoryNotRegisteredForGivenType\", tagCodeArtifacts({\n channelId,\n dataStoreId: dataStoreContext.id,\n dataStorePackagePath: dataStoreContext.packagePath.join(\"/\"),\n channelFactoryType,\n }));\n }\n // This is a backward compatibility case where the attach message doesn't include attributes. Get the attributes\n // from the factory.\n attributes = attributes ?? factory.attributes;\n return { factory, attributes };\n}\nexport async function loadChannel(dataStoreRuntime, attributes, factory, services, logger, channelId) {\n // Compare snapshot version to collaborative object version\n if (attributes.snapshotFormatVersion !== undefined &&\n attributes.snapshotFormatVersion !== factory.attributes.snapshotFormatVersion) {\n logger.sendTelemetryEvent({\n eventName: \"ChannelAttributesVersionMismatch\",\n ...tagCodeArtifacts({\n channelType: attributes.type,\n channelSnapshotVersion: `${attributes.snapshotFormatVersion}@${attributes.packageVersion}`,\n channelCodeVersion: `${factory.attributes.snapshotFormatVersion}@${factory.attributes.packageVersion}`,\n }),\n });\n }\n return factory.load(dataStoreRuntime, channelId, services, attributes);\n}\n//# sourceMappingURL=channelContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Lazy, LazyPromise } from \"@fluidframework/core-utils/internal\";\nimport { DataProcessingError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { createChannelServiceEndpoints, loadChannel, loadChannelFactoryAndAttributes, summarizeChannel, summarizeChannelAsync, } from \"./channelContext.js\";\n/**\n * Channel context for a locally created channel\n */\nexport class LocalChannelContextBase {\n constructor(id, runtime, services, channelP, _channel) {\n this.id = id;\n this.runtime = runtime;\n this.services = services;\n this.channelP = channelP;\n this._channel = _channel;\n this.globallyVisible = false;\n this.pending = [];\n assert(!this.id.includes(\"/\"), 0x30f /* Channel context ID cannot contain slashes */);\n }\n get isGloballyVisible() {\n return this.globallyVisible;\n }\n async getChannel() {\n if (this._channel === undefined) {\n return this.channelP.then((c) => (this._channel = c));\n }\n return this.channelP;\n }\n get isLoaded() {\n return this._channel !== undefined;\n }\n setConnectionState(connected, clientId) {\n // Connection events are ignored if the data store is not yet globallyVisible or loaded\n if (this.globallyVisible && this.isLoaded) {\n this.services.value.deltaConnection.setConnectionState(connected);\n }\n }\n processOp(message, local, localOpMetadata) {\n assert(this.globallyVisible, 0x2d3 /* \"Local channel must be globally visible when processing op\" */);\n // A local channel may not be loaded in case where we rehydrate the container from a snapshot because of\n // delay loading. So after the container is attached and some other client joins which start generating\n // ops for this channel. So not loaded local channel can still receive ops and we store them to process later.\n if (this.isLoaded) {\n this.services.value.deltaConnection.process(message, local, localOpMetadata);\n }\n else {\n assert(local === false, 0x189 /* \"Should always be remote because a local dds shouldn't generate ops before loading\" */);\n this.pending.push(message);\n }\n }\n reSubmit(content, localOpMetadata) {\n assert(this.isLoaded, 0x18a /* \"Channel should be loaded to resubmit ops\" */);\n assert(this.globallyVisible, 0x2d4 /* \"Local channel must be globally visible when resubmitting op\" */);\n this.services.value.deltaConnection.reSubmit(content, localOpMetadata);\n }\n rollback(content, localOpMetadata) {\n assert(this.isLoaded, 0x2ee /* \"Channel should be loaded to rollback ops\" */);\n assert(this.globallyVisible, 0x2ef /* \"Local channel must be globally visible when rolling back op\" */);\n this.services.value.deltaConnection.rollback(content, localOpMetadata);\n }\n /**\n * Returns a summary at the current sequence number.\n * @param fullTree - true to bypass optimizations and force a full summary tree\n * @param trackState - This tells whether we should track state from this summary.\n * @param telemetryContext - summary data passed through the layers for telemetry purposes\n */\n async summarize(fullTree = false, trackState = false, telemetryContext) {\n const channel = await this.getChannel();\n return summarizeChannelAsync(channel, fullTree, trackState, telemetryContext);\n }\n /**\n * For crafting the DataStore attach op. Only to be called when the channel is loaded (if applicable).\n *\n * Synchronously generates the channel's attach summary to be joined with the same from the DataStore's other channels\n */\n getAttachSummary(telemetryContext) {\n assert(this._channel !== undefined, 0x18d /* \"Channel should be loaded to take snapshot\" */);\n return summarizeChannel(this._channel, true /* fullTree */, false /* trackState */, telemetryContext);\n }\n /**\n * For crafting the DataStore attach op. Only to be called when the channel is loaded (if applicable).\n *\n * Synchronously generates the channel's attach GC data (set of outbound routes in the initial state)\n * to be joined with the same from the DataStore's other channels\n */\n getAttachGCData(telemetryContext) {\n assert(this._channel !== undefined, 0x8fd /* Local Channel should be loaded before being attached */);\n // We need the GC Data to detect references added in this attach op\n return this._channel.getGCData(/* fullGC: */ true);\n }\n makeVisible() {\n if (this.globallyVisible) {\n throw new Error(\"Channel is already globally visible\");\n }\n if (this.isLoaded) {\n assert(!!this._channel, 0x192 /* \"Channel should be there if loaded!!\" */);\n this._channel.connect(this.services.value);\n }\n this.globallyVisible = true;\n }\n /**\n * Returns the data used for garbage collection. This includes a list of GC nodes that represent this context.\n * Each node has a set of outbound routes to other GC nodes in the document. This should be called only after\n * the context has loaded.\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n const channel = await this.getChannel();\n return channel.getGCData(fullGC);\n }\n updateUsedRoutes(usedRoutes) {\n /**\n * Currently, DDSes are always considered referenced and are not garbage collected.\n * Once we have GC at DDS level, this channel context's used routes will be updated as per the passed\n * value. See - https://github.com/microsoft/FluidFramework/issues/4611\n */\n }\n}\nexport class RehydratedLocalChannelContext extends LocalChannelContextBase {\n constructor(id, registry, runtime, dataStoreContext, storageService, logger, submitFn, dirtyFn, snapshotTree, extraBlob) {\n super(id, runtime, new Lazy(() => {\n const blobMap = new Map(extraBlob);\n const clonedSnapshotTree = cloneSnapshotTree(this.snapshotTree);\n // 0.47 back-compat Need to sanitize if snapshotTree.blobs still contains blob contents too.\n // This is for older snapshot which is generated by loader <=0.47 version which still contains\n // the contents within blobs. After a couple of revisions we can remove it.\n if (this.isSnapshotInOldFormatAndCollectBlobs(clonedSnapshotTree, blobMap)) {\n this.sanitizeSnapshot(clonedSnapshotTree);\n }\n return createChannelServiceEndpoints(dataStoreContext.connected, submitFn, this.dirtyFn, () => this.isGloballyVisible, storageService, logger, clonedSnapshotTree, blobMap);\n }), new LazyPromise(async () => {\n try {\n const { attributes, factory } = await loadChannelFactoryAndAttributes(dataStoreContext, this.services.value, this.id, registry);\n const channel = await loadChannel(runtime, attributes, factory, this.services.value, logger, this.id);\n // Send all pending messages to the channel\n for (const message of this.pending) {\n this.services.value.deltaConnection.process(message, false, undefined /* localOpMetadata */);\n }\n return channel;\n }\n catch (err) {\n throw DataProcessingError.wrapIfUnrecognized(err, \"rehydratedLocalChannelContextFailedToLoadChannel\", undefined);\n }\n }));\n this.snapshotTree = snapshotTree;\n this.dirtyFn = () => {\n dirtyFn(id);\n };\n }\n applyStashedOp(content) {\n return this.services.value.deltaConnection.applyStashedOp(content);\n }\n isSnapshotInOldFormatAndCollectBlobs(snapshotTree, blobMap) {\n let sanitize = false;\n const blobsContents = snapshotTree.blobsContents;\n if (blobsContents !== undefined) {\n Object.entries(blobsContents).forEach(([key, value]) => {\n blobMap.set(key, value);\n if (snapshotTree.blobs[key] !== undefined) {\n sanitize = true;\n }\n });\n }\n for (const value of Object.values(snapshotTree.trees)) {\n sanitize = sanitize || this.isSnapshotInOldFormatAndCollectBlobs(value, blobMap);\n }\n return sanitize;\n }\n sanitizeSnapshot(snapshotTree) {\n const blobMapInitial = new Map(Object.entries(snapshotTree.blobs));\n for (const [blobName, blobId] of blobMapInitial.entries()) {\n const blobValue = blobMapInitial.get(blobId);\n if (blobValue === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete snapshotTree.blobs[blobName];\n }\n }\n for (const value of Object.values(snapshotTree.trees)) {\n this.sanitizeSnapshot(value);\n }\n }\n}\nexport class LocalChannelContext extends LocalChannelContextBase {\n constructor(channel, runtime, dataStoreContext, storageService, logger, submitFn, dirtyFn) {\n super(channel.id, runtime, new Lazy(() => {\n return createChannelServiceEndpoints(dataStoreContext.connected, submitFn, this.dirtyFn, () => this.isGloballyVisible, storageService, logger);\n }), Promise.resolve(channel), channel);\n this.channel = channel;\n this.channel = channel;\n this.dirtyFn = () => {\n dirtyFn(channel.id);\n };\n }\n applyStashedOp() {\n throw new Error(\"no stashed ops on local channel\");\n }\n}\n/**\n * Deep clones a snapshot tree.\n *\n * TODO: Investigate replacing this with a deep clone utility.\n * This is a temporary solution to avoid issues with lodash deepClone and ungap structuredClone.\n * Using lodash caused a significant bundle size regression. structuredClone cannot be used since\n * it does not support ArrayBuffer data types, and ISnapshotTree can contain blobContents properties,\n * which are ArrayBuffer data types.\n */\nfunction cloneSnapshotTree(tree) {\n const clone = { ...tree, blobs: { ...tree.blobs }, trees: {} };\n for (const [k, v] of Object.entries(tree.trees)) {\n clone.trees[k] = cloneSnapshotTree(v);\n }\n return clone;\n}\n//# sourceMappingURL=localChannelContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/datastore\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert, Deferred, LazyPromise, unreachableCase, } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType, } from \"@fluidframework/driver-definitions\";\nimport { buildSnapshotTree } from \"@fluidframework/driver-utils/internal\";\nimport { CreateSummarizerNodeSource, VisibilityState, gcDataBlobKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { GCDataBuilder, RequestParser, SummaryTreeBuilder, addBlobToSummary, convertSnapshotTreeToSummaryTree, convertSummaryTreeToITree, create404Response, createResponseError, exceptionToResponse, generateHandleContextPath, processAttachMessageGCData, toFluidHandleInternal, unpackChildNodesUsedRoutes, toDeltaManagerErased, encodeCompactIdToString, } from \"@fluidframework/runtime-utils/internal\";\nimport { DataProcessingError, LoggingError, UsageError, createChildMonitoringContext, generateStack, raiseConnectedEvent, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { summarizeChannel } from \"./channelContext.js\";\nimport { FluidObjectHandle } from \"./fluidHandle.js\";\nimport { LocalChannelContext, LocalChannelContextBase, RehydratedLocalChannelContext, } from \"./localChannelContext.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { RemoteChannelContext } from \"./remoteChannelContext.js\";\n/**\n * @legacy\n * @alpha\n */\nexport var DataStoreMessageType;\n(function (DataStoreMessageType) {\n // Creates a new channel\n DataStoreMessageType[\"Attach\"] = \"attach\";\n DataStoreMessageType[\"ChannelOp\"] = \"op\";\n})(DataStoreMessageType || (DataStoreMessageType = {}));\n/**\n * Base data store class\n * @legacy\n * @alpha\n */\nexport class FluidDataStoreRuntime extends TypedEventEmitter {\n get connected() {\n return this.dataStoreContext.connected;\n }\n get clientId() {\n return this.dataStoreContext.clientId;\n }\n get clientDetails() {\n return this.dataStoreContext.clientDetails;\n }\n get isAttached() {\n return this.attachState !== AttachState.Detached;\n }\n get attachState() {\n return this._attachState;\n }\n get absolutePath() {\n return generateHandleContextPath(this.id, this.routeContext);\n }\n get routeContext() {\n return this.dataStoreContext.IFluidHandleContext;\n }\n get idCompressor() {\n return this.dataStoreContext.idCompressor;\n }\n get IFluidHandleContext() {\n return this;\n }\n get rootRoutingContext() {\n return this;\n }\n get channelsRoutingContext() {\n return this;\n }\n get objectsRoutingContext() {\n return this;\n }\n get disposed() {\n return this._disposed;\n }\n get logger() {\n return this.mc.logger;\n }\n /**\n * Create an instance of a DataStore runtime.\n *\n * @param dataStoreContext - Context object for the runtime.\n * @param sharedObjectRegistry - The registry of shared objects that this data store will be able to instantiate.\n * @param existing - Pass 'true' if loading this datastore from an existing file; pass 'false' otherwise.\n * @param provideEntryPoint - Function to initialize the entryPoint object for the data store runtime. The\n * handle to this data store runtime will point to the object returned by this function. If this function is not\n * provided, the handle will be left undefined. This is here so we can start making handles a first-class citizen\n * and the primary way of interacting with some Fluid objects, and should be used if possible.\n */\n constructor(dataStoreContext, sharedObjectRegistry, existing, provideEntryPoint) {\n super();\n this.dataStoreContext = dataStoreContext;\n this.sharedObjectRegistry = sharedObjectRegistry;\n this._disposed = false;\n this.contexts = new Map();\n this.pendingAttach = new Set();\n this.deferredAttached = new Deferred();\n this.localChannelContextQueue = new Map();\n this.notBoundedChannelContextSet = new Set();\n // A list of handles that are bound when the data store is not visible. We have to make them visible when the data\n // store becomes visible.\n this.pendingHandlesToMakeVisible = new Set();\n assert(!dataStoreContext.id.includes(\"/\"), 0x30e /* Id cannot contain slashes. DataStoreContext should have validated this. */);\n this.mc = createChildMonitoringContext({\n logger: dataStoreContext.baseLogger,\n namespace: \"FluidDataStoreRuntime\",\n properties: {\n all: { dataStoreId: uuid(), dataStoreVersion: pkgVersion },\n },\n });\n this.id = dataStoreContext.id;\n this.options = dataStoreContext.options;\n this.deltaManagerInternal = dataStoreContext.deltaManager;\n this.quorum = dataStoreContext.getQuorum();\n this.audience = dataStoreContext.getAudience();\n const tree = dataStoreContext.baseSnapshot;\n // Must always receive the data store type inside of the attributes\n if (tree?.trees !== undefined) {\n Object.entries(tree.trees).forEach(([path, subtree]) => {\n // Issue #4414\n if (path === \"_search\") {\n return;\n }\n let channelContext;\n // If already exists on storage, then create a remote channel. However, if it is case of rehydrating a\n // container from snapshot where we load detached container from a snapshot, isLocalDataStore would be\n // true. In this case create a RehydratedLocalChannelContext.\n if (dataStoreContext.isLocalDataStore) {\n channelContext = this.createRehydratedLocalChannelContext(path, subtree);\n // This is the case of rehydrating a detached container from snapshot. Now due to delay loading of\n // data store, if the data store is loaded after the container is attached, then we missed making\n // the channel visible. So do it now. Otherwise, add it to local channel context queue, so\n // that it can be make it visible later with the data store.\n if (dataStoreContext.attachState !== AttachState.Detached) {\n channelContext.makeVisible();\n }\n else {\n this.localChannelContextQueue.set(path, channelContext);\n }\n }\n else {\n channelContext = new RemoteChannelContext(this, dataStoreContext, dataStoreContext.storage, (content, localOpMetadata) => this.submitChannelOp(path, content, localOpMetadata), (address) => this.setChannelDirty(address), path, subtree, this.sharedObjectRegistry, undefined /* extraBlobs */, this.dataStoreContext.getCreateChildSummarizerNodeFn(path, {\n type: CreateSummarizerNodeSource.FromSummary,\n }));\n }\n this.contexts.set(path, channelContext);\n });\n }\n this.entryPoint = new FluidObjectHandle(new LazyPromise(async () => provideEntryPoint(this)), \"\", this.objectsRoutingContext);\n this.attachListener();\n this._attachState = dataStoreContext.attachState;\n /**\n * If existing flag is false, this is a new data store and is not visible. The existing flag can be true in two\n * conditions:\n *\n * 1. It's a local data store that is created when a detached container is rehydrated. In this case, the data\n * store is locally visible because the snapshot it is loaded from contains locally visible data stores only.\n *\n * 2. It's a remote data store that is created when an attached container is loaded is loaded from snapshot or\n * when an attach op comes in. In both these cases, the data store is already globally visible.\n */\n if (existing) {\n this.visibilityState =\n dataStoreContext.attachState === AttachState.Detached\n ? VisibilityState.LocallyVisible\n : VisibilityState.GloballyVisible;\n }\n else {\n this.visibilityState = VisibilityState.NotVisible;\n }\n // If it's existing we know it has been attached.\n if (existing) {\n this.deferredAttached.resolve();\n }\n // By default, a data store can log maximum 10 local changes telemetry in summarizer.\n this.localChangesTelemetryCount =\n this.mc.config.getNumber(\"Fluid.Telemetry.LocalChangesTelemetryCount\") ?? 10;\n }\n get deltaManager() {\n return toDeltaManagerErased(this.deltaManagerInternal);\n }\n dispose() {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n this.emit(\"dispose\");\n this.removeAllListeners();\n }\n async resolveHandle(request) {\n return this.request(request);\n }\n async request(request) {\n try {\n const parser = RequestParser.create(request);\n const id = parser.pathParts[0];\n if (id === \"_channels\" || id === \"_custom\") {\n return await this.request(parser.createSubRequest(1));\n }\n if (id !== undefined) {\n // Check for a data type reference first\n const context = this.contexts.get(id);\n if (context !== undefined && parser.isLeaf(1)) {\n try {\n const channel = await context.getChannel();\n return { mimeType: \"fluid/object\", status: 200, value: channel };\n }\n catch (error) {\n this.mc.logger.sendErrorEvent({ eventName: \"GetChannelFailedInRequest\" }, error);\n return createResponseError(500, `Failed to get Channel: ${error}`, request);\n }\n }\n }\n // Otherwise defer to an attached request handler\n return create404Response(request);\n }\n catch (error) {\n return exceptionToResponse(error);\n }\n }\n async getChannel(id) {\n this.verifyNotClosed();\n const context = this.contexts.get(id);\n if (context === undefined) {\n throw new LoggingError(\"Channel does not exist\");\n }\n return context.getChannel();\n }\n /**\n * Validate user provided channel ID\n * Channel ID has limitations. \"/\" is not allowed as IDs in storage can not have slashes - we parse tree paths and use \"/\" as separator.\n * IDs cannot start with \"_\" as it could result in collision of IDs with auto-assigned (by FF) short IDs.\n * @param id - channel ID.\n */\n validateChannelId(id) {\n if (id.includes(\"/\")) {\n throw new UsageError(`Id cannot contain slashes: ${id}`);\n }\n if (id.startsWith(\"_\")) {\n throw new UsageError(`Id cannot start with underscore: ${id}`);\n }\n }\n /**\n * Api which allows caller to create the channel first and then add it to the runtime.\n * The channel type should be present in the registry, otherwise the runtime would reject\n * the channel. Also the runtime used to create the channel object should be same to which\n * it is added.\n * @param channel - channel which needs to be added to the runtime.\n */\n addChannel(channel) {\n const id = channel.id;\n this.validateChannelId(id);\n this.verifyNotClosed();\n assert(!this.contexts.has(id), 0x865 /* addChannel() with existing ID */);\n const type = channel.attributes.type;\n const factory = this.sharedObjectRegistry.get(channel.attributes.type);\n if (factory === undefined) {\n throw new Error(`Channel Factory ${type} not registered`);\n }\n this.createChannelContext(channel);\n // Channels (DDS) should not be created in summarizer client.\n this.identifyLocalChangeInSummarizer(\"DDSCreatedInSummarizer\", id, type);\n }\n createChannel(idArg, type) {\n let id;\n if (idArg !== undefined) {\n id = idArg;\n this.validateChannelId(id);\n }\n else {\n /**\n * There is currently a bug where certain data store ids such as \"[\" are getting converted to ASCII characters\n * in the snapshot.\n * So, return short ids only if explicitly enabled via feature flags. Else, return uuid();\n */\n if (this.mc.config.getBoolean(\"Fluid.Runtime.UseShortIds\") === true) {\n // We use three non-overlapping namespaces:\n // - detached state: even numbers\n // - attached state: odd numbers\n // - uuids\n // In first two cases we will encode result as strings in more compact form, with leading underscore,\n // to ensure no overlap with user-provided DDS names (see validateChannelId())\n if (this.visibilityState !== VisibilityState.GloballyVisible) {\n // container is detached, only one client observes content, no way to hit collisions with other clients.\n id = encodeCompactIdToString(2 * this.contexts.size, \"_\");\n }\n else {\n // Due to back-compat, we could not depend yet on generateDocumentUniqueId() being there.\n // We can remove the need to leverage uuid() as fall-back in couple releases.\n const res = this.dataStoreContext.containerRuntime.generateDocumentUniqueId?.() ?? uuid();\n id = typeof res === \"number\" ? encodeCompactIdToString(2 * res + 1, \"_\") : res;\n }\n }\n else {\n id = uuid();\n }\n assert(!id.includes(\"/\"), 0x8fc /* slash */);\n }\n this.verifyNotClosed();\n assert(!this.contexts.has(id), 0x179 /* \"createChannel() with existing ID\" */);\n assert(type !== undefined, 0x209 /* \"Factory Type should be defined\" */);\n const factory = this.sharedObjectRegistry.get(type);\n if (factory === undefined) {\n throw new Error(`Channel Factory ${type} not registered`);\n }\n const channel = factory.create(this, id);\n this.createChannelContext(channel);\n // Channels (DDS) should not be created in summarizer client.\n this.identifyLocalChangeInSummarizer(\"DDSCreatedInSummarizer\", id, type);\n return channel;\n }\n createChannelContext(channel) {\n this.notBoundedChannelContextSet.add(channel.id);\n const context = new LocalChannelContext(channel, this, this.dataStoreContext, this.dataStoreContext.storage, this.logger, (content, localOpMetadata) => this.submitChannelOp(channel.id, content, localOpMetadata), (address) => this.setChannelDirty(address));\n this.contexts.set(channel.id, context);\n }\n createRehydratedLocalChannelContext(id, tree, flatBlobs) {\n return new RehydratedLocalChannelContext(id, this.sharedObjectRegistry, this, this.dataStoreContext, this.dataStoreContext.storage, this.logger, (content, localOpMetadata) => this.submitChannelOp(id, content, localOpMetadata), (address) => this.setChannelDirty(address), tree, flatBlobs);\n }\n /**\n * Binds a channel with the runtime. If the runtime is attached we will attach the channel right away.\n * If the runtime is not attached we will defer the attach until the runtime attaches.\n * @param channel - channel to be registered.\n */\n bindChannel(channel) {\n assert(this.notBoundedChannelContextSet.has(channel.id), 0x17b /* \"Channel to be bound should be in not bounded set\" */);\n this.notBoundedChannelContextSet.delete(channel.id);\n // If our data store is attached, then attach the channel.\n if (this.isAttached) {\n this.makeChannelLocallyVisible(channel);\n return;\n }\n /**\n * If this channel is already waiting to be made visible, do nothing. This can happen during attachGraph() when\n * a channel's graph is attached. It calls bindToContext on the shared object which will end up back here.\n */\n if (this.pendingHandlesToMakeVisible.has(toFluidHandleInternal(channel.handle))) {\n return;\n }\n this.bind(channel.handle);\n // If our data store is local then add the channel to the queue\n if (!this.localChannelContextQueue.has(channel.id)) {\n this.localChannelContextQueue.set(channel.id, this.contexts.get(channel.id));\n }\n }\n /**\n * This function is called when a data store becomes root. It does the following:\n *\n * 1. Marks the data store locally visible in the container.\n *\n * 2. Attaches the graph of all the handles bound to it.\n *\n * 3. Calls into the data store context to mark it visible in the container too. If the container is globally\n * visible, it will mark us globally visible. Otherwise, it will mark us globally visible when it becomes\n * globally visible.\n */\n makeVisibleAndAttachGraph() {\n if (this.visibilityState !== VisibilityState.NotVisible) {\n return;\n }\n this.visibilityState = VisibilityState.LocallyVisible;\n this.pendingHandlesToMakeVisible.forEach((handle) => {\n handle.attachGraph();\n });\n this.pendingHandlesToMakeVisible.clear();\n this.dataStoreContext.makeLocallyVisible();\n }\n /**\n * This function is called when a handle to this data store is added to a visible DDS.\n */\n attachGraph() {\n this.makeVisibleAndAttachGraph();\n }\n bind(handle) {\n // If visible, attach the incoming handle's graph. Else, this will be done when we become visible.\n if (this.visibilityState !== VisibilityState.NotVisible) {\n toFluidHandleInternal(handle).attachGraph();\n return;\n }\n this.pendingHandlesToMakeVisible.add(toFluidHandleInternal(handle));\n }\n setConnectionState(connected, clientId) {\n this.verifyNotClosed();\n for (const [, object] of this.contexts) {\n object.setConnectionState(connected, clientId);\n }\n raiseConnectedEvent(this.logger, this, connected, clientId);\n }\n getQuorum() {\n return this.quorum;\n }\n getAudience() {\n return this.audience;\n }\n async uploadBlob(blob, signal) {\n this.verifyNotClosed();\n return this.dataStoreContext.uploadBlob(blob, signal);\n }\n createRemoteChannelContext(attachMessage, summarizerNodeParams) {\n const flatBlobs = new Map();\n const snapshotTree = buildSnapshotTree(attachMessage.snapshot.entries, flatBlobs);\n return new RemoteChannelContext(this, this.dataStoreContext, this.dataStoreContext.storage, (content, localContentMetadata) => this.submitChannelOp(attachMessage.id, content, localContentMetadata), (address) => this.setChannelDirty(address), attachMessage.id, snapshotTree, this.sharedObjectRegistry, flatBlobs, this.dataStoreContext.getCreateChildSummarizerNodeFn(attachMessage.id, summarizerNodeParams), attachMessage.type);\n }\n process(message, local, localOpMetadata) {\n this.verifyNotClosed();\n try {\n // catches as data processing error whether or not they come from async pending queues\n switch (message.type) {\n case DataStoreMessageType.Attach: {\n const attachMessage = message.contents;\n const id = attachMessage.id;\n // We need to process the GC Data for both local and remote attach messages\n processAttachMessageGCData(attachMessage.snapshot, (nodeId, toPath) => {\n // Note: nodeId will be \"/\" unless and until we support sub-DDS GC Nodes\n const fromPath = `/${this.id}/${id}${nodeId === \"/\" ? \"\" : nodeId}`;\n this.dataStoreContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp);\n });\n // If a non-local operation then go and create the object\n // Otherwise mark it as officially attached.\n if (local) {\n assert(this.pendingAttach.delete(id), 0x17c /* \"Unexpected attach (local) channel OP\" */);\n }\n else {\n assert(!this.contexts.has(id), 0x17d /* \"Unexpected attach channel OP\" */);\n const summarizerNodeParams = {\n type: CreateSummarizerNodeSource.FromAttach,\n sequenceNumber: message.sequenceNumber,\n snapshot: attachMessage.snapshot,\n };\n const remoteChannelContext = this.createRemoteChannelContext(attachMessage, summarizerNodeParams);\n this.contexts.set(id, remoteChannelContext);\n }\n break;\n }\n case DataStoreMessageType.ChannelOp:\n this.processChannelOp(message, local, localOpMetadata);\n break;\n default:\n }\n this.emit(\"op\", message);\n }\n catch (error) {\n throw DataProcessingError.wrapIfUnrecognized(error, \"fluidDataStoreRuntimeFailedToProcessMessage\", message);\n }\n }\n processSignal(message, local) {\n this.emit(\"signal\", message, local);\n }\n isChannelAttached(id) {\n return (\n // Added in createChannel\n // Removed when bindChannel is called\n !this.notBoundedChannelContextSet.has(id) &&\n // Added in bindChannel only if this is not attached yet\n // Removed when this is attached by calling attachGraph\n !this.localChannelContextQueue.has(id) &&\n // Added in attachChannel called by bindChannel\n // Removed when attach op is broadcast\n !this.pendingAttach.has(id));\n }\n /**\n * Returns the outbound routes of this channel. Currently, all contexts in this channel are considered\n * referenced and are hence outbound. This will change when we have root and non-root channel contexts.\n * The only root contexts will be considered as referenced.\n */\n getOutboundRoutes() {\n const outboundRoutes = [];\n for (const [contextId] of this.contexts) {\n outboundRoutes.push(`${this.absolutePath}/${contextId}`);\n }\n return outboundRoutes;\n }\n /**\n * Updates the GC nodes of this channel. It does the following:\n * - Adds a back route to self to all its child GC nodes.\n * - Adds a node for this channel.\n * @param builder - The builder that contains the GC nodes for this channel's children.\n */\n updateGCNodes(builder) {\n // Add a back route to self in each child's GC nodes. If any child is referenced, then its parent should\n // be considered referenced as well.\n builder.addRouteToAllNodes(this.absolutePath);\n // Get the outbound routes and add a GC node for this channel.\n builder.addNode(\"/\", this.getOutboundRoutes());\n }\n /**\n * Returns a summary at the current sequence number.\n * @param fullTree - true to bypass optimizations and force a full summary tree\n * @param trackState - This tells whether we should track state from this summary.\n * @param telemetryContext - summary data passed through the layers for telemetry purposes\n */\n async summarize(fullTree = false, trackState = true, telemetryContext) {\n const summaryBuilder = new SummaryTreeBuilder();\n await this.visitContextsDuringSummary(async (contextId, context) => {\n const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);\n summaryBuilder.addWithStats(contextId, contextSummary);\n });\n return summaryBuilder.getSummaryTree();\n }\n /**\n * Generates data used for garbage collection. This includes a list of GC nodes that represent this channel\n * including any of its child channel contexts. Each node has a set of outbound routes to other GC nodes in the\n * document. It does the following:\n *\n * 1. Calls into each child context to get its GC data.\n *\n * 2. Prefixes the child context's id to the GC nodes in the child's GC data. This makes sure that the node can be\n * identified as belonging to the child.\n *\n * 3. Adds a GC node for this channel to the nodes received from the children. All these nodes together represent\n * the GC data of this channel.\n *\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n const builder = new GCDataBuilder();\n await this.visitContextsDuringSummary(async (contextId, context) => {\n const contextGCData = await context.getGCData(fullGC);\n // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.\n // This also gradually builds the id of each node to be a path from the root.\n builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);\n });\n this.updateGCNodes(builder);\n return builder.getGCData();\n }\n /**\n * After GC has run, called to notify this channel of routes that are used in it. It calls the child contexts to\n * update their used routes.\n * @param usedRoutes - The routes that are used in all contexts in this channel.\n */\n updateUsedRoutes(usedRoutes) {\n // Get a map of channel ids to routes used in it.\n const usedContextRoutes = unpackChildNodesUsedRoutes(usedRoutes);\n // Verify that the used routes are correct.\n for (const [id] of usedContextRoutes) {\n assert(this.contexts.has(id), 0x17e /* \"Used route does not belong to any known context\" */);\n }\n // Update the used routes in each context. Used routes is empty for unused context.\n for (const [contextId, context] of this.contexts) {\n context.updateUsedRoutes(usedContextRoutes.get(contextId) ?? []);\n }\n }\n getAttachSummary(telemetryContext) {\n const summaryBuilder = new SummaryTreeBuilder();\n this.visitLocalBoundContextsDuringAttach((contextId, context) => {\n let summaryTree;\n if (context.isLoaded) {\n const contextSummary = context.getAttachSummary(telemetryContext);\n assert(contextSummary.summary.type === SummaryType.Tree, 0x180 /* \"getAttachSummary should always return a tree\" */);\n summaryTree = { stats: contextSummary.stats, summary: contextSummary.summary };\n }\n else {\n // If this channel is not yet loaded, then there should be no changes in the snapshot from which\n // it was created as it is detached container. So just use the previous snapshot.\n assert(!!this.dataStoreContext.baseSnapshot, 0x181 /* \"BaseSnapshot should be there as detached container loaded from snapshot\" */);\n summaryTree = convertSnapshotTreeToSummaryTree(\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.dataStoreContext.baseSnapshot.trees[contextId]);\n }\n summaryBuilder.addWithStats(contextId, summaryTree);\n });\n return summaryBuilder.getSummaryTree();\n }\n /**\n * Get the GC Data for the initial state being attached so remote clients can learn of this DataStore's outbound routes\n */\n getAttachGCData(telemetryContext) {\n const gcDataBuilder = new GCDataBuilder();\n this.visitLocalBoundContextsDuringAttach((contextId, context) => {\n if (context.isLoaded) {\n const contextGCData = context.getAttachGCData(telemetryContext);\n // Incorporate the GC Data for this context\n gcDataBuilder.prefixAndAddNodes(contextId, contextGCData.gcNodes);\n }\n // else: Rehydrating detached container case. GC doesn't run until the container is attached, so nothing to do here.\n });\n this.updateGCNodes(gcDataBuilder);\n return gcDataBuilder.getGCData();\n }\n /**\n * Helper method for preparing to summarize this channel.\n * Runs the callback for each bound context to incorporate its data however the caller specifies\n */\n async visitContextsDuringSummary(visitor) {\n for (const [contextId, context] of this.contexts) {\n const isAttached = this.isChannelAttached(contextId);\n // We are not expecting local dds! Summary / GC data may not capture local state.\n assert(isAttached, 0x17f /* \"Not expecting detached channels during summarize\" */);\n await visitor(contextId, context);\n }\n }\n /**\n * Helper method for preparing to attach this dataStore.\n * Runs the callback for each bound context to incorporate its data however the caller specifies\n */\n visitLocalBoundContextsDuringAttach(visitor) {\n /**\n * back-compat 0.59.1000 - getAttachSummary() is called when making a data store globally visible (previously\n * attaching state). Ideally, attachGraph() should have already be called making it locally visible. However,\n * before visibility state was added, this may not have been the case and getAttachSummary() could be called:\n *\n * 1. Before attaching the data store - When a detached container is attached.\n *\n * 2. After attaching the data store - When a data store is created and bound in an attached container.\n *\n * The basic idea is that all local object should become locally visible before they are globally visible.\n */\n this.attachGraph();\n // This assert cannot be added now due to back-compat. To be uncommented when the following issue is fixed -\n // https://github.com/microsoft/FluidFramework/issues/9688.\n //\n // assert(this.visibilityState === VisibilityState.LocallyVisible,\n // \"The data store should be locally visible when generating attach summary\",\n // );\n const visitedContexts = new Set();\n let visitedLength = -1;\n while (visitedLength !== visitedContexts.size) {\n // detect changes in the visitedContexts set, as on visiting a context\n // it could could make contexts available by removing other contexts\n // from the notBoundedChannelContextSet, so we need to ensure those get processed as well.\n // only once the loop can run with no new contexts added to the visitedContexts set do we\n // know for sure all possible contexts have been visited.\n visitedLength = visitedContexts.size;\n for (const [contextId, context] of this.contexts) {\n if (!(context instanceof LocalChannelContextBase)) {\n throw new LoggingError(\"Should only be called with local channel handles\");\n }\n if (!visitedContexts.has(contextId) &&\n !this.notBoundedChannelContextSet.has(contextId)) {\n visitor(contextId, context);\n visitedContexts.add(contextId);\n }\n }\n }\n }\n submitMessage(type, content, localOpMetadata) {\n this.submit(type, content, localOpMetadata);\n }\n /**\n * Submits the signal to be sent to other clients.\n * @param type - Type of the signal.\n * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n * @param targetClientId - When specified, the signal is only sent to the provided client id.\n */\n submitSignal(type, content, targetClientId) {\n this.verifyNotClosed();\n return this.dataStoreContext.submitSignal(type, content, targetClientId);\n }\n /**\n * Will return when the data store is attached.\n */\n async waitAttached() {\n return this.deferredAttached.promise;\n }\n /**\n * Assuming this DataStore is already attached, this will make the given channel locally visible\n * by submitting its attach op.\n */\n makeChannelLocallyVisible(channel) {\n this.verifyNotClosed();\n // If this handle is already attached no need to attach again.\n if (channel.handle.isAttached) {\n return;\n }\n toFluidHandleInternal(channel.handle).attachGraph();\n assert(this.isAttached, 0x182 /* \"Data store should be attached to attach the channel.\" */);\n assert(this.visibilityState === VisibilityState.GloballyVisible, 0x2d0 /* \"Data store should be globally visible to attach channels.\" */);\n const summarizeResult = summarizeChannel(channel, true /* fullTree */, false /* trackState */);\n // We need to include the channel's GC Data so remote clients can learn of this channel's outbound routes\n const gcData = channel.getGCData(/* fullGC: */ true);\n addBlobToSummary(summarizeResult, gcDataBlobKey, JSON.stringify(gcData));\n // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.\n const snapshot = convertSummaryTreeToITree(summarizeResult.summary);\n const message = {\n id: channel.id,\n snapshot,\n type: channel.attributes.type,\n };\n this.pendingAttach.add(channel.id);\n this.submit(DataStoreMessageType.Attach, message);\n const context = this.contexts.get(channel.id);\n context.makeVisible();\n }\n submitChannelOp(address, contents, localOpMetadata) {\n const envelope = { address, contents };\n this.submit(DataStoreMessageType.ChannelOp, envelope, localOpMetadata);\n }\n submit(type, content, localOpMetadata = undefined) {\n this.verifyNotClosed();\n this.dataStoreContext.submitMessage(type, content, localOpMetadata);\n }\n /**\n * For messages of type MessageType.Operation, finds the right channel and asks it to resubmit the message.\n * For all other messages, just submit it again.\n * This typically happens when we reconnect and there are unacked messages.\n * @param content - The content of the original message.\n * @param localOpMetadata - The local metadata associated with the original message.\n */\n reSubmit(type, content, localOpMetadata) {\n this.verifyNotClosed();\n switch (type) {\n case DataStoreMessageType.ChannelOp: {\n // For Operations, find the right channel and trigger resubmission on it.\n const envelope = content;\n const channelContext = this.contexts.get(envelope.address);\n assert(!!channelContext, 0x183 /* \"There should be a channel context for the op\" */);\n channelContext.reSubmit(envelope.contents, localOpMetadata);\n break;\n }\n case DataStoreMessageType.Attach:\n // For Attach messages, just submit them again.\n this.submit(type, content, localOpMetadata);\n break;\n default:\n unreachableCase(type);\n }\n }\n /**\n * Revert a local op.\n * @param content - The content of the original message.\n * @param localOpMetadata - The local metadata associated with the original message.\n */\n rollback(type, content, localOpMetadata) {\n this.verifyNotClosed();\n switch (type) {\n case DataStoreMessageType.ChannelOp: {\n // For Operations, find the right channel and trigger resubmission on it.\n const envelope = content;\n const channelContext = this.contexts.get(envelope.address);\n assert(!!channelContext, 0x2ed /* \"There should be a channel context for the op\" */);\n channelContext.rollback(envelope.contents, localOpMetadata);\n break;\n }\n default:\n throw new LoggingError(`Can't rollback ${type} message`);\n }\n }\n async applyStashedOp(content) {\n const type = content?.type;\n switch (type) {\n case DataStoreMessageType.Attach: {\n const attachMessage = content.content;\n const flatBlobs = new Map();\n const snapshotTree = buildSnapshotTree(attachMessage.snapshot.entries, flatBlobs);\n const channelContext = this.createRehydratedLocalChannelContext(attachMessage.id, snapshotTree, flatBlobs);\n await channelContext.getChannel();\n this.contexts.set(attachMessage.id, channelContext);\n if (this.attachState === AttachState.Detached) {\n this.localChannelContextQueue.set(attachMessage.id, channelContext);\n }\n else {\n channelContext.makeVisible();\n this.pendingAttach.add(attachMessage.id);\n }\n return;\n }\n case DataStoreMessageType.ChannelOp: {\n const envelope = content.content;\n const channelContext = this.contexts.get(envelope.address);\n assert(!!channelContext, 0x184 /* \"There should be a channel context for the op\" */);\n await channelContext.getChannel();\n return channelContext.applyStashedOp(envelope.contents);\n }\n default:\n unreachableCase(type);\n }\n }\n setChannelDirty(address) {\n this.verifyNotClosed();\n this.dataStoreContext.setChannelDirty(address);\n }\n processChannelOp(message, local, localOpMetadata) {\n this.verifyNotClosed();\n const envelope = message.contents;\n const transformed = {\n ...message,\n contents: envelope.contents,\n };\n const channelContext = this.contexts.get(envelope.address);\n assert(!!channelContext, 0x185 /* \"Channel not found\" */);\n channelContext.processOp(transformed, local, localOpMetadata);\n return channelContext;\n }\n attachListener() {\n this.setMaxListeners(Number.MAX_SAFE_INTEGER);\n // back-compat, to be removed in the future.\n // Added in \"2.0.0-rc.2.0.0\" timeframe.\n this.dataStoreContext.once?.(\"attaching\", () => {\n this.setAttachState(AttachState.Attaching);\n });\n // back-compat, to be removed in the future.\n // Added in \"2.0.0-rc.2.0.0\" timeframe.\n this.dataStoreContext.once?.(\"attached\", () => {\n this.setAttachState(AttachState.Attached);\n });\n }\n verifyNotClosed() {\n if (this._disposed) {\n throw new LoggingError(\"Runtime is closed\");\n }\n }\n /**\n * Summarizer client should not have local changes. These changes can become part of the summary and can break\n * eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas\n * other clients that are up-to-date till seq# 100 may not have them yet.\n */\n identifyLocalChangeInSummarizer(eventName, channelId, channelType) {\n if (this.clientDetails.type !== \"summarizer\" || this.localChangesTelemetryCount <= 0) {\n return;\n }\n // Log a telemetry if there are local changes in the summarizer. This will give us data on how often\n // this is happening and which data stores do this. The eventual goal is to disallow local changes\n // in the summarizer and the data will help us plan this.\n this.mc.logger.sendTelemetryEvent({\n eventName,\n ...tagCodeArtifacts({\n channelType,\n channelId,\n fluidDataStoreId: this.id,\n fluidDataStorePackagePath: this.dataStoreContext.packagePath.join(\"/\"),\n }),\n stack: generateStack(30),\n });\n this.localChangesTelemetryCount--;\n }\n setAttachState(attachState) {\n switch (attachState) {\n case AttachState.Attaching:\n /**\n * back-compat 0.59.1000 - Ideally, attachGraph() should have already been called making the data store\n * locally visible. However, before visibility state was added, this may not have been the case and data\n * store can move to \"attaching\" state in 2 scenarios:\n * 1) Before attachGraph() is called - When a data store is created and bound in an attached container.\n * 2) After attachGraph() is called - When a detached container is attached.\n *\n * The basic idea is that all local object should become locally visible before they are globally visible.\n */\n this.attachGraph();\n this._attachState = AttachState.Attaching;\n assert(this.visibilityState === VisibilityState.LocallyVisible, 0x2d1 /* \"Data store should be locally visible before it can become globally visible.\" */);\n // Mark the data store globally visible and make its child channels visible as well.\n this.visibilityState = VisibilityState.GloballyVisible;\n this.localChannelContextQueue.forEach((channel) => {\n channel.makeVisible();\n });\n this.localChannelContextQueue.clear();\n // This promise resolution will be moved to attached event once we fix the scheduler.\n this.deferredAttached.resolve();\n this.emit(\"attaching\");\n break;\n case AttachState.Attached:\n assert(this.visibilityState === VisibilityState.GloballyVisible, 0x2d2 /* \"Data store should be globally visible when its attached.\" */);\n this._attachState = AttachState.Attached;\n this.emit(\"attached\");\n break;\n default:\n unreachableCase(attachState, \"unreached\");\n }\n }\n}\n/**\n * Mixin class that adds request handler to FluidDataStoreRuntime\n * Request handler is only called when data store can't resolve request, i.e. for custom requests.\n * @param Base - base class, inherits from FluidDataStoreRuntime\n * @param requestHandler - request handler to mix in\n * @legacy\n * @alpha\n */\nexport const mixinRequestHandler = (requestHandler, Base = FluidDataStoreRuntime) => class RuntimeWithRequestHandler extends Base {\n async request(request) {\n const response = await super.request(request);\n if (response.status === 404) {\n return requestHandler(request, this);\n }\n return response;\n }\n};\n/**\n * Mixin class that adds await for DataObject to finish initialization before we proceed to summary.\n * @param handler - handler that returns info about blob to be added to summary.\n * Or undefined not to add anything to summary.\n * @param Base - base class, inherits from FluidDataStoreRuntime\n * @legacy\n * @alpha\n */\nexport const mixinSummaryHandler = (handler, Base = FluidDataStoreRuntime) => class RuntimeWithSummarizerHandler extends Base {\n addBlob(summary, path, content) {\n const firstName = path.shift();\n if (firstName === undefined) {\n throw new LoggingError(\"Path can't be empty\");\n }\n let blob = {\n type: SummaryType.Blob,\n content,\n };\n summary.stats.blobNodeCount++;\n summary.stats.totalBlobSize += content.length;\n for (const name of path.reverse()) {\n blob = {\n type: SummaryType.Tree,\n tree: { [name]: blob },\n };\n summary.stats.treeNodeCount++;\n }\n summary.summary.tree[firstName] = blob;\n }\n async summarize(...args) {\n const summary = await super.summarize(...args);\n try {\n const content = await handler(this);\n if (content !== undefined) {\n this.addBlob(summary, content.path, content.content);\n }\n }\n catch (e) {\n // Any error coming from app-provided handler should be marked as DataProcessingError\n throw DataProcessingError.wrapIfUnrecognized(e, \"mixinSummaryHandler\");\n }\n return summary;\n }\n};\n//# sourceMappingURL=dataStoreRuntime.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert, LazyPromise } from \"@fluidframework/core-utils/internal\";\nimport { ThresholdCounter, createChildLogger, } from \"@fluidframework/telemetry-utils/internal\";\nimport { createChannelServiceEndpoints, loadChannel, loadChannelFactoryAndAttributes, summarizeChannelAsync, } from \"./channelContext.js\";\nexport class RemoteChannelContext {\n constructor(runtime, dataStoreContext, storageService, submitFn, dirtyFn, id, baseSnapshot, registry, extraBlobs, createSummarizerNode, attachMessageType) {\n this.id = id;\n this.isLoaded = false;\n this.pending = [];\n assert(!this.id.includes(\"/\"), 0x310 /* Channel context ID cannot contain slashes */);\n this.subLogger = createChildLogger({\n logger: runtime.logger,\n namespace: \"RemoteChannelContext\",\n });\n this.services = createChannelServiceEndpoints(dataStoreContext.connected, submitFn, () => dirtyFn(this.id), () => runtime.attachState !== AttachState.Detached, storageService, this.subLogger, baseSnapshot, extraBlobs);\n this.channelP = new LazyPromise(async () => {\n const { attributes, factory } = await loadChannelFactoryAndAttributes(dataStoreContext, this.services, this.id, registry, attachMessageType);\n const channel = await loadChannel(runtime, attributes, factory, this.services, this.subLogger, this.id);\n // Send all pending messages to the channel\n assert(this.pending !== undefined, 0x23f /* \"pending undefined\" */);\n for (const message of this.pending) {\n this.services.deltaConnection.process(message, false, undefined /* localOpMetadata */);\n }\n this.thresholdOpsCounter.send(\"ProcessPendingOps\", this.pending.length);\n // Commit changes.\n this.channel = channel;\n this.pending = undefined;\n this.isLoaded = true;\n // Because have some await between we created the service and here, the connection state might have changed\n // and we don't propagate the connection state when we are not loaded. So we have to set it again here.\n this.services.deltaConnection.setConnectionState(dataStoreContext.connected);\n return this.channel;\n });\n const thisSummarizeInternal = async (fullTree, trackState, telemetryContext, incrementalSummaryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext, incrementalSummaryContext);\n this.summarizerNode = createSummarizerNode(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));\n this.thresholdOpsCounter = new ThresholdCounter(RemoteChannelContext.pendingOpsCountThreshold, this.subLogger);\n }\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n getChannel() {\n return this.channelP;\n }\n setConnectionState(connected, clientId) {\n // Connection events are ignored if the data store is not yet loaded\n if (!this.isLoaded) {\n return;\n }\n this.services.deltaConnection.setConnectionState(connected);\n }\n applyStashedOp(content) {\n assert(this.isLoaded, 0x194 /* \"Remote channel must be loaded when rebasing op\" */);\n return this.services.deltaConnection.applyStashedOp(content);\n }\n processOp(message, local, localOpMetadata) {\n this.summarizerNode.invalidate(message.sequenceNumber);\n if (this.isLoaded) {\n this.services.deltaConnection.process(message, local, localOpMetadata);\n }\n else {\n assert(!local, 0x195 /* \"Remote channel must not be local when processing op\" */);\n assert(this.pending !== undefined, 0x23e /* \"pending is undefined\" */);\n this.pending.push(message);\n this.thresholdOpsCounter.sendIfMultiple(\"StorePendingOps\", this.pending.length);\n }\n }\n reSubmit(content, localOpMetadata) {\n assert(this.isLoaded, 0x196 /* \"Remote channel must be loaded when resubmitting op\" */);\n this.services.deltaConnection.reSubmit(content, localOpMetadata);\n }\n rollback(content, localOpMetadata) {\n assert(this.isLoaded, 0x2f0 /* \"Remote channel must be loaded when rolling back op\" */);\n this.services.deltaConnection.rollback(content, localOpMetadata);\n }\n /**\n * Returns a summary at the current sequence number.\n * @param fullTree - true to bypass optimizations and force a full summary tree\n * @param trackState - This tells whether we should track state from this summary.\n * @param telemetryContext - summary data passed through the layers for telemetry purposes\n */\n async summarize(fullTree = false, trackState = true, telemetryContext) {\n return this.summarizerNode.summarize(fullTree, trackState, telemetryContext);\n }\n async summarizeInternal(fullTree, trackState, telemetryContext, incrementalSummaryContext) {\n const channel = await this.getChannel();\n const summarizeResult = await summarizeChannelAsync(channel, fullTree, trackState, telemetryContext, incrementalSummaryContext);\n return { ...summarizeResult, id: this.id };\n }\n /**\n * Returns the data used for garbage collection. This includes a list of GC nodes that represent this context.\n * Each node has a set of outbound routes to other GC nodes in the document.\n * If there is no new data in this context since the last summary, previous GC data is used.\n * If there is new data, the GC data is generated again (by calling getGCDataInternal).\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n return this.summarizerNode.getGCData(fullGC);\n }\n /**\n * Generates the data used for garbage collection. This is called when there is new data since last summary. It\n * loads the context and calls into the channel to get its GC data.\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCDataInternal(fullGC = false) {\n const channel = await this.getChannel();\n return channel.getGCData(fullGC);\n }\n updateUsedRoutes(usedRoutes) {\n /**\n * Currently, DDSes are always considered referenced and are not garbage collected. Update the summarizer node's\n * used routes to contain a route to this channel context.\n * Once we have GC at DDS level, this will be updated to use the passed usedRoutes. See -\n * https://github.com/microsoft/FluidFramework/issues/4611\n */\n this.summarizerNode.updateUsedRoutes([\"\"]);\n }\n}\nRemoteChannelContext.pendingOpsCountThreshold = 1000;\n//# sourceMappingURL=remoteChannelContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidDataStoreRegistry } from \"@fluidframework/container-runtime/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { FluidDataStoreRuntime, mixinRequestHandler, } from \"@fluidframework/datastore/internal\";\n/**\n * Proxy over PureDataObject\n * Does delayed creation & initialization of PureDataObject\n */\nasync function createDataObject(ctor, context, sharedObjectRegistry, optionalProviders, runtimeClassArg, existing, initProps) {\n // base\n let runtimeClass = runtimeClassArg;\n // request mixin in\n runtimeClass = mixinRequestHandler(async (request, runtimeArg) => {\n // The provideEntryPoint callback below always returns TObj, so this cast is safe\n const dataObject = (await runtimeArg.entryPoint.get());\n assert(dataObject.request !== undefined, 0x795 /* Data store runtime entryPoint does not have request */);\n return dataObject.request(request);\n }, runtimeClass);\n // Create a new runtime for our data store, as if via new FluidDataStoreRuntime,\n // but using the runtimeClass that's been augmented with mixins\n // The runtime is what Fluid uses to create DDS' and route to your data store\n const runtime = new runtimeClass(\n // calls new FluidDataStoreRuntime(...)\n context, sharedObjectRegistry, existing, async (rt) => {\n assert(instance !== undefined, 0x46a /* entryPoint is undefined */);\n // Calling finishInitialization here like PureDataObject.getDataObject did, to keep the same behavior,\n // since accessing the runtime's entryPoint is how we want the data object to be retrieved going forward.\n // Without this I ran into issues with the load-existing flow not working correctly.\n await instance.finishInitialization(true);\n return instance;\n } /* provideEntryPoint */);\n // Create object right away.\n // This allows object to register various callbacks with runtime before runtime\n // becomes globally available. But it's not full initialization - constructor can't\n // access DDSes or other services of runtime as objects are not fully initialized.\n // In order to use object, we need to go through full initialization by calling finishInitialization().\n const scope = context.scope;\n const providers = scope.IFluidDependencySynthesizer?.synthesize(optionalProviders, {}) ??\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {};\n const instance = new ctor({ runtime, context, providers, initProps });\n // if it's a newly created object, we need to wait for it to finish initialization\n // as that results in creation of DDSes, before it gets attached, providing atomic\n // guarantee of creation.\n // WARNING: we can't do the same (yet) for already existing PureDataObject!\n // This will result in deadlock, as it tries to resolve internal handles, but any\n // handle resolution goes through root (container runtime), which can't route it back\n // to this data store, as it's still not initialized and not known to container runtime yet.\n // In the future, we should address it by using relative paths for handles and be able to resolve\n // local DDSes while data store is not fully initialized.\n if (!existing) {\n await instance.finishInitialization(existing);\n }\n return { instance, runtime };\n}\n/**\n * PureDataObjectFactory is a barebones IFluidDataStoreFactory for use with PureDataObject.\n * Consumers should typically use DataObjectFactory instead unless creating\n * another base data store factory.\n *\n * @typeParam TObj - DataObject (concrete type)\n * @typeParam I - The input types for the DataObject\n * @legacy\n * @alpha\n */\nexport class PureDataObjectFactory {\n constructor(\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IFluidDataStoreFactory.\"type\"}\n */\n type, ctor, sharedObjects, optionalProviders, registryEntries, runtimeClass = FluidDataStoreRuntime) {\n this.type = type;\n this.ctor = ctor;\n this.optionalProviders = optionalProviders;\n this.runtimeClass = runtimeClass;\n if (this.type === \"\") {\n throw new Error(\"undefined type member\");\n }\n if (registryEntries !== undefined) {\n this.registry = new FluidDataStoreRegistry(registryEntries);\n }\n this.sharedObjectRegistry = new Map(sharedObjects.map((ext) => [ext.type, ext]));\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IProvideFluidDataStoreFactory.IFluidDataStoreFactory}\n */\n get IFluidDataStoreFactory() {\n return this;\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IProvideFluidDataStoreRegistry.IFluidDataStoreRegistry}\n */\n get IFluidDataStoreRegistry() {\n return this.registry;\n }\n /**\n * Convenience helper to get the data store's/factory's data store registry entry.\n * The return type hides the factory's generics, easing grouping of registry\n * entries that differ only in this way into the same array.\n * @returns The NamedFluidDataStoreRegistryEntry\n */\n get registryEntry() {\n return [this.type, Promise.resolve(this)];\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IFluidDataStoreFactory.instantiateDataStore}\n */\n async instantiateDataStore(context, existing) {\n const { runtime } = await createDataObject(this.ctor, context, this.sharedObjectRegistry, this.optionalProviders, this.runtimeClass, existing);\n return runtime;\n }\n /**\n * Creates a new instance of the object. Uses parent context's registry to build package path to this factory.\n * In other words, registry of context passed in has to contain this factory, with the name that matches\n * this factory's type.\n * It is intended to be used by data store objects that create sub-objects.\n * @param context - The context being used to create the runtime\n * (the created object will have its own new context created as well)\n * @param initialState - The initial state to provide to the created data store.\n * @param loadingGroupId - NOT production ready, EXPERIMENTAL, please read {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}. The service needs to support this feature, does not work for most services\n * @returns an object created by this factory. Data store and objects created are not attached to container.\n * They get attached only when a handle to one of them is attached to already attached objects.\n */\n async createChildInstance(parentContext, initialState, loadingGroupId) {\n return this.createNonRootInstanceCore(parentContext.containerRuntime, [...parentContext.packagePath, this.type], initialState, loadingGroupId);\n }\n /**\n * Creates a new instance of the object. Uses peer context's registry and its package path to identify this factory.\n * In other words, registry of context passed in has to have this factory.\n * Intended to be used by data store objects that need to create peers (similar) instances of existing objects.\n * @param context - The component context being used to create the object\n * (the created object will have its own new context created as well)\n * @param initialState - The initial state to provide to the created component.\n * @param loadingGroupId - NOT production ready, EXPERIMENTAL, please read {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}. The service needs to support this feature, does not work for most services\n * @returns an object created by this factory. Data store and objects created are not attached to container.\n * They get attached only when a handle to one of them is attached to already attached objects.\n */\n async createPeerInstance(peerContext, initialState, loadingGroupId) {\n return this.createNonRootInstanceCore(peerContext.containerRuntime, peerContext.packagePath, initialState, loadingGroupId);\n }\n /**\n * Creates a new instance of the object. Uses container's registry to find this factory.\n * It's expected that only container owners would use this functionality, as only such developers\n * have knowledge of entries in container registry.\n * The name in this registry for such record should match type of this factory.\n * @param runtime - container runtime. It's registry is used to create an object.\n * @param initialState - The initial state to provide to the created component.\n * @param loadingGroupId - NOT production ready, EXPERIMENTAL, please read {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}. The service needs to support this feature, does not work for most services\n * @returns an object created by this factory. Data store and objects created are not attached to container.\n * They get attached only when a handle to one of them is attached to already attached objects.\n */\n async createInstance(runtime, initialState, loadingGroupId) {\n return this.createNonRootInstanceCore(runtime, [this.type], initialState, loadingGroupId);\n }\n /**\n * Creates a new instance of the object with a datastore which exposes the aliasing api.\n * @param runtime - container runtime. It is the runtime that will be used to create the object. It will produce\n * the underlying infrastructure to get the data object to operate.\n * @param initialState - The initial state to provide to the created component.\n * @param packagePath - The path to the data store factory to use to create the data object.\n * @param loadingGroupId - NOT production ready, EXPERIMENTAL, please read {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}. The service needs to support this feature, does not work for most services\n * @returns an array containing the object created by this factory and an IDataStore object that enables users to\n * alias the data object.\n * The data object is attached only when it is attached to the handle graph that connects to an aliased object or\n * when the data object is aliased.\n */\n async createInstanceWithDataStore(containerRuntime, initialState, packagePath, loadingGroupId) {\n const context = containerRuntime.createDetachedDataStore(packagePath ?? [this.type], loadingGroupId);\n const { instance, runtime } = await createDataObject(this.ctor, context, this.sharedObjectRegistry, this.optionalProviders, this.runtimeClass, false, // existing\n initialState);\n const dataStore = await context.attachRuntime(this, runtime);\n return [instance, dataStore];\n }\n /**\n * Creates a new root instance of the object. Uses container's registry to find this factory.\n * It's expected that only container owners would use this functionality, as only such developers\n * have knowledge of entries in container registry.\n * The name in this registry for such record should match type of this factory.\n * @param runtime - container runtime. It's registry is used to create an object.\n * @param initialState - The initial state to provide to the created component.\n * @returns an object created by this factory. Data store and objects created are not attached to container.\n * They get attached only when a handle to one of them is attached to already attached objects.\n *\n * @deprecated - the issue is that it does not allow the customer to decide the conflict resolution policy when an\n * aliasing conflict occurs. Use {@link PureDataObjectFactory.createInstanceWithDataStore} instead.\n */\n async createRootInstance(rootDataStoreId, runtime, initialState) {\n const context = runtime.createDetachedDataStore([this.type]);\n const { instance, runtime: dataStoreRuntime } = await createDataObject(this.ctor, context, this.sharedObjectRegistry, this.optionalProviders, this.runtimeClass, false, // existing\n initialState);\n const dataStore = await context.attachRuntime(this, dataStoreRuntime);\n const result = await dataStore.trySetAlias(rootDataStoreId);\n if (result !== \"Success\") {\n const handle = await runtime.getAliasedDataStoreEntryPoint(rootDataStoreId);\n assert(handle !== undefined, 0x8e1 /* Should have retrieved aliased handle */);\n return (await handle.get());\n }\n return instance;\n }\n async createNonRootInstanceCore(containerRuntime, packagePath, initialState, loadingGroupId) {\n const context = containerRuntime.createDetachedDataStore(packagePath, loadingGroupId);\n return this.createInstanceCore(context, initialState);\n }\n async createInstanceCore(context, initialState) {\n const { instance, runtime } = await createDataObject(this.ctor, context, this.sharedObjectRegistry, this.optionalProviders, this.runtimeClass, false, // existing\n initialState);\n await context.attachRuntime(this, runtime);\n return instance;\n }\n}\n//# sourceMappingURL=pureDataObjectFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidDataStoreRuntime } from \"@fluidframework/datastore/internal\";\nimport { SharedMap, DirectoryFactory, MapFactory, \n// eslint-disable-next-line import/no-deprecated\nSharedDirectory, } from \"@fluidframework/map/internal\";\nimport { PureDataObjectFactory } from \"./pureDataObjectFactory.js\";\n/**\n * DataObjectFactory is the IFluidDataStoreFactory for use with DataObjects.\n * It facilitates DataObject's features (such as its shared directory) by\n * ensuring relevant shared objects etc are available to the factory.\n *\n * @typeParam TObj - DataObject (concrete type)\n * @typeParam I - The input types for the DataObject\n * @legacy\n * @alpha\n */\nexport class DataObjectFactory extends PureDataObjectFactory {\n constructor(type, ctor, sharedObjects = [], optionalProviders, registryEntries, runtimeFactory = FluidDataStoreRuntime) {\n const mergedObjects = [...sharedObjects];\n if (!sharedObjects.some((factory) => factory.type === DirectoryFactory.Type)) {\n // User did not register for directory\n // eslint-disable-next-line import/no-deprecated\n mergedObjects.push(SharedDirectory.getFactory());\n }\n // TODO: Remove SharedMap factory when compatibility with SharedMap DataObject is no longer needed in 0.10\n if (!sharedObjects.some((factory) => factory.type === MapFactory.Type)) {\n // User did not register for map\n mergedObjects.push(SharedMap.getFactory());\n }\n super(type, ctor, mergedObjects, optionalProviders, registryEntries, runtimeFactory);\n }\n}\n//# sourceMappingURL=dataObjectFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { CompressionAlgorithms, } from \"@fluidframework/container-runtime/internal\";\nimport { FlushMode } from \"@fluidframework/runtime-definitions/internal\";\n/**\n * The CompatibilityMode selected determines the set of runtime options to use. In \"1\" mode we support\n * full interop with true 1.x clients, while in \"2\" mode we only support interop with 2.x clients.\n */\nexport const compatibilityModeRuntimeOptions = {\n \"1\": {\n // 1.x clients are compatible with TurnBased flushing, but here we elect to remain on Immediate flush mode\n // as a work-around for inability to send batches larger than 1Mb. Immediate flushing keeps batches smaller as\n // fewer messages will be included per flush.\n flushMode: FlushMode.Immediate,\n // Op compression is on by default but introduces a new type of op which is not compatible with 1.x clients.\n compressionOptions: {\n minimumBatchSizeInBytes: Number.POSITIVE_INFINITY, // disabled\n compressionAlgorithm: CompressionAlgorithms.lz4,\n },\n // Grouped batching is on by default but introduces a new type of op which is not compatible with 1.x clients.\n enableGroupedBatching: false,\n // TODO: Include explicit disables for things that are currently off-by-default?\n // Explicitly disable running Sweep in compat mode \"1\". Sweep is supported only in 2.x. So, when 1.x and 2.x\n // clients are running in parallel, running sweep will fail 1.x clients.\n gcOptions: { enableGCSweep: undefined },\n },\n \"2\": {\n // Explicit schema control explicitly makes the container incompatible with 1.x clients, to force their\n // ejection from collaboration and prevent container corruption. It is off by default and must be explicitly enabled.\n explicitSchemaControl: true,\n // The runtime ID compressor is a prerequisite to use SharedTree but is off by default and must be explicitly enabled.\n // It introduces a new type of op which is not compatible with 1.x clients.\n enableRuntimeIdCompressor: \"on\",\n // Explicitly disable running Sweep in compat mode \"2\". Although sweep is supported in 2.x, it is disabled by default.\n // This setting explicitly disables it to be extra safe.\n gcOptions: { enableGCSweep: undefined },\n },\n};\n//# sourceMappingURL=compatibilityConfiguration.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Runtime check to determine if a class is a DataObject type.\n */\nexport function isDataObjectClass(obj) {\n const maybe = obj;\n const isDataObject = maybe?.factory?.IFluidDataStoreFactory !== undefined &&\n maybe.factory.IFluidDataStoreFactory === maybe.factory;\n if (isDataObject ===\n (obj.getFactory !== undefined)) {\n // TODO: Currently nothing in the types or docs requires an actual DataObjectClass to not have a member called \"getFactory\" so there is a risk of this being a false positive.\n // Refactoring the use of LoadableObjectClass such that explicit down casting is not required (for example by having a single factory API shared by both cases) could avoid problems like this.\n throw new UsageError(\"Invalid LoadableObjectClass\");\n }\n return isDataObject;\n}\n/**\n * Runtime check to determine if a class is a SharedObject type\n */\nexport function isSharedObjectKind(obj) {\n return !isDataObjectClass(obj);\n}\n/**\n * The ContainerSchema consists of initialObjects and dynamicObjectTypes. These types can be\n * of both SharedObject or DataObject. This function separates the two and returns a registry\n * of DataObject types and an array of SharedObjects.\n */\nexport const parseDataObjectsFromSharedObjects = (schema) => {\n const registryEntries = new Set();\n const sharedObjects = new Set();\n const tryAddObject = (obj) => {\n if (isSharedObjectKind(obj)) {\n sharedObjects.add(obj.getFactory());\n }\n else if (isDataObjectClass(obj)) {\n registryEntries.add([obj.factory.type, Promise.resolve(obj.factory)]);\n }\n else {\n throw new Error(`Entry is neither a DataObject or a SharedObject`);\n }\n };\n // Add the object types that will be initialized\n const dedupedObjects = new Set([\n ...Object.values(schema.initialObjects),\n ...(schema.dynamicObjectTypes ?? []),\n ]);\n for (const obj of dedupedObjects) {\n tryAddObject(obj);\n }\n if (registryEntries.size === 0 && sharedObjects.size === 0) {\n throw new Error(\"Container cannot be initialized without any DataTypes\");\n }\n return [[...registryEntries], [...sharedObjects]];\n};\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { BaseContainerRuntimeFactory, DataObject, DataObjectFactory, } from \"@fluidframework/aqueduct/internal\";\nimport { RequestParser } from \"@fluidframework/runtime-utils/internal\";\nimport { compatibilityModeRuntimeOptions } from \"./compatibilityConfiguration.js\";\nimport { isDataObjectClass, isSharedObjectKind, parseDataObjectsFromSharedObjects, } from \"./utils.js\";\n/**\n * The entry-point/root collaborative object of the {@link IFluidContainer | Fluid Container}.\n * Abstracts the dynamic code required to build a Fluid Container into a static representation for end customers.\n */\nclass RootDataObject extends DataObject {\n constructor() {\n super(...arguments);\n this.initialObjectsDirKey = \"initial-objects-key\";\n this._initialObjects = {};\n }\n get IRootDataObject() {\n return this;\n }\n get initialObjectsDir() {\n const dir = this.root.getSubDirectory(this.initialObjectsDirKey);\n if (dir === undefined) {\n throw new Error(\"InitialObjects sub-directory was not initialized\");\n }\n return dir;\n }\n /**\n * The first time this object is initialized, creates each object identified in\n * {@link RootDataObjectProps.initialObjects} and stores them as unique values in the root directory.\n *\n * @see {@link @fluidframework/aqueduct#PureDataObject.initializingFirstTime}\n */\n async initializingFirstTime(props) {\n this.root.createSubDirectory(this.initialObjectsDirKey);\n // Create initial objects provided by the developer\n const initialObjectsP = [];\n for (const [id, objectClass] of Object.entries(props.initialObjects)) {\n const createObject = async () => {\n const obj = await this.create(objectClass);\n this.initialObjectsDir.set(id, obj.handle);\n };\n initialObjectsP.push(createObject());\n }\n await Promise.all(initialObjectsP);\n }\n /**\n * Every time an instance is initialized, loads all of the initial objects in the root directory so they can be\n * accessed immediately.\n *\n * @see {@link @fluidframework/aqueduct#PureDataObject.hasInitialized}\n */\n async hasInitialized() {\n // We will always load the initial objects so they are available to the developer\n const loadInitialObjectsP = [];\n for (const [key, value] of this.initialObjectsDir.entries()) {\n const loadDir = async () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const obj = await value.get();\n Object.assign(this._initialObjects, { [key]: obj });\n };\n loadInitialObjectsP.push(loadDir());\n }\n await Promise.all(loadInitialObjectsP);\n }\n /**\n * {@inheritDoc IRootDataObject.initialObjects}\n */\n get initialObjects() {\n if (Object.keys(this._initialObjects).length === 0) {\n throw new Error(\"Initial Objects were not correctly initialized\");\n }\n return this._initialObjects;\n }\n /**\n * {@inheritDoc IRootDataObject.create}\n */\n async create(objectClass) {\n const internal = objectClass;\n if (isDataObjectClass(internal)) {\n return this.createDataObject(internal);\n }\n else if (isSharedObjectKind(internal)) {\n return this.createSharedObject(internal);\n }\n throw new Error(\"Could not create new Fluid object because an unknown object was passed\");\n }\n async createDataObject(dataObjectClass) {\n const factory = dataObjectClass.factory;\n const packagePath = [...this.context.packagePath, factory.type];\n const dataStore = await this.context.containerRuntime.createDataStore(packagePath);\n const entryPoint = await dataStore.entryPoint.get();\n return entryPoint;\n }\n createSharedObject(sharedObjectClass) {\n const factory = sharedObjectClass.getFactory();\n const obj = this.runtime.createChannel(undefined, factory.type);\n return obj;\n }\n}\nconst rootDataStoreId = \"rootDOId\";\n/**\n * Creates an {@link @fluidframework/aqueduct#BaseContainerRuntimeFactory} for a container with a single\n * {@link IRootDataObject}, which is constructed from the provided schema.\n *\n * @internal\n */\nexport function createDOProviderContainerRuntimeFactory(props) {\n return new DOProviderContainerRuntimeFactory(props.schema, props.compatibilityMode);\n}\n/**\n * Container code that provides a single {@link IRootDataObject}.\n *\n * @remarks\n *\n * This data object is dynamically customized (registry and initial objects) based on the schema provided.\n * to the container runtime factory.\n *\n * @internal\n */\nclass DOProviderContainerRuntimeFactory extends BaseContainerRuntimeFactory {\n constructor(schema, compatibilityMode) {\n const [registryEntries, sharedObjects] = parseDataObjectsFromSharedObjects(schema);\n const rootDataObjectFactory = new DataObjectFactory(\"rootDO\", RootDataObject, sharedObjects, {}, registryEntries);\n const provideEntryPoint = async (containerRuntime) => {\n const entryPoint = await containerRuntime.getAliasedDataStoreEntryPoint(rootDataStoreId);\n if (entryPoint === undefined) {\n throw new Error(`default dataStore [${rootDataStoreId}] must exist`);\n }\n return entryPoint.get();\n };\n const getDefaultObject = async (request, runtime) => {\n const parser = RequestParser.create(request);\n if (parser.pathParts.length === 0) {\n // This cast is safe as ContainerRuntime.loadRuntime is called in the base class\n return runtime.resolveHandle({\n url: `/${rootDataStoreId}${parser.query}`,\n headers: request.headers,\n });\n }\n return undefined; // continue search\n };\n super({\n registryEntries: [rootDataObjectFactory.registryEntry],\n requestHandlers: [getDefaultObject],\n runtimeOptions: compatibilityModeRuntimeOptions[compatibilityMode],\n provideEntryPoint,\n });\n this.rootDataObjectFactory = rootDataObjectFactory;\n this.initialObjects = schema.initialObjects;\n }\n /**\n * {@inheritDoc @fluidframework/aqueduct#BaseContainerRuntimeFactory.containerInitializingFirstTime}\n */\n async containerInitializingFirstTime(runtime) {\n // The first time we create the container we create the RootDataObject\n await this.rootDataObjectFactory.createRootInstance(rootDataStoreId, runtime, {\n initialObjects: this.initialObjects,\n });\n }\n}\n//# sourceMappingURL=rootDataObject.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\n/**\n * Extract and return the w3c data.\n * @param url - request url for which w3c data needs to be reported.\n * @param initiatorType - type of the network call\n * @internal\n */\nexport function getW3CData(url, initiatorType) {\n // From: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming\n // fetchStart: immediately before the browser starts to fetch the resource.\n // requestStart: immediately before the browser starts requesting the resource from the server\n // responseStart: immediately after the browser receives the first byte of the response from the server.\n // responseEnd: immediately after the browser receives the last byte of the resource\n // or immediately before the transport connection is closed, whichever comes first.\n // secureConnectionStart: immediately before the browser starts the handshake process to secure the\n // current connection. If a secure connection is not used, this property returns zero.\n // startTime: Time when the resource fetch started. This value is equivalent to fetchStart.\n // domainLookupStart: immediately before the browser starts the domain name lookup for the resource.\n // domainLookupEnd: immediately after the browser finishes the domain name lookup for the resource.\n // redirectStart: start time of the fetch which that initiates the redirect.\n // redirectEnd: immediately after receiving the last byte of the response of the last redirect.\n // Interval between start and finish of the domain name lookup for the resource.\n let dnsLookupTime; // domainLookupEnd - domainLookupStart\n // Interval between the first fetch until the last byte of the last redirect.\n let redirectTime; // redirectEnd - redirectStart\n // Time to establish the connection to the server to retrieve the resource.\n let tcpHandshakeTime; // connectEnd - connectStart\n // Time from the end of the connection until the inital handshake process to secure the connection.\n // If 0, then no time is spent here.\n let secureConnectionTime; // connectEnd - secureConnectionStart\n // Interval to receive all (first to last) bytes form the server.\n let responseNetworkTime; // responsEnd - responseStart\n // Interval between the initial fetch until the last byte is received.\n // Likely same as fetchTime + receiveContentTime.\n let fetchStartToResponseEndTime; // responseEnd - fetchStart\n // reqStartToResponseEndTime = fetchStartToResponseEndTime - \n // Interval between starting the request for the resource until receiving the last byte.\n let reqStartToResponseEndTime; // responseEnd - requestStart\n let w3cStartTime; // W3C Start time = fetchStart time\n // getEntriesByType is only available in browser performance object\n const resources1 = performance.getEntriesByType?.(\"resource\") ?? [];\n // Usually the latest fetch call is to the end of resources, so we start from the end.\n for (let i = resources1.length - 1; i > 0; i--) {\n const indResTime = resources1[i];\n const resource_name = indResTime.name.toString();\n const resource_initiatortype = indResTime.initiatorType;\n if (resource_initiatortype.localeCompare(initiatorType) === 0 &&\n resource_name.includes(url)) {\n redirectTime = indResTime.redirectEnd - indResTime.redirectStart;\n w3cStartTime = indResTime.fetchStart;\n dnsLookupTime = indResTime.domainLookupEnd - indResTime.domainLookupStart;\n tcpHandshakeTime = indResTime.connectEnd - indResTime.connectStart;\n secureConnectionTime =\n indResTime.secureConnectionStart > 0\n ? indResTime.connectEnd - indResTime.secureConnectionStart\n : 0;\n responseNetworkTime =\n indResTime.responseStart > 0\n ? indResTime.responseEnd - indResTime.responseStart\n : undefined;\n fetchStartToResponseEndTime =\n indResTime.fetchStart > 0 ? indResTime.responseEnd - indResTime.fetchStart : undefined;\n reqStartToResponseEndTime =\n indResTime.requestStart > 0\n ? indResTime.responseEnd - indResTime.requestStart\n : undefined;\n break;\n }\n }\n return {\n dnsLookupTime,\n w3cStartTime,\n redirectTime,\n tcpHandshakeTime,\n secureConnectionTime,\n responseNetworkTime,\n fetchStartToResponseEndTime,\n reqStartToResponseEndTime,\n };\n}\n/**\n * An implementation of Promise.race that gives you the winner of the promise race.\n * If one of the promises is rejected before any other is resolved, this method will return the error/reason from that rejection.\n * @internal\n */\nexport async function promiseRaceWithWinner(promises) {\n return new Promise((resolve, reject) => {\n promises.forEach((p, index) => {\n p.then((v) => resolve({ index, value: v })).catch(reject);\n });\n });\n}\n/**\n * @internal\n */\nexport function validateMessages(reason, messages, from, logger, strict = true) {\n if (messages.length !== 0) {\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const start = messages[0].sequenceNumber;\n const length = messages.length;\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const last = messages[length - 1].sequenceNumber;\n if (last + 1 !== from + length) {\n // If not strict, then return the first consecutive sub-block. If strict or start\n // seq number is not what we expected, then return no ops.\n if (strict || from !== start) {\n messages.length = 0;\n }\n else {\n let validOpsCount = 1;\n while (validOpsCount < messages.length &&\n // TODO Why are we non null asserting here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n messages[validOpsCount].sequenceNumber ===\n // TODO Why are we non null asserting here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n messages[validOpsCount - 1].sequenceNumber + 1) {\n validOpsCount++;\n }\n messages.length = validOpsCount;\n }\n logger.sendErrorEvent({\n eventName: \"OpsFetchViolation\",\n reason,\n from,\n start,\n last,\n length,\n details: JSON.stringify({\n validLength: messages.length,\n lastValidOpSeqNumber: messages.length > 0\n ? // Non null asserting here because of the length check\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n messages[messages.length - 1].sequenceNumber\n : undefined,\n strict,\n }),\n });\n }\n }\n}\n//# sourceMappingURL=driverUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * @legacy\n * @alpha\n */\nexport class RateLimiter {\n constructor(maxRequests) {\n this.maxRequests = maxRequests;\n this.tasks = [];\n // Run when one of the tasks finished running.\n // Release next task if we have one, or allow more tasks to run in future.\n this.release = () => {\n const task = this.tasks.shift();\n if (task !== undefined) {\n return task();\n }\n this.maxRequests++;\n };\n assert(maxRequests > 0, 0x0ae /* \"Tried to create rate limiter with 0 max requests!\" */);\n }\n get waitQueueLength() {\n return this.tasks.length;\n }\n async acquire() {\n if (this.maxRequests > 0) {\n this.maxRequests--;\n return;\n }\n return new Promise((resolve) => {\n this.tasks.push(resolve);\n });\n }\n async schedule(work) {\n await this.acquire();\n return work().finally(this.release);\n }\n}\n//# sourceMappingURL=rateLimiter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as base64js from \"base64-js\";\n/**\n * Converts a Uint8Array to a string of the provided encoding\n * Useful when the array might be an {@link IsoBuffer}.\n *\n * @param arr - The array to convert.\n * @param encoding - Optional target encoding; only \"utf8\" and \"base64\" are\n * supported, with \"utf8\" being default.\n * @returns The converted string.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n */\nexport function Uint8ArrayToString(arr, encoding) {\n switch (encoding) {\n case \"base64\": {\n return base64js.fromByteArray(arr);\n }\n case \"utf8\":\n case \"utf-8\":\n case undefined: {\n return new TextDecoder().decode(arr);\n }\n default: {\n throw new Error(\"invalid/unsupported encoding\");\n }\n }\n}\n/**\n * Converts a {@link https://en.wikipedia.org/wiki/Base64 | base64} or\n * {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8} string to array buffer.\n *\n * @param encoding - The input string's encoding.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n */\nexport const stringToBuffer = (input, encoding) => IsoBuffer.from(input, encoding).buffer;\n/**\n * Convert binary blob to string format\n *\n * @param blob - the binary blob\n * @param encoding - output string's encoding\n * @returns the blob in string format\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n */\nexport const bufferToString = (blob, encoding) => IsoBuffer.from(blob).toString(encoding);\n/**\n * Determines if an object is an array buffer.\n *\n * @remarks Will detect and reject TypedArrays, like Uint8Array.\n * Reason - they can be viewport into Array, they can be accepted, but caller has to deal with\n * math properly (i.e. Take into account byteOffset at minimum).\n * For example, construction of new TypedArray can be in the form of new TypedArray(typedArray) or\n * new TypedArray(buffer, byteOffset, length), but passing TypedArray will result in fist path (and\n * ignoring byteOffice, length).\n *\n * @param obj - The object to determine if it is an ArrayBuffer.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n */\nexport function isArrayBuffer(obj) {\n const maybe = obj;\n return (obj instanceof ArrayBuffer ||\n (typeof maybe === \"object\" &&\n maybe !== null &&\n typeof maybe.byteLength === \"number\" &&\n typeof maybe.slice === \"function\" &&\n maybe.byteOffset === undefined &&\n maybe.buffer === undefined));\n}\n/**\n * Minimal implementation of Buffer for our usages in the browser environment.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n */\nexport class IsoBuffer extends Uint8Array {\n /**\n * Convert the buffer to a string.\n * Only supports encoding the whole string (unlike the Node Buffer equivalent)\n * and only utf8 and base64 encodings.\n *\n * @param encoding - The encoding to use.\n */\n toString(encoding) {\n return Uint8ArrayToString(this, encoding);\n }\n /**\n * @param value - (string | ArrayBuffer)\n * @param encodingOrOffset - (string | number)\n * @param length - (number)\n */\n static from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return IsoBuffer.fromString(value, encodingOrOffset);\n // Capture any typed arrays, including Uint8Array (and thus - IsoBuffer!)\n }\n else if (value !== null && typeof value === \"object\" && isArrayBuffer(value.buffer)) {\n // The version of the from function for the node buffer, which takes a buffer or typed array\n // as first parameter, does not have any offset or length parameters. Those are just silently\n // ignored and not taken into account\n return IsoBuffer.fromArrayBuffer(value.buffer, value.byteOffset, value.byteLength);\n }\n else if (isArrayBuffer(value)) {\n return IsoBuffer.fromArrayBuffer(value, encodingOrOffset, length);\n }\n else {\n throw new TypeError();\n }\n }\n static fromArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n const offset = byteOffset ?? 0;\n const validLength = byteLength ?? arrayBuffer.byteLength - offset;\n if (offset < 0 ||\n offset > arrayBuffer.byteLength ||\n validLength < 0 ||\n validLength + offset > arrayBuffer.byteLength) {\n throw new RangeError();\n }\n return new IsoBuffer(arrayBuffer, offset, validLength);\n }\n static fromString(str, encoding) {\n switch (encoding) {\n case \"base64\": {\n const sanitizedString = this.sanitizeBase64(str);\n const encoded = base64js.toByteArray(sanitizedString);\n return new IsoBuffer(encoded.buffer);\n }\n case \"utf8\":\n case \"utf-8\":\n case undefined: {\n const encoded = new TextEncoder().encode(str);\n return new IsoBuffer(encoded.buffer);\n }\n default: {\n throw new Error(\"invalid/unsupported encoding\");\n }\n }\n }\n static isBuffer(obj) {\n throw new Error(\"unimplemented\");\n }\n /**\n * Sanitize a base64 string to provide to base64-js library.\n * {@link https://www.npmjs.com/package/base64-js} is not as tolerant of the same malformed base64 as Node'\n * Buffer is.\n */\n static sanitizeBase64(str) {\n let sanitizedStr = str;\n // Remove everything after padding - Node buffer ignores everything\n // after any padding whereas base64-js does not\n sanitizedStr = sanitizedStr.split(\"=\")[0];\n // Remove invalid characters - Node buffer strips invalid characters\n // whereas base64-js replaces them with \"A\"\n sanitizedStr = sanitizedStr.replace(/[^\\w+-/]/g, \"\");\n // Check for missing padding - Node buffer tolerates missing padding\n // whereas base64-js does not\n if (sanitizedStr.length % 4 !== 0) {\n const paddingArray = [\"\", \"===\", \"==\", \"=\"];\n sanitizedStr += paddingArray[sanitizedStr.length % 4];\n }\n return sanitizedStr;\n }\n}\n//# sourceMappingURL=bufferBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This function can be used to assert at compile time that a given value has type never.\n * One common usage is in the default case of a switch block,\n * to ensure that all cases are explicitly handled.\n *\n * Example:\n * ```typescript\n * const bool: true | false = ...;\n * switch(bool) {\n * case true: {...}\n * case false: {...}\n * default: unreachableCase(bool);\n * }\n * ```\n *\n * @deprecated Moved to the `@fluidframework/core-utils` package.\n * @internal\n */\nexport function unreachableCase(_, message = \"Unreachable Case\") {\n throw new Error(message);\n}\n//# sourceMappingURL=unreachable.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A browser friendly assert library.\n * Use this instead of the 'assert' package, which has a big impact on bundle sizes.\n * @param condition - The condition that should be true, if the condition is false an error will be thrown.\n * Only use this API when `false` indicates a logic error in the problem and thus a bug that should be fixed.\n * @param message - The message to include in the error when the condition does not hold.\n * A number should not be specified manually: use a string.\n * Before a release, policy-check should be run, which will convert any asserts still using strings to\n * use numbered error codes instead.\n *\n * @deprecated Moved to the `@fluidframework/core-utils` package.\n * @internal\n */\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(typeof message === \"number\" ? `0x${message.toString(16).padStart(3, \"0\")}` : message);\n }\n}\n//# sourceMappingURL=assert.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Type tag used to distinguish different types of nodes in a {@link ISummaryTree}.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var SummaryType;\n(function (SummaryType) {\n /**\n * Represents a sub-tree in the summary.\n * @public\n */\n SummaryType.Tree = 1;\n /**\n * Represents a blob of data that is added to the summary.\n * Such as the user data that is added to the DDS or metadata added by runtime\n * such as data store / channel attributes.\n * @public\n */\n SummaryType.Blob = 2;\n /**\n * Path to a summary tree object from the last successful summary.\n * @public\n */\n SummaryType.Handle = 3;\n /**\n * Unique identifier to larger blobs uploaded outside of the summary.\n * Ex. DDS has large images or video that will be uploaded by the BlobManager and\n * receive an Id that can be used in the summary.\n * @public\n */\n SummaryType.Attachment = 4;\n})(SummaryType || (SummaryType = {}));\n//# sourceMappingURL=summary.mjs.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FileMode, SummaryType, } from \"@fluidframework/protocol-definitions\";\nimport { unreachableCase } from \"@fluidframework/common-utils\";\n/**\n * Take a summary object and returns its git mode.\n *\n * @param value - summary object\n * @returns the git mode of summary object\n * @internal\n */\nexport function getGitMode(value) {\n const type = value.type === SummaryType.Handle ? value.handleType : value.type;\n switch (type) {\n case SummaryType.Blob:\n case SummaryType.Attachment:\n return FileMode.File;\n case SummaryType.Tree:\n return FileMode.Directory;\n default:\n unreachableCase(type, `Unknown type: ${type}`);\n }\n}\n/**\n * Take a summary object and returns its type.\n *\n * @param value - summary object\n * @returns the type of summary object\n * @internal\n */\nexport function getGitType(value) {\n const type = value.type === SummaryType.Handle ? value.handleType : value.type;\n switch (type) {\n case SummaryType.Blob:\n case SummaryType.Attachment:\n return \"blob\";\n case SummaryType.Tree:\n return \"tree\";\n default:\n unreachableCase(type, `Unknown type: ${type}`);\n }\n}\n/**\n * NOTE: Renamed from `buildHierarchy` to `buildGitTreeHierarchy`. There is usage of this function in loader and driver layer.\n * Build a tree hierarchy base on a flat tree\n *\n * @param flatTree - a flat tree\n * @param blobsShaToPathCache - Map with blobs sha as keys and values as path of the blob.\n * @param removeAppTreePrefix - Remove `.app/` from beginning of paths when present\n * @returns the hierarchical tree\n * @internal\n */\nexport function buildGitTreeHierarchy(flatTree, blobsShaToPathCache = new Map(), removeAppTreePrefix = false) {\n const lookup = {};\n const root = { id: flatTree.sha, blobs: {}, trees: {} };\n lookup[\"\"] = root;\n for (const entry of flatTree.tree) {\n const entryPath = removeAppTreePrefix ? entry.path.replace(/^\\.app\\//, \"\") : entry.path;\n const lastIndex = entryPath.lastIndexOf(\"/\");\n const entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));\n const entryPathBase = entryPath.slice(lastIndex + 1);\n // The flat output is breadth-first so we can assume we see tree nodes prior to their contents\n const node = lookup[entryPathDir];\n // Add in either the blob or tree\n if (entry.type === \"tree\") {\n const newTree = { id: entry.sha, blobs: {}, commits: {}, trees: {} };\n node.trees[decodeURIComponent(entryPathBase)] = newTree;\n lookup[entryPath] = newTree;\n }\n else if (entry.type === \"blob\") {\n node.blobs[decodeURIComponent(entryPathBase)] = entry.sha;\n blobsShaToPathCache.set(entry.sha, `/${entryPath}`);\n }\n else {\n throw new Error(\"Unknown entry type!!\");\n }\n }\n return root;\n}\n//# sourceMappingURL=gitHelper.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, stringToBuffer, Uint8ArrayToString, unreachableCase, } from \"@fluidframework/common-utils\";\nimport { getGitType } from \"@fluidframework/protocol-base\";\nimport { SummaryType } from \"@fluidframework/protocol-definitions\";\n/**\n * Convert a list of nodes to a tree path.\n * If a node is empty (blank) it will be removed.\n * If a node's name begins and/or ends with a \"/\", it will be removed.\n * @param nodeNames - node names in path\n * @internal\n */\nexport const buildTreePath = (...nodeNames) => nodeNames\n .map((nodeName) => nodeName.replace(/^\\//, \"\").replace(/\\/$/, \"\"))\n .filter((nodeName) => !!nodeName)\n .join(\"/\");\n/**\n * Converts the summary tree to a whole summary tree to be uploaded. Always upload full whole summary tree.\n * @param parentHandle - Handle of the last uploaded summary or detach new summary.\n * @param tree - Summary Tree which will be converted to whole summary tree to be uploaded.\n * @param path - Current path of node which is getting evaluated.\n * @internal\n */\nexport function convertSummaryTreeToWholeSummaryTree(parentHandle, tree, path = \"\", rootNodeName = \"\") {\n const wholeSummaryTree = {\n type: \"tree\",\n entries: [],\n };\n const keys = Object.keys(tree.tree);\n for (const key of keys) {\n const summaryObject = tree.tree[key];\n let id;\n let value;\n let unreferenced;\n const currentPath = path === \"\" ? buildTreePath(rootNodeName, key) : buildTreePath(path, key);\n switch (summaryObject.type) {\n case SummaryType.Tree: {\n const result = convertSummaryTreeToWholeSummaryTree(parentHandle, summaryObject, currentPath, rootNodeName);\n value = result;\n unreferenced = summaryObject.unreferenced || undefined;\n break;\n }\n case SummaryType.Blob: {\n value =\n typeof summaryObject.content === \"string\"\n ? {\n type: \"blob\",\n content: summaryObject.content,\n encoding: \"utf-8\",\n }\n : {\n type: \"blob\",\n content: Uint8ArrayToString(summaryObject.content, \"base64\"),\n encoding: \"base64\",\n };\n break;\n }\n case SummaryType.Handle: {\n const handleValue = summaryObject;\n if (handleValue.embedded) {\n id = summaryObject.handle;\n }\n else {\n if (!parentHandle) {\n throw Error(\"Parent summary does not exist to reference by handle.\");\n }\n id = buildTreePath(parentHandle, rootNodeName, summaryObject.handle);\n }\n break;\n }\n case SummaryType.Attachment: {\n id = summaryObject.id;\n break;\n }\n default: {\n unreachableCase(summaryObject, `Unknown type: ${summaryObject.type}`);\n }\n }\n const baseEntry = {\n path: encodeURIComponent(key),\n type: getGitType(summaryObject),\n };\n let entry;\n if (value) {\n assert(id === undefined, 0x0ad /* \"Snapshot entry has both a tree value and a referenced id!\" */);\n entry = {\n value,\n unreferenced,\n ...baseEntry,\n };\n }\n else if (id) {\n entry = {\n ...baseEntry,\n id,\n };\n }\n else {\n throw new Error(`Invalid tree entry for ${summaryObject.type}`);\n }\n wholeSummaryTree.entries.push(entry);\n }\n return wholeSummaryTree;\n}\n/**\n * Build a tree hierarchy from a flat tree.\n *\n * @param flatTree - a flat tree\n * @param treePrefixToRemove - tree prefix to strip\n * @returns the heirarchical tree\n */\nfunction buildSummaryTreeHierarchy(flatTree, treePrefixToRemove) {\n const lookup = {};\n // Root tree id will be used to determine which version was downloaded.\n const root = { id: flatTree.id, blobs: {}, trees: {} };\n lookup[\"\"] = root;\n for (const entry of flatTree.entries) {\n // Strip the `treePrefixToRemove` path from tree entries such that they are stored under root.\n const entryPath = entry.path.replace(new RegExp(`^${treePrefixToRemove}/`), \"\");\n const lastIndex = entryPath.lastIndexOf(\"/\");\n const entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));\n const entryPathBase = entryPath.slice(lastIndex + 1);\n // The flat output is breadth-first so we can assume we see tree nodes prior to their contents\n const node = lookup[entryPathDir];\n // Add in either the blob or tree\n if (entry.type === \"tree\") {\n const newTree = {\n blobs: {},\n trees: {},\n unreferenced: entry.unreferenced,\n };\n node.trees[decodeURIComponent(entryPathBase)] = newTree;\n lookup[entryPath] = newTree;\n }\n else if (entry.type === \"blob\") {\n node.blobs[decodeURIComponent(entryPathBase)] = entry.id;\n }\n else {\n throw new Error(`Unknown entry type!!`);\n }\n }\n return root;\n}\n/**\n * Converts existing IWholeFlatSummary to snapshot tree, blob array, and sequence number.\n *\n * @param flatSummary - flat summary\n * @param treePrefixToRemove - tree prefix to strip. By default we are stripping \".app\" prefix\n * @returns snapshot tree, blob array, and sequence number\n * @internal\n */\nexport function convertWholeFlatSummaryToSnapshotTreeAndBlobs(flatSummary, treePrefixToRemove = \".app\") {\n const blobs = new Map();\n if (flatSummary.blobs) {\n flatSummary.blobs.forEach((blob) => {\n blobs.set(blob.id, stringToBuffer(blob.content, blob.encoding ?? \"utf-8\"));\n });\n }\n const flatSummaryTree = flatSummary.trees?.[0];\n const sequenceNumber = flatSummaryTree?.sequenceNumber;\n const snapshotTree = buildSummaryTreeHierarchy(flatSummaryTree, treePrefixToRemove);\n return {\n blobs,\n snapshotTree,\n sequenceNumber,\n };\n}\n/**\n * Validates whether the entry is an IWholeSummaryTreeEntry with a value field\n * @param obj - object to be evaluated\n * @returns Whether the value is of IWholeSummaryTreeEntry type\n */\nfunction isWholeSummaryTreeValueEntry(obj) {\n return obj && typeof obj === \"object\" && \"value\" in obj;\n}\n/**\n * Validates whether a specific value is of IWholeSummaryBlob type.\n * @param obj - object to be evaluated\n * @returns Whether the value is of IWholeSummaryBlob type\n */\nfunction isWholeSummaryBlob(obj) {\n return obj && typeof obj === \"object\" && \"content\" in obj;\n}\n/**\n * Validates whether a specific value is of IWholeSummaryBlob type.\n * @param obj - object to be evaluated\n * @returns Whether the value is of IWholeSummaryBlob type\n */\nfunction isWholeSummaryTree(obj) {\n return obj && typeof obj === \"object\" && \"type\" in obj;\n}\n/**\n * Converts existing IWholeSummaryTree to ISummaryTree for the first summary (without Handle entries)\n * @param wholeSummaryTree - wholeSummaryTree used on the payload for creating and uploading a document.\n * @returns Summary tree to be used when creating a new document.\n * @internal\n */\nexport function convertFirstSummaryWholeSummaryTreeToSummaryTree(wholeSummaryTree, unreferenced) {\n const tree = {};\n for (const entry of wholeSummaryTree.entries) {\n switch (entry.type) {\n case \"blob\": {\n assert(isWholeSummaryTreeValueEntry(entry), \"Invalid entry type\");\n assert(isWholeSummaryBlob(entry.value), \"entry value is not an IWholeSummaryBlob\");\n const blobPayload = entry.value;\n tree[entry.path] = {\n type: SummaryType.Blob,\n content: blobPayload.encoding === \"base64\"\n ? new Uint8Array(stringToBuffer(blobPayload.content, \"base64\"))\n : blobPayload.content,\n };\n break;\n }\n case \"tree\": {\n assert(isWholeSummaryTreeValueEntry(entry), \"Invalid entry type\");\n assert(isWholeSummaryTree(entry.value), \"entry value is not an IWholeSummaryTree\");\n const treePayload = entry.value;\n const nodeReferenced = entry.unreferenced;\n tree[entry.path] = convertFirstSummaryWholeSummaryTreeToSummaryTree(treePayload, nodeReferenced);\n break;\n }\n default: {\n throw new Error(`Unsupported tree type for first summary`);\n }\n }\n }\n return unreferenced\n ? {\n type: SummaryType.Tree,\n tree,\n unreferenced,\n }\n : {\n type: SummaryType.Tree,\n tree,\n };\n}\n//# sourceMappingURL=storageUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * An extension of Map that expires (deletes) entries after a period of inactivity.\n * The policy is based on the last time a key was written to.\n */\nexport class MapWithExpiration extends Map {\n constructor(expiryMs) {\n super();\n this.expiryMs = expiryMs;\n /** Timestamps (as epoch ms numbers) of when each key was last refreshed */\n this.lastRefreshedTimes = new Map();\n }\n refresh(key) {\n this.lastRefreshedTimes.set(key, new Date().valueOf());\n }\n /**\n * Returns true if the key is present and expired, false if it's not expired, and undefined if it's not found\n * If cleanUp is passed as true, then delete any expired entry before returning.\n */\n checkExpiry(key, cleanUp = false) {\n const refreshTime = this.lastRefreshedTimes.get(key);\n assert((refreshTime !== undefined) === super.has(key), 0x50c /* freshness map out of sync */);\n if (refreshTime === undefined) {\n return undefined;\n }\n const expired = new Date().valueOf() - refreshTime >= this.expiryMs;\n if (expired && cleanUp) {\n this.delete(key);\n }\n return expired;\n }\n clearExpiredEntries() {\n // forEach clears out any expired entries\n this.forEach(() => { });\n }\n get size() {\n this.clearExpiredEntries();\n return super.size;\n }\n has(key) {\n this.checkExpiry(key, true /* cleanUp */);\n return super.has(key);\n }\n get(key) {\n this.checkExpiry(key, true /* cleanUp */);\n return super.get(key);\n }\n set(key, value) {\n // Sliding window expiration policy (on write)\n this.refresh(key);\n return super.set(key, value);\n }\n delete(key) {\n this.lastRefreshedTimes.delete(key);\n return super.delete(key);\n }\n clear() {\n this.lastRefreshedTimes.clear();\n super.clear();\n }\n forEach(callbackfn, thisArg) {\n const expiredKeys = [];\n super.forEach((v, k, m) => {\n if (this.checkExpiry(k) === true) {\n expiredKeys.push(k);\n }\n else {\n callbackfn.bind(thisArg)(v, k, m);\n }\n });\n // Clean up keys we know are expired now that we're done iterating\n expiredKeys.forEach((key) => {\n this.delete(key);\n });\n }\n entries() {\n this.clearExpiredEntries();\n return super.entries();\n }\n keys() {\n this.clearExpiredEntries();\n return super.keys();\n }\n values() {\n this.clearExpiredEntries();\n return super.values();\n }\n [Symbol.iterator]() {\n this.clearExpiredEntries();\n return super[Symbol.iterator]();\n }\n valueOf() {\n this.clearExpiredEntries();\n return super.valueOf();\n }\n}\n//# sourceMappingURL=mapWithExpiration.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MapWithExpiration } from \"./mapWithExpiration.js\";\n/** A basic in-memory cache that optionally supports expiring entries after a period of inactivity */\nexport class InMemoryCache {\n constructor(expirationMs) {\n this.cache = expirationMs !== undefined ? new MapWithExpiration(expirationMs) : new Map();\n }\n async get(key) {\n return this.cache.get(key);\n }\n async put(key, value) {\n this.cache.set(key, value);\n }\n}\n/** This \"cache\" does nothing on put, and get always returns undefined */\nexport class NullCache {\n async get(key) {\n return undefined;\n }\n async put(key, value) { }\n}\n//# sourceMappingURL=cache.js.map","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\nexport function createCookieJar() { }\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { createCookieJar, XHR as XMLHttpRequest, } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n if (this.opts.withCredentials) {\n this.cookieJar = createCookieJar();\n }\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n var _a;\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, true);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr);\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"./websocket-constructor.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n // @ts-ignore\n if (typeof WebTransport !== \"function\") {\n return;\n }\n // @ts-ignore\n this.transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n this.transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this.transport.ready.then(() => {\n this.transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this.writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this.writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this.writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 2000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { defaultBinaryType } from \"./transports/websocket-constructor.js\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\n \"polling\",\n \"websocket\",\n \"webtransport\",\n ];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this.upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n this.resetPingTimeout();\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport, TransportError } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { assert, Deferred } from \"@fluidframework/core-utils/internal\";\nimport { PerformanceEvent, } from \"@fluidframework/telemetry-utils/internal\";\nimport { canRetryOnError, createGenericNetworkError, getRetryDelayFromError, } from \"./network.js\";\nimport { logNetworkFailure } from \"./networkUtils.js\";\n// For now, this package is versioned and released in unison with the specific drivers\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { calculateMaxWaitTime } from \"./runWithRetry.js\";\n// We double this value in first try in when we calculate time to wait for in \"calculateMaxWaitTime\" function.\nconst MissingFetchDelayInMs = 50;\n/**\n * Helper class to organize parallel fetching of data\n * It can be used to concurrently do many requests, while consuming\n * data in the right order. Take a look at UT for examples.\n * @param concurrency - level of concurrency\n * @param from - starting point of fetching data (inclusive)\n * @param to - ending point of fetching data. exclusive, or undefined if unknown\n * @param payloadSize - batch size\n * @param logger - logger to use\n * @param requestCallback - callback to request batches\n * @returns Queue that can be used to retrieve data\n * @internal\n */\nexport class ParallelRequests {\n get working() {\n return this.workingState === \"working\";\n }\n get canceled() {\n return this.workingState === \"canceled\";\n }\n constructor(from, to, payloadSize, logger, requestCallback, responseCallback) {\n this.to = to;\n this.payloadSize = payloadSize;\n this.logger = logger;\n this.requestCallback = requestCallback;\n this.responseCallback = responseCallback;\n this.results = new Map();\n this.workingState = \"working\";\n this.requestsInFlight = 0;\n this.endEvent = new Deferred();\n this.requests = 0;\n this.latestRequested = from;\n this.nextToDeliver = from;\n this.knewTo = to !== undefined;\n }\n cancel() {\n if (this.working) {\n this.workingState = \"canceled\";\n this.endEvent.resolve();\n }\n }\n async run(concurrency) {\n assert(concurrency > 0, 0x102 /* \"invalid level of concurrency\" */);\n assert(this.working, 0x103 /* \"trying to parallel run while not working\" */);\n let c = concurrency;\n while (c > 0) {\n c--;\n this.addRequest();\n }\n this.dispatch(); // will recalculate and trigger this.endEvent if needed\n return this.endEvent.promise;\n }\n done() {\n // We should satisfy request fully.\n assert(this.to !== undefined, 0x104 /* \"undefined end point for parallel fetch\" */);\n assert(this.nextToDeliver >= this.to, 0x105 /* \"unexpected end point for parallel fetch\" */);\n if (this.working) {\n this.workingState = \"done\";\n this.endEvent.resolve();\n }\n }\n fail(error) {\n if (this.working) {\n this.workingState = \"done\";\n this.endEvent.reject(error);\n }\n }\n dispatch() {\n while (this.working) {\n const value = this.results.get(this.nextToDeliver);\n if (value === undefined) {\n break;\n }\n this.results.delete(this.nextToDeliver);\n assert(value.length <= this.payloadSize, 0x1d9 /* \"addRequestCore() should break into smaller chunks\" */);\n this.nextToDeliver += value.length;\n this.responseCallback(value);\n }\n // Account for cancellation - state might be not in consistent state on cancelling operation\n if (this.working) {\n if (this.requestsInFlight === 0) {\n // we should have dispatched everything, no matter whether we knew about the end or not.\n // see comment in addRequestCore() around throwing away chunk if it's above this.to\n assert(this.results.size === 0, 0x107 /* \"ending dispatch with remaining results to be sent\" */);\n this.done();\n }\n else if (this.to !== undefined && this.nextToDeliver >= this.to) {\n // Learned about the end and dispatched all the ops up to it.\n // Ignore all the in-flight requests above boundary - unblock caller sooner.\n assert(!this.knewTo, 0x108 /* \"ending results dispatch but knew in advance about more requests\" */);\n this.done();\n }\n }\n }\n getNextChunk() {\n if (!this.working) {\n return undefined;\n }\n const from = this.latestRequested;\n if (this.to !== undefined) {\n if (this.to <= from) {\n return undefined;\n }\n }\n // this.latestRequested\n // inclusive on the right side! Exclusive on the left.\n this.latestRequested += this.payloadSize;\n if (this.to !== undefined) {\n this.latestRequested = Math.min(this.to, this.latestRequested);\n }\n assert(from < this.latestRequested, 0x109 /* \"unexpected next chunk position\" */);\n return { from, to: this.latestRequested };\n }\n addRequest() {\n const chunk = this.getNextChunk();\n if (chunk === undefined) {\n return;\n }\n this.addRequestCore(chunk.from, chunk.to).catch(this.fail.bind(this));\n }\n async addRequestCore(fromArg, toArg) {\n assert(this.working, 0x10a /* \"cannot add parallel request while not working\" */);\n let from = fromArg;\n let to = toArg;\n // to & from are exclusive\n this.requestsInFlight++;\n while (this.working) {\n const requestedLength = to - from;\n assert(requestedLength > 0, 0x10b /* \"invalid parallel request range\" */);\n // We should not be wasting time asking for something useless.\n if (this.to !== undefined) {\n assert(from < this.to, 0x10c /* \"invalid parallel request start point\" */);\n assert(to <= this.to, 0x10d /* \"invalid parallel request end point\" */);\n }\n this.requests++;\n const promise = this.requestCallback(this.requests, from, to, this.to !== undefined, {});\n // dispatch any prior received data\n this.dispatch();\n const { payload, cancel, partial } = await promise;\n if (cancel) {\n this.cancel();\n }\n if (this.to !== undefined && from >= this.to) {\n // while we were waiting for response, we learned on what is the boundary\n // We can get here (with actual result!) if situation changed while this request was in\n // flight, i.e. the end was extended over what we learn in some other request\n // While it's useful not to throw this result, this is very corner cases and makes logic\n // (including consistency checks) much harder to write correctly.\n // So for now, we are throwing this result out the window.\n assert(!this.knewTo, 0x10e /* \"should not throw result if we knew about boundary in advance\" */);\n // Learn how often it happens and if it's too wasteful to throw these chunks.\n // If it pops into our view a lot, we would need to reconsider how we approach it.\n // Note that this is not visible to user other than potentially not hitting 100% of\n // what we can in perf domain.\n if (payload.length !== 0) {\n this.logger.sendErrorEvent({\n eventName: \"ParallelRequests_GotExtra\",\n from,\n to,\n end: this.to,\n length: payload.length,\n });\n }\n break;\n }\n if (this.working) {\n const fromOrig = from;\n const length = payload.length;\n let fullChunk = requestedLength <= length; // we can possible get more than we asked.\n if (length !== 0) {\n // We can get more than we asked for!\n // This can screw up logic in dispatch!\n // So push only batch size, and keep the rest for later - if conditions are favorable, we\n // will be able to use it. If not (parallel request overlapping these ops), it's easier to\n // discard them and wait for another (overlapping) request to come in later.\n if (requestedLength < length) {\n // This is error in a sense that it's not expected and likely points bug in other layer.\n // This layer copes with this situation just fine.\n this.logger.sendTelemetryEvent({\n eventName: \"ParallelRequests_Over\",\n from,\n to,\n length,\n });\n }\n const data = payload.splice(0, requestedLength);\n this.results.set(from, data);\n from += data.length;\n }\n else {\n // 1. empty (partial) chunks should not be returned by various caching / adapter layers -\n // they should fall back to next layer. This might be important invariant to hold to ensure\n // that we are less likely have bugs where such layer would keep returning empty partial\n // result on each call.\n // 2. Current invariant is that callback does retries until it gets something,\n // with the goal of failing if zero data is retrieved in given amount of time.\n // This is very specific property of storage / ops, so this logic is not here, but given only\n // one user of this class, we assert that to catch issues earlier.\n // These invariant can be relaxed if needed.\n assert(!partial, 0x10f /* \"empty/partial chunks should not be returned by caching\" */);\n assert(!this.knewTo, 0x110 /* \"callback should retry until valid fetch before it learns new boundary\" */);\n }\n if (!partial && !fullChunk) {\n if (!this.knewTo) {\n if (this.to === undefined || this.to > from) {\n // The END\n this.to = from;\n }\n break;\n }\n // We know that there are more items to be retrieved\n // Can we get partial chunk? Ideally storage indicates that's not a full chunk\n // Note that it's possible that not all ops hit storage yet.\n // We will come back to request more, and if we can't get any more ops soon, it's\n // catastrophic failure (see comment above on responsibility of callback to return something)\n // This layer will just keep trying until it gets full set.\n this.logger.sendPerformanceEvent({\n eventName: \"ParallelRequests_Partial\",\n from: fromOrig,\n to,\n length,\n });\n }\n if (to === this.latestRequested) {\n // we can go after full chunk at the end if we received partial chunk, or more than asked\n // Also if we got more than we asked to, we can actually use those ops!\n while (payload.length !== 0) {\n const data = payload.splice(0, requestedLength);\n this.results.set(from, data);\n from += data.length;\n }\n this.latestRequested = from;\n fullChunk = true;\n }\n if (fullChunk) {\n const chunk = this.getNextChunk();\n if (chunk === undefined) {\n break;\n }\n from = chunk.from;\n to = chunk.to;\n }\n }\n }\n this.requestsInFlight--;\n this.dispatch();\n }\n}\n/**\n * Helper queue class to allow async push / pull\n * It's essentially a pipe allowing multiple writers, and single reader\n * @internal\n */\nexport class Queue {\n constructor() {\n this.queue = [];\n this.done = false;\n }\n pushValue(value) {\n this.pushCore(Promise.resolve({ done: false, value }));\n }\n pushError(error) {\n this.pushCore(Promise.reject(error));\n this.done = true;\n }\n pushDone() {\n this.pushCore(Promise.resolve({ done: true }));\n this.done = true;\n }\n pushCore(value) {\n assert(!this.done, 0x112 /* \"cannot push onto queue if done\" */);\n if (this.deferred) {\n assert(this.queue.length === 0, 0x113 /* \"deferred queue should be empty\" */);\n this.deferred.resolve(value);\n this.deferred = undefined;\n }\n else {\n this.queue.push(value);\n }\n }\n async read() {\n assert(this.deferred === undefined, 0x114 /* \"cannot pop if deferred\" */);\n const value = this.queue.shift();\n if (value !== undefined) {\n return value;\n }\n assert(!this.done, 0x115 /* \"queue should not be done during pop\" */);\n this.deferred = new Deferred();\n return this.deferred.promise;\n }\n}\nconst waitForOnline = async () => {\n // Only wait if we have a strong signal that we're offline - otherwise assume we're online.\n if (globalThis.navigator?.onLine === false && globalThis.addEventListener !== undefined) {\n return new Promise((resolve) => {\n const resolveAndRemoveListener = () => {\n resolve();\n globalThis.removeEventListener(\"online\", resolveAndRemoveListener);\n };\n globalThis.addEventListener(\"online\", resolveAndRemoveListener);\n });\n }\n};\n/**\n * Retrieve single batch of ops\n * @param request - request index\n * @param from - inclusive boundary\n * @param to - exclusive boundary\n * @param telemetryEvent - telemetry event used to track consecutive batch of requests\n * @param strongTo - tells if ops in range from...to have to be there and have to be retrieved.\n * If false, returning less ops would mean we reached end of file.\n * @param logger - logger object to use to log progress & errors\n * @param signal - cancelation signal\n * @param scenarioName - reason for fetching ops\n * @returns An object with resulting ops and cancellation / partial result flags\n */\nasync function getSingleOpBatch(get, props, strongTo, logger, signal, scenarioName) {\n let lastSuccessTime;\n let totalRetryAfterTime = 0;\n let telemetryEvent;\n let retry = 0;\n const nothing = { partial: false, cancel: true, payload: [] };\n let waitStartTime = 0;\n let waitTime = MissingFetchDelayInMs;\n while (signal?.aborted !== true) {\n retry++;\n let lastError;\n const startTime = performance.now();\n try {\n // Issue async request for deltas\n const { messages, partialResult } = await get({ ...props, retry } /* telemetry props */);\n // If we got messages back, return them. Return regardless of whether we got messages back if we didn't\n // specify a \"to\", since we don't have an expectation of how many to receive.\n if (messages.length !== 0 || !strongTo) {\n // Report this event if we waited to fetch ops due to being offline or throttling.\n telemetryEvent?.end({\n duration: totalRetryAfterTime,\n ...props,\n reason: scenarioName,\n });\n return { payload: messages, cancel: false, partial: partialResult };\n }\n // Otherwise, the storage gave us back an empty set of ops but we were expecting a non-empty set.\n if (lastSuccessTime === undefined) {\n // Take timestamp of the first time server responded successfully, even though it wasn't with the ops we asked for.\n // If we keep getting empty responses we'll eventually fail out below.\n lastSuccessTime = performance.now();\n }\n else if (performance.now() - lastSuccessTime > 30000) {\n // If we are connected and receiving proper responses from server, but can't get any ops back,\n // then give up after some time. This likely indicates the issue with ordering service not flushing\n // ops to storage quick enough, and possibly waiting for summaries, while summarizer can't get\n // current as it can't get ops.\n throw createGenericNetworkError(\n // pre-0.58 error message: failedToRetrieveOpsFromStorage:TooManyRetries\n \"Failed to retrieve ops from storage (Too Many Retries)\", { canRetry: false }, {\n retry,\n driverVersion,\n ...props,\n });\n }\n }\n catch (error) {\n lastError = error;\n const canRetry = canRetryOnError(error);\n const retryAfter = getRetryDelayFromError(error);\n // This will log to error table only if the error is non-retryable\n logNetworkFailure(logger, {\n eventName: \"GetDeltas_Error\",\n ...props,\n retry,\n duration: performance.now() - startTime,\n retryAfter,\n reason: scenarioName,\n }, error);\n if (!canRetry) {\n // It's game over scenario.\n throw error;\n }\n }\n if (telemetryEvent === undefined) {\n waitStartTime = performance.now();\n telemetryEvent = PerformanceEvent.start(logger, {\n eventName: \"GetDeltasWaitTime\",\n });\n }\n waitTime = calculateMaxWaitTime(waitTime, lastError);\n // If we get here something has gone wrong - either got an unexpected empty set of messages back or a real error.\n // Either way we will wait a little bit before retrying.\n await new Promise((resolve) => {\n setTimeout(resolve, waitTime);\n });\n // If we believe we're offline, we assume there's no point in trying until we at least think we're online.\n // NOTE: This isn't strictly true for drivers that don't require network (e.g. local driver). Really this logic\n // should probably live in the driver.\n await waitForOnline();\n totalRetryAfterTime += performance.now() - waitStartTime;\n }\n return nothing;\n}\n/**\n * Request ops from storage\n * @param get - Getter callback to get individual batches\n * @param concurrency - Number of concurrent requests to make\n * @param fromTotal - starting sequence number to fetch (inclusive)\n * @param toTotal - max (exclusive) sequence number to fetch\n * @param payloadSize - Payload size\n * @param logger - Logger to log progress and errors\n * @param signal - Cancelation signal\n * @param scenarioName - Reason for fetching ops\n * @returns Messages fetched\n * @internal\n */\nexport function requestOps(get, concurrency, fromTotal, toTotal, payloadSize, logger, signal, scenarioName) {\n let requests = 0;\n let lastFetch;\n let length = 0;\n const queue = new Queue();\n const propsTotal = {\n fromTotal,\n toTotal,\n };\n const telemetryEvent = PerformanceEvent.start(logger, {\n eventName: \"GetDeltas\",\n ...propsTotal,\n reason: scenarioName,\n });\n const manager = new ParallelRequests(fromTotal, toTotal, payloadSize, logger, async (request, from, to, strongTo, propsPerRequest) => {\n requests++;\n return getSingleOpBatch(async (propsAll) => get(from, to, propsAll), { request, from, to, ...propsTotal, ...propsPerRequest }, strongTo, logger, signal, scenarioName);\n }, (deltas) => {\n // Assert continuing and right start.\n if (lastFetch === undefined) {\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n assert(deltas[0].sequenceNumber === fromTotal, 0x26d /* \"wrong start\" */);\n }\n else {\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n assert(deltas[0].sequenceNumber === lastFetch + 1, 0x26e /* \"wrong start\" */);\n }\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n lastFetch = deltas[deltas.length - 1].sequenceNumber;\n assert(\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n lastFetch - deltas[0].sequenceNumber + 1 === deltas.length, 0x26f /* \"continuous and no duplicates\" */);\n length += deltas.length;\n queue.pushValue(deltas);\n });\n // Implement faster cancellation. getSingleOpBatch() checks signal, but only in between\n // waits (up to 10 seconds) and fetches (can take infinite amount of time).\n // While every such case should be improved and take into account signal (and thus cancel immediately),\n // it is beneficial to have catch-all\n const listener = (event) => {\n manager.cancel();\n };\n if (signal !== undefined) {\n signal.addEventListener(\"abort\", listener);\n }\n manager\n .run(concurrency)\n .finally(() => {\n if (signal !== undefined) {\n signal.removeEventListener(\"abort\", listener);\n }\n })\n .then(() => {\n const props = {\n lastFetch,\n length,\n requests,\n };\n if (manager.canceled) {\n telemetryEvent.cancel({ ...props, error: \"ops request cancelled by client\" });\n }\n else {\n assert(toTotal === undefined || (lastFetch !== undefined && lastFetch >= toTotal - 1), 0x270 /* \"All requested ops fetched\" */);\n telemetryEvent.end(props);\n }\n queue.pushDone();\n })\n .catch((error) => {\n telemetryEvent.cancel({\n lastFetch,\n length,\n requests,\n }, error);\n queue.pushError(error);\n });\n return queue;\n}\n/**\n * @internal\n */\nexport const emptyMessageStream = {\n read: async () => {\n return { done: true };\n },\n};\n/**\n * @internal\n */\nexport function streamFromMessages(messagesArg) {\n let messages = messagesArg;\n return {\n read: async () => {\n if (messages === undefined) {\n return { done: true };\n }\n const value = await messages;\n messages = undefined;\n return value.length === 0 ? { done: true } : { done: false, value };\n },\n };\n}\n/**\n * @internal\n */\nexport function streamObserver(stream, handler) {\n return {\n read: async () => {\n const value = await stream.read();\n handler(value);\n return value;\n },\n };\n}\n//# sourceMappingURL=parallelRequests.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getW3CData, validateMessages } from \"@fluidframework/driver-base/internal\";\nimport { emptyMessageStream, readAndParse, requestOps, streamObserver, } from \"@fluidframework/driver-utils/internal\";\nimport { PerformanceEvent, } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Maximum number of ops we can fetch at a time. This should be kept at 2k, as\n * server determines whether to try to fallback to long-term storage if the ops range requested is larger than\n * what they have locally available in short-term storage. So if we request 2k ops, they know it is not a\n * specific request and they don't fall to long term storage which takes time.\n * Please coordinate to AFR team if this value need to be changed.\n */\nconst MaxBatchDeltas = 2000;\n/**\n * Storage service limited to only being able to fetch documents for a specific document\n */\nexport class DocumentDeltaStorageService {\n constructor(tenantId, id, deltaStorageService, documentStorageService, logger) {\n this.tenantId = tenantId;\n this.id = id;\n this.deltaStorageService = deltaStorageService;\n this.documentStorageService = documentStorageService;\n this.logger = logger;\n this.logtailSha = documentStorageService.logTailSha;\n }\n fetchMessages(fromTotal, toTotal, abortSignal, cachedOnly, fetchReason) {\n if (cachedOnly) {\n return emptyMessageStream;\n }\n let opsFromSnapshot = 0;\n let opsFromStorage = 0;\n const requestCallback = async (from, to, telemetryProps) => {\n this.snapshotOps = this.logtailSha\n ? await readAndParse(this.documentStorageService, this.logtailSha)\n : [];\n this.logtailSha = undefined;\n if (this.snapshotOps !== undefined && this.snapshotOps.length !== 0) {\n const messages = this.snapshotOps.filter((op) => op.sequenceNumber >= from && op.sequenceNumber < to);\n validateMessages(\"snapshotOps\", messages, from, this.logger, false /* strict */);\n if (messages.length > 0 && messages[0] && messages[0].sequenceNumber === from) {\n this.snapshotOps = this.snapshotOps.filter((op) => op.sequenceNumber >= to);\n opsFromSnapshot += messages.length;\n return { messages, partialResult: true };\n }\n this.snapshotOps = undefined;\n }\n const ops = await this.deltaStorageService.get(this.tenantId, this.id, from, to);\n validateMessages(\"storage\", ops.messages, from, this.logger, false /* strict */);\n opsFromStorage += ops.messages.length;\n return ops;\n };\n const stream = requestOps(async (from, to, telemetryProps) => {\n const result = await requestCallback(from, to, telemetryProps);\n // Catch all case, just in case\n validateMessages(\"catch all\", result.messages, from, this.logger);\n return result;\n }, \n // Staging: starting with no concurrency, listening for feedback first.\n // In future releases we will switch to actual concurrency\n 1, // concurrency\n fromTotal, // inclusive\n toTotal, // exclusive\n MaxBatchDeltas, this.logger, abortSignal, fetchReason);\n return streamObserver(stream, (result) => {\n if (result.done && opsFromSnapshot + opsFromStorage !== 0) {\n this.logger.sendPerformanceEvent({\n eventName: \"CacheOpsRetrieved\",\n opsFromSnapshot,\n opsFromStorage,\n });\n }\n });\n }\n}\n/**\n * Provides access to the underlying delta storage on the server for routerlicious driver.\n */\nexport class DeltaStorageService {\n constructor(url, restWrapper, logger, getRestWrapper = async () => this.restWrapper, getDeltaStorageUrl = () => this.url) {\n this.url = url;\n this.restWrapper = restWrapper;\n this.logger = logger;\n this.getRestWrapper = getRestWrapper;\n this.getDeltaStorageUrl = getDeltaStorageUrl;\n }\n async get(tenantId, id, from, // inclusive\n to) {\n const ops = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"OpsFetch\",\n from,\n to,\n }, async (event) => {\n const restWrapper = await this.getRestWrapper();\n const url = this.getDeltaStorageUrl();\n const response = await restWrapper.get(url, {\n from: from - 1,\n to,\n });\n event.end({\n length: response.content.length,\n details: JSON.stringify({\n firstOpSeqNumber: response.content[0]?.sequenceNumber,\n lastOpSeqNumber: response.content[response.content.length - 1]?.sequenceNumber,\n }),\n ...response.propsToLog,\n ...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n });\n return response.content;\n });\n // It is assumed that server always returns all the ops that it has in the range that was requested.\n // This may change in the future, if so, we need to adjust and receive \"end\" value from server in such case.\n return { messages: ops, partialResult: false };\n }\n}\n//# sourceMappingURL=deltaStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/driver-base\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LogLevel, } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { ScopeType, } from \"@fluidframework/driver-definitions/internal\";\nimport { UsageError, createGenericNetworkError } from \"@fluidframework/driver-utils/internal\";\nimport { EventEmitterWithErrorHandling, createChildMonitoringContext, extractLogSafeErrorProperties, getCircularReplacer, normalizeError, } from \"@fluidframework/telemetry-utils/internal\";\n// For now, this package is versioned and released in unison with the specific drivers\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\n/**\n * Represents a connection to a stream of delta updates.\n * @internal\n */\nexport class DocumentDeltaConnection extends EventEmitterWithErrorHandling {\n get hasDetails() {\n return !!this._details;\n }\n get disposed() {\n assert(this._disposed || this.socket.connected, 0x244 /* \"Socket is closed, but connection is not!\" */);\n return this._disposed;\n }\n /**\n * @deprecated Implementors should manage their own logger or monitoring context\n */\n get logger() {\n return this.mc.logger;\n }\n get details() {\n if (!this._details) {\n throw new Error(\"Internal error: calling method before _details is initialized!\");\n }\n return this._details;\n }\n /**\n * @param socket - websocket to be used\n * @param documentId - ID of the document\n * @param logger - for reporting telemetry events\n * @param enableLongPollingDowngrades - allow connection to be downgraded to long-polling on websocket failure\n */\n constructor(socket, documentId, logger, enableLongPollingDowngrades = false, connectionId) {\n super((name, error) => {\n this.addPropsToError(error);\n logger.sendErrorEvent({\n eventName: \"DeltaConnection:EventException\",\n // Coerce to string as past typings also allowed symbols and number, but\n // we want telemtry properties to be consistently string.\n name: String(name),\n }, error);\n });\n this.socket = socket;\n this.documentId = documentId;\n this.enableLongPollingDowngrades = enableLongPollingDowngrades;\n this.connectionId = connectionId;\n // Listen for ops sent before we receive a response to connect_document\n this.queuedMessages = [];\n this.queuedSignals = [];\n /**\n * A flag to indicate whether we have our handler attached. If it's attached, we're queueing incoming ops\n * to later be retrieved via initialMessages.\n */\n this.earlyOpHandlerAttached = false;\n // Listeners only needed while the connection is in progress\n this.connectionListeners = new Map();\n // Listeners used throughout the lifetime of the DocumentDeltaConnection\n this.trackedListeners = new Map();\n /**\n * Flag to indicate whether the DocumentDeltaConnection is expected to still be capable of sending messages.\n * After disconnection, we flip this to prevent any stale messages from being emitted.\n */\n this._disposed = false;\n this.earlyOpHandler = (documentId, msgs) => {\n this.queuedMessages.push(...msgs);\n };\n this.earlySignalHandler = (msg) => {\n if (Array.isArray(msg)) {\n this.queuedSignals.push(...msg);\n }\n else {\n this.queuedSignals.push(msg);\n }\n };\n this.mc = createChildMonitoringContext({ logger, namespace: \"DeltaConnection\" });\n this.on(\"newListener\", (event, _listener) => {\n assert(!this.disposed, 0x20a /* \"register for event on disposed object\" */);\n // Some events are already forwarded - see this.addTrackedListener() calls in initialize().\n if (DocumentDeltaConnection.eventsAlwaysForwarded.includes(event)) {\n assert(this.trackedListeners.has(event), 0x245 /* \"tracked listener\" */);\n return;\n }\n if (!DocumentDeltaConnection.eventsToForward.includes(event)) {\n throw new Error(`DocumentDeltaConnection: Registering for unknown event: ${event}`);\n }\n // Whenever listener is added, we should subscribe on same event on socket, so these two things\n // should be in sync. This currently assumes that nobody unregisters and registers back listeners,\n // and that there are no \"internal\" listeners installed (like \"error\" case we skip above)\n // Better flow might be to always unconditionally register all handlers on successful connection,\n // though some logic (naming assert in initialMessages getter) might need to be adjusted (it becomes noop)\n assert((this.listeners(event).length !== 0) === this.trackedListeners.has(event), 0x20b /* \"mismatch\" */);\n if (!this.trackedListeners.has(event)) {\n if (event === \"pong\") {\n // Empty callback for tracking purposes in this class\n this.trackedListeners.set(\"pong\", () => { });\n const sendPingLoop = () => {\n const start = Date.now();\n this.socket.volatile?.emit(\"ping\", () => {\n this.emit(\"pong\", Date.now() - start);\n // Schedule another ping event in 1 minute\n this.trackLatencyTimeout = setTimeout(() => {\n sendPingLoop();\n }, 1000 * 60);\n });\n };\n sendPingLoop();\n }\n else {\n this.addTrackedListener(event, (...args) => {\n this.emit(event, ...args);\n });\n }\n }\n });\n }\n /**\n * Get the ID of the client who is sending the message\n *\n * @returns the client ID\n */\n get clientId() {\n return this.details.clientId;\n }\n /**\n * Get the mode of the client\n *\n * @returns the client mode\n */\n get mode() {\n return this.details.mode;\n }\n /**\n * Get the claims of the client who is sending the message\n *\n * @returns client claims\n */\n get claims() {\n return this.details.claims;\n }\n /**\n * Get whether or not this is an existing document\n *\n * @returns true if the document exists\n */\n get existing() {\n return this.details.existing;\n }\n /**\n * Get the maximum size of a message before chunking is required\n *\n * @returns the maximum size of a message before chunking is required\n */\n get maxMessageSize() {\n return this.details.serviceConfiguration.maxMessageSize;\n }\n /**\n * Semver of protocol being used with the service\n */\n get version() {\n return this.details.version;\n }\n /**\n * Configuration details provided by the service\n */\n get serviceConfiguration() {\n return this.details.serviceConfiguration;\n }\n checkNotDisposed() {\n assert(!this.disposed, 0x20c /* \"connection disposed\" */);\n }\n /**\n * Get messages sent during the connection\n *\n * @returns messages sent during the connection\n */\n get initialMessages() {\n this.checkNotDisposed();\n // If we call this when the earlyOpHandler is not attached, then the queuedMessages may not include the\n // latest ops. This could possibly indicate that initialMessages was called twice.\n assert(this.earlyOpHandlerAttached, 0x08e /* \"Potentially missed initial messages\" */);\n // We will lose ops and perf will tank as we need to go to storage to become current!\n assert(this.listeners(\"op\").length !== 0, 0x08f /* \"No op handler is setup!\" */);\n this.removeEarlyOpHandler();\n if (this.queuedMessages.length > 0) {\n // Some messages were queued.\n // add them to the list of initialMessages to be processed\n this.details.initialMessages.push(...this.queuedMessages);\n this.details.initialMessages.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n this.queuedMessages.length = 0;\n }\n return this.details.initialMessages;\n }\n /**\n * Get signals sent during the connection\n *\n * @returns signals sent during the connection\n */\n get initialSignals() {\n this.checkNotDisposed();\n assert(this.listeners(\"signal\").length !== 0, 0x090 /* \"No signal handler is setup!\" */);\n this.removeEarlySignalHandler();\n if (this.queuedSignals.length > 0) {\n // Some signals were queued.\n // add them to the list of initialSignals to be processed\n this.details.initialSignals.push(...this.queuedSignals);\n this.queuedSignals.length = 0;\n }\n return this.details.initialSignals;\n }\n /**\n * Get initial client list\n *\n * @returns initial client list sent during the connection\n */\n get initialClients() {\n this.checkNotDisposed();\n return this.details.initialClients;\n }\n emitMessages(type, messages) {\n // Although the implementation here disconnects the socket and does not reuse it, other subclasses\n // (e.g. OdspDocumentDeltaConnection) may reuse the socket. In these cases, we need to avoid emitting\n // on the still-live socket.\n if (!this.disposed) {\n this.socket.emit(type, this.clientId, messages);\n }\n }\n /**\n * Submits a new delta operation to the server\n *\n * @param message - delta operation to submit\n */\n submit(messages) {\n this.checkNotDisposed();\n this.emitMessages(\"submitOp\", [messages]);\n }\n /**\n * Submits a new signal to the server\n *\n * @param content - Content of the signal.\n * @param targetClientId - When specified, the signal is only sent to the provided client id.\n */\n submitSignal(content, targetClientId) {\n this.checkNotDisposed();\n if (targetClientId && this.details.supportedFeatures?.submit_signals_v2 !== true) {\n throw new UsageError(\"Sending signals to specific client ids is not supported.\");\n }\n this.emitMessages(\"submitSignal\", [[content]]);\n }\n /**\n * Disconnect from the websocket and close the websocket too.\n */\n closeSocket(error) {\n if (this._disposed) {\n // This would be rare situation due to complexity around socket emitting events.\n return;\n }\n this.closeSocketCore(error);\n }\n closeSocketCore(error) {\n this.disconnect(error);\n }\n /**\n * Disconnect from the websocket, and permanently disable this DocumentDeltaConnection and close the socket.\n * However the OdspDocumentDeltaConnection differ in dispose as in there we don't close the socket. There is no\n * multiplexing here, so we need to close the socket here.\n */\n dispose() {\n this.logger.sendTelemetryEvent({\n eventName: \"ClientClosingDeltaConnection\",\n driverVersion,\n details: JSON.stringify({\n ...this.getConnectionDetailsProps(),\n }),\n });\n this.disconnect(createGenericNetworkError(\n // pre-0.58 error message: clientClosingConnection\n \"Client closing delta connection\", { canRetry: true }, { driverVersion }));\n }\n disconnect(err) {\n // Can't check this.disposed here, as we get here on socket closure,\n // so _disposed & socket.connected might be not in sync while processing\n // \"dispose\" event.\n if (this._disposed) {\n return;\n }\n if (this.trackLatencyTimeout !== undefined) {\n clearTimeout(this.trackLatencyTimeout);\n this.trackLatencyTimeout = undefined;\n }\n // We set the disposed flag as a part of the contract for overriding the disconnect method. This is used by\n // DocumentDeltaConnection to determine if emitting messages (ops) on the socket is allowed, which is\n // important since OdspDocumentDeltaConnection reuses the socket rather than truly disconnecting it. Note that\n // OdspDocumentDeltaConnection may still send disconnect_document which is allowed; this is only intended\n // to prevent normal messages from being emitted.\n this._disposed = true;\n // Remove all listeners listening on the socket. These are listeners on socket and not on this connection\n // object. Anyway since we have disposed this connection object, nobody should listen to event on socket\n // anymore.\n this.removeTrackedListeners();\n // Clear the connection/socket before letting the deltaManager/connection manager know about the disconnect.\n this.disconnectCore();\n // Let user of connection object know about disconnect.\n this.emit(\"disconnect\", err);\n }\n /**\n * Disconnect from the websocket.\n * @param reason - reason for disconnect\n */\n disconnectCore() {\n this.socket.disconnect();\n }\n async initialize(connectMessage, timeout) {\n this.socket.on(\"op\", this.earlyOpHandler);\n this.socket.on(\"signal\", this.earlySignalHandler);\n this.earlyOpHandlerAttached = true;\n // Socket.io's reconnect_attempt event is unreliable, so we track connect_error count instead.\n let internalSocketConnectionFailureCount = 0;\n const isInternalSocketReconnectionEnabled = () => this.socket.io.reconnection();\n const getMaxInternalSocketReconnectionAttempts = () => isInternalSocketReconnectionEnabled() ? this.socket.io.reconnectionAttempts() : 0;\n const getMaxAllowedInternalSocketConnectionFailures = () => getMaxInternalSocketReconnectionAttempts() + 1;\n this._details = await new Promise((resolve, reject) => {\n const failAndCloseSocket = (err) => {\n try {\n this.closeSocket(err);\n }\n catch (failError) {\n const normalizedError = this.addPropsToError(failError);\n this.logger.sendErrorEvent({ eventName: \"CloseSocketError\" }, normalizedError);\n }\n reject(err);\n };\n const failConnection = (err) => {\n try {\n this.disconnect(err);\n }\n catch (failError) {\n const normalizedError = this.addPropsToError(failError);\n this.logger.sendErrorEvent({ eventName: \"FailConnectionError\" }, normalizedError);\n }\n reject(err);\n };\n // Immediately set the connection timeout.\n // Give extra 2 seconds for handshake on top of socket connection timeout.\n this.socketConnectionTimeout = setTimeout(() => {\n failConnection(this.createErrorObject(\"orderingServiceHandshakeTimeout\"));\n }, timeout + 2000);\n // Listen for connection issues\n this.addConnectionListener(\"connect_error\", (error) => {\n internalSocketConnectionFailureCount++;\n let isWebSocketTransportError = false;\n try {\n const description = error?.description;\n const context = error?.context;\n if (context && typeof context === \"object\") {\n const statusText = context.statusText?.code;\n // Self-Signed Certificate ErrorCode Found in error.context\n if (statusText === \"DEPTH_ZERO_SELF_SIGNED_CERT\") {\n failAndCloseSocket(this.createErrorObject(\"connect_error\", error, false));\n return;\n }\n }\n else if (description && typeof description === \"object\") {\n const errorCode = description.error?.code;\n // Self-Signed Certificate ErrorCode Found in error.description\n if (errorCode === \"DEPTH_ZERO_SELF_SIGNED_CERT\") {\n failAndCloseSocket(this.createErrorObject(\"connect_error\", error, false));\n return;\n }\n if (error.type === \"TransportError\") {\n isWebSocketTransportError = true;\n }\n // That's a WebSocket. Clear it as we can't log it.\n description.target = undefined;\n }\n }\n catch (_e) { }\n // Handle socket transport downgrading when not offline.\n if (isWebSocketTransportError &&\n this.enableLongPollingDowngrades &&\n this.socket.io.opts.transports?.[0] !== \"polling\") {\n // Downgrade transports to polling upgrade mechanism.\n this.socket.io.opts.transports = [\"polling\", \"websocket\"];\n // Don't alter reconnection behavior if already enabled.\n if (!isInternalSocketReconnectionEnabled()) {\n // Allow single reconnection attempt using polling upgrade mechanism.\n this.socket.io.reconnection(true);\n this.socket.io.reconnectionAttempts(1);\n }\n }\n // Allow built-in socket.io reconnection handling.\n if (isInternalSocketReconnectionEnabled() &&\n internalSocketConnectionFailureCount <\n getMaxAllowedInternalSocketConnectionFailures()) {\n // Reconnection is enabled and maximum reconnect attempts have not been reached.\n return;\n }\n failAndCloseSocket(this.createErrorObject(\"connect_error\", error));\n });\n // Listen for timeouts\n this.addConnectionListener(\"connect_timeout\", () => {\n failAndCloseSocket(this.createErrorObject(\"connect_timeout\"));\n });\n this.addConnectionListener(\"connect_document_success\", (response) => {\n // If we sent a nonce and the server supports nonces, check that the nonces match\n if (connectMessage.nonce !== undefined &&\n response.nonce !== undefined &&\n response.nonce !== connectMessage.nonce) {\n return;\n }\n const requestedMode = connectMessage.mode;\n const actualMode = response.mode;\n const writingPermitted = response.claims.scopes.includes(ScopeType.DocWrite);\n if (writingPermitted) {\n // The only time we expect a mismatch in requested/actual is if we lack write permissions\n // In this case we will get \"read\", even if we requested \"write\"\n if (actualMode !== requestedMode) {\n failConnection(this.createErrorObject(\"connect_document_success\", \"Connected in a different mode than was requested\", false));\n return;\n }\n }\n else {\n if (actualMode === \"write\") {\n failConnection(this.createErrorObject(\"connect_document_success\", \"Connected in write mode without write permissions\", false));\n return;\n }\n }\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectDocumentSuccess\",\n pendingClientId: response.clientId,\n }, undefined, LogLevel.verbose);\n this.checkpointSequenceNumber = response.checkpointSequenceNumber;\n this.removeConnectionListeners();\n resolve(response);\n });\n // Socket can be disconnected while waiting for Fluid protocol messages\n // (connect_document_error / connect_document_success), as well as before DeltaManager\n // had a chance to register its handlers.\n this.addTrackedListener(\"disconnect\", (reason, details) => {\n failAndCloseSocket(this.createErrorObjectWithProps(\"disconnect\", reason, {\n socketErrorType: details?.context?.type,\n // https://www.rfc-editor.org/rfc/rfc6455#section-7.4\n socketCode: details?.context?.code,\n }));\n });\n this.addTrackedListener(\"error\", (error) => {\n // This includes \"Invalid namespace\" error, which we consider critical (reconnecting will not help)\n const err = this.createErrorObject(\"error\", error, error !== \"Invalid namespace\");\n // Disconnect socket - required if happened before initial handshake\n failAndCloseSocket(err);\n });\n this.addConnectionListener(\"connect_document_error\", (error) => {\n // If we sent a nonce and the server supports nonces, check that the nonces match\n if (connectMessage.nonce !== undefined &&\n error.nonce !== undefined &&\n error.nonce !== connectMessage.nonce) {\n return;\n }\n // This is not an socket.io error - it's Fluid protocol error.\n // In this case fail connection and indicate that we were unable to create connection\n failConnection(this.createErrorObject(\"connect_document_error\", error));\n });\n this.socket.emit(\"connect_document\", connectMessage);\n });\n assert(!this.disposed, 0x246 /* \"checking consistency of socket & _disposed flags\" */);\n }\n addPropsToError(errorToBeNormalized) {\n const normalizedError = normalizeError(errorToBeNormalized, {\n props: {\n details: JSON.stringify({\n ...this.getConnectionDetailsProps(),\n }),\n },\n });\n return normalizedError;\n }\n getConnectionDetailsProps() {\n return {\n disposed: this._disposed,\n socketConnected: this.socket?.connected,\n clientId: this._details?.clientId,\n connectionId: this.connectionId,\n };\n }\n removeEarlyOpHandler() {\n this.socket.removeListener(\"op\", this.earlyOpHandler);\n this.earlyOpHandlerAttached = false;\n }\n removeEarlySignalHandler() {\n this.socket.removeListener(\"signal\", this.earlySignalHandler);\n }\n addConnectionListener(event, listener) {\n assert(!DocumentDeltaConnection.eventsAlwaysForwarded.includes(event), 0x247 /* \"Use addTrackedListener instead\" */);\n assert(!DocumentDeltaConnection.eventsToForward.includes(event), 0x248 /* \"should not subscribe to forwarded events\" */);\n this.socket.on(event, listener);\n assert(!this.connectionListeners.has(event), 0x20d /* \"double connection listener\" */);\n this.connectionListeners.set(event, listener);\n }\n addTrackedListener(event, listener) {\n this.socket.on(event, listener);\n assert(!this.trackedListeners.has(event), 0x20e /* \"double tracked listener\" */);\n this.trackedListeners.set(event, listener);\n }\n removeTrackedListeners() {\n for (const [event, listener] of this.trackedListeners.entries()) {\n this.socket.off(event, listener);\n }\n // removeTrackedListeners removes all listeners, including connection listeners\n this.removeConnectionListeners();\n this.removeEarlyOpHandler();\n this.removeEarlySignalHandler();\n this.trackedListeners.clear();\n }\n removeConnectionListeners() {\n if (this.socketConnectionTimeout !== undefined) {\n clearTimeout(this.socketConnectionTimeout);\n }\n for (const [event, listener] of this.connectionListeners.entries()) {\n this.socket.off(event, listener);\n }\n this.connectionListeners.clear();\n }\n getErrorMessage(error) {\n if (error?.type !== \"TransportError\") {\n return extractLogSafeErrorProperties(error, true).message;\n }\n // JSON.stringify drops Error.message\n const messagePrefix = error?.message !== undefined ? `${error.message}: ` : \"\";\n // Websocket errors reported by engine.io-client.\n // They are Error objects with description containing WS error and description = \"TransportError\"\n // Please see https://github.com/socketio/engine.io-client/blob/7245b80/lib/transport.ts#L44,\n return `${messagePrefix}${JSON.stringify(error, getCircularReplacer())}`;\n }\n createErrorObjectWithProps(handler, error, props, canRetry = true) {\n return createGenericNetworkError(`socket.io (${handler}): ${this.getErrorMessage(error)}`, { canRetry }, {\n ...props,\n driverVersion,\n details: JSON.stringify({\n ...this.getConnectionDetailsProps(),\n }),\n scenarioName: handler,\n });\n }\n /**\n * Error raising for socket.io issues\n */\n createErrorObject(handler, error, canRetry = true) {\n return createGenericNetworkError(`socket.io (${handler}): ${this.getErrorMessage(error)}`, { canRetry }, {\n driverVersion,\n details: JSON.stringify({\n ...this.getConnectionDetailsProps(),\n }),\n scenarioName: handler,\n });\n }\n}\nDocumentDeltaConnection.eventsToForward = [\"nack\", \"op\", \"signal\", \"pong\"];\n// WARNING: These are critical events that we can't miss, so registration for them has to be in place at all times!\n// Including before handshake is over, and after that (but before DeltaManager had a chance to put its own handlers)\nDocumentDeltaConnection.eventsAlwaysForwarded = [\"disconnect\", \"error\"];\n//# sourceMappingURL=documentDeltaConnection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/routerlicious-driver\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { AuthorizationError, GenericNetworkError, NonRetryableError, createGenericNetworkError, } from \"@fluidframework/driver-utils/internal\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\n/**\n * Routerlicious Error types\n * Different error types that may be thrown by the routerlicious driver\n * @internal\n */\nexport const RouterliciousErrorTypes = {\n // Inherit base driver error types\n ...DriverErrorTypes,\n /**\n * SSL Certificate Error.\n */\n sslCertError: \"sslCertError\",\n};\nexport function createR11sNetworkError(errorMessage, statusCode, retryAfterMs) {\n let error;\n const props = { statusCode, driverVersion };\n switch (statusCode) {\n case 401:\n // The first 401 is manually retried in RouterliciousRestWrapper with a refreshed token,\n // so we treat repeat 401s the same as 403.\n case 403:\n error = new AuthorizationError(errorMessage, undefined, undefined, props);\n break;\n case 404:\n const errorType = RouterliciousErrorTypes.fileNotFoundOrAccessDeniedError;\n error = new NonRetryableError(errorMessage, errorType, props);\n break;\n case 429:\n error = createGenericNetworkError(errorMessage, { canRetry: true, retryAfterMs }, props);\n break;\n case 500:\n case 502:\n error = new GenericNetworkError(errorMessage, true, props);\n break;\n default:\n const retryInfo = { canRetry: retryAfterMs !== undefined, retryAfterMs };\n error = createGenericNetworkError(errorMessage, retryInfo, props);\n break;\n }\n error.addTelemetryProperties({ endpointReached: true });\n return error;\n}\nexport function throwR11sNetworkError(errorMessage, statusCode, retryAfterMs) {\n const networkError = createR11sNetworkError(errorMessage, statusCode, retryAfterMs);\n throw networkError;\n}\n/**\n * Returns network error based on error object from R11s socket (IR11sSocketError)\n */\nexport function errorObjectFromSocketError(socketError, handler) {\n // pre-0.58 error message prefix: R11sSocketError\n const message = `R11s socket error (${handler}): ${socketError.message}`;\n return createR11sNetworkError(message, socketError.code, socketError.retryAfterMs);\n}\n//# sourceMappingURL=errorUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DocumentDeltaConnection } from \"@fluidframework/driver-base/internal\";\nimport { errorObjectFromSocketError } from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nconst protocolVersions = [\"^0.4.0\", \"^0.3.0\", \"^0.2.0\", \"^0.1.0\"];\n/**\n * Wrapper over the shared one for driver specific translation.\n */\nexport class R11sDocumentDeltaConnection extends DocumentDeltaConnection {\n static async create(tenantId, id, token, io, client, url, logger, timeoutMs = 20000, enableLongPollingDowngrade = true) {\n const socket = io(url, {\n query: {\n documentId: id,\n tenantId,\n },\n reconnection: false,\n // Default to websocket connection, with long-polling disabled\n transports: [\"websocket\"],\n timeout: timeoutMs,\n });\n const connectMessage = {\n client,\n id,\n mode: client.mode,\n tenantId,\n token, // Token is going to indicate tenant level information, etc...\n versions: protocolVersions,\n relayUserAgent: [client.details.environment, ` driverVersion:${driverVersion}`].join(\";\"),\n };\n const deltaConnection = new R11sDocumentDeltaConnection(socket, id, logger, enableLongPollingDowngrade);\n await deltaConnection.initialize(connectMessage, timeoutMs);\n return deltaConnection;\n }\n /**\n * Error raising for socket.io issues\n */\n createErrorObject(handler, error, canRetry = true) {\n // Note: we suspect the incoming error object is either:\n // - a socketError: add it to the R11sError object for driver to be able to parse it and reason over it.\n // - anything else: let base class handle it\n return canRetry && Number.isInteger(error?.code) && typeof error?.message === \"string\"\n ? errorObjectFromSocketError(error, handler)\n : super.createErrorObject(handler, error, canRetry);\n }\n}\n//# sourceMappingURL=documentDeltaConnection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LoaderCachingPolicy, } from \"@fluidframework/driver-definitions/internal\";\nimport { DocumentStorageServiceProxy } from \"./documentStorageServiceProxy.js\";\nimport { canRetryOnError } from \"./network.js\";\n/**\n * @internal\n */\nexport class PrefetchDocumentStorageService extends DocumentStorageServiceProxy {\n constructor() {\n super(...arguments);\n // BlobId -> blob prefetchCache cache\n this.prefetchCache = new Map();\n this.prefetchEnabled = true;\n }\n get policies() {\n const policies = this.internalStorageService.policies;\n if (policies) {\n return { ...policies, caching: LoaderCachingPolicy.NoCaching };\n }\n }\n async getSnapshotTree(version) {\n const p = this.internalStorageService.getSnapshotTree(version);\n if (this.prefetchEnabled) {\n // We don't care if the prefetch succeeds\n void p.then((tree) => {\n if (tree === null || tree === undefined) {\n return;\n }\n this.prefetchTree(tree);\n });\n }\n return p;\n }\n async readBlob(blobId) {\n return this.cachedRead(blobId);\n }\n stopPrefetch() {\n this.prefetchEnabled = false;\n this.prefetchCache.clear();\n }\n async cachedRead(blobId) {\n if (this.prefetchEnabled) {\n const prefetchedBlobP = this.prefetchCache.get(blobId);\n if (prefetchedBlobP !== undefined) {\n return prefetchedBlobP;\n }\n const prefetchedBlobPFromStorage = this.internalStorageService.readBlob(blobId);\n this.prefetchCache.set(blobId, prefetchedBlobPFromStorage.catch((error) => {\n if (canRetryOnError(error)) {\n this.prefetchCache.delete(blobId);\n }\n throw error;\n }));\n return prefetchedBlobPFromStorage;\n }\n return this.internalStorageService.readBlob(blobId);\n }\n prefetchTree(tree) {\n const secondary = [];\n this.prefetchTreeCore(tree, secondary);\n for (const blob of secondary) {\n // We don't care if the prefetch succeeds\n void this.cachedRead(blob);\n }\n }\n prefetchTreeCore(tree, secondary) {\n for (const blobKey of Object.keys(tree.blobs)) {\n const blob = tree.blobs[blobKey];\n if (blobKey.startsWith(\".\") || blobKey === \"header\" || blobKey.startsWith(\"quorum\")) {\n if (blob !== null && blob !== undefined) {\n // We don't care if the prefetch succeeds\n void this.cachedRead(blob);\n }\n }\n else if (!blobKey.startsWith(\"deltas\")) {\n if (blob !== null && blob !== undefined) {\n secondary.push(blob);\n }\n }\n }\n for (const [_, snapshot] of Object.entries(tree.trees)) {\n this.prefetchTreeCore(snapshot, secondary);\n }\n }\n}\n//# sourceMappingURL=prefetchDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { runWithRetry } from \"@fluidframework/driver-utils/internal\";\nexport class RetriableGitManager {\n constructor(internalGitManager, logger) {\n this.internalGitManager = internalGitManager;\n this.logger = logger;\n }\n async getCommits(sha, count) {\n return this.runWithRetry(async () => this.internalGitManager.getCommits(sha, count), \"gitManager_getCommits\");\n }\n async getTree(root, recursive) {\n return this.runWithRetry(async () => this.internalGitManager.getTree(root, recursive), \"gitManager_getTree\");\n }\n async getBlob(sha) {\n return this.runWithRetry(async () => this.internalGitManager.getBlob(sha), \"gitManager_getBlob\");\n }\n async createBlob(content, encoding) {\n return this.runWithRetry(async () => this.internalGitManager.createBlob(content, encoding), \"gitManager_createBlob\");\n }\n async createGitTree(params) {\n return this.runWithRetry(async () => this.internalGitManager.createGitTree(params), \"gitManager_createGitTree\");\n }\n async createSummary(summary) {\n return this.runWithRetry(async () => this.internalGitManager.createSummary(summary), \"gitManager_createSummary\");\n }\n async getSnapshot(sha) {\n return this.runWithRetry(async () => this.internalGitManager.getSnapshot(sha), \"gitManager_getSummary\");\n }\n async runWithRetry(api, callName) {\n return runWithRetry(api, callName, this.logger, {});\n }\n}\n//# sourceMappingURL=retriableGitManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as base64js from \"base64-js\";\n// Note: See 'Isomorphic Code' section in the package README.md\nimport { IsoBuffer } from \"./bufferBrowser.js\";\nasync function digestBuffer(file, algorithm) {\n const hash = await crypto.subtle.digest(algorithm, file);\n return new Uint8Array(hash);\n}\nfunction encodeDigest(hashArray, encoding) {\n // eslint-disable-next-line default-case\n switch (encoding) {\n case \"hex\": {\n const hashHex = Array.prototype.map\n .call(hashArray, (byte) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n return byte.toString(16).padStart(2, \"0\");\n })\n .join(\"\");\n return hashHex;\n }\n case \"base64\": {\n return base64js.fromByteArray(hashArray);\n }\n }\n}\n/**\n * Hash a file. Consistent within a session, but should not be persisted and\n * is not consistent with git.\n * If called under an insecure context for a browser, this will fallback to\n * using the node implementation.\n *\n * @param file - The contents of the file in a buffer.\n * @param algorithm - The hash algorithm to use, artificially constrained by what is used internally.\n * @param hashEncoding - The encoding of the returned hash, also artificially constrained.\n * @returns The hash of the content of the buffer.\n *\n * @internal\n */\nexport async function hashFile(file, algorithm = \"SHA-1\", hashEncoding = \"hex\") {\n // Handle insecure contexts (e.g. running with local services)\n // by deferring to Node version, which uses a hash polyfill\n // When packed, this chunk will show as \"FluidFramework-HashFallback\" separately\n // from the main chunk and will be of non-trivial size. It will not be served\n // under normal circumstances.\n if (crypto.subtle === undefined) {\n return import(\n /* webpackChunkName: \"FluidFramework-HashFallback\" */\n \"./hashFileNode.js\").then(async (m) => m.hashFile(file, algorithm, hashEncoding));\n }\n // This is split up this way to facilitate testing (see the test for more info)\n const hashArray = await digestBuffer(file, algorithm);\n return encodeDigest(hashArray, hashEncoding);\n}\n/**\n * Create a github hash (Github hashes the string with blob and size)\n * Must be called under secure context for browsers\n *\n * @param file - The contents of the file in a buffer\n * @returns The sha1 hash of the content of the buffer with the `blob` prefix and size\n *\n * @internal\n */\nexport async function gitHashFile(file) {\n const size = file.byteLength;\n // eslint-disable-next-line unicorn/prefer-code-point\n const filePrefix = `blob ${size.toString()}${String.fromCharCode(0)}`;\n const hashBuffer = IsoBuffer.from(filePrefix + file.toString());\n // hashFile uses sha1; if that changes this will need to change too\n return hashFile(hashBuffer);\n}\n//# sourceMappingURL=hashFileBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer, Uint8ArrayToString, gitHashFile } from \"@fluid-internal/client-utils\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { getGitMode, getGitType } from \"@fluidframework/driver-utils/internal\";\n/**\n * Recursively writes summary tree as individual summary blobs.\n */\nexport class SummaryTreeUploadManager {\n constructor(manager, blobsShaCache, getPreviousFullSnapshot) {\n this.manager = manager;\n this.blobsShaCache = blobsShaCache;\n this.getPreviousFullSnapshot = getPreviousFullSnapshot;\n }\n async writeSummaryTree(summaryTree, parentHandle, summaryType, sequenceNumber, initial) {\n const previousFullSnapshot = await this.getPreviousFullSnapshot(parentHandle);\n return this.writeSummaryTreeCore(summaryTree, previousFullSnapshot ?? undefined);\n }\n async writeSummaryTreeCore(summaryTree, previousFullSnapshot) {\n const entries = await Promise.all(Object.entries(summaryTree.tree).map(async ([key, entry]) => {\n const pathHandle = await this.writeSummaryTreeObject(entry, previousFullSnapshot);\n const treeEntry = {\n mode: getGitMode(entry),\n path: encodeURIComponent(key),\n sha: pathHandle,\n type: getGitType(entry),\n };\n return treeEntry;\n }));\n const treeHandle = (await this.manager.createGitTree({ tree: entries })).content;\n return treeHandle.sha;\n }\n async writeSummaryTreeObject(object, previousFullSnapshot) {\n switch (object.type) {\n case SummaryType.Blob: {\n return this.writeSummaryBlob(object.content);\n }\n case SummaryType.Handle: {\n if (previousFullSnapshot === undefined) {\n throw Error(\"Parent summary does not exist to reference by handle.\");\n }\n return this.getIdFromPath(object.handleType, object.handle, previousFullSnapshot);\n }\n case SummaryType.Tree: {\n return this.writeSummaryTreeCore(object, previousFullSnapshot);\n }\n case SummaryType.Attachment: {\n return object.id;\n }\n default:\n unreachableCase(object, `Unknown type: ${object.type}`);\n }\n }\n async writeSummaryBlob(content) {\n const { parsedContent, encoding } = typeof content === \"string\"\n ? { parsedContent: content, encoding: \"utf-8\" }\n : { parsedContent: Uint8ArrayToString(content, \"base64\"), encoding: \"base64\" };\n // The gitHashFile would return the same hash as returned by the server as blob.sha\n const hash = await gitHashFile(IsoBuffer.from(parsedContent, encoding));\n if (!this.blobsShaCache.has(hash)) {\n this.blobsShaCache.set(hash, \"\");\n const blob = (await this.manager.createBlob(parsedContent, encoding)).content;\n assert(hash === blob.sha, 0x0b6 /* \"Blob.sha and hash do not match!!\" */);\n }\n return hash;\n }\n getIdFromPath(handleType, handlePath, previousFullSnapshot) {\n const path = handlePath.split(\"/\").map((part) => decodeURIComponent(part));\n if (path[0] === \"\") {\n // root of tree should be unnamed\n path.shift();\n }\n if (path.length === 0) {\n return previousFullSnapshot.id;\n }\n return this.getIdFromPathCore(handleType, path, previousFullSnapshot);\n }\n getIdFromPathCore(handleType, path, \n /** Previous snapshot, subtree relative to this path part */\n previousSnapshot) {\n const key = path[0];\n assert(path.length > 0 && key !== undefined, 0x0b3 /* \"Expected at least 1 path part\" */);\n if (path.length === 1) {\n switch (handleType) {\n case SummaryType.Blob: {\n const tryId = previousSnapshot.blobs[key];\n assert(!!tryId, 0x0b4 /* \"Parent summary does not have blob handle for specified path.\" */);\n return tryId;\n }\n case SummaryType.Tree: {\n const tryId = previousSnapshot.trees[key]?.id;\n assert(!!tryId, 0x0b5 /* \"Parent summary does not have tree handle for specified path.\" */);\n return tryId;\n }\n default:\n throw Error(`Unexpected handle summary object type: \"${handleType}\".`);\n }\n }\n // TODO why are we non null asserting here?\n return this.getIdFromPathCore(handleType, path.slice(1), previousSnapshot.trees[key]);\n }\n}\n//# sourceMappingURL=summaryTreeUploadManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Uint8ArrayToString, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { buildGitTreeHierarchy } from \"@fluidframework/driver-utils/internal\";\nimport { PerformanceEvent, createChildMonitoringContext, } from \"@fluidframework/telemetry-utils/internal\";\nimport { InMemoryCache } from \"./cache.js\";\nimport { RetriableGitManager } from \"./retriableGitManager.js\";\nimport { SummaryTreeUploadManager } from \"./summaryTreeUploadManager.js\";\nconst isNode = typeof window === \"undefined\";\n/**\n * Document access to underlying storage for routerlicious driver.\n * Uploads summaries piece-by-piece traversing the tree recursively.\n * Downloads summaries piece-by-piece on-demand, or up-front when prefetch is enabled.\n */\nexport class ShreddedSummaryDocumentStorageService {\n async getSummaryUploadManager() {\n const manager = await this.getStorageManager();\n return new SummaryTreeUploadManager(new RetriableGitManager(manager, this.logger), this.blobsShaCache, this.getPreviousFullSnapshot.bind(this));\n }\n constructor(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache, getStorageManager = async () => this.manager) {\n this.id = id;\n this.manager = manager;\n this.logger = logger;\n this.policies = policies;\n this.getStorageManager = getStorageManager;\n // The values of this cache is useless. We only need the keys. So we are always putting\n // empty strings as values.\n this.blobsShaCache = new Map();\n if (driverPolicies?.enableRestLess === true || isNode) {\n this.blobCache = blobCache ?? new InMemoryCache();\n this.snapshotTreeCache = snapshotTreeCache ?? new InMemoryCache();\n }\n this.mc = createChildMonitoringContext({\n logger,\n });\n }\n async getVersions(versionId, count) {\n const id = versionId ? versionId : this.id;\n const commits = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"getVersions\",\n versionId: id,\n count,\n }, async () => {\n const manager = await this.getStorageManager();\n return (await manager.getCommits(id, count)).content;\n });\n return commits.map((commit) => ({\n date: commit.commit.author.date,\n id: commit.sha,\n treeId: commit.commit.tree.sha,\n }));\n }\n async getSnapshotTree(version) {\n let requestVersion = version;\n if (requestVersion === undefined) {\n const versions = await this.getVersions(this.id, 1);\n const firstVersion = versions[0];\n if (firstVersion === undefined) {\n return null;\n }\n requestVersion = firstVersion;\n }\n const cachedSnapshotTree = await this.snapshotTreeCache?.get(this.getCacheKey(requestVersion.treeId));\n if (cachedSnapshotTree) {\n return cachedSnapshotTree.snapshotTree;\n }\n const rawTree = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"getSnapshotTree\",\n treeId: requestVersion.treeId,\n }, async (event) => {\n const manager = await this.getStorageManager();\n const response = (await manager.getTree(requestVersion.treeId)).content;\n event.end({\n size: response.tree.length,\n });\n return response;\n });\n const tree = buildGitTreeHierarchy(rawTree, this.blobsShaCache, true);\n await this.snapshotTreeCache?.put(this.getCacheKey(tree.id), {\n id: requestVersion.id,\n snapshotTree: tree,\n });\n return tree;\n }\n async readBlob(blobId) {\n const cachedBlob = await this.blobCache?.get(this.getCacheKey(blobId));\n if (cachedBlob) {\n return cachedBlob;\n }\n const value = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"readBlob\",\n blobId,\n }, async (event) => {\n const manager = await this.getStorageManager();\n const response = (await manager.getBlob(blobId)).content;\n event.end({\n size: response.size,\n });\n return response;\n }, undefined, // workers\n this.mc.config.getNumber(\"Fluid.Driver.ReadBlobTelemetrySampling\"));\n this.blobsShaCache.set(value.sha, \"\");\n const bufferContent = stringToBuffer(value.content, value.encoding);\n await this.blobCache?.put(this.getCacheKey(value.sha), bufferContent);\n return bufferContent;\n }\n async uploadSummaryWithContext(summary, context) {\n const summaryHandle = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"uploadSummaryWithContext\",\n proposalHandle: context.proposalHandle,\n ackHandle: context.ackHandle,\n referenceSequenceNumber: context.referenceSequenceNumber,\n }, async () => {\n const summaryUploadManager = await this.getSummaryUploadManager();\n return summaryUploadManager.writeSummaryTree(summary, context.ackHandle ?? \"\", \"channel\");\n });\n return summaryHandle;\n }\n async downloadSummary(handle) {\n throw new Error(\"NOT IMPLEMENTED!\");\n }\n async createBlob(file) {\n const uint8ArrayFile = new Uint8Array(file);\n return PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"createBlob\",\n size: uint8ArrayFile.length,\n }, async (event) => {\n const manager = await this.getStorageManager();\n const response = await manager\n .createBlob(Uint8ArrayToString(uint8ArrayFile, \"base64\"), \"base64\")\n .then((r) => ({ id: r.content.sha, url: r.content.url }));\n event.end({\n blobId: response.id,\n });\n return response;\n });\n }\n async getPreviousFullSnapshot(parentHandle) {\n return parentHandle\n ? this.getVersions(parentHandle, 1).then(async (versions) => {\n // Clear the cache as the getSnapshotTree call will fill the cache.\n this.blobsShaCache.clear();\n return this.getSnapshotTree(versions[0]);\n })\n : undefined;\n }\n getCacheKey(blobId) {\n return `${this.id}:${blobId}`;\n }\n}\n//# sourceMappingURL=shreddedSummaryDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { stringToBuffer } from \"@fluid-internal/client-utils\";\n/**\n * Build a tree hierarchy from a flat tree.\n *\n * @param flatTree - a flat tree\n * @param treePrefixToRemove - tree prefix to strip\n * @returns the heirarchical tree\n */\nfunction buildHierarchy(flatTree, treePrefixToRemove) {\n const lookup = {};\n // Root tree id will be used to determine which version was downloaded.\n const root = { id: flatTree.id, blobs: {}, trees: {} };\n lookup[\"\"] = root;\n for (const entry of flatTree.entries) {\n // Strip the `treePrefixToRemove` path from tree entries such that they are stored under root.\n const entryPath = entry.path.replace(new RegExp(`^${treePrefixToRemove}/`), \"\");\n const lastIndex = entryPath.lastIndexOf(\"/\");\n const entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));\n const entryPathBase = entryPath.slice(lastIndex + 1);\n // The flat output is breadth-first so we can assume we see tree nodes prior to their contents\n // TODO why are we non null asserting here?\n const node = lookup[entryPathDir];\n // Add in either the blob or tree\n if (entry.type === \"tree\") {\n const newTree = {\n blobs: {},\n trees: {},\n unreferenced: entry.unreferenced,\n groupId: entry.groupId,\n };\n node.trees[decodeURIComponent(entryPathBase)] = newTree;\n lookup[entryPath] = newTree;\n }\n else if (entry.type === \"blob\") {\n node.blobs[decodeURIComponent(entryPathBase)] = entry.id;\n }\n else {\n throw new Error(`Unknown entry type!!`);\n }\n }\n return root;\n}\n/**\n * Converts existing IWholeFlatSnapshot to snapshot tree, blob array, and sequence number.\n *\n * @param flatSnapshot - flat snapshot\n * @param treePrefixToRemove - tree prefix to strip. By default we are stripping \".app\" prefix\n * @returns snapshot tree, blob array, and sequence number\n */\nexport function convertWholeFlatSnapshotToSnapshotTreeAndBlobs(flatSnapshot, treePrefixToRemove = \".app\") {\n const blobs = new Map();\n if (flatSnapshot.blobs) {\n flatSnapshot.blobs.forEach((blob) => {\n blobs.set(blob.id, stringToBuffer(blob.content, blob.encoding ?? \"utf-8\"));\n });\n }\n // TODO why are we non null asserting here?\n const flatSnapshotTree = flatSnapshot.trees[0];\n const sequenceNumber = flatSnapshotTree.sequenceNumber;\n const snapshotTree = buildHierarchy(flatSnapshotTree, treePrefixToRemove);\n return {\n blobs,\n snapshotTree,\n sequenceNumber,\n id: flatSnapshot.id,\n };\n}\n//# sourceMappingURL=r11sSnapshotParser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\n/**\n * Summary tree assembler (without stats collection).\n */\nexport class SummaryTreeAssembler {\n constructor(props) {\n this.props = props;\n this.attachmentCounter = 0;\n this.summaryTree = {};\n }\n /**\n * Get final summary\n */\n get summary() {\n return {\n type: SummaryType.Tree,\n tree: { ...this.summaryTree },\n unreferenced: this.props?.unreferenced,\n groupId: this.props?.groupId,\n };\n }\n /**\n * Add blob to summary\n */\n addBlob(key, content) {\n this.summaryTree[key] = {\n type: SummaryType.Blob,\n content,\n };\n }\n /**\n * Add handle to summary\n */\n addHandle(key, handleType, handle) {\n this.summaryTree[key] = {\n type: SummaryType.Handle,\n handleType,\n handle,\n };\n }\n /**\n * Add tree to summary\n */\n addTree(key, summary) {\n this.summaryTree[key] = summary;\n }\n /**\n * Add attachment to summary\n */\n addAttachment(id) {\n this.summaryTree[this.attachmentCounter++] = { id, type: SummaryType.Attachment };\n }\n}\n/**\n * Helper function that converts ISnapshotTree and blobs to ISummaryTree\n * @param snapshot - Source snapshot tree\n * @param blobs - Blobs cache\n * @returns Converted snapshot in ISummaryTree format\n */\nexport function convertSnapshotAndBlobsToSummaryTree(snapshot, blobs) {\n const assembler = new SummaryTreeAssembler({\n unreferenced: snapshot.unreferenced,\n groupId: snapshot.groupId,\n });\n for (const [path, id] of Object.entries(snapshot.blobs)) {\n const blob = blobs.get(id);\n assert(blob !== undefined, 0x2dd /* \"Cannot find blob for a given id\" */);\n assembler.addBlob(path, IsoBuffer.from(blob).toString(\"utf-8\"));\n }\n for (const [key, tree] of Object.entries(snapshot.trees)) {\n const subtree = convertSnapshotAndBlobsToSummaryTree(tree, blobs);\n assembler.addTree(key, subtree);\n }\n return assembler.summary;\n}\nexport function evalBlobsAndTrees(snapshot) {\n const trees = countTreesInSnapshotTree(snapshot.snapshotTree);\n const numBlobs = snapshot.blobs.size;\n let encodedBlobsSize = 0;\n for (const [_, blobContent] of snapshot.blobs) {\n encodedBlobsSize += blobContent.byteLength;\n }\n return { trees, numBlobs, encodedBlobsSize };\n}\nexport function validateBlobsAndTrees(snapshot) {\n assert(snapshot.trees !== undefined, 0x5d0 /* Returned r11s snapshot is malformed. No trees! */);\n assert(snapshot.blobs !== undefined, 0x5d1 /* Returned r11s snapshot is malformed. No blobs! */);\n}\nfunction countTreesInSnapshotTree(snapshotTree) {\n let numTrees = 0;\n for (const [_, tree] of Object.entries(snapshotTree.trees)) {\n numTrees += 1 + countTreesInSnapshotTree(tree);\n }\n return numTrees;\n}\n//# sourceMappingURL=treeUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { convertSummaryTreeToWholeSummaryTree, } from \"@fluidframework/server-services-client\";\n/**\n * Converts summary to snapshot tree and uploads with single snaphot tree payload.\n */\nexport class WholeSummaryUploadManager {\n constructor(manager) {\n this.manager = manager;\n }\n async writeSummaryTree(summaryTree, parentHandle, summaryType, sequenceNumber = 0, initial = false) {\n const id = await this.writeSummaryTreeCore(parentHandle, summaryTree, summaryType, sequenceNumber, initial);\n if (!id) {\n throw new Error(`Failed to write summary tree`);\n }\n return id;\n }\n async writeSummaryTreeCore(parentHandle, tree, type, sequenceNumber, initial) {\n const snapshotTree = convertSummaryTreeToWholeSummaryTree(parentHandle, tree, \"\", type === \"channel\" ? \".app\" : \"\");\n const snapshotPayload = {\n entries: snapshotTree.entries ?? [],\n message: \"\",\n sequenceNumber,\n type,\n };\n return this.manager\n .createSummary(snapshotPayload, initial)\n .then((response) => response.content.id);\n }\n}\n//# sourceMappingURL=wholeSummaryUploadManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Uint8ArrayToString, performance, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { getW3CData, promiseRaceWithWinner } from \"@fluidframework/driver-base/internal\";\nimport { PerformanceEvent, createChildMonitoringContext, } from \"@fluidframework/telemetry-utils/internal\";\nimport { InMemoryCache } from \"./cache.js\";\nimport { convertWholeFlatSnapshotToSnapshotTreeAndBlobs } from \"./r11sSnapshotParser.js\";\nimport { convertSnapshotAndBlobsToSummaryTree, evalBlobsAndTrees, validateBlobsAndTrees, } from \"./treeUtils.js\";\nimport { WholeSummaryUploadManager } from \"./wholeSummaryUploadManager.js\";\nconst latestSnapshotId = \"latest\";\nexport class WholeSummaryDocumentStorageService {\n async getSummaryUploadManager() {\n const manager = await this.getStorageManager();\n return new WholeSummaryUploadManager(manager);\n }\n constructor(id, manager, logger, policies, driverPolicies, blobCache = new InMemoryCache(), snapshotTreeCache = new InMemoryCache(), noCacheGitManager, getStorageManager = async (disableCache) => disableCache && this.noCacheGitManager !== undefined\n ? this.noCacheGitManager\n : this.manager) {\n this.id = id;\n this.manager = manager;\n this.logger = logger;\n this.policies = policies;\n this.driverPolicies = driverPolicies;\n this.blobCache = blobCache;\n this.snapshotTreeCache = snapshotTreeCache;\n this.noCacheGitManager = noCacheGitManager;\n this.getStorageManager = getStorageManager;\n this.firstVersionsCall = true;\n this.mc = createChildMonitoringContext({\n logger,\n });\n }\n // eslint-disable-next-line @rushstack/no-new-null\n async getVersions(versionId, count) {\n if (versionId !== this.id && versionId !== null) {\n // Blobs/Trees in this scenario will never have multiple versions, so return versionId as is\n return [\n {\n id: versionId,\n treeId: undefined,\n },\n ];\n }\n // If this is the first versions call for the document, we know we will want the latest summary.\n // Fetch latest summary, cache it, and return its id.\n if (this.firstVersionsCall && count === 1) {\n const normalizedSnapshotContents = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"ObtainSnapshot\",\n versionId: versionId ?? undefined,\n count,\n enableDiscovery: this.driverPolicies?.enableDiscovery,\n }, async (event) => {\n let method;\n const cachedSnapshotP = this.snapshotTreeCache.get(this.getCacheKey(latestSnapshotId));\n const networkSnapshotP = !this.driverPolicies?.enableDiscovery\n ? this.fetchSnapshotTree(latestSnapshotId, false, \"getVersions\")\n : this.fetchSnapshotTree(latestSnapshotId, true, \"getVersions\");\n const promiseRaceWinner = await promiseRaceWithWinner([\n cachedSnapshotP.catch(() => undefined),\n networkSnapshotP.catch(() => undefined),\n ]);\n let retrievedSnapshot = promiseRaceWinner.value;\n method = promiseRaceWinner.index === 0 ? \"cache\" : \"network\";\n if (retrievedSnapshot === undefined) {\n // if network failed -> wait for cache ( then return network failure)\n // If cache returned empty or failed -> wait for network (success of failure)\n if (promiseRaceWinner.index === 1) {\n retrievedSnapshot = await cachedSnapshotP;\n method = \"cache\";\n }\n if (retrievedSnapshot === undefined) {\n retrievedSnapshot = await networkSnapshotP;\n method = \"network\";\n }\n }\n event.end({\n method,\n });\n return retrievedSnapshot;\n });\n const _id = await this.initializeFromSnapshot(normalizedSnapshotContents);\n this.firstVersionsCall = false;\n return [\n {\n id: _id,\n treeId: normalizedSnapshotContents.snapshotTree.id,\n },\n ];\n }\n // Otherwise, get the latest version of the document as normal.\n const id = versionId ? versionId : this.id;\n const commits = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"getVersions\",\n versionId: id,\n count,\n }, async () => {\n const manager = await this.getStorageManager();\n return (await manager.getCommits(id, count)).content;\n });\n return commits.map((commit) => ({\n date: commit.commit.author.date,\n id: commit.sha,\n treeId: commit.commit.tree.sha,\n }));\n }\n // eslint-disable-next-line @rushstack/no-new-null\n async getSnapshotTree(version) {\n let requestVersion = version;\n if (requestVersion === undefined) {\n const versions = await this.getVersions(this.id, 1);\n const firstVersion = versions[0];\n if (firstVersion === undefined) {\n return null;\n }\n requestVersion = firstVersion;\n }\n let normalizedWholeSnapshot = await this.snapshotTreeCache.get(this.getCacheKey(requestVersion.id));\n if (normalizedWholeSnapshot !== undefined) {\n return normalizedWholeSnapshot.snapshotTree;\n }\n normalizedWholeSnapshot = await this.fetchSnapshotTree(requestVersion.id, undefined, \"getSnapshotTree\");\n // Currently retrieving blobs from network is not supported by AFR for WholeSummaryDocumentStorageService\n // Blobs are expected to be put in the cache\n await this.updateBlobsCache(normalizedWholeSnapshot.blobs);\n return normalizedWholeSnapshot.snapshotTree;\n }\n async readBlob(blobId) {\n const cachedBlob = await this.blobCache.get(this.getCacheKey(blobId));\n if (cachedBlob !== undefined) {\n return cachedBlob;\n }\n // Note: AFR does not support readBlobs, but potentially other r11s like servers do\n const blob = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"readBlob\",\n blobId,\n }, async (event) => {\n const manager = await this.getStorageManager();\n const response = (await manager.getBlob(blobId)).content;\n event.end({\n size: response.size,\n });\n return response;\n }, undefined, // workers\n this.mc.config.getNumber(\"Fluid.Driver.ReadBlobTelemetrySampling\"));\n const bufferValue = stringToBuffer(blob.content, blob.encoding);\n await this.blobCache.put(this.getCacheKey(blob.sha), bufferValue);\n return bufferValue;\n }\n async uploadSummaryWithContext(summary, context) {\n const summaryHandle = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"uploadSummaryWithContext\",\n proposalHandle: context.proposalHandle,\n ackHandle: context.ackHandle,\n referenceSequenceNumber: context.referenceSequenceNumber,\n }, async () => {\n const summaryUploadManager = await this.getSummaryUploadManager();\n return summaryUploadManager.writeSummaryTree(summary, context.ackHandle ?? \"\", \"channel\");\n });\n return summaryHandle;\n }\n async downloadSummary(summaryHandle) {\n const wholeFlatSnapshot = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"getWholeFlatSummary\",\n treeId: summaryHandle.handle,\n }, async (event) => {\n const manager = await this.getStorageManager();\n const response = await manager.getSnapshot(summaryHandle.handle);\n event.end({\n size: response.content.trees[0]?.entries.length,\n });\n return response.content;\n });\n const { blobs, snapshotTree } = convertWholeFlatSnapshotToSnapshotTreeAndBlobs(wholeFlatSnapshot, \"\");\n return convertSnapshotAndBlobsToSummaryTree(snapshotTree, blobs);\n }\n async createBlob(file) {\n const uint8ArrayFile = new Uint8Array(file);\n return PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"createBlob\",\n size: uint8ArrayFile.length,\n }, async (event) => {\n const manager = await this.getStorageManager();\n const response = await manager\n .createBlob(Uint8ArrayToString(uint8ArrayFile, \"base64\"), \"base64\")\n .then((r) => ({ id: r.content.sha, url: r.content.url }));\n event.end({\n blobId: response.id,\n });\n return response;\n });\n }\n async fetchSnapshotTree(versionId, disableCache, scenarioName) {\n const normalizedWholeSummary = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"getWholeFlatSummary\",\n treeId: versionId,\n scenarioName,\n }, async (event) => {\n const manager = await this.getStorageManager(disableCache);\n const response = await manager.getSnapshot(versionId);\n const start = performance.now();\n const snapshot = convertWholeFlatSnapshotToSnapshotTreeAndBlobs(response.content);\n const snapshotConversionTime = performance.now() - start;\n validateBlobsAndTrees(snapshot.snapshotTree);\n const { trees, numBlobs, encodedBlobsSize } = evalBlobsAndTrees(snapshot);\n event.end({\n size: response.content.trees[0]?.entries.length,\n trees,\n blobs: numBlobs,\n encodedBlobsSize,\n sequenceNumber: snapshot.sequenceNumber,\n ...response.propsToLog,\n snapshotConversionTime,\n ...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n });\n return snapshot;\n });\n // Also add the result into the cache.\n await this.snapshotTreeCache\n .put(this.getCacheKey(versionId), normalizedWholeSummary)\n .catch(() => undefined);\n return normalizedWholeSummary;\n }\n async initializeFromSnapshot(normalizedWholeSummary) {\n const snapshotId = normalizedWholeSummary.id;\n assert(snapshotId !== undefined, 0x275 /* \"Root tree should contain the id\" */);\n const cachePs = [\n this.snapshotTreeCache.put(this.getCacheKey(snapshotId), normalizedWholeSummary),\n this.updateBlobsCache(normalizedWholeSummary.blobs),\n ];\n await Promise.all(cachePs);\n return snapshotId;\n }\n async updateBlobsCache(blobs) {\n const blobCachePutPs = [];\n blobs.forEach((value, id) => {\n const cacheKey = this.getCacheKey(id);\n blobCachePutPs.push(this.blobCache.put(cacheKey, value));\n });\n await Promise.all(blobCachePutPs);\n }\n getCacheKey(blobId) {\n return `${this.id}:${blobId}`;\n }\n}\n//# sourceMappingURL=wholeSummaryDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LoaderCachingPolicy, } from \"@fluidframework/driver-definitions/internal\";\nimport { DocumentStorageServiceProxy, PrefetchDocumentStorageService, } from \"@fluidframework/driver-utils/internal\";\nimport { ShreddedSummaryDocumentStorageService } from \"./shreddedSummaryDocumentStorageService.js\";\nimport { WholeSummaryDocumentStorageService } from \"./wholeSummaryDocumentStorageService.js\";\nexport class DocumentStorageService extends DocumentStorageServiceProxy {\n get logTailSha() {\n return this._logTailSha;\n }\n static loadInternalDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache, shreddedSummaryTreeCache, noCacheGitManager, getStorageManager) {\n const storageService = driverPolicies?.enableWholeSummaryUpload\n ? new WholeSummaryDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache, noCacheGitManager, getStorageManager)\n : new ShreddedSummaryDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, shreddedSummaryTreeCache, getStorageManager);\n // TODO: worth prefetching latest summary making version + snapshot call with WholeSummary storage?\n if (!driverPolicies?.enableWholeSummaryUpload &&\n policies.caching === LoaderCachingPolicy.Prefetch) {\n return new PrefetchDocumentStorageService(storageService);\n }\n return storageService;\n }\n constructor(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache, shreddedSummaryTreeCache, noCacheGitManager, getStorageManager) {\n super(DocumentStorageService.loadInternalDocumentStorageService(id, manager, logger, policies, driverPolicies, blobCache, snapshotTreeCache, shreddedSummaryTreeCache, noCacheGitManager, getStorageManager));\n this.id = id;\n this.manager = manager;\n this.noCacheGitManager = noCacheGitManager;\n this._logTailSha = undefined;\n }\n async getSnapshotTree(version) {\n const tree = await this.internalStorageService.getSnapshotTree(version);\n if (tree !== null) {\n this._logTailSha =\n \".logTail\" in tree.trees ? tree.trees[\".logTail\"].blobs.logTail : undefined;\n }\n return tree;\n }\n}\n//# sourceMappingURL=documentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport class GitManager {\n constructor(historian) {\n this.historian = historian;\n }\n /**\n * Reads the object with the given ID. We defer to the client implementation to do the actual read.\n */\n async getCommits(sha, count) {\n return this.historian.getCommits(sha, count);\n }\n /**\n * Reads the object with the given ID. We defer to the client implementation to do the actual read.\n */\n async getTree(root, recursive = true) {\n return this.historian.getTree(root, recursive);\n }\n async getBlob(sha) {\n return this.historian.getBlob(sha);\n }\n async createBlob(content, encoding) {\n const blob = {\n content,\n encoding,\n };\n return this.historian.createBlob(blob);\n }\n async createGitTree(params) {\n const treeP = this.historian.createTree(params);\n return treeP;\n }\n async createSummary(summary, initial = false) {\n return this.historian.createSummary(summary, initial);\n }\n async getSnapshot(sha) {\n return this.historian.getSnapshot(sha);\n }\n}\n//# sourceMappingURL=gitManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fromUtf8ToBase64 } from \"@fluid-internal/client-utils\";\nexport const getAuthorizationTokenFromCredentials = (credentials) => `Basic ${fromUtf8ToBase64(`${credentials.user}:${credentials.password}`)}`;\n/**\n * Implementation of the IHistorian interface that calls out to a REST interface\n */\nexport class Historian {\n constructor(historianApi, disableCache, restWrapper) {\n this.historianApi = historianApi;\n this.restWrapper = restWrapper;\n this.defaultQueryString = {};\n if (disableCache && this.historianApi) {\n this.defaultQueryString.disableCache = disableCache;\n this.cacheBust = false;\n }\n else {\n this.cacheBust = disableCache;\n }\n }\n async getBlob(sha) {\n return this.restWrapper.get(`/git/blobs/${encodeURIComponent(sha)}`, this.getQueryString());\n }\n async createBlob(blob) {\n return this.restWrapper.post(`/git/blobs`, blob, this.getQueryString());\n }\n async getCommits(sha, count) {\n return this.restWrapper\n .get(`/commits`, this.getQueryString({ count, sha }))\n .catch(async (error) => error.statusCode === 400 || error.statusCode === 404\n ? {\n content: [],\n headers: new Map(),\n propsToLog: {},\n requestUrl: \"\",\n }\n : Promise.reject(error));\n }\n async createTree(tree) {\n return this.restWrapper.post(`/git/trees`, tree, this.getQueryString());\n }\n async getTree(sha, recursive) {\n return this.restWrapper.get(`/git/trees/${encodeURIComponent(sha)}`, this.getQueryString({ recursive: recursive ? 1 : 0 }));\n }\n async createSummary(summary, initial) {\n return this.restWrapper.post(`/git/summaries`, summary, this.getQueryString(initial !== undefined ? { initial } : undefined));\n }\n async getSnapshot(sha) {\n return this.restWrapper.get(`/git/summaries/${sha}`, this.getQueryString());\n }\n getQueryString(queryString) {\n if (this.cacheBust) {\n return {\n cacheBust: Date.now(),\n ...this.defaultQueryString,\n ...queryString,\n };\n }\n return {\n ...this.defaultQueryString,\n ...queryString,\n };\n }\n}\n//# sourceMappingURL=historian.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Document access to underlying storage. It is default implementation of a storage service.\n * Does not read/write anything.\n */\nexport class NullBlobStorageService {\n async getSnapshotTree(version) {\n return version ? Promise.reject(new Error(\"Invalid operation\")) : null;\n }\n async getVersions(versionId, count) {\n return [];\n }\n async uploadSummaryWithContext(summary, context) {\n throw new Error(\"Invalid operation\");\n }\n async downloadSummary(handle) {\n throw new Error(\"Invalid operation\");\n }\n async createBlob(file) {\n throw new Error(\"Null blob storage can not create blob\");\n }\n async readBlob(blobId) {\n throw new Error(\"Null blob storage can not read blob\");\n }\n}\n//# sourceMappingURL=nullBlobStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @internal\n */\nexport const CorrelationIdHeaderName = \"x-correlation-id\";\n/**\n * @internal\n */\nexport const DriverVersionHeaderName = \"x-driver-version\";\n/**\n * This ID is an alias to the latest summary known by the service.\n * @internal\n */\nexport const LatestSummaryId = \"latest\";\n//# sourceMappingURL=constants.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @internal\n */\nexport var RestLessFieldNames;\n(function (RestLessFieldNames) {\n RestLessFieldNames[\"Method\"] = \"method\";\n RestLessFieldNames[\"Header\"] = \"header\";\n RestLessFieldNames[\"Body\"] = \"body\";\n})(RestLessFieldNames || (RestLessFieldNames = {}));\nconst encodeHeader = (headerKey, headerValue) => {\n return `${headerKey}: ${headerValue}`;\n};\n/**\n * Client for communicating with a \"RestLess\" server.\n * Translates a typical RESTful HTTP request into \"RestLess\" HTTP format:\n *\n * POST \\ HTTP/\\<1.1|2\\>\n *\n * HOST \\\n *\n * Content-Type: application/x-www-form-urlencoded\n *\n * \n * @internal\n */\nexport class RestLessClient {\n /**\n * Translates request from REST to \"RestLess\" out-of-place.\n */\n translate(request) {\n const newRequest = { ...request };\n const body = new URLSearchParams();\n body.append(RestLessFieldNames.Method, newRequest.method ?? \"GET\");\n if (newRequest.headers) {\n for (const [headerKey, headerValue] of Object.entries(newRequest.headers)) {\n const encodedHeader = encodeHeader(headerKey, headerValue);\n body.append(RestLessFieldNames.Header, encodedHeader);\n }\n }\n if (newRequest.data &&\n [\"post\", \"put\", \"patch\"].includes(newRequest.method?.toLowerCase())) {\n const stringifiedBody = JSON.stringify(newRequest.data);\n body.append(RestLessFieldNames.Body, stringifiedBody);\n }\n newRequest.data = body.toString();\n newRequest.method = \"POST\";\n newRequest.headers = {\n // TODO: when we support blob/file uploads, we should potentially add compatibility with multipart/form-data\n \"Content-Type\": \"application/x-www-form-urlencoded;restless\",\n };\n return newRequest;\n }\n}\n//# sourceMappingURL=restLessClient.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer } from \"./indexNode\";\n/**\n * Converts the provided {@link https://en.wikipedia.org/wiki/Base64 | base64}-encoded string\n * to {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8}.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n * @internal\n */\nexport const fromBase64ToUtf8 = (input) => IsoBuffer.from(input, \"base64\").toString(\"utf-8\");\n/**\n * Converts the provided {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8}-encoded string\n * to {@link https://en.wikipedia.org/wiki/Base64 | base64}.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n * @internal\n */\nexport const fromUtf8ToBase64 = (input) => IsoBuffer.from(input, \"utf8\").toString(\"base64\");\n/**\n * Convenience function to convert unknown encoding to utf8 that avoids\n * buffer copies/encode ops when no conversion is needed.\n * @param input - The source string to convert.\n * @param encoding - The source string's encoding.\n *\n * @deprecated Moved to the `@fluidframework-internal/client-utils` package.\n * @internal\n */\nexport const toUtf8 = (input, encoding) => {\n switch (encoding) {\n case \"utf8\":\n case \"utf-8\":\n return input;\n default:\n return IsoBuffer.from(input, encoding).toString();\n }\n};\n//# sourceMappingURL=base64Encoding.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fromUtf8ToBase64 } from \"@fluidframework/common-utils\";\nimport { BasicRestWrapper } from \"./restWrapper\";\nfunction endsWith(value, endings) {\n for (const ending of endings) {\n if (value.endsWith(ending)) {\n return true;\n }\n }\n return false;\n}\n/**\n * @internal\n */\nexport const getAuthorizationTokenFromCredentials = (credentials) => `Basic ${fromUtf8ToBase64(`${credentials.user}:${credentials.password}`)}`;\n/**\n * Implementation of the IHistorian interface that calls out to a REST interface\n * @internal\n */\nexport class Historian {\n constructor(endpoint, historianApi, disableCache, restWrapper) {\n this.endpoint = endpoint;\n this.historianApi = historianApi;\n this.restWrapper = restWrapper;\n this.defaultQueryString = {};\n if (disableCache && this.historianApi) {\n this.defaultQueryString.disableCache = disableCache;\n this.cacheBust = false;\n }\n else {\n this.cacheBust = disableCache;\n }\n if (this.restWrapper === undefined) {\n this.restWrapper = new BasicRestWrapper(this.endpoint);\n }\n }\n async getHeader(sha) {\n return this.historianApi\n ? this.restWrapper.get(`/headers/${encodeURIComponent(sha)}`, this.getQueryString())\n : this.getHeaderDirect(sha);\n }\n async getFullTree(sha) {\n return this.restWrapper.get(`/tree/${encodeURIComponent(sha)}`, this.getQueryString());\n }\n async getBlob(sha) {\n return this.restWrapper.get(`/git/blobs/${encodeURIComponent(sha)}`, this.getQueryString());\n }\n async createBlob(blob) {\n return this.restWrapper.post(`/git/blobs`, blob, this.getQueryString());\n }\n async getContent(path, ref) {\n return this.restWrapper.get(`/contents/${path}`, this.getQueryString({ ref }));\n }\n async getCommits(sha, count) {\n return this.restWrapper\n .get(`/commits`, this.getQueryString({ count, sha }))\n .catch(async (error) => error === 400 || error === 404\n ? []\n : Promise.reject(error));\n }\n async getCommit(sha) {\n return this.restWrapper.get(`/git/commits/${encodeURIComponent(sha)}`, this.getQueryString());\n }\n async createCommit(commit) {\n return this.restWrapper.post(`/git/commits`, commit, this.getQueryString());\n }\n async getRefs() {\n return this.restWrapper.get(`/git/refs`, this.getQueryString());\n }\n async getRef(ref) {\n return this.restWrapper.get(`/git/refs/${ref}`, this.getQueryString());\n }\n async createRef(params) {\n return this.restWrapper.post(`/git/refs`, params, this.getQueryString());\n }\n async updateRef(ref, params) {\n return this.restWrapper.patch(`/git/refs/${ref}`, params, this.getQueryString());\n }\n async deleteRef(ref) {\n await this.restWrapper.delete(`/git/refs/${ref}`, this.getQueryString());\n }\n async createTag(tag) {\n return this.restWrapper.post(`/git/tags`, tag, this.getQueryString());\n }\n async getTag(tag) {\n return this.restWrapper.get(`/git/tags/${tag}`, this.getQueryString());\n }\n async createTree(tree) {\n return this.restWrapper.post(`/git/trees`, tree, this.getQueryString());\n }\n async getTree(sha, recursive) {\n return this.restWrapper.get(`/git/trees/${encodeURIComponent(sha)}`, this.getQueryString({ recursive: recursive ? 1 : 0 }));\n }\n async createSummary(summary, initial) {\n return this.restWrapper.post(`/git/summaries`, summary, this.getQueryString(initial !== undefined ? { initial } : undefined));\n }\n async deleteSummary(softDelete) {\n const headers = { \"Soft-Delete\": softDelete };\n return this.restWrapper.delete(`/git/summaries`, this.getQueryString(), headers);\n }\n async getSummary(sha) {\n return this.restWrapper.get(`/git/summaries/${sha}`, this.getQueryString());\n }\n async getHeaderDirect(sha) {\n const tree = await this.getTree(sha, true);\n const includeBlobs = [\".attributes\", \".blobs\", \".messages\", \"header\"];\n const blobsP = [];\n for (const entry of tree.tree) {\n if (entry.type === \"blob\" && endsWith(entry.path, includeBlobs)) {\n const blobP = this.getBlob(entry.sha);\n blobsP.push(blobP);\n }\n }\n const blobs = await Promise.all(blobsP);\n return {\n blobs,\n tree,\n };\n }\n getQueryString(queryString) {\n if (this.cacheBust) {\n return {\n cacheBust: Date.now(),\n ...this.defaultQueryString,\n ...queryString,\n };\n }\n return {\n ...this.defaultQueryString,\n ...queryString,\n };\n }\n}\n//# sourceMappingURL=historian.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Generates URL object from the given string request url and query parameters.\n * @param url - URL to which query params should be appended. Can include base/default query params.\n * @param queryParams - Query parameters to append. Will override any query params in url.\n */\nexport function addOrUpdateQueryParams(url, queryParams) {\n // Initialize urlSearchParams with query params from the base URL itself\n const outputUrl = new URL(url);\n const updatedSearchParams = outputUrl.searchParams;\n for (const [key, value] of Object.entries(queryParams)) {\n // Add/override search params from query params\n updatedSearchParams.set(key, encodeURIComponent(value));\n }\n outputUrl.search = updatedSearchParams.toString();\n return outputUrl;\n}\n//# sourceMappingURL=queryStringUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport class RestWrapper {\n constructor(baseurl, defaultQueryString = {}, maxBodyLength = 1000 * 1024 * 1024, maxContentLength = 1000 * 1024 * 1024) {\n this.baseurl = baseurl;\n this.defaultQueryString = defaultQueryString;\n this.maxBodyLength = maxBodyLength;\n this.maxContentLength = maxContentLength;\n }\n /**\n * @param url - Relative or absolute request url.(should not contain any query params)\n * @param queryString - query params to be appended to the request url\n * @param headers - headers\n * @param additionalOptions - additionalOptions\n */\n async get(url, queryString, headers, additionalOptions) {\n const options = {\n ...additionalOptions,\n baseURL: this.baseurl,\n headers,\n maxBodyLength: this.maxBodyLength,\n maxContentLength: this.maxContentLength,\n method: \"GET\",\n url,\n params: { ...this.defaultQueryString, ...queryString },\n };\n return this.request(options, 200);\n }\n /**\n * @param url - Relative or absolute request url.(should not contain any query params)\n * @param requestBody - requestBody\n * @param queryString - query params to be appended to the request url\n * @param headers - headers\n * @param additionalOptions - additionalOptions\n */\n async post(url, requestBody, queryString, headers, additionalOptions) {\n const options = {\n ...additionalOptions,\n baseURL: this.baseurl,\n data: requestBody,\n headers,\n maxBodyLength: this.maxBodyLength,\n maxContentLength: this.maxContentLength,\n method: \"POST\",\n url,\n params: { ...this.defaultQueryString, ...queryString },\n };\n return this.request(options, 201);\n }\n /**\n * @param url - Relative or absolute request url.(should not contain any query params)\n * @param queryString - query params to be appended to the request url\n * @param headers - headers\n * @param additionalOptions - additionalOptions\n */\n async delete(url, queryString, headers, additionalOptions) {\n const options = {\n ...additionalOptions,\n baseURL: this.baseurl,\n headers,\n maxBodyLength: this.maxBodyLength,\n maxContentLength: this.maxContentLength,\n method: \"DELETE\",\n url,\n params: { ...this.defaultQueryString, ...queryString },\n };\n return this.request(options, 204);\n }\n /**\n * @param url - Relative or absolute request url.(should not contain any query params)\n * @param requestBody - requestBody\n * @param queryString - query params to be appended to the request url\n * @param headers - headers\n * @param additionalOptions - additionalOptions\n */\n async patch(url, requestBody, queryString, headers, additionalOptions) {\n const options = {\n ...additionalOptions,\n baseURL: this.baseurl,\n data: requestBody,\n headers,\n maxBodyLength: this.maxBodyLength,\n maxContentLength: this.maxContentLength,\n method: \"PATCH\",\n url,\n params: { ...this.defaultQueryString, ...queryString },\n };\n return this.request(options, 200);\n }\n}\n//# sourceMappingURL=restWrapperBase.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fromUtf8ToBase64, performance } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { GenericNetworkError, NonRetryableError, } from \"@fluidframework/driver-utils/internal\";\nimport { CorrelationIdHeaderName, DriverVersionHeaderName, RestLessClient, getAuthorizationTokenFromCredentials, } from \"@fluidframework/server-services-client\";\nimport { PerformanceEvent, numberFromString, } from \"@fluidframework/telemetry-utils/internal\";\nimport fetch from \"cross-fetch\";\nimport safeStringify from \"json-stringify-safe\";\nimport { RouterliciousErrorTypes, throwR11sNetworkError } from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { addOrUpdateQueryParams } from \"./queryStringUtils.js\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\nconst buildRequestUrl = (requestConfig) => requestConfig.baseURL !== undefined\n ? `${requestConfig.baseURL ?? \"\"}${requestConfig.url ?? \"\"}`\n : requestConfig.url ?? \"\";\nconst axiosBuildRequestInitConfig = (requestConfig) => {\n const requestInit = {\n method: requestConfig.method,\n // NOTE: I believe that although the Axios type permits non-string values in the header, here we are\n // guaranteed the requestConfig only has string values in its header.\n headers: requestConfig.headers,\n body: requestConfig.data,\n };\n return requestInit;\n};\n/**\n * A utility function to create a Routerlicious response without any additional props as we might not have them always.\n * @param content - Response which is equivalent to content.\n * @returns A Routerlicious response without any extra props.\n */\nexport function createR11sResponseFromContent(content) {\n return {\n content,\n headers: new Map(),\n propsToLog: {},\n requestUrl: \"\",\n };\n}\nfunction headersToMap(headers) {\n const newHeaders = new Map();\n for (const [key, value] of headers.entries()) {\n newHeaders.set(key, value);\n }\n return newHeaders;\n}\nexport function getPropsToLogFromResponse(headers) {\n // We rename headers so that otel doesn't scrub them away. Otel doesn't allow\n // certain characters in headers including '-'\n const headersToLog = [\n { headerName: CorrelationIdHeaderName, logName: \"requestCorrelationId\" },\n { headerName: \"content-encoding\", logName: \"contentEncoding\" },\n { headerName: \"content-type\", logName: \"contentType\" },\n ];\n const additionalProps = {\n contentsize: numberFromString(headers.get(\"content-length\")),\n };\n headersToLog.forEach((header) => {\n const headerValue = headers.get(header.headerName);\n if (headerValue !== undefined && headerValue !== null) {\n additionalProps[header.logName] = headerValue;\n }\n });\n return additionalProps;\n}\nclass RouterliciousRestWrapper extends RestWrapper {\n constructor(logger, rateLimiter, fetchRefreshedToken, getAuthorizationHeader, useRestLess, baseurl, tokenP, defaultQueryString = {}) {\n super(baseurl, defaultQueryString);\n this.rateLimiter = rateLimiter;\n this.fetchRefreshedToken = fetchRefreshedToken;\n this.getAuthorizationHeader = getAuthorizationHeader;\n this.useRestLess = useRestLess;\n this.tokenP = tokenP;\n this.restLess = new RestLessClient();\n /**\n * A locally maintained map which saves the number of retries for any REST api call made through restWrapper.\n * It uses the href of the request url as a key against which it saves the retry counts. Retries are only counted in case of failures.\n * This feature is added to enable FRS to have more telemetry insights into whether the requests are being retried from same client or multiple.\n */\n this.retryCounter = new Map();\n }\n async request(requestConfig, statusCode, canRetry = true) {\n if (requestConfig.params) {\n // delete the retry param, if any. We do this to ensure there is no retry added by any of callers, which would conflict with the one we maintain here in the retryCounter map.\n delete requestConfig.params.retry;\n }\n // Build the complete request url including baseUrl, url and query params. (all except 'retry' query param)\n let completeRequestUrl = addOrUpdateQueryParams(buildRequestUrl(requestConfig), requestConfig.params);\n // Check whether this request has been made before or if it is a retry.\n // requestKey is built using the HTTP method appended with the complete URL ommitting the 'retry' param\n const requestKey = `${requestConfig.method ?? \"\"}|${completeRequestUrl.href}`;\n const requestRetryCount = this.retryCounter.get(requestKey);\n if (requestRetryCount) {\n completeRequestUrl = addOrUpdateQueryParams(completeRequestUrl, {\n retry: requestRetryCount,\n });\n }\n const config = {\n ...requestConfig,\n headers: await this.generateHeaders(requestConfig.headers),\n };\n const translatedConfig = this.useRestLess ? this.restLess.translate(config) : config;\n const fetchRequestConfig = axiosBuildRequestInitConfig(translatedConfig);\n const res = await this.rateLimiter.schedule(async () => {\n const perfStart = performance.now();\n const result = await fetch(completeRequestUrl, fetchRequestConfig).catch(async (error) => {\n // on failure, add the request entry into the retryCounter map to count the subsequent retries, if any\n this.retryCounter.set(requestKey, requestRetryCount ? requestRetryCount + 1 : 1);\n // Browser Fetch throws a TypeError on network error, `node-fetch` throws a FetchError\n const isNetworkError = [\"TypeError\", \"FetchError\"].includes(error?.name);\n const errorMessage = isNetworkError\n ? `NetworkError: ${error.message}`\n : safeStringify(error);\n // If a service is temporarily down or a browser resource limit is reached, RestWrapper will throw\n // a network error with no status code (e.g. err:ERR_CONN_REFUSED or err:ERR_FAILED) and\n // the error message will start with NetworkError as defined in restWrapper.ts\n // If there exists a self-signed SSL certificates error, throw a NonRetryableError\n // TODO: instead of relying on string matching, filter error based on the error code like we do for websocket connections\n const err = errorMessage.includes(\"failed, reason: self signed certificate\")\n ? new NonRetryableError(errorMessage, RouterliciousErrorTypes.sslCertError, {\n driverVersion,\n retryCount: requestRetryCount,\n })\n : new GenericNetworkError(errorMessage, errorMessage.startsWith(\"NetworkError\"), {\n driverVersion,\n retryCount: requestRetryCount,\n });\n throw err;\n });\n return {\n response: result,\n duration: performance.now() - perfStart,\n };\n });\n const response = res.response;\n let start = performance.now();\n const text = await response.text();\n const receiveContentTime = performance.now() - start;\n const bodySize = text.length;\n start = performance.now();\n const responseBody = response.headers\n .get(\"content-type\")\n ?.includes(\"application/json\")\n ? JSON.parse(text)\n : text;\n const parseTime = performance.now() - start;\n // Success\n if (response.ok || response.status === statusCode) {\n // on successful response, remove the entry from the retryCounter map\n this.retryCounter.delete(requestKey);\n const result = responseBody;\n const headers = headersToMap(response.headers);\n return {\n content: result,\n headers,\n requestUrl: completeRequestUrl.href,\n propsToLog: {\n ...getPropsToLogFromResponse(headers),\n bodySize,\n receiveContentTime,\n parseTime,\n fetchTime: res.duration,\n },\n };\n }\n // Failure\n // on failure, add the request entry into the retryCounter map to count the subsequent retries\n this.retryCounter.set(requestKey, requestRetryCount ? requestRetryCount + 1 : 1);\n if (response.status === 401 && canRetry) {\n // Refresh Authorization header and retry once\n this.token = await this.fetchRefreshedToken(true /* refreshToken */);\n return this.request({ ...config }, statusCode, false);\n }\n if (response.status === 429 && responseBody?.retryAfter > 0) {\n // Retry based on retryAfter[Seconds]\n return new Promise((resolve, reject) => setTimeout(() => {\n // use the original request URL without the retryCount appended\n this.request({ ...config }, statusCode)\n .then(resolve)\n .catch(reject);\n }, responseBody.retryAfter * 1000));\n }\n const responseSummary = responseBody !== undefined\n ? typeof responseBody === \"string\"\n ? responseBody\n : safeStringify(responseBody)\n : response.statusText;\n throwR11sNetworkError(`R11s fetch error: ${responseSummary}`, response.status, responseBody?.retryAfter);\n }\n async generateHeaders(requestHeaders) {\n const token = await this.getToken();\n assert(token !== undefined, 0x679 /* token should be present */);\n const headers = {\n ...requestHeaders,\n [DriverVersionHeaderName]: driverVersion,\n // NOTE: If this.authorizationHeader is undefined, should \"Authorization\" be removed entirely?\n Authorization: this.getAuthorizationHeader(token),\n };\n return headers;\n }\n async getToken() {\n if (this.token !== undefined) {\n return this.token;\n }\n const token = await (this.tokenP ?? this.fetchRefreshedToken());\n this.setToken(token);\n this.tokenP = undefined;\n return token;\n }\n setToken(token) {\n this.token = token;\n }\n}\nexport class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {\n constructor(logger, rateLimiter, fetchToken, getAuthorizationHeader, useRestLess, baseurl, initialTokenP, defaultQueryString = {}) {\n super(logger, rateLimiter, fetchToken, getAuthorizationHeader, useRestLess, baseurl, initialTokenP, defaultQueryString);\n }\n static load(tenantId, tokenFetcher, logger, rateLimiter, useRestLess, baseurl, initialTokenP) {\n const defaultQueryString = {\n token: `${fromUtf8ToBase64(tenantId)}`,\n };\n const getAuthorizationHeader = (token) => {\n const credentials = {\n password: token.jwt,\n user: tenantId,\n };\n return getAuthorizationTokenFromCredentials(credentials);\n };\n const restWrapper = new RouterliciousStorageRestWrapper(logger, rateLimiter, tokenFetcher, getAuthorizationHeader, useRestLess, baseurl, initialTokenP, defaultQueryString);\n return restWrapper;\n }\n}\nexport class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {\n constructor(logger, rateLimiter, fetchToken, getAuthorizationHeader, useRestLess, baseurl, initialTokenP, defaultQueryString = {}) {\n super(logger, rateLimiter, fetchToken, getAuthorizationHeader, useRestLess, baseurl, initialTokenP, defaultQueryString);\n }\n static load(tokenFetcher, logger, rateLimiter, useRestLess, baseurl, initialTokenP) {\n const getAuthorizationHeader = (token) => {\n return `Basic ${token.jwt}`;\n };\n const restWrapper = new RouterliciousOrdererRestWrapper(logger, rateLimiter, tokenFetcher, getAuthorizationHeader, useRestLess, baseurl, initialTokenP);\n return restWrapper;\n }\n}\nexport function toInstrumentedR11sOrdererTokenFetcher(tenantId, documentId, tokenProvider, logger) {\n const fetchOrdererToken = async (refreshToken) => {\n return PerformanceEvent.timedExecAsync(logger, {\n eventName: \"FetchOrdererToken\",\n docId: documentId,\n }, async () => {\n const ordererToken = await tokenProvider.fetchOrdererToken(tenantId, documentId, refreshToken);\n return ordererToken;\n });\n };\n return fetchOrdererToken;\n}\nexport function toInstrumentedR11sStorageTokenFetcher(tenantId, documentId, tokenProvider, logger) {\n const fetchStorageToken = async (refreshToken) => {\n return PerformanceEvent.timedExecAsync(logger, {\n eventName: \"FetchStorageToken\",\n docId: documentId,\n }, async () => {\n // Craft credentials using tenant id and token\n const storageToken = await tokenProvider.fetchStorageToken(tenantId, documentId, refreshToken);\n return storageToken;\n });\n };\n return fetchStorageToken;\n}\n//# sourceMappingURL=restWrapper.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { NetworkErrorBasic, RateLimiter, canRetryOnError, } from \"@fluidframework/driver-utils/internal\";\nimport { PerformanceEvent, wrapError, } from \"@fluidframework/telemetry-utils/internal\";\nimport io from \"socket.io-client\";\nimport { DeltaStorageService, DocumentDeltaStorageService } from \"./deltaStorageService.js\";\nimport { R11sDocumentDeltaConnection } from \"./documentDeltaConnection.js\";\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RouterliciousErrorTypes } from \"./errorUtils.js\";\nimport { GitManager } from \"./gitManager.js\";\nimport { Historian } from \"./historian.js\";\nimport { NullBlobStorageService } from \"./nullBlobStorageService.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { RouterliciousOrdererRestWrapper, RouterliciousStorageRestWrapper, } from \"./restWrapper.js\";\n/**\n * Amount of time between discoveries within which we don't need to rediscover on re-connect.\n * Currently, R11s defines session length at 10 minutes. To avoid any weird unknown edge-cases though,\n * we set the limit to 5 minutes here.\n * In the future, we likely want to retrieve this information from service's \"inactive session\" definition.\n */\nconst RediscoverAfterTimeSinceDiscoveryMs = 5 * 60000; // 5 minute\n/**\n * The DocumentService manages the Socket.IO connection and manages routing requests to connected\n * clients.\n */\nexport class DocumentService extends TypedEventEmitter {\n get resolvedUrl() {\n return this._resolvedUrl;\n }\n constructor(_resolvedUrl, ordererUrl, deltaStorageUrl, deltaStreamUrl, storageUrl, logger, tokenProvider, tenantId, documentId, ordererRestWrapper, documentStorageServicePolicies, driverPolicies, blobCache, wholeSnapshotTreeCache, shreddedSummaryTreeCache, discoverFluidResolvedUrl, storageRestWrapper, storageTokenFetcher, ordererTokenFetcher) {\n super();\n this._resolvedUrl = _resolvedUrl;\n this.ordererUrl = ordererUrl;\n this.deltaStorageUrl = deltaStorageUrl;\n this.deltaStreamUrl = deltaStreamUrl;\n this.storageUrl = storageUrl;\n this.logger = logger;\n this.tokenProvider = tokenProvider;\n this.tenantId = tenantId;\n this.documentId = documentId;\n this.ordererRestWrapper = ordererRestWrapper;\n this.documentStorageServicePolicies = documentStorageServicePolicies;\n this.driverPolicies = driverPolicies;\n this.blobCache = blobCache;\n this.wholeSnapshotTreeCache = wholeSnapshotTreeCache;\n this.shreddedSummaryTreeCache = shreddedSummaryTreeCache;\n this.discoverFluidResolvedUrl = discoverFluidResolvedUrl;\n this.storageRestWrapper = storageRestWrapper;\n this.storageTokenFetcher = storageTokenFetcher;\n this.ordererTokenFetcher = ordererTokenFetcher;\n this.lastDiscoveredAt = Date.now();\n }\n get policies() {\n return this._policies;\n }\n dispose() { }\n /**\n * Connects to a storage endpoint for snapshot service.\n *\n * @returns returns the document storage service for routerlicious driver.\n */\n async connectToStorage() {\n if (this.documentStorageService !== undefined) {\n return this.documentStorageService;\n }\n if (this.storageUrl === undefined) {\n return new NullBlobStorageService();\n }\n const getStorageManager = async (disableCache) => {\n const shouldUpdateDiscoveredSessionInfo = this.shouldUpdateDiscoveredSessionInfo();\n if (shouldUpdateDiscoveredSessionInfo) {\n await this.refreshDiscovery();\n }\n if (!this.storageManager ||\n !this.noCacheStorageManager ||\n shouldUpdateDiscoveredSessionInfo) {\n if (shouldUpdateDiscoveredSessionInfo) {\n const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentStorageRequests);\n this.storageRestWrapper = RouterliciousStorageRestWrapper.load(this.tenantId, this.storageTokenFetcher, this.logger, rateLimiter, this.driverPolicies.enableRestLess, this.storageUrl /* baseUrl */);\n }\n const historian = new Historian(true, false, this.storageRestWrapper);\n this.storageManager = new GitManager(historian);\n const noCacheHistorian = new Historian(true, true, this.storageRestWrapper);\n this.noCacheStorageManager = new GitManager(noCacheHistorian);\n }\n return disableCache ? this.noCacheStorageManager : this.storageManager;\n };\n // Initialize storageManager and noCacheStorageManager\n const storageManager = await getStorageManager();\n const noCacheStorageManager = await getStorageManager(true);\n this.documentStorageService = new DocumentStorageService(this.documentId, storageManager, this.logger, this.documentStorageServicePolicies, this.driverPolicies, this.blobCache, this.wholeSnapshotTreeCache, this.shreddedSummaryTreeCache, noCacheStorageManager, getStorageManager);\n return this.documentStorageService;\n }\n /**\n * Connects to a delta storage endpoint for getting ops between a range.\n *\n * @returns returns the document delta storage service for routerlicious driver.\n */\n async connectToDeltaStorage() {\n await this.connectToStorage();\n assert(!!this.documentStorageService, 0x0b1 /* \"Storage service not initialized\" */);\n const getRestWrapper = async () => {\n const shouldUpdateDiscoveredSessionInfo = this.shouldUpdateDiscoveredSessionInfo();\n if (shouldUpdateDiscoveredSessionInfo) {\n await this.refreshDiscovery();\n const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);\n this.ordererRestWrapper = RouterliciousOrdererRestWrapper.load(this.ordererTokenFetcher, this.logger, rateLimiter, this.driverPolicies.enableRestLess);\n }\n return this.ordererRestWrapper;\n };\n const restWrapper = await getRestWrapper();\n const deltaStorageService = new DeltaStorageService(this.deltaStorageUrl, restWrapper, this.logger, getRestWrapper, () => this.deltaStorageUrl);\n return new DocumentDeltaStorageService(this.tenantId, this.documentId, deltaStorageService, this.documentStorageService, this.logger);\n }\n /**\n * Connects to a delta stream endpoint for emitting ops.\n *\n * @returns returns the document delta stream service for routerlicious driver.\n */\n async connectToDeltaStream(client) {\n const connect = async (refreshToken) => {\n let ordererToken = await this.ordererRestWrapper.getToken();\n if (this.shouldUpdateDiscoveredSessionInfo()) {\n await this.refreshDiscovery();\n }\n if (refreshToken) {\n ordererToken = await PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"GetDeltaStreamToken\",\n docId: this.documentId,\n details: JSON.stringify({\n refreshToken,\n }),\n }, async () => this.tokenProvider\n .fetchOrdererToken(this.tenantId, this.documentId, refreshToken)\n .then((newOrdererToken) => {\n this.ordererRestWrapper.setToken(newOrdererToken);\n return newOrdererToken;\n }, (error) => {\n const tokenError = wrapError(error, (errorMessage) => new NetworkErrorBasic(`The Host-provided token fetcher threw an error`, RouterliciousErrorTypes.fetchTokenError, canRetryOnError(error), { errorMessage, driverVersion }));\n throw tokenError;\n }));\n }\n return PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"ConnectToDeltaStream\",\n docId: this.documentId,\n }, async () => {\n return R11sDocumentDeltaConnection.create(this.tenantId, this.documentId, ordererToken.jwt, io, client, this.deltaStreamUrl, this.logger, undefined /* timeoutMs */, this.driverPolicies.enableLongPollingDowngrade);\n });\n };\n // Attempt to establish connection.\n // Retry with new token on authorization error; otherwise, allow container layer to handle.\n try {\n const connection = await connect();\n // Enable single-commit summaries via driver policy based on the enable_single_commit_summary flag which maybe provided by the service during connection.\n // summarizeProtocolTree flag is used by the loader layer to attach protocol tree along with the summary required in the single-commit summaries.\n const shouldSummarizeProtocolTree = connection.details\n ?.supportedFeatures?.enable_single_commit_summary\n ? true\n : false;\n this._policies = {\n ...this._policies,\n summarizeProtocolTree: shouldSummarizeProtocolTree,\n };\n return connection;\n }\n catch (error) {\n if (error?.statusCode === 401) {\n // Fetch new token and retry once,\n // otherwise 401 will be bubbled up as non-retriable AuthorizationError.\n return connect(true /* refreshToken */);\n }\n throw error;\n }\n }\n /**\n * Re-discover session URLs if necessary.\n */\n async refreshDiscovery() {\n if (!this.discoverP) {\n this.discoverP = PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"RefreshDiscovery\",\n }, async () => this.refreshDiscoveryCore());\n }\n return this.discoverP;\n }\n async refreshDiscoveryCore() {\n const fluidResolvedUrl = await this.discoverFluidResolvedUrl();\n this._resolvedUrl = fluidResolvedUrl;\n // TODO why are we non null asserting here?\n this.storageUrl = fluidResolvedUrl.endpoints.storageUrl;\n // TODO why are we non null asserting here?\n this.ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;\n // TODO why are we non null asserting here?\n this.deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;\n this.deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl ?? this.ordererUrl;\n }\n /**\n * Whether enough time has passed since last disconnect to warrant a new discovery call on reconnect.\n */\n shouldUpdateDiscoveredSessionInfo() {\n if (!this.driverPolicies.enableDiscovery) {\n return false;\n }\n const now = Date.now();\n // When connection is disconnected, we cannot know if session has moved or document has been deleted\n // without re-doing discovery on the next attempt to connect.\n // Disconnect event is not so reliable in local testing. To ensure re-discovery when necessary,\n // re-discover if enough time has passed since last discovery.\n const pastLastDiscoveryTimeThreshold = now - this.lastDiscoveredAt > RediscoverAfterTimeSinceDiscoveryMs;\n if (pastLastDiscoveryTimeThreshold) {\n // Reset discover promise and refresh discovery.\n this.lastDiscoveredAt = Date.now();\n this.discoverP = undefined;\n this.refreshDiscovery().catch(() => {\n // Undo discovery time set on failure, so that next check refreshes.\n this.lastDiscoveredAt = 0;\n });\n }\n return pastLastDiscoveryTimeThreshold;\n }\n}\n//# sourceMappingURL=documentService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Type guard to detect if an IResolvedUrl is an IRouterliciousResolvedUrl.\n * @internal\n */\nexport const isRouterliciousResolvedUrl = (resolvedUrl) => resolvedUrl.routerliciousResolvedUrl === true;\n//# sourceMappingURL=routerliciousResolvedUrl.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Assume documentId is at end of url path.\n * This is true for Routerlicious' and Tinylicious' documentUrl and deltaStorageUrl.\n * Routerlicious and Tinylicious do not use documentId in storageUrl nor ordererUrl.\n * TODO: Ideally we would be able to regenerate the resolvedUrl, rather than patching the current one.\n */\nexport const replaceDocumentIdInPath = (urlPath, documentId) => urlPath.split(\"/\").slice(0, -1).concat([documentId]).join(\"/\");\nexport const getDiscoveredFluidResolvedUrl = (resolvedUrl, session) => {\n const discoveredOrdererUrl = new URL(session.ordererUrl);\n // TODO why are we non null asserting here?\n const deltaStorageUrl = new URL(resolvedUrl.endpoints.deltaStorageUrl);\n deltaStorageUrl.host = discoveredOrdererUrl.host;\n const discoveredStorageUrl = new URL(session.historianUrl);\n // TODO why are we non null asserting here?\n const storageUrl = new URL(resolvedUrl.endpoints.storageUrl);\n storageUrl.host = discoveredStorageUrl.host;\n const parsedUrl = new URL(resolvedUrl.url);\n const discoveredResolvedUrl = {\n endpoints: {\n deltaStorageUrl: deltaStorageUrl.toString(),\n ordererUrl: session.ordererUrl,\n deltaStreamUrl: session.deltaStreamUrl,\n storageUrl: storageUrl.toString(),\n },\n id: resolvedUrl.id,\n tokens: resolvedUrl.tokens,\n type: resolvedUrl.type,\n url: new URL(`https://${discoveredOrdererUrl.host}${parsedUrl.pathname}`).toString(),\n };\n return discoveredResolvedUrl;\n};\n//# sourceMappingURL=urlUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { getW3CData } from \"@fluidframework/driver-base/internal\";\nimport { LoaderCachingPolicy, } from \"@fluidframework/driver-definitions/internal\";\nimport { RateLimiter, getDocAttributesFromProtocolSummary, getQuorumValuesFromProtocolSummary, isCombinedAppAndProtocolSummary, } from \"@fluidframework/driver-utils/internal\";\nimport { convertSummaryTreeToWholeSummaryTree, } from \"@fluidframework/server-services-client\";\nimport { PerformanceEvent, createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { InMemoryCache, NullCache } from \"./cache.js\";\nimport { DocumentService } from \"./documentService.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { RouterliciousOrdererRestWrapper, RouterliciousStorageRestWrapper, toInstrumentedR11sOrdererTokenFetcher, toInstrumentedR11sStorageTokenFetcher, } from \"./restWrapper.js\";\nimport { isRouterliciousResolvedUrl } from \"./routerliciousResolvedUrl.js\";\nimport { getDiscoveredFluidResolvedUrl, replaceDocumentIdInPath } from \"./urlUtils.js\";\nconst maximumSnapshotCacheDurationMs = 432000000; // 5 days in ms\nconst defaultRouterliciousDriverPolicies = {\n enablePrefetch: true,\n maxConcurrentStorageRequests: 100,\n maxConcurrentOrdererRequests: 100,\n enableDiscovery: false,\n enableWholeSummaryUpload: false,\n enableRestLess: true,\n enableInternalSummaryCaching: true,\n enableLongPollingDowngrade: true,\n};\n/**\n * Factory for creating the routerlicious document service. Use this if you want to\n * use the routerlicious implementation.\n * @internal\n */\nexport class RouterliciousDocumentServiceFactory {\n constructor(tokenProvider, driverPolicies = {}) {\n this.tokenProvider = tokenProvider;\n this.wholeSnapshotTreeCache = new NullCache();\n this.shreddedSummaryTreeCache = new NullCache();\n // Use the maximum allowed by the policy (IDocumentStorageServicePolicies.maximumCacheDurationMs set below)\n const snapshotCacheExpiryMs = maximumSnapshotCacheDurationMs;\n this.driverPolicies = {\n ...defaultRouterliciousDriverPolicies,\n ...driverPolicies,\n };\n this.blobCache = new InMemoryCache();\n if (this.driverPolicies.enableInternalSummaryCaching) {\n if (this.driverPolicies.enableWholeSummaryUpload) {\n this.wholeSnapshotTreeCache = new InMemoryCache(snapshotCacheExpiryMs);\n }\n else {\n this.shreddedSummaryTreeCache = new InMemoryCache(snapshotCacheExpiryMs);\n }\n }\n }\n /**\n * {@inheritDoc @fluidframework/driver-definitions#IDocumentServiceFactory.createContainer}\n *\n * @throws {@link DocumentPostCreateError}\n * If an exception is thrown while invoking the provided {@link ITokenProvider.documentPostCreateCallback}.\n */\n async createContainer(createNewSummary, resolvedUrl, logger, clientIsSummarizer) {\n if (createNewSummary === undefined) {\n throw new Error(\"Empty file summary creation isn't supported in this driver.\");\n }\n assert(!!resolvedUrl.endpoints.ordererUrl, 0x0b2 /* \"Missing orderer URL!\" */);\n const parsedUrl = new URL(resolvedUrl.url);\n if (!parsedUrl.pathname) {\n throw new Error(\"Parsed url should contain tenant and doc Id!!\");\n }\n const [, tenantId] = parsedUrl.pathname.split(\"/\");\n assert(tenantId !== undefined, 0x9ac /* \"Missing tenant ID!\" */);\n if (!isCombinedAppAndProtocolSummary(createNewSummary)) {\n throw new Error(\"Protocol and App Summary required in the full summary\");\n }\n const protocolSummary = createNewSummary.tree[\".protocol\"];\n const appSummary = createNewSummary.tree[\".app\"];\n const documentAttributes = getDocAttributesFromProtocolSummary(protocolSummary);\n const quorumValues = getQuorumValuesFromProtocolSummary(protocolSummary);\n const logger2 = createChildLogger({ logger, namespace: \"RouterliciousDriver\" });\n const ordererTokenFetcher = toInstrumentedR11sOrdererTokenFetcher(tenantId, undefined /* documentId */, this.tokenProvider, logger2);\n const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);\n const ordererRestWrapper = RouterliciousOrdererRestWrapper.load(ordererTokenFetcher, logger2, rateLimiter, this.driverPolicies.enableRestLess, resolvedUrl.endpoints.ordererUrl /* baseUrl */);\n const createAsEphemeral = isRouterliciousResolvedUrl(resolvedUrl)\n ? resolvedUrl.createAsEphemeral === true\n : false;\n const res = await PerformanceEvent.timedExecAsync(logger2, {\n eventName: \"CreateNew\",\n details: JSON.stringify({\n enableDiscovery: this.driverPolicies.enableDiscovery,\n sequenceNumber: documentAttributes.sequenceNumber,\n isEphemeralContainer: createAsEphemeral,\n }),\n }, async (event) => {\n // @TODO: Remove returned \"string\" type when removing back-compat code\n const postRes = (await ordererRestWrapper.post(`/documents/${tenantId}`, {\n summary: convertSummaryTreeToWholeSummaryTree(undefined, appSummary),\n sequenceNumber: documentAttributes.sequenceNumber,\n values: quorumValues,\n enableDiscovery: this.driverPolicies.enableDiscovery,\n generateToken: this.tokenProvider.documentPostCreateCallback !== undefined,\n isEphemeralContainer: createAsEphemeral,\n enableAnyBinaryBlobOnFirstSummary: true,\n })).content;\n event.end({\n docId: typeof postRes === \"string\" ? postRes : postRes.id,\n });\n return postRes;\n });\n // For supporting backward compatibility, when the request has generateToken === true, it will return\n // an object instead of string\n // @TODO: Remove the logic when no need to support back-compat\n let documentId;\n let token;\n let session;\n if (typeof res === \"string\") {\n documentId = res;\n }\n else {\n documentId = res.id;\n token = res.token;\n session = this.driverPolicies.enableDiscovery ? res.session : undefined;\n }\n // @TODO: Remove token from the condition, checking the documentPostCreateCallback !== undefined\n // is sufficient to determine if the token will be undefined or not.\n try {\n await PerformanceEvent.timedExecAsync(logger2, {\n eventName: \"DocPostCreateCallback\",\n docId: documentId,\n }, async () => {\n if (token && this.tokenProvider.documentPostCreateCallback !== undefined) {\n return this.tokenProvider.documentPostCreateCallback(documentId, token);\n }\n });\n }\n catch (error) {\n throw new DocumentPostCreateError(error);\n }\n parsedUrl.pathname = replaceDocumentIdInPath(parsedUrl.pathname, documentId);\n const deltaStorageUrl = resolvedUrl.endpoints.deltaStorageUrl;\n if (!deltaStorageUrl) {\n throw new Error(`All endpoints urls must be provided. [deltaStorageUrl:${deltaStorageUrl}]`);\n }\n const parsedDeltaStorageUrl = new URL(deltaStorageUrl);\n parsedDeltaStorageUrl.pathname = replaceDocumentIdInPath(parsedDeltaStorageUrl.pathname, documentId);\n return this.createDocumentService({\n ...resolvedUrl,\n url: parsedUrl.toString(),\n id: documentId,\n endpoints: {\n ...resolvedUrl.endpoints,\n deltaStorageUrl: parsedDeltaStorageUrl.toString(),\n },\n }, logger, clientIsSummarizer, session);\n }\n /**\n * {@inheritDoc @fluidframework/driver-definitions#IDocumentServiceFactory.createDocumentService}\n *\n * @returns Routerlicious document service.\n */\n async createDocumentService(resolvedUrl, logger, clientIsSummarizer, session) {\n const parsedUrl = new URL(resolvedUrl.url);\n const [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n if (!documentId || !tenantId) {\n throw new Error(`Couldn't parse documentId and/or tenantId. [documentId:${documentId}][tenantId:${tenantId}]`);\n }\n const logger2 = createChildLogger({\n logger,\n namespace: \"RouterliciousDriver\",\n properties: {\n all: { driverVersion },\n },\n });\n const ordererTokenFetcher = toInstrumentedR11sOrdererTokenFetcher(tenantId, documentId, this.tokenProvider, logger2);\n const storageTokenFetcher = toInstrumentedR11sStorageTokenFetcher(tenantId, documentId, this.tokenProvider, logger2);\n const ordererTokenP = ordererTokenFetcher();\n const storageTokenP = storageTokenFetcher();\n const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);\n const ordererRestWrapper = RouterliciousOrdererRestWrapper.load(ordererTokenFetcher, logger2, rateLimiter, this.driverPolicies.enableRestLess, undefined /* baseUrl */, ordererTokenP);\n const discoverFluidResolvedUrl = async () => {\n if (!this.driverPolicies.enableDiscovery) {\n return resolvedUrl;\n }\n const discoveredSession = await PerformanceEvent.timedExecAsync(logger2, {\n eventName: \"DiscoverSession\",\n docId: documentId,\n }, async (event) => {\n // The service responds with the current document session associated with the container.\n const response = await ordererRestWrapper.get(`${resolvedUrl.endpoints.ordererUrl}/documents/${tenantId}/session/${documentId}`);\n event.end({\n ...response.propsToLog,\n ...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n });\n return response.content;\n });\n return getDiscoveredFluidResolvedUrl(resolvedUrl, discoveredSession);\n };\n const fluidResolvedUrl = session !== undefined\n ? getDiscoveredFluidResolvedUrl(resolvedUrl, session)\n : await discoverFluidResolvedUrl();\n // TODO why are we non null asserting here?\n const storageUrl = fluidResolvedUrl.endpoints.storageUrl;\n // TODO why are we non null asserting here?\n const ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;\n const deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;\n const deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl ?? ordererUrl; // backward compatibility\n if (!ordererUrl || !deltaStorageUrl) {\n throw new Error(`All endpoints urls must be provided. [ordererUrl:${ordererUrl}][deltaStorageUrl:${deltaStorageUrl}]`);\n }\n const storageRestWrapper = RouterliciousStorageRestWrapper.load(tenantId, storageTokenFetcher, logger2, new RateLimiter(this.driverPolicies.maxConcurrentStorageRequests), this.driverPolicies.enableRestLess, storageUrl /* baseUrl */, storageTokenP);\n const documentStorageServicePolicies = {\n caching: this.driverPolicies.enablePrefetch\n ? LoaderCachingPolicy.Prefetch\n : LoaderCachingPolicy.NoCaching,\n maximumCacheDurationMs: maximumSnapshotCacheDurationMs,\n };\n return new DocumentService(fluidResolvedUrl, ordererUrl, deltaStorageUrl, deltaStreamUrl, storageUrl, logger2, this.tokenProvider, tenantId, documentId, ordererRestWrapper, documentStorageServicePolicies, this.driverPolicies, this.blobCache, this.wholeSnapshotTreeCache, this.shreddedSummaryTreeCache, discoverFluidResolvedUrl, storageRestWrapper, storageTokenFetcher, ordererTokenFetcher);\n }\n}\n/**\n * Error returned by {@link RouterliciousDocumentServiceFactory.createContainer} when an error is thrown\n * in {@link ITokenProvider.documentPostCreateCallback}.\n * It is the consumer's responsibility to ensure that any state related to container creation is appropriately\n * cleaned up in the event of failure.\n * This includes the document itself, which will have been created by the time this error was thrown.\n *\n * @remarks TODO: examples of suggested actions for recovery.\n * - How would a user delete the created document?\n * - What would a retry pattern look like here?\n * @internal\n */\nexport class DocumentPostCreateError extends Error {\n constructor(\n /**\n * Inner error being wrapped.\n */\n innerError) {\n super(innerError.message);\n this.innerError = innerError;\n this.name = \"DocumentPostCreateError\";\n }\n get stack() {\n return this.innerError.stack;\n }\n}\n//# sourceMappingURL=documentServiceFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Creates Azure-specific audience member.\n *\n * @remarks\n * The provided `audienceMember`'s {@link @fluidframework/protocol-definitions#IClient.user} must be an {@link AzureUser}.\n */\nexport function createAzureAudienceMember(audienceMember) {\n const user = audienceMember.user;\n assertIsAzureUser(user);\n return {\n id: user.id,\n name: user.name,\n connections: [],\n additionalDetails: user.additionalDetails,\n };\n}\n/**\n * Asserts that the provided {@link @fluidframework/protocol-definitions#IUser} is an {@link AzureUser}.\n */\nfunction assertIsAzureUser(user) {\n const maybeAzureUser = user;\n const baseMessage = 'Provided user data was not an \"AzureUser\".';\n if (maybeAzureUser.id === undefined) {\n throw new TypeError(`${baseMessage} Missing required \"id\" property.`);\n }\n if (maybeAzureUser.name === undefined) {\n throw new TypeError(`${baseMessage} Missing required \"name\" property.`);\n }\n}\n//# sourceMappingURL=AzureAudience.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DriverHeader, } from \"@fluidframework/driver-definitions/internal\";\n/**\n * Implementation of {@link @fluidframework/driver-definitions#IUrlResolver} to resolve documents stored using the\n * Azure Fluid Relay based off of the orderer and storage URLs provide.\n *\n * @remarks The token provider here can be an `InsecureTokenProvider` for basic scenarios or more robust, secure\n * providers that fulfill the {@link @fluidframework/routerlicious-driver#ITokenProvider} interface.\n */\nexport class AzureUrlResolver {\n constructor() { }\n async resolve(request) {\n const { ordererUrl, storageUrl, tenantId, containerId } = decodeAzureUrl(request.url);\n // determine whether the request is for creating of a new container.\n // such request has the `createNew` header set to true and doesn't have a container ID.\n if (request.headers && request.headers[DriverHeader.createNew] === true) {\n return {\n endpoints: {\n deltaStorageUrl: `${ordererUrl}/deltas/${tenantId}/new`,\n ordererUrl,\n storageUrl: `${storageUrl}/repos/${tenantId}`,\n },\n // id is a mandatory attribute, but it's ignored by the driver for new container requests.\n id: \"\",\n // tokens attribute is redundant as all tokens are generated via ITokenProvider\n tokens: {},\n type: \"fluid\",\n url: `${ordererUrl}/${tenantId}/new`,\n };\n }\n if (containerId === undefined) {\n throw new Error(\"Azure URL did not contain containerId\");\n }\n const documentUrl = `${ordererUrl}/${tenantId}/${containerId}`;\n return {\n endpoints: {\n deltaStorageUrl: `${ordererUrl}/deltas/${tenantId}/${containerId}`,\n ordererUrl,\n storageUrl: `${storageUrl}/repos/${tenantId}`,\n },\n id: containerId,\n tokens: {},\n type: \"fluid\",\n url: documentUrl,\n };\n }\n async getAbsoluteUrl(resolvedUrl, relativeUrl) {\n if (resolvedUrl.type !== \"fluid\") {\n throw new Error(\"Invalid Resolved Url\");\n }\n return `${resolvedUrl.url}/${relativeUrl}`;\n }\n}\nfunction decodeAzureUrl(urlString) {\n const url = new URL(urlString);\n const ordererUrl = url.origin;\n const searchParameters = url.searchParams;\n const storageUrl = searchParameters.get(\"storage\");\n if (storageUrl === null) {\n throw new Error(\"Azure URL did not contain a storage URL\");\n }\n const tenantId = searchParameters.get(\"tenantId\");\n if (tenantId === null) {\n throw new Error(\"Azure URL did not contain a tenant ID\");\n }\n const storageUrlDecoded = decodeURIComponent(storageUrl);\n const tenantIdDecoded = decodeURIComponent(tenantId);\n const containerId = searchParameters.get(\"containerId\");\n const containerIdDecoded = containerId === null ? undefined : decodeURIComponent(containerId);\n return {\n ordererUrl,\n storageUrl: storageUrlDecoded,\n tenantId: tenantIdDecoded,\n containerId: containerIdDecoded,\n };\n}\n/**\n * Creates a request object that can be passed to {@link @fluidframework/fluid-static#IFluidContainer.attach} to\n * request creation of a new Fluid Container on the Azure service.\n *\n * @param endpointUrl - URI to the Azure Fluid Relay service discovery endpoint.\n * @param tenantId - Unique tenant identifier.\n */\nexport const createAzureCreateNewRequest = (endpointUrl, tenantId) => {\n const url = new URL(endpointUrl);\n url.searchParams.append(\"storage\", encodeURIComponent(endpointUrl));\n url.searchParams.append(\"tenantId\", encodeURIComponent(tenantId));\n return {\n url: url.href,\n headers: {\n [DriverHeader.createNew]: true,\n },\n };\n};\n//# sourceMappingURL=AzureUrlResolver.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Type guard for validating a given AzureConnectionConfig is a remote connection type (AzureRemoteConnectionConfig)\n */\nexport function isAzureRemoteConnectionConfig(connectionConfig) {\n return connectionConfig.type === \"remote\";\n}\n/**\n * Type guard for validating a given AzureConnectionConfig is a local connection type (AzureLocalConnectionConfig)\n */\nexport function isAzureLocalConnectionConfig(connectionConfig) {\n return connectionConfig.type === \"local\";\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { LoaderHeader, } from \"@fluidframework/container-definitions/internal\";\nimport { Loader, loadContainerPaused } from \"@fluidframework/container-loader/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { applyStorageCompression } from \"@fluidframework/driver-utils/internal\";\nimport { createDOProviderContainerRuntimeFactory, createFluidContainer, createServiceAudience, } from \"@fluidframework/fluid-static/internal\";\nimport { RouterliciousDocumentServiceFactory } from \"@fluidframework/routerlicious-driver/internal\";\nimport { wrapConfigProviderWithDefaults } from \"@fluidframework/telemetry-utils/internal\";\nimport { createAzureAudienceMember } from \"./AzureAudience.js\";\nimport { AzureUrlResolver, createAzureCreateNewRequest } from \"./AzureUrlResolver.js\";\nimport { isAzureRemoteConnectionConfig } from \"./utils.js\";\n/**\n * Strongly typed id for connecting to a local Azure Fluid Relay.\n */\nconst LOCAL_MODE_TENANT_ID = \"local\";\nconst getTenantId = (connectionProperties) => {\n return isAzureRemoteConnectionConfig(connectionProperties)\n ? connectionProperties.tenantId\n : LOCAL_MODE_TENANT_ID;\n};\nconst MAX_VERSION_COUNT = 5;\n/**\n * Default feature gates.\n * These values will only be used if the feature gate is not already set by the supplied config provider.\n */\nconst azureClientFeatureGates = {\n // Azure client requires a write connection by default\n \"Fluid.Container.ForceWriteConnection\": true,\n};\n/**\n * Wrap the config provider to fall back on the appropriate defaults for Azure Client.\n * @param baseConfigProvider - The base config provider to wrap\n * @returns A new config provider with the appropriate defaults applied underneath the given provider\n */\nfunction wrapConfigProvider(baseConfigProvider) {\n return wrapConfigProviderWithDefaults(baseConfigProvider, azureClientFeatureGates);\n}\n/**\n * AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,\n * when running with local tenantId, have it be backed by a local Azure Fluid Relay instance.\n * @public\n */\nexport class AzureClient {\n /**\n * Creates a new client instance using configuration parameters.\n * @param properties - Properties for initializing a new AzureClient instance\n */\n constructor(properties) {\n this.connectionConfig = properties.connection;\n this.logger = properties.logger;\n // remove trailing slash from URL if any\n this.connectionConfig.endpoint = this.connectionConfig.endpoint.replace(/\\/$/, \"\");\n this.urlResolver = new AzureUrlResolver();\n // The local service implementation differs from the Azure Fluid Relay in blob\n // storage format. Azure Fluid Relay supports whole summary upload. Local currently does not.\n const isRemoteConnection = isAzureRemoteConnectionConfig(this.connectionConfig);\n const origDocumentServiceFactory = new RouterliciousDocumentServiceFactory(this.connectionConfig.tokenProvider, {\n enableWholeSummaryUpload: isRemoteConnection,\n enableDiscovery: isRemoteConnection,\n });\n this.documentServiceFactory = applyStorageCompression(origDocumentServiceFactory, properties.summaryCompression);\n this.configProvider = wrapConfigProvider(properties.configProvider);\n }\n /**\n * Creates a new detached container instance in the Azure Fluid Relay.\n * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n * (normally not explicitly specified.)\n * @param containerSchema - Container schema for the new container.\n * @param compatibilityMode - Compatibility mode the container should run in.\n * @returns New detached container instance along with associated services.\n */\n async createContainer(containerSchema, compatibilityMode) {\n const loader = this.createLoader(containerSchema, compatibilityMode);\n const container = await loader.createDetachedContainer({\n package: \"no-dynamic-package\",\n config: {},\n });\n const fluidContainer = await this.createFluidContainer(container, this.connectionConfig);\n const services = this.getContainerServices(container);\n return { container: fluidContainer, services };\n }\n /**\n * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n * (normally not explicitly specified.)\n * @param id - Unique ID of the container in Azure Fluid Relay.\n * @param containerSchema - Container schema used to access data objects in the container.\n * @param compatibilityMode - Compatibility mode the container should run in.\n * @returns Existing container instance along with associated services.\n */\n async getContainer(id, containerSchema, compatibilityMode) {\n const loader = this.createLoader(containerSchema, compatibilityMode);\n const url = new URL(this.connectionConfig.endpoint);\n url.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n url.searchParams.append(\"tenantId\", encodeURIComponent(getTenantId(this.connectionConfig)));\n url.searchParams.append(\"containerId\", encodeURIComponent(id));\n const container = await loader.resolve({ url: url.href });\n const rootDataObject = await this.getContainerEntryPoint(container);\n const fluidContainer = createFluidContainer({\n container,\n rootDataObject,\n });\n const services = this.getContainerServices(container);\n return { container: fluidContainer, services };\n }\n /**\n * Load a specific version of a container for viewing only.\n * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n * (normally not explicitly specified.)\n * @param id - Unique ID of the source container in Azure Fluid Relay.\n * @param containerSchema - Container schema used to access data objects in the container.\n * @param version - Unique version of the source container in Azure Fluid Relay.\n * @param compatibilityMode - Compatibility mode the container should run in.\n * @returns Loaded container instance at the specified version.\n */\n async viewContainerVersion(id, containerSchema, version, compatibilityMode) {\n const loader = this.createLoader(containerSchema, compatibilityMode);\n const url = new URL(this.connectionConfig.endpoint);\n url.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n url.searchParams.append(\"tenantId\", encodeURIComponent(getTenantId(this.connectionConfig)));\n url.searchParams.append(\"containerId\", encodeURIComponent(id));\n const container = await loadContainerPaused(loader, {\n url: url.href,\n headers: { [LoaderHeader.version]: version.id },\n });\n const rootDataObject = await this.getContainerEntryPoint(container);\n const fluidContainer = createFluidContainer({\n container,\n rootDataObject,\n });\n return { container: fluidContainer };\n }\n /**\n * Get the list of versions for specific container.\n * @param id - Unique ID of the source container in Azure Fluid Relay.\n * @param options - \"Get\" options. If options are not provided, API\n * will assume maxCount of versions to retrieve to be 5.\n * @returns Array of available container versions.\n */\n async getContainerVersions(id, options) {\n const url = new URL(this.connectionConfig.endpoint);\n url.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n url.searchParams.append(\"tenantId\", encodeURIComponent(getTenantId(this.connectionConfig)));\n url.searchParams.append(\"containerId\", encodeURIComponent(id));\n const resolvedUrl = await this.urlResolver.resolve({ url: url.href });\n if (!resolvedUrl) {\n throw new Error(\"Unable to resolved URL\");\n }\n const documentService = await this.documentServiceFactory.createDocumentService(resolvedUrl);\n const storage = await documentService.connectToStorage();\n // External API uses null\n // eslint-disable-next-line unicorn/no-null\n const versions = await storage.getVersions(null, options?.maxCount ?? MAX_VERSION_COUNT);\n return versions.map((item) => {\n return { id: item.id, date: item.date };\n });\n }\n getContainerServices(container) {\n return {\n audience: createServiceAudience({\n container,\n createServiceMember: createAzureAudienceMember,\n }),\n };\n }\n createLoader(schema, compatibilityMode) {\n const runtimeFactory = createDOProviderContainerRuntimeFactory({\n schema,\n compatibilityMode,\n });\n const load = async () => {\n return {\n module: { fluidExport: runtimeFactory },\n details: { package: \"no-dynamic-package\", config: {} },\n };\n };\n const codeLoader = { load };\n const client = {\n details: {\n capabilities: { interactive: true },\n },\n permission: [],\n scopes: [],\n user: { id: \"\" },\n mode: \"write\",\n };\n return new Loader({\n urlResolver: this.urlResolver,\n documentServiceFactory: this.documentServiceFactory,\n codeLoader,\n logger: this.logger,\n options: { client },\n configProvider: this.configProvider,\n });\n }\n async createFluidContainer(container, connection) {\n const createNewRequest = createAzureCreateNewRequest(connection.endpoint, getTenantId(connection));\n const rootDataObject = await this.getContainerEntryPoint(container);\n /**\n * See {@link FluidContainer.attach}\n */\n const attach = async () => {\n if (container.attachState !== AttachState.Detached) {\n throw new Error(\"Cannot attach container. Container is not in detached state\");\n }\n await container.attach(createNewRequest);\n if (container.resolvedUrl === undefined) {\n throw new Error(\"Resolved Url not available on attached container\");\n }\n return container.resolvedUrl.id;\n };\n const fluidContainer = createFluidContainer({\n container,\n rootDataObject,\n });\n fluidContainer.attach = attach;\n return fluidContainer;\n }\n async getContainerEntryPoint(container) {\n const rootDataObject = await container.getEntryPoint();\n assert(rootDataObject.IRootDataObject !== undefined, 0x90a /* entryPoint must be of type IRootDataObject */);\n return rootDataObject.IRootDataObject;\n }\n}\n//# sourceMappingURL=AzureClient.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidErrorTypes } from \"@fluidframework/core-interfaces/internal\";\n/**\n * Different error types the ClientSession may report out to the Host.\n * @legacy\n * @alpha\n */\nexport const ContainerErrorTypes = {\n ...FluidErrorTypes,\n /**\n * Error indicating an client session has expired. Currently this only happens when GC is allowed on a document and\n * aids in safely deleting unused objects.\n */\n clientSessionExpiredError: \"clientSessionExpiredError\",\n};\n/**\n * Different error types the Container may report out to the Host.\n *\n * @deprecated ContainerErrorType is being deprecated as a public export. Please use {@link ContainerErrorTypes#clientSessionExpiredError} instead.\n * @internal\n */\nexport var ContainerErrorType;\n(function (ContainerErrorType) {\n /**\n * Some error, most likely an exception caught by runtime and propagated to container as critical error\n */\n ContainerErrorType[\"genericError\"] = \"genericError\";\n /**\n * Throttling error from server. Server is busy and is asking not to reconnect for some time\n */\n ContainerErrorType[\"throttlingError\"] = \"throttlingError\";\n /**\n * Data loss error detected by Container / DeltaManager. Likely points to storage issue.\n */\n ContainerErrorType[\"dataCorruptionError\"] = \"dataCorruptionError\";\n /**\n * Error encountered when processing an operation. May correlate with data corruption.\n */\n ContainerErrorType[\"dataProcessingError\"] = \"dataProcessingError\";\n /**\n * Error indicating an API is being used improperly resulting in an invalid operation.\n */\n ContainerErrorType[\"usageError\"] = \"usageError\";\n /**\n * Error indicating an client session has expired. Currently this only happens when GC is allowed on a document and\n * aids in safely deleting unused objects.\n */\n ContainerErrorType[\"clientSessionExpiredError\"] = \"clientSessionExpiredError\";\n})(ContainerErrorType || (ContainerErrorType = {}));\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Accepted header keys for requests coming to the Loader\n * @legacy\n * @alpha\n */\nexport var LoaderHeader;\n(function (LoaderHeader) {\n /**\n * @deprecated This header has been deprecated and will be removed in a future release\n * Override the Loader's default caching behavior for this container.\n */\n LoaderHeader[\"cache\"] = \"fluid-cache\";\n LoaderHeader[\"clientDetails\"] = \"fluid-client-details\";\n /**\n * Start the container in a paused, unconnected state. Defaults to false\n */\n LoaderHeader[\"loadMode\"] = \"loadMode\";\n LoaderHeader[\"reconnect\"] = \"fluid-reconnect\";\n /**\n * Loads the container to at least the specified sequence number.\n * If not defined, behavior will fall back to `IContainerLoadMode.opsBeforeReturn`.\n */\n LoaderHeader[\"sequenceNumber\"] = \"fluid-sequence-number\";\n /**\n * One of the following:\n * null or \"null\": use ops, no snapshots\n * undefined: fetch latest snapshot\n * otherwise, version sha to load snapshot\n */\n LoaderHeader[\"version\"] = \"version\";\n})(LoaderHeader || (LoaderHeader = {}));\n//# sourceMappingURL=loader.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The attachment state of some Fluid data (e.g. a container or data store), denoting whether it is uploaded to the\n * service. The transition from detached to attached state is a one-way transition.\n * @public\n */\nexport var AttachState;\n(function (AttachState) {\n /**\n * In detached state, the data is only present on the local client's machine. It has not yet been uploaded\n * to the service.\n */\n AttachState[\"Detached\"] = \"Detached\";\n /**\n * In attaching state, the data has started the upload to the service, but has not yet completed.\n */\n AttachState[\"Attaching\"] = \"Attaching\";\n /**\n * In attached state, the data has completed upload to the service. It can be accessed by other clients after\n * reaching attached state.\n */\n AttachState[\"Attached\"] = \"Attached\";\n})(AttachState || (AttachState = {}));\n/**\n * @legacy\n * @alpha\n */\nexport const IRuntimeFactory = \"IRuntimeFactory\";\n//# sourceMappingURL=runtime.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState, } from \"@fluidframework/container-definitions/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { readAndParse } from \"@fluidframework/driver-utils/internal\";\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\nexport const redirectTableBlobName = \".redirectTable\";\n/**\n * @internal\n */\nexport const blobsTreeName = \".blobs\";\n/**\n * Reads blobs needed to load BlobManager from storage.\n *\n */\nexport const loadBlobManagerLoadInfo = async (context) => loadV1(context);\nconst loadV1 = async (context) => {\n const blobsTree = context.baseSnapshot?.trees[blobsTreeName];\n if (!blobsTree) {\n return {};\n }\n let redirectTableEntries = [];\n const tableId = blobsTree.blobs[redirectTableBlobName];\n if (tableId) {\n redirectTableEntries = await readAndParse(context.storage, tableId);\n }\n const ids = Object.entries(blobsTree.blobs)\n .filter(([k, _]) => k !== redirectTableBlobName)\n .map(([_, v]) => v);\n return { ids, redirectTable: redirectTableEntries };\n};\nexport const toRedirectTable = (snapshot, logger, attachState) => {\n logger.sendTelemetryEvent({\n eventName: \"AttachmentBlobsLoaded\",\n count: snapshot.ids?.length ?? 0,\n redirectTable: snapshot.redirectTable?.length,\n });\n const redirectTable = new Map(snapshot.redirectTable);\n const detached = attachState !== AttachState.Attached;\n if (snapshot.ids) {\n // If we are detached, we don't have storage IDs yet, so set to undefined\n // Otherwise, set identity (id -> id) entries.\n snapshot.ids.forEach((entry) => redirectTable.set(entry, detached ? undefined : entry));\n }\n return redirectTable;\n};\nexport const summarizeBlobManagerState = (redirectTable, attachState) => summarizeV1(redirectTable, attachState);\nconst summarizeV1 = (redirectTable, attachState) => {\n const storageIds = getStorageIds(redirectTable, attachState);\n // if storageIds is empty, it means we are detached and have only local IDs, or that there are no blobs attached\n const blobIds = storageIds.size > 0 ? Array.from(storageIds) : Array.from(redirectTable.keys());\n const builder = new SummaryTreeBuilder();\n blobIds.forEach((blobId) => {\n builder.addAttachment(blobId);\n });\n // Any non-identity entries in the table need to be saved in the summary\n if (redirectTable.size > blobIds.length) {\n builder.addBlob(redirectTableBlobName, \n // filter out identity entries\n JSON.stringify(Array.from(redirectTable.entries()).filter(([localId, storageId]) => localId !== storageId)));\n }\n return builder.getSummaryTree();\n};\nexport const getStorageIds = (redirectTable, attachState) => {\n const ids = new Set(redirectTable.values());\n // If we are detached, we will not have storage IDs, only undefined\n const undefinedValueInTable = ids.delete(undefined);\n // For a detached container, entries are inserted into the redirect table with an undefined storage ID.\n // For an attached container, entries are inserted w/storage ID after the BlobAttach op round-trips.\n assert(!undefinedValueInTable || (attachState === AttachState.Detached && ids.size === 0), 0x382 /* 'redirectTable' must contain only undefined while detached / defined values while attached */);\n return ids;\n};\n//# sourceMappingURL=blobManagerSnapSum.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Utility function to check if any blobs under a snapshot tree is missing and if so, then return\n * true if that is the case.\n * @internal\n * @param snapshotTree - snapshotTree to be evaluated for missing blobs.\n * @param blobContents - blobContents of the snapshot.\n */\nexport function isSnapshotFetchRequiredForLoadingGroupId(snapshotTree, blobContents) {\n for (const [_, id] of Object.entries(snapshotTree.blobs)) {\n if (!blobContents.has(id)) {\n return true;\n }\n }\n for (const [_, childTree] of Object.entries(snapshotTree.trees)) {\n // Only evaluate childTree if it does not have a loading groupId because if the childTree has a loading\n // groupId then it will be evaluated whether we want to fetch blobs for that childTree or not when\n // that particular childTree is getting realized. Now we just want to check for blobs which belongs to\n // tree with current loading groupId. Note: Child with no loading groupId, will fall under parent with\n // a loading groupId as it does not have its own loading groupId.\n if (childTree.groupId === undefined) {\n const value = isSnapshotFetchRequiredForLoadingGroupId(childTree, blobContents);\n if (value) {\n return true;\n }\n }\n }\n return false;\n}\n//# sourceMappingURL=snapshotUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert, LazyPromise, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { BlobTreeEntry, isInstanceOfISnapshot, readAndParse, } from \"@fluidframework/driver-utils/internal\";\nimport { channelsTreeName, } from \"@fluidframework/runtime-definitions/internal\";\nimport { addBlobToSummary, isSnapshotFetchRequiredForLoadingGroupId, } from \"@fluidframework/runtime-utils/internal\";\nimport { DataProcessingError, LoggingError, ThresholdCounter, createChildMonitoringContext, extractSafePropertiesFromMessage, generateStack, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { dataStoreAttributesBlobName, getAttributesFormatVersion, getFluidDataStoreAttributes, hasIsolatedChannels, summarizerClientType, wrapSummaryInChannelsTree, } from \"./summary/index.js\";\nfunction createAttributes(pkg, isRootDataStore) {\n const stringifiedPkg = JSON.stringify(pkg);\n return {\n pkg: stringifiedPkg,\n summaryFormatVersion: 2,\n isRootDataStore,\n };\n}\nexport function createAttributesBlob(pkg, isRootDataStore) {\n const attributes = createAttributes(pkg, isRootDataStore);\n return new BlobTreeEntry(dataStoreAttributesBlobName, JSON.stringify(attributes));\n}\n/**\n * Represents the context for the store. This context is passed to the store runtime.\n * @internal\n */\nexport class FluidDataStoreContext extends TypedEventEmitter {\n get packagePath() {\n assert(this.pkg !== undefined, 0x139 /* \"Undefined package path\" */);\n return this.pkg;\n }\n get options() {\n return this.parentContext.options;\n }\n get clientId() {\n return this.parentContext.clientId;\n }\n get clientDetails() {\n return this.parentContext.clientDetails;\n }\n get baseLogger() {\n return this.parentContext.baseLogger;\n }\n get deltaManager() {\n return this.parentContext.deltaManager;\n }\n get connected() {\n return this.parentContext.connected;\n }\n get IFluidHandleContext() {\n return this.parentContext.IFluidHandleContext;\n }\n get containerRuntime() {\n return this._containerRuntime;\n }\n // back-compat, to be removed in 2.0\n ensureNoDataModelChanges(callback) {\n return this.parentContext.ensureNoDataModelChanges(callback);\n }\n get isLoaded() {\n return this.loaded;\n }\n get baseSnapshot() {\n return this._baseSnapshot;\n }\n get idCompressor() {\n return this.parentContext.idCompressor;\n }\n get disposed() {\n return this._disposed;\n }\n get tombstoned() {\n return this._tombstoned;\n }\n get attachState() {\n return this._attachState;\n }\n get IFluidDataStoreRegistry() {\n return this.registry;\n }\n /**\n * A datastore is considered as root if it\n * 1. is root in memory - see isInMemoryRoot\n * 2. is root as part of the base snapshot that the datastore loaded from\n * @returns whether a datastore is root\n */\n async isRoot(aliasedDataStores) {\n if (this.isInMemoryRoot()) {\n return true;\n }\n // This if is a performance optimization.\n // We know that if the base snapshot is omitted, then the isRootDataStore flag is not set.\n // That means we can skip the expensive call to getInitialSnapshotDetails for virtualized datastores,\n // and get the information from the alias map directly.\n if (aliasedDataStores !== undefined && this.baseSnapshot?.omitted === true) {\n return aliasedDataStores.has(this.id);\n }\n return (await this.getInitialSnapshotDetails()).isRootDataStore;\n }\n /**\n * There are 3 states where isInMemoryRoot needs to be true\n * 1. when a datastore becomes aliased. This can happen for both remote and local datastores\n * 2. when a datastore is created locally as root\n * 3. when a datastore is created locally as root and is rehydrated\n * @returns whether a datastore is root in memory\n */\n isInMemoryRoot() {\n return this._isInMemoryRoot;\n }\n /**\n * Returns the count of pending messages that are stored until the data store is realized.\n */\n get pendingCount() {\n return this.pending?.length ?? 0;\n }\n constructor(props, existing, isLocalDataStore, makeLocallyVisibleFn) {\n super();\n this.existing = existing;\n this.isLocalDataStore = isLocalDataStore;\n this.makeLocallyVisibleFn = makeLocallyVisibleFn;\n this._disposed = false;\n /**\n * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.\n * Tombstoned objects are eventually deleted by GC.\n */\n this._tombstoned = false;\n /**\n * If true, throw an error when a tombstone data store is used.\n * @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.\n */\n this.gcThrowOnTombstoneUsage = false;\n /**\n * @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.\n */\n this.gcTombstoneEnforcementAllowed = false;\n /** If true, this means that this data store context and its children have been removed from the runtime */\n this.deleted = false;\n this.detachedRuntimeCreation = false;\n this.loaded = false;\n this.pending = [];\n this._isInMemoryRoot = false;\n this._containerRuntime = props.parentContext.containerRuntime;\n this.parentContext = props.parentContext;\n this.id = props.id;\n this.storage = props.storage;\n this.scope = props.scope;\n this.pkg = props.pkg;\n this.loadingGroupId = props.loadingGroupId;\n // URIs use slashes as delimiters. Handles use URIs.\n // Thus having slashes in types almost guarantees trouble down the road!\n assert(!this.id.includes(\"/\"), 0x13a /* Data store ID contains slash */);\n this._attachState =\n this.parentContext.attachState !== AttachState.Detached && this.existing\n ? this.parentContext.attachState\n : AttachState.Detached;\n const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);\n this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));\n this.mc = createChildMonitoringContext({\n logger: this.baseLogger,\n namespace: \"FluidDataStoreContext\",\n properties: {\n all: tagCodeArtifacts({\n fluidDataStoreId: this.id,\n // The package name is a getter because `this.pkg` may not be initialized during construction.\n // For data stores loaded from summary, it is initialized during data store realization.\n fullPackageName: () => this.pkg?.join(\"/\"),\n }),\n },\n });\n this.thresholdOpsCounter = new ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);\n // By default, a data store can log maximum 10 local changes telemetry in summarizer.\n this.localChangesTelemetryCount =\n this.mc.config.getNumber(\"Fluid.Telemetry.LocalChangesTelemetryCount\") ?? 10;\n }\n dispose() {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n // Dispose any pending runtime after it gets fulfilled\n // Errors are logged where this.channelP is consumed/generated (realizeCore(), bindRuntime())\n if (this.channelP) {\n this.channelP\n .then((runtime) => {\n runtime.dispose();\n })\n .catch((error) => { });\n }\n }\n /**\n * When delete is called, that means that the data store is permanently removed from the runtime, and will not show up in future summaries\n * This function is called to prevent ops from being generated from this data store once it has been deleted. Furthermore, this data store\n * should not receive any ops/signals.\n */\n delete() {\n this.deleted = true;\n }\n setTombstone(tombstone) {\n if (this.tombstoned === tombstone) {\n return;\n }\n this._tombstoned = tombstone;\n }\n rejectDeferredRealize(reason, failedPkgPath, fullPackageName) {\n throw new LoggingError(reason, tagCodeArtifacts({\n failedPkgPath,\n packagePath: fullPackageName?.join(\"/\"),\n }));\n }\n async realize() {\n assert(!this.detachedRuntimeCreation, 0x13d /* \"Detached runtime creation on realize()\" */);\n if (!this.channelP) {\n this.channelP = this.realizeCore(this.existing).catch((error) => {\n const errorWrapped = DataProcessingError.wrapIfUnrecognized(error, \"realizeFluidDataStoreContext\");\n errorWrapped.addTelemetryProperties(tagCodeArtifacts({\n fullPackageName: this.pkg?.join(\"/\"),\n fluidDataStoreId: this.id,\n }));\n this.mc.logger.sendErrorEvent({ eventName: \"RealizeError\" }, errorWrapped);\n throw errorWrapped;\n });\n }\n return this.channelP;\n }\n async factoryFromPackagePath() {\n const packages = this.pkg;\n if (packages === undefined) {\n this.rejectDeferredRealize(\"packages is undefined\");\n }\n let entry;\n let registry = this.parentContext.IFluidDataStoreRegistry;\n let lastPkg;\n for (const pkg of packages) {\n if (!registry) {\n this.rejectDeferredRealize(\"No registry for package\", lastPkg, packages);\n }\n lastPkg = pkg;\n entry = await registry.get(pkg);\n if (!entry) {\n this.rejectDeferredRealize(\"Registry does not contain entry for the package\", pkg, packages);\n }\n registry = entry.IFluidDataStoreRegistry;\n }\n const factory = entry?.IFluidDataStoreFactory;\n if (factory === undefined) {\n this.rejectDeferredRealize(\"Can't find factory for package\", lastPkg, packages);\n }\n assert(this.registry === undefined, 0x157 /* \"datastore registry already attached\" */);\n this.registry = registry;\n return factory;\n }\n async realizeCore(existing) {\n const details = await this.getInitialSnapshotDetails();\n // Base snapshot is the baseline where pending ops are applied to.\n // It is important that this be in sync with the pending ops, and also\n // that it is set here, before bindRuntime is called.\n this._baseSnapshot = details.snapshot;\n this.baseSnapshotSequenceNumber = details.sequenceNumber;\n assert(this.pkg === details.pkg, 0x13e /* \"Unexpected package path\" */);\n const factory = await this.factoryFromPackagePath();\n const channel = await factory.instantiateDataStore(this, existing);\n assert(channel !== undefined, 0x140 /* \"undefined channel on datastore context\" */);\n await this.bindRuntime(channel, existing);\n // This data store may have been disposed before the channel is created during realization. If so,\n // dispose the channel now.\n if (this.disposed) {\n channel.dispose();\n }\n return channel;\n }\n /**\n * Notifies this object about changes in the connection state.\n * @param value - New connection state.\n * @param clientId - ID of the client. Its old ID when in disconnected state and\n * its new client ID when we are connecting or connected.\n */\n setConnectionState(connected, clientId) {\n // ConnectionState should not fail in tombstone mode as this is internally run\n this.verifyNotClosed(\"setConnectionState\", false /* checkTombstone */);\n // Connection events are ignored if the store is not yet loaded\n if (!this.loaded) {\n return;\n }\n assert(this.connected === connected, 0x141 /* \"Unexpected connected state\" */);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.channel.setConnectionState(connected, clientId);\n }\n process(message, local, localOpMetadata) {\n const safeTelemetryProps = extractSafePropertiesFromMessage(message);\n // On op process, tombstone error is logged in garbage collector. So, set \"checkTombstone\" to false when calling\n // \"verifyNotClosed\" which logs tombstone errors.\n this.verifyNotClosed(\"process\", false /* checkTombstone */, safeTelemetryProps);\n this.summarizerNode.recordChange(message);\n if (this.loaded) {\n return this.channel?.process(message, local, localOpMetadata);\n }\n else {\n assert(!local, 0x142 /* \"local store channel is not loaded\" */);\n assert(this.pending !== undefined, 0x23d /* \"pending is undefined\" */);\n this.pending.push(message);\n this.thresholdOpsCounter.sendIfMultiple(\"StorePendingOps\", this.pending.length);\n }\n }\n processSignal(message, local) {\n this.verifyNotClosed(\"processSignal\");\n // Signals are ignored if the store is not yet loaded\n if (!this.loaded) {\n return;\n }\n this.channel?.processSignal(message, local);\n }\n getQuorum() {\n return this.parentContext.getQuorum();\n }\n getAudience() {\n return this.parentContext.getAudience();\n }\n /**\n * Returns a summary at the current sequence number.\n * @param fullTree - true to bypass optimizations and force a full summary tree\n * @param trackState - This tells whether we should track state from this summary.\n * @param telemetryContext - summary data passed through the layers for telemetry purposes\n */\n async summarize(fullTree = false, trackState = true, telemetryContext) {\n return this.summarizerNode.summarize(fullTree, trackState, telemetryContext);\n }\n async summarizeInternal(fullTree, trackState, telemetryContext) {\n await this.realize();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const summarizeResult = await this.channel.summarize(fullTree, trackState, telemetryContext);\n // Wrap dds summaries in .channels subtree.\n wrapSummaryInChannelsTree(summarizeResult);\n const pathPartsForChildren = [channelsTreeName];\n // Add data store's attributes to the summary.\n const { pkg } = await this.getInitialSnapshotDetails();\n const isRoot = await this.isRoot();\n const attributes = createAttributes(pkg, isRoot);\n addBlobToSummary(summarizeResult, dataStoreAttributesBlobName, JSON.stringify(attributes));\n // If we are not referenced, mark the summary tree as unreferenced. Also, update unreferenced blob\n // size in the summary stats with the blobs size of this data store.\n if (!this.summarizerNode.isReferenced()) {\n summarizeResult.summary.unreferenced = true;\n summarizeResult.stats.unreferencedBlobSize = summarizeResult.stats.totalBlobSize;\n }\n // Add loadingGroupId to the summary\n if (this.loadingGroupId !== undefined) {\n summarizeResult.summary.groupId = this.loadingGroupId;\n }\n return {\n ...summarizeResult,\n id: this.id,\n pathPartsForChildren,\n };\n }\n /**\n * Returns the data used for garbage collection. This includes a list of GC nodes that represent this data store\n * including any of its child channel contexts. Each node has a set of outbound routes to other GC nodes in the\n * document.\n * If there is no new data in this data store since the last summary, previous GC data is used.\n * If there is new data, the GC data is generated again (by calling getGCDataInternal).\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n return this.summarizerNode.getGCData(fullGC);\n }\n /**\n * Generates data used for garbage collection. This is called when there is new data since last summary. It\n * realizes the data store and calls into each channel context to get its GC data.\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCDataInternal(fullGC = false) {\n await this.realize();\n assert(this.channel !== undefined, 0x143 /* \"Channel should not be undefined when running GC\" */);\n return this.channel.getGCData(fullGC);\n }\n /**\n * After GC has run, called to notify the data store of routes used in it. These are used for the following:\n * 1. To identify if this data store is being referenced in the document or not.\n * 2. To determine if it needs to re-summarize in case used routes changed since last summary.\n * 3. To notify child contexts of their used routes. This is done immediately if the data store is loaded.\n * Else, it is done by the data stores's summarizer node when child summarizer nodes are created.\n *\n * @param usedRoutes - The routes that are used in this data store.\n */\n updateUsedRoutes(usedRoutes) {\n // Update the used routes in this data store's summarizer node.\n this.summarizerNode.updateUsedRoutes(usedRoutes);\n // If the channel doesn't exist yet (data store is not realized), the summarizer node will update it\n // when it creates child nodes.\n if (!this.channel) {\n return;\n }\n // Remove the route to this data store, if it exists.\n const usedChannelRoutes = usedRoutes.filter((id) => {\n return id !== \"/\" && id !== \"\";\n });\n this.channel.updateUsedRoutes(usedChannelRoutes);\n }\n /**\n * Called when a new outbound reference is added to another node. This is used by garbage collection to identify\n * all references added in the system.\n *\n * @param fromPath - The absolute path of the node that added the reference.\n * @param toPath - The absolute path of the outbound node that is referenced.\n * @param messageTimestampMs - The timestamp of the message that added the reference.\n */\n addedGCOutboundRoute(fromPath, toPath, messageTimestampMs) {\n this.parentContext.addedGCOutboundRoute(fromPath, toPath, messageTimestampMs);\n }\n /**\n * @deprecated 0.18.Should call request on the runtime directly\n */\n async request(request) {\n const runtime = await this.realize();\n return runtime.request(request);\n }\n submitMessage(type, content, localOpMetadata) {\n this.verifyNotClosed(\"submitMessage\");\n assert(!!this.channel, 0x146 /* \"Channel must exist when submitting message\" */);\n // Summarizer clients should not submit messages.\n this.identifyLocalChangeInSummarizer(\"DataStoreMessageSubmittedInSummarizer\", type);\n this.parentContext.submitMessage(type, content, localOpMetadata);\n }\n /**\n * This is called from a SharedSummaryBlock that does not generate ops but only wants to be part of the summary.\n * It indicates that there is data in the object that needs to be summarized.\n * We will update the latestSequenceNumber of the summary tracker of this\n * store and of the object's channel.\n *\n * @param address - The address of the channel that is dirty.\n *\n */\n setChannelDirty(address) {\n this.verifyNotClosed(\"setChannelDirty\");\n // Get the latest sequence number.\n const latestSequenceNumber = this.deltaManager.lastSequenceNumber;\n this.summarizerNode.invalidate(latestSequenceNumber);\n const channelSummarizerNode = this.summarizerNode.getChild(address);\n if (channelSummarizerNode) {\n channelSummarizerNode.invalidate(latestSequenceNumber); // TODO: lazy load problem?\n }\n }\n /**\n * Submits the signal to be sent to other clients.\n * @param type - Type of the signal.\n * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n * @param targetClientId - When specified, the signal is only sent to the provided client id.\n */\n submitSignal(type, content, targetClientId) {\n this.verifyNotClosed(\"submitSignal\");\n assert(!!this.channel, 0x147 /* \"Channel must exist on submitting signal\" */);\n return this.parentContext.submitSignal(type, content, targetClientId);\n }\n /**\n * This is called by the data store channel when it becomes locally visible indicating that it is ready to become\n * globally visible now.\n */\n makeLocallyVisible() {\n assert(this.channel !== undefined, 0x2cf /* \"undefined channel on datastore context\" */);\n this.makeLocallyVisibleFn();\n }\n processPendingOps(channel) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const pending = this.pending;\n // Apply all pending ops\n for (const op of pending) {\n // Only process ops whose seq number is greater than snapshot sequence number from which it loaded.\n const seqNumber = this.baseSnapshotSequenceNumber ?? -1;\n if (op.sequenceNumber > seqNumber) {\n channel.process(op, false, undefined /* localOpMetadata */);\n }\n }\n this.pending = undefined;\n this.thresholdOpsCounter.send(\"ProcessPendingOps\", pending.length);\n }\n completeBindingRuntime(channel) {\n // And now mark the runtime active\n this.loaded = true;\n this.channel = channel;\n // Channel does not know when it's \"live\" (as in - starts to receive events in the system)\n // It may read current state of the system when channel was created, but it was not getting any updates\n // through creation process and could have missed events. So update it on current state.\n // Once this.loaded is set (above), it will stat receiving events.\n channel.setConnectionState(this.connected, this.clientId);\n // Freeze the package path to ensure that someone doesn't modify it when it is\n // returned in packagePath().\n Object.freeze(this.pkg);\n }\n async bindRuntime(channel, existing) {\n if (this.channel) {\n throw new Error(\"Runtime already bound\");\n }\n assert(!this.detachedRuntimeCreation, 0x148 /* \"Detached runtime creation on runtime bind\" */);\n assert(this.pkg !== undefined, 0x14a /* \"Undefined package path\" */);\n if (!existing) {\n // Execute data store's entry point to make sure that for a local (aka detached from container) data store, the\n // entryPoint initialization function is called before the data store gets attached and potentially connected to\n // the delta stream, so it gets a chance to do things while the data store is still \"purely local\".\n // This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method\n // of data store factories tends to construct the data object (at least kick off an async method that returns\n // it); that code moved to the entryPoint initialization function, so we want to ensure it still executes\n // before the data store is attached.\n await channel.entryPoint.get();\n }\n this.processPendingOps(channel);\n this.completeBindingRuntime(channel);\n }\n async getAbsoluteUrl(relativeUrl) {\n if (this.attachState !== AttachState.Attached) {\n return undefined;\n }\n return this.parentContext.getAbsoluteUrl(relativeUrl);\n }\n /**\n * @deprecated Sets the datastore as root, for aliasing purposes: #7948\n * This method should not be used outside of the aliasing context.\n * It will be removed, as the source of truth for this flag will be the aliasing blob.\n */\n setInMemoryRoot() {\n this._isInMemoryRoot = true;\n }\n /**\n * @deprecated The functionality to get base GC details has been moved to summarizer node.\n */\n async getBaseGCDetails() {\n return {};\n }\n reSubmit(type, contents, localOpMetadata) {\n assert(!!this.channel, 0x14b /* \"Channel must exist when resubmitting ops\" */);\n this.channel.reSubmit(type, contents, localOpMetadata);\n }\n rollback(type, contents, localOpMetadata) {\n if (!this.channel) {\n throw new Error(\"Channel must exist when rolling back ops\");\n }\n if (!this.channel.rollback) {\n throw new Error(\"Channel doesn't support rollback\");\n }\n this.channel.rollback(type, contents, localOpMetadata);\n }\n async applyStashedOp(contents) {\n if (!this.channel) {\n await this.realize();\n }\n assert(!!this.channel, 0x14c /* \"Channel must exist when rebasing ops\" */);\n return this.channel.applyStashedOp(contents);\n }\n verifyNotClosed(callSite, checkTombstone = true, safeTelemetryProps = {}) {\n if (this.deleted) {\n const messageString = `Context is deleted! Call site [${callSite}]`;\n const error = DataProcessingError.create(messageString, callSite, undefined /* sequencedMessage */, safeTelemetryProps);\n this.mc.logger.sendErrorEvent({\n eventName: \"GC_Deleted_DataStore_Changed\",\n callSite,\n }, error);\n throw error;\n }\n if (this._disposed) {\n throw new Error(`Context is closed! Call site [${callSite}]`);\n }\n if (checkTombstone && this.tombstoned) {\n const messageString = `Context is tombstoned! Call site [${callSite}]`;\n const error = DataProcessingError.create(messageString, callSite, undefined /* sequencedMessage */, safeTelemetryProps);\n this.mc.logger.sendTelemetryEvent({\n eventName: \"GC_Tombstone_DataStore_Changed\",\n category: \"generic\",\n callSite,\n }, error);\n }\n }\n /**\n * Summarizer client should not have local changes. These changes can become part of the summary and can break\n * eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas\n * other clients that are up-to-date till seq# 100 may not have them yet.\n */\n identifyLocalChangeInSummarizer(eventName, type) {\n if (this.clientDetails.type !== summarizerClientType ||\n this.localChangesTelemetryCount <= 0) {\n return;\n }\n // Log a telemetry if there are local changes in the summarizer. This will give us data on how often\n // this is happening and which data stores do this. The eventual goal is to disallow local changes\n // in the summarizer and the data will help us plan this.\n this.mc.logger.sendTelemetryEvent({\n eventName,\n type,\n isSummaryInProgress: this.summarizerNode.isSummaryInProgress?.(),\n stack: generateStack(30),\n });\n this.localChangesTelemetryCount--;\n }\n getCreateChildSummarizerNodeFn(id, createParam) {\n return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam, undefined /* config */, getGCDataFn);\n }\n deleteChildSummarizerNode(id) {\n this.summarizerNode.deleteChild(id);\n }\n async uploadBlob(blob, signal) {\n return this.parentContext.uploadBlob(blob, signal);\n }\n}\nFluidDataStoreContext.pendingOpsCountThreshold = 1000;\n/** @internal */\nexport class RemoteFluidDataStoreContext extends FluidDataStoreContext {\n constructor(props) {\n super(props, true /* existing */, false /* isLocalDataStore */, () => {\n throw new Error(\"Already attached\");\n });\n this.initialSnapshotDetailsP = new LazyPromise(async () => {\n // Sequence number of the snapshot.\n let sequenceNumber;\n // Check whether we need to fetch the snapshot first to load. The snapshot should be in new format to see\n // whether we want to evaluate to fetch snapshot or not for loadingGroupId. Otherwise, the snapshot\n // will contain all the blobs.\n if (this.snapshotFetchRequired === undefined &&\n this._baseSnapshot?.groupId !== undefined &&\n this.isSnapshotInISnapshotFormat) {\n assert(this.blobContents !== undefined, 0x97a /* Blob contents should be present to evaluate */);\n assert(this._baseSnapshot !== undefined, 0x97b /* snapshotTree should be present to evaluate */);\n this.snapshotFetchRequired = isSnapshotFetchRequiredForLoadingGroupId(this._baseSnapshot, this.blobContents);\n }\n if (this.snapshotFetchRequired) {\n assert(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);\n const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);\n this._baseSnapshot = snapshot.snapshotTree;\n sequenceNumber = snapshot.sequenceNumber;\n this.snapshotFetchRequired = false;\n }\n let tree = this.baseSnapshot;\n let isRootDataStore = true;\n if (!!tree && tree.blobs[dataStoreAttributesBlobName] !== undefined) {\n // Need to get through snapshot and use that to populate extraBlobs\n // eslint-disable-next-line import/no-deprecated\n const attributes = await readAndParse(this.storage, tree.blobs[dataStoreAttributesBlobName]);\n let pkgFromSnapshot;\n // Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.\n // For snapshotFormatVersion = \"0.1\" (1) or above, pkg is jsonified, otherwise it is just a string.\n const formatVersion = getAttributesFormatVersion(attributes);\n if (formatVersion < 1) {\n pkgFromSnapshot =\n attributes.pkg.startsWith('[\"') && attributes.pkg.endsWith('\"]')\n ? JSON.parse(attributes.pkg)\n : [attributes.pkg];\n }\n else {\n pkgFromSnapshot = JSON.parse(attributes.pkg);\n }\n this.pkg = pkgFromSnapshot;\n /**\n * If there is no isRootDataStore in the attributes blob, set it to true. This will ensure that\n * data stores in older documents are not garbage collected incorrectly. This may lead to additional\n * roots in the document but they won't break.\n */\n isRootDataStore = attributes.isRootDataStore ?? true;\n if (hasIsolatedChannels(attributes)) {\n tree = tree.trees[channelsTreeName];\n assert(tree !== undefined, 0x1fe /* \"isolated channels subtree should exist in remote datastore snapshot\" */);\n }\n }\n assert(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);\n return {\n pkg: this.pkg,\n isRootDataStore,\n snapshot: tree,\n sequenceNumber,\n };\n });\n this.runtime = props.parentContext.containerRuntime;\n if (isInstanceOfISnapshot(props.snapshot)) {\n this.blobContents = props.snapshot.blobContents;\n this._baseSnapshot = props.snapshot.snapshotTree;\n this.isSnapshotInISnapshotFormat = true;\n }\n else {\n this._baseSnapshot = props.snapshot;\n this.isSnapshotInISnapshotFormat = false;\n }\n if (this._baseSnapshot !== undefined) {\n this.summarizerNode.updateBaseSummaryState(this._baseSnapshot);\n }\n }\n /*\n This API should not be called for RemoteFluidDataStoreContext. But here is one scenario where it's not the case:\n The scenario (hit by stashedOps.spec.ts, \"resends attach op\" UT is the following (as far as I understand):\n 1. data store is being attached in attached container\n 2. container state is serialized (stashed ops feature)\n 3. new container instance is rehydrated (from stashed ops)\n - As result, we create RemoteFluidDataStoreContext for this data store that is actually in \"attaching\" state (as of # 2).\n But its state is set to attached when loading container from stashed ops\n 4. attach op for this data store is processed - setAttachState() is called.\n */\n setAttachState(attachState) { }\n async getInitialSnapshotDetails() {\n return this.initialSnapshotDetailsP;\n }\n /**\n * @see FluidDataStoreContext.getAttachSummary\n */\n getAttachSummary() {\n throw new Error(\"Cannot attach remote store\");\n }\n /**\n * @see FluidDataStoreContext.getAttachGCData\n */\n getAttachGCData(telemetryContext) {\n throw new Error(\"Cannot attach remote store\");\n }\n}\n/**\n * Base class for detached & attached context classes\n * @internal\n */\nexport class LocalFluidDataStoreContextBase extends FluidDataStoreContext {\n constructor(props) {\n super(props, props.snapshotTree !== undefined /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);\n this.initialSnapshotDetailsP = new LazyPromise(async () => {\n let snapshot = this.snapshotTree;\n // eslint-disable-next-line import/no-deprecated\n let attributes;\n let isRootDataStore = false;\n if (snapshot !== undefined) {\n // Get the dataStore attributes.\n // Note: storage can be undefined in special case while detached.\n attributes = await getFluidDataStoreAttributes(this.storage, snapshot);\n if (hasIsolatedChannels(attributes)) {\n snapshot = snapshot.trees[channelsTreeName];\n assert(snapshot !== undefined, 0x1ff /* \"isolated channels subtree should exist in local datastore snapshot\" */);\n }\n if (this.pkg === undefined) {\n this.pkg = JSON.parse(attributes.pkg);\n // If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data\n // stores in older documents are not garbage collected incorrectly. This may lead to additional\n // roots in the document but they won't break.\n if (attributes.isRootDataStore ?? true) {\n isRootDataStore = true;\n this.setInMemoryRoot();\n }\n }\n }\n assert(this.pkg !== undefined, 0x152 /* \"pkg should be available in local data store\" */);\n return {\n pkg: this.pkg,\n isRootDataStore,\n snapshot,\n };\n });\n // Summarizer client should not create local data stores.\n this.identifyLocalChangeInSummarizer(\"DataStoreCreatedInSummarizer\");\n this.snapshotTree = props.snapshotTree;\n this.createProps = props.createProps;\n }\n setAttachState(attachState) {\n switch (attachState) {\n case AttachState.Attaching:\n assert(this.attachState === AttachState.Detached, 0x14d /* \"Should move from detached to attaching\" */);\n this._attachState = AttachState.Attaching;\n if (this.channel?.setAttachState) {\n this.channel.setAttachState(attachState);\n }\n else if (this.channel) {\n // back-compat! To be removed in the future\n // Added in \"2.0.0-rc.2.0.0\" timeframe.\n this.emit(\"attaching\");\n }\n break;\n case AttachState.Attached:\n // We can get called into here twice, as result of both container and data store being attached, if\n // those processes overlapped, for example, in a flow like that one:\n // 1. Container attach started\n // 2. data store attachment started\n // 3. container attached\n // 4. data store attached.\n if (this.attachState !== AttachState.Attached) {\n assert(this.attachState === AttachState.Attaching, 0x14e /* \"Should move from attaching to attached\" */);\n this._attachState = AttachState.Attached;\n this.channel?.setAttachState?.(attachState);\n if (this.channel?.setAttachState) {\n this.channel.setAttachState(attachState);\n }\n else if (this.channel) {\n // back-compat! To be removed in the future\n // Added in \"2.0.0-rc.2.0.0\" timeframe.\n this.emit(\"attached\");\n }\n }\n break;\n default:\n unreachableCase(attachState, \"unreached\");\n }\n }\n /**\n * @see FluidDataStoreContext.getAttachSummary\n */\n getAttachSummary(telemetryContext) {\n assert(this.channel !== undefined, 0x14f /* \"There should be a channel when generating attach message\" */);\n assert(this.pkg !== undefined, 0x150 /* \"pkg should be available in local data store context\" */);\n const attachSummary = this.channel.getAttachSummary(telemetryContext);\n // Wrap dds summaries in .channels subtree.\n wrapSummaryInChannelsTree(attachSummary);\n // Add data store's attributes to the summary.\n const attributes = createAttributes(this.pkg, this.isInMemoryRoot());\n addBlobToSummary(attachSummary, dataStoreAttributesBlobName, JSON.stringify(attributes));\n // Add loadingGroupId to the summary\n if (this.loadingGroupId !== undefined) {\n attachSummary.summary.groupId = this.loadingGroupId;\n }\n return attachSummary;\n }\n /**\n * @see FluidDataStoreContext.getAttachGCData\n */\n getAttachGCData(telemetryContext) {\n assert(this.channel !== undefined, 0x9a6 /* There should be a channel when generating attach GC data */);\n return this.channel.getAttachGCData(telemetryContext);\n }\n async getInitialSnapshotDetails() {\n return this.initialSnapshotDetailsP;\n }\n /**\n * A context should only be marked as deleted when its a remote context.\n * Session Expiry at the runtime level should have closed the container creating the local data store context\n * before delete is even possible. Session Expiry is at 30 days, and sweep is done 36+ days later from the time\n * it was unreferenced. Thus the sweeping container should have loaded from a snapshot and thus creating a remote\n * context.\n */\n delete() {\n // TODO: GC:Validation - potentially prevent this from happening or asserting. Maybe throw here.\n this.mc.logger.sendErrorEvent({\n eventName: \"GC_Deleted_DataStore_Unexpected_Delete\",\n message: \"Unexpected deletion of a local data store context\",\n });\n super.delete();\n }\n}\n/**\n * context implementation for \"attached\" data store runtime.\n * Various workflows (snapshot creation, requests) result in .realize() being called\n * on context, resulting in instantiation and attachment of runtime.\n * Runtime is created using data store factory that is associated with this context.\n * @internal\n */\nexport class LocalFluidDataStoreContext extends LocalFluidDataStoreContextBase {\n constructor(props) {\n super(props);\n }\n}\n/**\n * Detached context. Data Store runtime will be attached to it by attachRuntime() call\n * Before attachment happens, this context is not associated with particular type of runtime\n * or factory, i.e. it's package path is undefined.\n * Attachment process provides all missing parts - package path, data store runtime, and data store factory\n */\nexport class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreContextBase {\n constructor(props) {\n super(props);\n this.detachedRuntimeCreation = true;\n this.channelToDataStoreFn = props.channelToDataStoreFn;\n }\n async attachRuntime(registry, dataStoreChannel) {\n assert(this.detachedRuntimeCreation, 0x154 /* \"runtime creation is already attached\" */);\n this.detachedRuntimeCreation = false;\n assert(this.channelP === undefined, 0x155 /* \"channel deferral is already set\" */);\n this.channelP = Promise.resolve()\n .then(async () => {\n const factory = registry.IFluidDataStoreFactory;\n const factory2 = await this.factoryFromPackagePath();\n assert(factory2 === factory, 0x156 /* \"Unexpected factory for package path\" */);\n await super.bindRuntime(dataStoreChannel, false /* existing */);\n assert(!(await this.isRoot()), 0x8f7 /* there are no more createRootDataStore() kind of APIs! */);\n return dataStoreChannel;\n })\n .catch((error) => {\n this.mc.logger.sendErrorEvent({ eventName: \"AttachRuntimeError\" }, error);\n // The following two lines result in same exception thrown.\n // But we need to ensure that this.channelDeferred.promise is \"observed\", as otherwise\n // out UT reports unhandled exception\n throw error;\n });\n return this.channelToDataStoreFn(await this.channelP);\n }\n async getInitialSnapshotDetails() {\n if (this.detachedRuntimeCreation) {\n throw new Error(\"Detached Fluid Data Store context can't be realized! Please attach runtime first!\");\n }\n return super.getInitialSnapshotDetails();\n }\n}\n//# sourceMappingURL=dataStoreContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Deferred, Lazy } from \"@fluidframework/core-utils/internal\";\nimport { createChildLogger, } from \"@fluidframework/telemetry-utils/internal\";\n/** @internal */\nexport class DataStoreContexts {\n constructor(baseLogger) {\n this.notBoundContexts = new Set();\n /** Attached and loaded context proxies */\n this._contexts = new Map();\n /**\n * List of pending context waiting either to be bound or to arrive from another client.\n * This covers the case where a local context has been created but not yet bound,\n * or the case where a client knows a store will exist and is waiting on its creation,\n * so that a caller may await the deferred's promise until such a time as the context is fully ready.\n * This is a superset of _contexts, since contexts remain here once the Deferred resolves.\n */\n this.deferredContexts = new Map();\n this.disposeOnce = new Lazy(() => {\n // close/stop all store contexts\n for (const [fluidDataStoreId, contextD] of this.deferredContexts) {\n contextD.promise\n .then((context) => {\n context.dispose();\n })\n .catch((contextError) => {\n this._logger.sendErrorEvent({\n eventName: \"FluidDataStoreContextDisposeError\",\n fluidDataStoreId,\n }, contextError);\n });\n }\n });\n this.dispose = () => this.disposeOnce.value;\n this._recentlyDeletedContexts = new Map();\n this._logger = createChildLogger({ logger: baseLogger });\n }\n [Symbol.iterator]() {\n return this._contexts.entries();\n }\n get size() {\n return this._contexts.size;\n }\n get disposed() {\n return this.disposeOnce.evaluated;\n }\n notBoundLength() {\n return this.notBoundContexts.size;\n }\n isNotBound(id) {\n return this.notBoundContexts.has(id);\n }\n has(id) {\n return this._contexts.has(id);\n }\n get(id) {\n return this._contexts.get(id);\n }\n delete(id) {\n this.deferredContexts.delete(id);\n this.notBoundContexts.delete(id);\n // Stash the context here in case it's requested in this session, we can log some details about it\n const context = this._contexts.get(id);\n this._recentlyDeletedContexts.set(id, context);\n return this._contexts.delete(id);\n }\n getRecentlyDeletedContext(id) {\n return this._recentlyDeletedContexts.get(id);\n }\n /**\n * Return the unbound local context with the given id,\n * or undefined if it's not found or not unbound.\n */\n getUnbound(id) {\n const context = this._contexts.get(id);\n if (context === undefined || !this.notBoundContexts.has(id)) {\n return undefined;\n }\n return context;\n }\n /**\n * Add the given context, marking it as to-be-bound\n */\n addUnbound(context) {\n const id = context.id;\n assert(!this._contexts.has(id), 0x158 /* \"Creating store with existing ID\" */);\n this._contexts.set(id, context);\n this.notBoundContexts.add(id);\n this.ensureDeferred(id);\n }\n /**\n * Get the context with the given id, once it exists locally and is attached.\n * e.g. If created locally, it must be bound, or if created remotely then it's fine as soon as it's sync'd in.\n * @param id - The id of the context to get\n * @param wait - If false, return undefined if the context isn't present and ready now. Otherwise, wait for it.\n */\n async getBoundOrRemoted(id, wait) {\n const deferredContext = this.ensureDeferred(id);\n if (!wait && !deferredContext.isCompleted) {\n return undefined;\n }\n return deferredContext.promise;\n }\n ensureDeferred(id) {\n const deferred = this.deferredContexts.get(id);\n if (deferred) {\n return deferred;\n }\n const newDeferred = new Deferred();\n this.deferredContexts.set(id, newDeferred);\n return newDeferred;\n }\n /**\n * Update this context as bound\n */\n bind(id) {\n const removed = this.notBoundContexts.delete(id);\n assert(removed, 0x159 /* \"The given id was not found in notBoundContexts to delete\" */);\n this.resolveDeferred(id);\n }\n /**\n * Triggers the deferred to resolve, indicating the context is not local-only\n * @param id - The id of the context to resolve to\n */\n resolveDeferred(id) {\n const context = this._contexts.get(id);\n assert(!!context, 0x15a /* \"Cannot find context to resolve to\" */);\n assert(!this.notBoundContexts.has(id), 0x15b /* \"Expected this id to already be removed from notBoundContexts\" */);\n const deferred = this.deferredContexts.get(id);\n assert(!!deferred, 0x15c /* \"Cannot find deferred to resolve\" */);\n deferred.resolve(context);\n }\n /**\n * Add the given context, marking it as not local-only.\n * This could be because it's a local context that's been bound, or because it's a remote context.\n * @param context - The context to add\n */\n addBoundOrRemoted(context) {\n const id = context.id;\n assert(!this._contexts.has(id), 0x15d /* \"Creating store with existing ID\" */);\n this._contexts.set(id, context);\n // Resolve the deferred immediately since this context is not unbound\n this.ensureDeferred(id);\n this.resolveDeferred(id);\n }\n}\n//# sourceMappingURL=dataStoreContexts.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert, Lazy, LazyPromise } from \"@fluidframework/core-utils/internal\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore/internal\";\nimport { buildSnapshotTree, getSnapshotTree, isInstanceOfISnapshot, } from \"@fluidframework/driver-utils/internal\";\nimport { CreateSummarizerNodeSource, channelsTreeName, gcDataBlobKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { GCDataBuilder, RequestParser, SummaryTreeBuilder, addBlobToSummary, convertSnapshotTreeToSummaryTree, convertSummaryTreeToITree, create404Response, createResponseError, encodeCompactIdToString, isSerializedHandle, processAttachMessageGCData, responseToException, unpackChildNodesUsedRoutes, } from \"@fluidframework/runtime-utils/internal\";\nimport { DataCorruptionError, DataProcessingError, LoggingError, createChildLogger, createChildMonitoringContext, extractSafePropertiesFromMessage, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { DeletedResponseHeaderKey, defaultRuntimeHeaderData, } from \"./containerRuntime.js\";\nimport { channelToDataStore, isDataStoreAliasMessage, } from \"./dataStore.js\";\nimport { LocalDetachedFluidDataStoreContext, LocalFluidDataStoreContext, RemoteFluidDataStoreContext, createAttributesBlob, } from \"./dataStoreContext.js\";\nimport { DataStoreContexts } from \"./dataStoreContexts.js\";\nimport { FluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nimport { GCNodeType, urlToGCNodePath } from \"./gc/index.js\";\nimport { ContainerMessageType } from \"./messageTypes.js\";\nimport { StorageServiceWithAttachBlobs } from \"./storageServiceWithAttachBlobs.js\";\nimport { nonDataStorePaths, rootHasIsolatedChannels, } from \"./summary/index.js\";\n/**\n * Accepted header keys for requests coming to the runtime.\n * @internal\n */\nexport var RuntimeHeaders;\n(function (RuntimeHeaders) {\n /** True to wait for a data store to be created and loaded before returning it. */\n RuntimeHeaders[\"wait\"] = \"wait\";\n /** True if the request is coming from an IFluidHandle. */\n RuntimeHeaders[\"viaHandle\"] = \"viaHandle\";\n})(RuntimeHeaders || (RuntimeHeaders = {}));\n/** True if a tombstoned object should be returned without erroring\n * @legacy\n * @alpha\n */\nexport const AllowTombstoneRequestHeaderKey = \"allowTombstone\"; // Belongs in the enum above, but avoiding the breaking change\n/**\n * Creates a shallow wrapper of {@link IFluidParentContext}. The wrapper can then have its methods overwritten as needed\n */\nexport function wrapContext(context) {\n return {\n get IFluidDataStoreRegistry() {\n return context.IFluidDataStoreRegistry;\n },\n IFluidHandleContext: context.IFluidHandleContext,\n options: context.options,\n get clientId() {\n return context.clientId;\n },\n get connected() {\n return context.connected;\n },\n deltaManager: context.deltaManager,\n storage: context.storage,\n baseLogger: context.baseLogger,\n get clientDetails() {\n return context.clientDetails;\n },\n get idCompressor() {\n return context.idCompressor;\n },\n loadingGroupId: context.loadingGroupId,\n get attachState() {\n return context.attachState;\n },\n containerRuntime: context.containerRuntime,\n scope: context.scope,\n gcThrowOnTombstoneUsage: context.gcThrowOnTombstoneUsage,\n gcTombstoneEnforcementAllowed: context.gcTombstoneEnforcementAllowed,\n getAbsoluteUrl: async (...args) => {\n return context.getAbsoluteUrl(...args);\n },\n getQuorum: (...args) => {\n return context.getQuorum(...args);\n },\n getAudience: (...args) => {\n return context.getAudience(...args);\n },\n // back-compat, to be removed in 2.0\n ensureNoDataModelChanges: (...args) => {\n return context.ensureNoDataModelChanges(...args);\n },\n submitMessage: (...args) => {\n return context.submitMessage(...args);\n },\n submitSignal: (...args) => {\n return context.submitSignal(...args);\n },\n makeLocallyVisible: (...args) => {\n return context.makeLocallyVisible(...args);\n },\n uploadBlob: async (...args) => {\n return context.uploadBlob(...args);\n },\n addedGCOutboundRoute: (...args) => {\n return context.addedGCOutboundRoute(...args);\n },\n getCreateChildSummarizerNodeFn: (...args) => {\n return context.getCreateChildSummarizerNodeFn?.(...args);\n },\n deleteChildSummarizerNode: (...args) => {\n return context.deleteChildSummarizerNode(...args);\n },\n setChannelDirty: (address) => {\n return context.setChannelDirty(address);\n },\n };\n}\n/**\n * Creates a wrapper of a {@link IFluidParentContext} to be provided to the inner datastore channels.\n * The wrapper will have the submit methods overwritten with the appropriate id as the destination address.\n *\n * @param id - the id of the channel\n * @param parentContext - the {@link IFluidParentContext} to wrap\n * @returns A wrapped {@link IFluidParentContext}\n */\nfunction wrapContextForInnerChannel(id, parentContext) {\n const context = wrapContext(parentContext);\n context.submitMessage = (type, content, localOpMetadata) => {\n const fluidDataStoreContent = {\n content,\n type,\n };\n const envelope = {\n address: id,\n contents: fluidDataStoreContent,\n };\n parentContext.submitMessage(ContainerMessageType.FluidDataStoreOp, envelope, localOpMetadata);\n };\n context.submitSignal = (type, contents, targetClientId) => {\n const envelope = {\n address: id,\n contents,\n };\n parentContext.submitSignal(type, envelope, targetClientId);\n };\n return context;\n}\n/**\n * Returns the type of the given local data store from its package path.\n */\nexport function getLocalDataStoreType(localDataStore) {\n return localDataStore.packagePath[localDataStore.packagePath.length - 1];\n}\n/**\n * This class encapsulates data store handling. Currently it is only used by the container runtime,\n * but eventually could be hosted on any channel once we formalize the channel api boundary.\n * @internal\n */\nexport class ChannelCollection {\n constructor(baseSnapshot, parentContext, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, provideEntryPoint) {\n this.baseSnapshot = baseSnapshot;\n this.parentContext = parentContext;\n this.gcNodeUpdated = gcNodeUpdated;\n this.isDataStoreDeleted = isDataStoreDeleted;\n this.aliasMap = aliasMap;\n // Stores tracked by the Domain\n this.pendingAttach = new Map();\n // 0.24 back-compat attachingBeforeSummary\n this.attachOpFiredForDataStore = new Set();\n this.disposeOnce = new Lazy(() => this.contexts.dispose());\n this.pendingAliasMap = new Map();\n /** For sampling. Only log once per container */\n this.shouldSendAttachLog = true;\n this.dispose = () => this.disposeOnce.value;\n this.mc = createChildMonitoringContext({ logger: baseLogger });\n this.contexts = new DataStoreContexts(baseLogger);\n this.entryPoint = new FluidObjectHandle(new LazyPromise(async () => provideEntryPoint(this)), \"\", this.parentContext.IFluidHandleContext);\n this.aliasedDataStores = new Set(aliasMap.values());\n // Extract stores stored inside the snapshot\n const fluidDataStores = new Map();\n if (baseSnapshot) {\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n for (const [key, value] of Object.entries(baseSnapshotTree.trees)) {\n fluidDataStores.set(key, value);\n }\n }\n let unreferencedDataStoreCount = 0;\n // Create a context for each of them\n for (const [key, value] of fluidDataStores) {\n let dataStoreContext;\n // counting number of unreferenced data stores\n if (value.unreferenced) {\n unreferencedDataStoreCount++;\n }\n // If we have a detached container, then create local data store contexts.\n if (this.parentContext.attachState !== AttachState.Detached) {\n let snapshotForRemoteFluidDatastoreContext = value;\n if (isInstanceOfISnapshot(baseSnapshot)) {\n snapshotForRemoteFluidDatastoreContext = {\n ...baseSnapshot,\n snapshotTree: value,\n };\n }\n dataStoreContext = new RemoteFluidDataStoreContext({\n id: key,\n snapshot: snapshotForRemoteFluidDatastoreContext,\n parentContext: this.wrapContextForInnerChannel(key),\n storage: this.parentContext.storage,\n scope: this.parentContext.scope,\n createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {\n type: CreateSummarizerNodeSource.FromSummary,\n }),\n loadingGroupId: value.groupId,\n });\n }\n else {\n if (typeof value !== \"object\") {\n throw new LoggingError(\"Snapshot should be there to load from!!\");\n }\n const snapshotTree = value;\n dataStoreContext = new LocalFluidDataStoreContext({\n id: key,\n pkg: undefined,\n parentContext: this.wrapContextForInnerChannel(key),\n storage: this.parentContext.storage,\n scope: this.parentContext.scope,\n createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {\n type: CreateSummarizerNodeSource.FromSummary,\n }),\n makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),\n snapshotTree,\n });\n }\n this.contexts.addBoundOrRemoted(dataStoreContext);\n }\n this.containerLoadStats = {\n containerLoadDataStoreCount: fluidDataStores.size,\n referencedDataStoreCount: fluidDataStores.size - unreferencedDataStoreCount,\n };\n }\n get aliases() {\n return this.aliasMap;\n }\n get pendingAliases() {\n return this.pendingAliasMap;\n }\n async waitIfPendingAlias(maybeAlias) {\n const pendingAliasPromise = this.pendingAliases.get(maybeAlias);\n return pendingAliasPromise ?? \"Success\";\n }\n wrapContextForInnerChannel(id) {\n return wrapContextForInnerChannel(id, this.parentContext);\n }\n /**\n * IFluidDataStoreChannel.makeVisibleAndAttachGraph implementation\n * Not clear when it would be called and what it should do.\n * Currently this API is called by context only for root data stores.\n */\n makeVisibleAndAttachGraph() {\n this.parentContext.makeLocallyVisible();\n }\n processAttachMessage(message, local) {\n const attachMessage = message.contents;\n // We need to process the GC Data for both local and remote attach messages\n const foundGCData = processAttachMessageGCData(attachMessage.snapshot, (nodeId, toPath) => {\n // nodeId is the relative path under the node being attached. Always starts with \"/\", but no trailing \"/\" after an id\n const fromPath = `/${attachMessage.id}${nodeId === \"/\" ? \"\" : nodeId}`;\n this.parentContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp);\n });\n // Only log once per container to avoid noise/cost.\n // Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details\n if (this.shouldSendAttachLog) {\n this.shouldSendAttachLog = false;\n this.mc.logger.sendTelemetryEvent({\n eventName: \"dataStoreAttachMessage_sampled\",\n ...tagCodeArtifacts({ id: attachMessage.id, pkg: attachMessage.type }),\n details: {\n local,\n snapshot: !!attachMessage.snapshot,\n foundGCData,\n },\n ...extractSafePropertiesFromMessage(message),\n });\n }\n // The local object has already been attached\n if (local) {\n assert(this.pendingAttach.has(attachMessage.id), 0x15e /* \"Local object does not have matching attach message id\" */);\n this.contexts.get(attachMessage.id)?.setAttachState(AttachState.Attached);\n this.pendingAttach.delete(attachMessage.id);\n return;\n }\n // If a non-local operation then go and create the object, otherwise mark it as officially attached.\n if (this.alreadyProcessed(attachMessage.id)) {\n // TODO: dataStoreId may require a different tag from PackageData #7488\n const error = new DataCorruptionError(\n // pre-0.58 error message: duplicateDataStoreCreatedWithExistingId\n \"Duplicate DataStore created with existing id\", {\n ...extractSafePropertiesFromMessage(message),\n ...tagCodeArtifacts({ dataStoreId: attachMessage.id }),\n });\n throw error;\n }\n const flatAttachBlobs = new Map();\n let snapshot;\n if (attachMessage.snapshot) {\n snapshot = buildSnapshotTree(attachMessage.snapshot.entries, flatAttachBlobs);\n if (isInstanceOfISnapshot(this.baseSnapshot)) {\n snapshot = { ...this.baseSnapshot, snapshotTree: snapshot };\n }\n }\n // Include the type of attach message which is the pkg of the store to be\n // used by RemoteFluidDataStoreContext in case it is not in the snapshot.\n const pkg = [attachMessage.type];\n const remoteFluidDataStoreContext = new RemoteFluidDataStoreContext({\n id: attachMessage.id,\n snapshot,\n parentContext: this.wrapContextForInnerChannel(attachMessage.id),\n storage: new StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs),\n scope: this.parentContext.scope,\n loadingGroupId: attachMessage.snapshot?.groupId,\n createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {\n type: CreateSummarizerNodeSource.FromAttach,\n sequenceNumber: message.sequenceNumber,\n snapshot: attachMessage.snapshot ?? {\n entries: [createAttributesBlob(pkg, true /* isRootDataStore */)],\n },\n }),\n pkg,\n });\n this.contexts.addBoundOrRemoted(remoteFluidDataStoreContext);\n }\n processAliasMessage(message, localOpMetadata, local) {\n const aliasMessage = message.contents;\n if (!isDataStoreAliasMessage(aliasMessage)) {\n throw new DataCorruptionError(\"malformedDataStoreAliasMessage\", {\n ...extractSafePropertiesFromMessage(message),\n });\n }\n const resolve = localOpMetadata;\n const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias, message.timestamp);\n if (local) {\n resolve(aliasResult);\n }\n }\n processAliasMessageCore(internalId, alias, messageTimestampMs) {\n if (this.alreadyProcessed(alias)) {\n return false;\n }\n const context = this.contexts.get(internalId);\n // If the data store has been deleted, log an error and ignore this message. This helps prevent document\n // corruption in case a deleted data store accidentally submitted a signal.\n if (this.checkAndLogIfDeleted(internalId, context, \"Changed\", \"processAliasMessageCore\")) {\n return false;\n }\n if (context === undefined) {\n this.mc.logger.sendErrorEvent({\n eventName: \"AliasFluidDataStoreNotFound\",\n fluidDataStoreId: internalId,\n });\n return false;\n }\n // If message timestamp doesn't exist, this is called in a detached container. Don't notify GC in that case\n // because it doesn't run in detached container and doesn't need to know about this route.\n if (messageTimestampMs) {\n this.parentContext.addedGCOutboundRoute(\"/\", `/${internalId}`, messageTimestampMs);\n }\n this.aliasMap.set(alias, context.id);\n this.aliasedDataStores.add(context.id);\n context.setInMemoryRoot();\n return true;\n }\n alreadyProcessed(id) {\n return this.aliasMap.get(id) !== undefined || this.contexts.get(id) !== undefined;\n }\n /** Package up the context's attach summary etc into an IAttachMessage */\n generateAttachMessage(localContext) {\n // Get the attach summary.\n const attachSummary = localContext.getAttachSummary();\n // Get the GC data and add it to the attach summary.\n const attachGCData = localContext.getAttachGCData();\n addBlobToSummary(attachSummary, gcDataBlobKey, JSON.stringify(attachGCData));\n // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.\n const snapshot = convertSummaryTreeToITree(attachSummary.summary);\n return {\n id: localContext.id,\n snapshot,\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n type: getLocalDataStoreType(localContext),\n };\n }\n /**\n * Make the data store locally visible in the container graph by moving the data store context from unbound to\n * bound list and submitting the attach message. This data store can now be reached from the root.\n * @param id - The id of the data store context to make visible.\n */\n makeDataStoreLocallyVisible(id) {\n const localContext = this.contexts.getUnbound(id);\n assert(!!localContext, 0x15f /* \"Could not find unbound context to bind\" */);\n /**\n * If the container is not detached, it is globally visible to all clients. This data store should also be\n * globally visible. Move it to attaching state and send an \"attach\" op for it.\n * If the container is detached, this data store will be part of the summary that makes the container attached.\n */\n if (this.parentContext.attachState !== AttachState.Detached) {\n this.submitAttachChannelOp(localContext);\n localContext.setAttachState(AttachState.Attaching);\n }\n this.contexts.bind(id);\n }\n submitAttachChannelOp(localContext) {\n const message = this.generateAttachMessage(localContext);\n this.pendingAttach.set(localContext.id, message);\n this.parentContext.submitMessage(ContainerMessageType.Attach, message, undefined);\n this.attachOpFiredForDataStore.add(localContext.id);\n }\n /**\n * Generate compact internal DataStore ID.\n *\n * A note about namespace and name collisions:\n * This code assumes that that's the only way to generate internal IDs, and that it's Ok for this namespace to overlap with\n * user-provided alias names namespace.\n * There are two scenarios where it could cause trouble:\n * 1) Old files, where (already removed) CreateRoot*DataStore*() API was used, and thus internal name of data store\n * was provided by user. Such files may experience name collision with future data stores that receive a name generated\n * by this function.\n * 2) Much less likely, but if it happen that internal ID (generated by this function) is exactly the same as alias name\n * that user might use in the future, them ContainerRuntime.getAliasedDataStoreEntryPoint() or\n * ContainerRuntime.getDataStoreFromRequest() could return a data store with internalID matching user request, even though\n * user expected some other data store (that would receive alias later).\n * Please note that above mentioned functions have the implementation they have (allowing #2) due to #1.\n */\n createDataStoreId() {\n /**\n * There is currently a bug where certain data store ids such as \"[\" are getting converted to ASCII characters\n * in the snapshot.\n * So, return short ids only if explicitly enabled via feature flags. Else, return uuid();\n */\n if (this.mc.config.getBoolean(\"Fluid.Runtime.UseShortIds\") === true) {\n // We use three non-overlapping namespaces:\n // - detached state: even numbers\n // - attached state: odd numbers\n // - uuids\n // In first two cases we will encode result as strings in more compact form.\n if (this.parentContext.attachState === AttachState.Detached) {\n // container is detached, only one client observes content, no way to hit collisions with other clients.\n return encodeCompactIdToString(2 * this.contexts.size);\n }\n const id = this.parentContext.containerRuntime.generateDocumentUniqueId();\n if (typeof id === \"number\") {\n return encodeCompactIdToString(2 * id + 1);\n }\n return id;\n }\n return uuid();\n }\n createDetachedDataStore(pkg, loadingGroupId) {\n return this.createContext(this.createDataStoreId(), pkg, LocalDetachedFluidDataStoreContext, undefined, // props\n loadingGroupId);\n }\n createDataStoreContext(pkg, props, loadingGroupId) {\n return this.createContext(this.createDataStoreId(), pkg, LocalFluidDataStoreContext, props, loadingGroupId);\n }\n createContext(id, pkg, contextCtor, createProps, loadingGroupId) {\n assert(loadingGroupId !== \"\", 0x974 /* loadingGroupId should not be the empty string */);\n const context = new contextCtor({\n id,\n pkg,\n parentContext: this.wrapContextForInnerChannel(id),\n storage: this.parentContext.storage,\n scope: this.parentContext.scope,\n createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {\n type: CreateSummarizerNodeSource.Local,\n }),\n makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),\n snapshotTree: undefined,\n createProps,\n loadingGroupId,\n channelToDataStoreFn: (channel) => channelToDataStore(channel, id, this, createChildLogger({ logger: this.parentContext.baseLogger })),\n });\n this.contexts.addUnbound(context);\n return context;\n }\n get disposed() {\n return this.disposeOnce.evaluated;\n }\n reSubmit(type, content, localOpMetadata) {\n switch (type) {\n case ContainerMessageType.Attach:\n case ContainerMessageType.Alias:\n this.parentContext.submitMessage(type, content, localOpMetadata);\n return;\n case ContainerMessageType.FluidDataStoreOp:\n return this.reSubmitChannelOp(type, content, localOpMetadata);\n default:\n assert(false, 0x907 /* unknown op type */);\n }\n }\n reSubmitChannelOp(type, content, localOpMetadata) {\n const envelope = content;\n const context = this.contexts.get(envelope.address);\n // If the data store has been deleted, log an error and throw an error. If there are local changes for a\n // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.\n if (this.checkAndLogIfDeleted(envelope.address, context, \"Changed\", \"resubmitDataStoreOp\")) {\n throw new DataCorruptionError(\"Context is deleted!\", {\n callSite: \"resubmitDataStoreOp\",\n ...tagCodeArtifacts({ id: envelope.address }),\n });\n }\n assert(!!context, 0x160 /* \"There should be a store context for the op\" */);\n const innerContents = envelope.contents;\n context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);\n }\n rollback(type, content, localOpMetadata) {\n assert(type === ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);\n const envelope = content;\n const context = this.contexts.get(envelope.address);\n // If the data store has been deleted, log an error and throw an error. If there are local changes for a\n // deleted data store, it can otherwise lead to inconsistent state when compared to other clients.\n if (this.checkAndLogIfDeleted(envelope.address, context, \"Changed\", \"rollbackDataStoreOp\")) {\n throw new DataCorruptionError(\"Context is deleted!\", {\n callSite: \"rollbackDataStoreOp\",\n ...tagCodeArtifacts({ id: envelope.address }),\n });\n }\n assert(!!context, 0x2e8 /* \"There should be a store context for the op\" */);\n const innerContents = envelope.contents;\n context.rollback(innerContents.type, innerContents.content, localOpMetadata);\n }\n async applyStashedOp(content) {\n const opContents = content;\n switch (opContents.type) {\n case ContainerMessageType.Attach:\n return this.applyStashedAttachOp(opContents.contents);\n case ContainerMessageType.Alias:\n return;\n case ContainerMessageType.FluidDataStoreOp:\n return this.applyStashedChannelChannelOp(opContents.contents);\n default:\n assert(false, 0x908 /* unknon type of op */);\n }\n }\n async applyStashedChannelChannelOp(envelope) {\n const context = this.contexts.get(envelope.address);\n // If the data store has been deleted, log an error and ignore this message. This helps prevent document\n // corruption in case the data store that stashed the op is deleted.\n if (this.checkAndLogIfDeleted(envelope.address, context, \"Changed\", \"applyStashedOp\")) {\n return undefined;\n }\n assert(!!context, 0x161 /* \"There should be a store context for the op\" */);\n return context.applyStashedOp(envelope.contents);\n }\n async applyStashedAttachOp(message) {\n const { id, snapshot } = message;\n // build the snapshot from the summary in the attach message\n const flatAttachBlobs = new Map();\n const snapshotTree = buildSnapshotTree(snapshot.entries, flatAttachBlobs);\n const storage = new StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs);\n // create a local datastore context for the data store context,\n // which this message represents. All newly created data store\n // contexts start as a local context on the client that created\n // them, and for stashed ops, the client that applies it plays\n // the role of creating client.\n const dataStoreContext = new LocalFluidDataStoreContext({\n id,\n pkg: undefined,\n parentContext: this.wrapContextForInnerChannel(id),\n storage,\n scope: this.parentContext.scope,\n createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {\n type: CreateSummarizerNodeSource.FromSummary,\n }),\n makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),\n snapshotTree,\n });\n // add to the list of bound or remoted, as this context must be bound\n // to had an attach message sent, and is the non-detached case is remoted.\n this.contexts.addBoundOrRemoted(dataStoreContext);\n // realize the local context, as local contexts shouldn't be delay\n // loaded, as this client is playing the role of creating client,\n // and creating clients always create realized data store contexts.\n const channel = await dataStoreContext.realize();\n await channel.entryPoint.get();\n if (this.parentContext.attachState !== AttachState.Detached) {\n // if the client is not detached put in the pending attach list\n // so that on ack of the stashed op, the context is found.\n // detached client don't send ops, so should not expect and ack.\n this.pendingAttach.set(message.id, message);\n }\n }\n process(message, local, localMessageMetadata) {\n switch (message.type) {\n case ContainerMessageType.Attach:\n this.processAttachMessage(message, local);\n return;\n case ContainerMessageType.Alias:\n this.processAliasMessage(message, localMessageMetadata, local);\n return;\n case ContainerMessageType.FluidDataStoreOp: {\n const envelope = message.contents;\n const innerContents = envelope.contents;\n const transformed = {\n ...message,\n type: innerContents.type,\n contents: innerContents.content,\n };\n this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);\n // Notify GC of any outbound references that were added by this op.\n detectOutboundReferences(envelope.address, transformed.contents, (fromPath, toPath) => this.parentContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp));\n break;\n }\n default:\n assert(false, 0x8e9 /* unreached */);\n }\n }\n processChannelOp(address, message, local, localMessageMetadata) {\n const context = this.contexts.get(address);\n // If the data store has been deleted, log an error and ignore this message. This helps prevent document\n // corruption in case a deleted data store accidentally submitted an op.\n if (this.checkAndLogIfDeleted(address, context, \"Changed\", \"processFluidDataStoreOp\")) {\n return;\n }\n if (context === undefined) {\n // Former assert 0x162\n throw DataProcessingError.create(\"No context for op\", \"processFluidDataStoreOp\", message, {\n local,\n messageDetails: JSON.stringify({\n type: message.type,\n contentType: typeof message.contents,\n }),\n ...tagCodeArtifacts({ address }),\n });\n }\n context.process(message, local, localMessageMetadata);\n // Notify that a GC node for the data store changed. This is used to detect if a deleted data store is\n // being used.\n this.gcNodeUpdated({\n node: { type: \"DataStore\", path: `/${address}` },\n reason: \"Changed\",\n timestampMs: message.timestamp,\n packagePath: context.isLoaded ? context.packagePath : undefined,\n });\n }\n async getDataStore(id, requestHeaderData, originalRequest) {\n const headerData = { ...defaultRuntimeHeaderData, ...requestHeaderData };\n if (this.checkAndLogIfDeleted(id, this.contexts.get(id), \"Requested\", \"getDataStore\", requestHeaderData, originalRequest)) {\n // The requested data store has been deleted by gc. Create a 404 response exception.\n throw responseToException(createResponseError(404, \"DataStore was deleted\", originalRequest, {\n [DeletedResponseHeaderKey]: true,\n }), originalRequest);\n }\n const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);\n if (context === undefined) {\n // The requested data store does not exits. Throw a 404 response exception.\n const request = { url: id };\n throw responseToException(create404Response(request), request);\n }\n return context;\n }\n /**\n * Returns the data store requested with the given id if available. Otherwise, returns undefined.\n */\n async getDataStoreIfAvailable(id, requestHeaderData) {\n // If the data store has been deleted, log an error and return undefined.\n if (this.checkAndLogIfDeleted(id, this.contexts.get(id), \"Requested\", \"getDataStoreIfAvailable\", requestHeaderData)) {\n return undefined;\n }\n const headerData = { ...defaultRuntimeHeaderData, ...requestHeaderData };\n const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);\n if (context === undefined) {\n return undefined;\n }\n return context;\n }\n /**\n * Checks if the data store has been deleted by GC. If so, log an error.\n * @param id - The data store's id.\n * @param context - The data store context.\n * @param deletedLogSuffix - Whether it was Changed or Requested (will go into the eventName)\n * @param callSite - The function name this is called from.\n * @param requestHeaderData - The request header information to log if the data store is deleted.\n * @param originalRequest - The original request (could be for a child of the DataStore)\n * @returns true if the data store is deleted. Otherwise, returns false.\n */\n checkAndLogIfDeleted(id, context, deletedLogSuffix, callSite, requestHeaderData, originalRequest) {\n const dataStoreNodePath = `/${id}`;\n if (!this.isDataStoreDeleted(dataStoreNodePath)) {\n return false;\n }\n const idToLog = originalRequest !== undefined ? urlToGCNodePath(originalRequest.url) : dataStoreNodePath;\n // Log the package details asynchronously since getInitialSnapshotDetails is async\n const recentlyDeletedContext = this.contexts.getRecentlyDeletedContext(id);\n if (recentlyDeletedContext !== undefined) {\n recentlyDeletedContext\n .getInitialSnapshotDetails()\n .then((details) => {\n return details.pkg.join(\"/\");\n })\n .then((pkg) => ({ pkg, error: undefined }), (error) => ({ pkg: undefined, error }))\n .then(({ pkg, error }) => {\n this.mc.logger.sendTelemetryEvent({\n eventName: `GC_DeletedDataStore_PathInfo`,\n ...tagCodeArtifacts({\n id: idToLog,\n pkg,\n }),\n callSite,\n }, error);\n })\n .catch(() => { });\n }\n this.mc.logger.sendErrorEvent({\n eventName: `GC_Deleted_DataStore_${deletedLogSuffix}`,\n ...tagCodeArtifacts({ id: idToLog }),\n callSite,\n headers: JSON.stringify(requestHeaderData),\n exists: context !== undefined,\n details: {\n url: originalRequest?.url,\n headers: JSON.stringify(originalRequest?.headers),\n aliased: this.aliasedDataStores.has(id),\n },\n });\n return true;\n }\n processSignal(messageArg, local) {\n const envelope = messageArg.content;\n const fluidDataStoreId = envelope.address;\n const message = { ...messageArg, content: envelope.contents };\n const context = this.contexts.get(fluidDataStoreId);\n // If the data store has been deleted, log an error and ignore this message. This helps prevent document\n // corruption in case a deleted data store accidentally submitted a signal.\n if (this.checkAndLogIfDeleted(fluidDataStoreId, context, \"Changed\", \"processSignal\")) {\n return;\n }\n if (!context) {\n // Attach message may not have been processed yet\n assert(!local, 0x163 /* \"Missing datastore for local signal\" */);\n this.mc.logger.sendTelemetryEvent({\n eventName: \"SignalFluidDataStoreNotFound\",\n ...tagCodeArtifacts({\n fluidDataStoreId,\n }),\n });\n return;\n }\n context.processSignal(message, local);\n }\n setConnectionState(connected, clientId) {\n for (const [fluidDataStoreId, context] of this.contexts) {\n try {\n context.setConnectionState(connected, clientId);\n }\n catch (error) {\n this.mc.logger.sendErrorEvent({\n eventName: \"SetConnectionStateError\",\n clientId,\n ...tagCodeArtifacts({\n fluidDataStoreId,\n }),\n details: JSON.stringify({\n runtimeConnected: this.parentContext.connected,\n connected,\n }),\n }, error);\n }\n }\n }\n setAttachState(attachState) {\n for (const [, context] of this.contexts) {\n // Fire only for bounded stores.\n if (!this.contexts.isNotBound(context.id)) {\n context.setAttachState(attachState);\n }\n }\n }\n get size() {\n return this.contexts.size;\n }\n /**\n * Create a summary. Used when attaching or serializing a detached container.\n */\n getAttachSummary(telemetryContext) {\n const builder = new SummaryTreeBuilder();\n this.visitLocalBoundContextsDuringAttach((contextId, context) => {\n let dataStoreSummary;\n if (context.isLoaded) {\n dataStoreSummary = context.getAttachSummary(telemetryContext);\n }\n else {\n // If this data store is not yet loaded, then there should be no changes in the snapshot from\n // which it was created as it is detached container. So just use the previous snapshot.\n assert(!!this.baseSnapshot, 0x166 /* \"BaseSnapshot should be there as detached container loaded from snapshot\" */);\n dataStoreSummary = convertSnapshotTreeToSummaryTree(\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n getSnapshotTree(this.baseSnapshot).trees[contextId]);\n }\n builder.addWithStats(contextId, dataStoreSummary);\n });\n return builder.getSummaryTree();\n }\n /**\n * Gets the GC data. Used when attaching or serializing a detached container.\n */\n getAttachGCData(telemetryContext) {\n const builder = new GCDataBuilder();\n this.visitLocalBoundContextsDuringAttach((contextId, context) => {\n const contextGCData = context.getAttachGCData(telemetryContext);\n // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.\n // This also gradually builds the id of each node to be a path from the root.\n builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);\n });\n // Get the outbound routes (aliased data stores) and add a GC node for this channel.\n builder.addNode(\"/\", Array.from(this.aliasedDataStores));\n return builder.getGCData();\n }\n /**\n * Helper method for preparing to attach this channel.\n * Runs the callback for each bound context to incorporate its data however the caller specifies\n */\n visitLocalBoundContextsDuringAttach(visitor) {\n const visitedContexts = new Set();\n let visitedLength = -1;\n let notBoundContextsLength = -1;\n while (visitedLength !== visitedContexts.size &&\n notBoundContextsLength !== this.contexts.notBoundLength()) {\n // detect changes in the visitedContexts set, as on visiting a context\n // it could could make contexts available by removing other contexts\n // from the not bound context list, so we need to ensure those get processed as well.\n // only once the loop can run with no new contexts added to the visitedContexts set do we\n // know for sure all possible contexts have been visited.\n visitedLength = visitedContexts.size;\n notBoundContextsLength = this.contexts.notBoundLength();\n for (const [contextId, context] of this.contexts) {\n if (!(visitedContexts.has(contextId) ||\n this.contexts.isNotBound(contextId) ||\n this.attachOpFiredForDataStore.has(contextId))) {\n visitor(contextId, context);\n visitedContexts.add(contextId);\n }\n }\n }\n }\n /**\n * Helper method for preparing to summarize this channel.\n * Runs the callback for each bound context to incorporate its data however the caller specifies\n */\n async visitContextsDuringSummary(visitor, telemetryProps) {\n for (const [contextId, context] of this.contexts) {\n // Summarizer client and hence GC works only with clients with no local changes. A data store in\n // attaching state indicates an op was sent to attach a local data store, and the the attach op\n // had not yet round tripped back to the client.\n // Formerly assert 0x589\n if (context.attachState === AttachState.Attaching) {\n const error = DataProcessingError.create(\"Local data store detected in attaching state\", \"summarize/getGCData\");\n throw error;\n }\n if (context.attachState === AttachState.Attached) {\n // If summary / getGCData results in this data store's realization, let GC know so that it can log in\n // case the data store is not referenced. This will help identifying scenarios that we see today where\n // unreferenced data stores are being loaded.\n const contextLoadedBefore = context.isLoaded;\n const trailingOpCount = context.pendingCount;\n await visitor(contextId, context);\n if (!contextLoadedBefore && context.isLoaded) {\n this.gcNodeUpdated({\n node: { type: \"DataStore\", path: `/${context.id}` },\n reason: \"Realized\",\n packagePath: context.packagePath,\n timestampMs: undefined, // This will be added by the parent context if needed.\n additionalProps: { trailingOpCount, ...telemetryProps },\n });\n }\n }\n }\n }\n async summarize(fullTree, trackState, telemetryContext) {\n const summaryBuilder = new SummaryTreeBuilder();\n await this.visitContextsDuringSummary(async (contextId, context) => {\n const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);\n summaryBuilder.addWithStats(contextId, contextSummary);\n }, { fullTree, realizedDuring: \"summarize\" });\n return summaryBuilder.getSummaryTree();\n }\n /**\n * Generates data used for garbage collection. It does the following:\n *\n * 1. Calls into each child data store context to get its GC data.\n *\n * 2. Prefixes the child context's id to the GC nodes in the child's GC data. This makes sure that the node can be\n * identified as belonging to the child.\n *\n * 3. Adds a GC node for this channel to the nodes received from the children. All these nodes together represent\n * the GC data of this channel.\n *\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n const builder = new GCDataBuilder();\n await this.visitContextsDuringSummary(async (contextId, context) => {\n const contextGCData = await context.getGCData(fullGC);\n // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.\n // This also gradually builds the id of each node to be a path from the root.\n builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);\n }, { fullGC, realizedDuring: \"getGCData\" });\n // Get the outbound routes and add a GC node for this channel.\n builder.addNode(\"/\", await this.getOutboundRoutes());\n return builder.getGCData();\n }\n /**\n * After GC has run, called to notify this Container's data stores of routes that are used in it.\n * @param usedRoutes - The routes that are used in all data stores in this Container.\n */\n updateUsedRoutes(usedRoutes) {\n // Get a map of data store ids to routes used in it.\n const usedDataStoreRoutes = unpackChildNodesUsedRoutes(usedRoutes);\n // Verify that the used routes are correct.\n for (const [id] of usedDataStoreRoutes) {\n assert(this.contexts.has(id), 0x167 /* \"Used route does not belong to any known data store\" */);\n }\n // Update the used routes in each data store. Used routes is empty for unused data stores.\n for (const [contextId, context] of this.contexts) {\n context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);\n }\n }\n deleteChild(dataStoreId) {\n const dataStoreContext = this.contexts.get(dataStoreId);\n assert(dataStoreContext !== undefined, 0x2d7 /* No data store with specified id */);\n if (dataStoreContext.isLoaded) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"GC_DeletingLoadedDataStore\",\n ...tagCodeArtifacts({\n id: `/${dataStoreId}`, // Make the id consistent with GC node path format by prefixing a slash.\n pkg: dataStoreContext.packagePath.join(\"/\"),\n }),\n details: {\n aliased: this.aliasedDataStores.has(dataStoreId),\n },\n });\n }\n dataStoreContext.delete();\n // Delete the contexts of unused data stores.\n this.contexts.delete(dataStoreId);\n // Delete the summarizer node of the unused data stores.\n this.parentContext.deleteChildSummarizerNode(dataStoreId);\n }\n /**\n * Delete data stores and its objects that are sweep ready.\n * @param sweepReadyDataStoreRoutes - The routes of data stores and its objects that are sweep ready and should\n * be deleted.\n * @returns The routes of data stores and its objects that were deleted.\n */\n deleteSweepReadyNodes(sweepReadyDataStoreRoutes) {\n for (const route of sweepReadyDataStoreRoutes) {\n const pathParts = route.split(\"/\");\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const dataStoreId = pathParts[1];\n // Ignore sub-data store routes because a data store and its sub-routes are deleted together, so, we only\n // need to delete the data store.\n // These routes will still be returned below as among the deleted routes\n if (pathParts.length > 2) {\n continue;\n }\n const dataStoreContext = this.contexts.get(dataStoreId);\n if (dataStoreContext === undefined) {\n // If the data store hasn't already been deleted, log an error because this should never happen.\n // If the data store has already been deleted, log a telemetry event. This can happen because multiple GC\n // sweep ops can contain the same data store. It would be interesting to track how often this happens.\n const alreadyDeleted = this.isDataStoreDeleted(`/${dataStoreId}`);\n this.mc.logger.sendTelemetryEvent({\n eventName: \"DeletedDataStoreNotFound\",\n category: alreadyDeleted ? \"generic\" : \"error\",\n ...tagCodeArtifacts({ id: dataStoreId }),\n details: { alreadyDeleted },\n });\n continue;\n }\n this.deleteChild(dataStoreId);\n }\n return Array.from(sweepReadyDataStoreRoutes);\n }\n /**\n * This is called to update objects whose routes are tombstones.\n *\n * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.\n * Tombstoned objects are eventually deleted by GC.\n *\n * @param tombstonedRoutes - The routes that are tombstones in all data stores in this Container.\n */\n updateTombstonedRoutes(tombstonedRoutes) {\n const tombstonedDataStoresSet = new Set();\n for (const route of tombstonedRoutes) {\n const pathParts = route.split(\"/\");\n // Tombstone data store only if its route (/datastoreId) is directly in tombstoneRoutes.\n if (pathParts.length > 2) {\n continue;\n }\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const dataStoreId = pathParts[1];\n assert(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);\n tombstonedDataStoresSet.add(dataStoreId);\n }\n // Update the used routes in each data store. Used routes is empty for unused data stores.\n for (const [contextId, context] of this.contexts) {\n context.setTombstone(tombstonedDataStoresSet.has(contextId));\n }\n }\n /**\n * Returns the outbound routes of this channel. Only root data stores are considered referenced and their paths are\n * part of outbound routes.\n */\n async getOutboundRoutes() {\n const outboundRoutes = [];\n // Getting this information is a performance optimization that reduces network calls for virtualized datastores\n for (const [contextId, context] of this.contexts) {\n const isRootDataStore = await context.isRoot(this.aliasedDataStores);\n if (isRootDataStore) {\n outboundRoutes.push(`/${contextId}`);\n }\n }\n return outboundRoutes;\n }\n /**\n * Called by GC to retrieve the package path of a data store node with the given path.\n */\n async getDataStorePackagePath(nodePath) {\n // If the node belongs to a data store, return its package path. For DDSes, we return the package path of the\n // data store that contains it.\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const context = this.contexts.get(nodePath.split(\"/\")[1]);\n return (await context?.getInitialSnapshotDetails())?.pkg;\n }\n /**\n * Called by GC to determine if a node is for a data store or for an object within a data store (for e.g. DDS).\n * @returns the GC node type if the node belongs to a data store or object within data store, undefined otherwise.\n */\n getGCNodeType(nodePath) {\n const pathParts = nodePath.split(\"/\");\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!this.contexts.has(pathParts[1])) {\n return undefined;\n }\n // Data stores paths are of the format \"/dataStoreId\".\n // Sub data store paths are of the format \"/dataStoreId/subPath/...\".\n if (pathParts.length === 2) {\n return GCNodeType.DataStore;\n }\n return GCNodeType.SubDataStore;\n }\n internalId(maybeAlias) {\n return this.aliases.get(maybeAlias) ?? maybeAlias;\n }\n async request(request) {\n const requestParser = RequestParser.create(request);\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const id = requestParser.pathParts[0];\n // Differentiate between requesting the dataStore directly, or one of its children\n const requestForChild = !requestParser.isLeaf(1);\n const headerData = {};\n if (typeof request.headers?.[RuntimeHeaders.wait] === \"boolean\") {\n headerData.wait = request.headers[RuntimeHeaders.wait];\n }\n if (typeof request.headers?.[RuntimeHeaders.viaHandle] === \"boolean\") {\n headerData.viaHandle = request.headers[RuntimeHeaders.viaHandle];\n }\n if (typeof request.headers?.[AllowTombstoneRequestHeaderKey] === \"boolean\") {\n headerData.allowTombstone = request.headers[AllowTombstoneRequestHeaderKey];\n }\n // We allow Tombstone requests for sub-DataStore objects\n if (requestForChild) {\n headerData.allowTombstone = true;\n }\n await this.waitIfPendingAlias(id);\n const internalId = this.internalId(id);\n const dataStoreContext = await this.getDataStore(internalId, headerData, request);\n // Get the initial snapshot details which contain the data store package path.\n const details = await dataStoreContext.getInitialSnapshotDetails();\n // When notifying GC of this node being loaded, we only indicate the DataStore itself, not the full subDataStore url if applicable.\n // This is in case the url is to a route that Fluid doesn't understand or track for GC (e.g. if suited for a custom request handler)\n this.gcNodeUpdated({\n node: { type: \"DataStore\", path: `/${id}` },\n reason: \"Loaded\",\n packagePath: details.pkg,\n request,\n headerData,\n timestampMs: undefined, // This will be added by the parent context if needed.\n });\n const dataStore = await dataStoreContext.realize();\n const subRequest = requestParser.createSubRequest(1);\n // We always expect createSubRequest to include a leading slash, but asserting here to protect against\n // unintentionally modifying the url if that changes.\n assert(subRequest.url.startsWith(\"/\"), 0x126 /* \"Expected createSubRequest url to include a leading slash\" */);\n return dataStore.request(subRequest);\n }\n}\nexport function getSummaryForDatastores(snapshot, metadata) {\n if (!snapshot) {\n return undefined;\n }\n if (rootHasIsolatedChannels(metadata)) {\n const datastoresSnapshot = snapshot.trees[channelsTreeName];\n assert(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);\n return datastoresSnapshot;\n }\n else {\n // back-compat: strip out all non-datastore paths before giving to DataStores object.\n const datastoresTrees = {};\n for (const [key, value] of Object.entries(snapshot.trees)) {\n if (!nonDataStorePaths.includes(key)) {\n datastoresTrees[key] = value;\n }\n }\n return {\n ...snapshot,\n trees: datastoresTrees,\n };\n }\n}\n/**\n * Traverse this op's contents and detect any outbound routes that were added by this op.\n *\n * @internal\n */\nexport function detectOutboundReferences(address, contents, addedOutboundReference) {\n // These will be built up as we traverse the envelope contents\n const outboundPaths = [];\n let ddsAddress;\n function recursivelyFindHandles(obj) {\n if (typeof obj === \"object\" && obj !== null) {\n for (const [key, value] of Object.entries(obj)) {\n // If 'value' is a serialized IFluidHandle, it represents a new outbound route.\n if (isSerializedHandle(value)) {\n outboundPaths.push(value.url);\n }\n // NOTE: This is taking a hard dependency on the fact that in our DataStore implementation,\n // the address of the DDS is stored in a property called \"address\". This is not ideal.\n // An alternative would be for the op envelope to include the absolute path (built up as it is submitted)\n if (key === \"address\" && ddsAddress === undefined) {\n ddsAddress = value;\n }\n recursivelyFindHandles(value);\n }\n }\n }\n recursivelyFindHandles(contents);\n // GC node paths are all absolute paths, hence the \"\" prefix.\n // e.g. this will yield \"/dataStoreId/ddsId\"\n const fromPath = [\"\", address, ddsAddress].join(\"/\");\n outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));\n}\n/** @internal */\nexport class ChannelCollectionFactory {\n constructor(registryEntries, \n // ADO:7302 We need a better type here\n provideEntryPoint, ctor) {\n this.provideEntryPoint = provideEntryPoint;\n this.ctor = ctor;\n this.type = \"ChannelCollectionChannel\";\n this.IFluidDataStoreRegistry = new FluidDataStoreRegistry(registryEntries);\n }\n get IFluidDataStoreFactory() {\n return this;\n }\n async instantiateDataStore(context, _existing) {\n const runtime = this.ctor(context.baseSnapshot, context, // parentContext\n context.baseLogger, () => { }, // gcNodeUpdated\n (_nodePath) => false, // isDataStoreDeleted\n new Map(), // aliasMap\n this.provideEntryPoint);\n return runtime;\n }\n}\n//# sourceMappingURL=channelCollection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DocumentStorageServiceProxy } from \"@fluidframework/driver-utils/internal\";\n/**\n * IDocumentStorageService proxy which intercepts requests if they can be satisfied by the blobs received in the\n * attach message. We use this to avoid an unnecessary request to the storage service.\n */\nexport class StorageServiceWithAttachBlobs extends DocumentStorageServiceProxy {\n constructor(internalStorageService, attachBlobs) {\n super(internalStorageService);\n this.attachBlobs = attachBlobs;\n }\n get policies() {\n return this.internalStorageService.policies;\n }\n async readBlob(id) {\n const blob = this.attachBlobs.get(id);\n if (blob !== undefined) {\n return blob;\n }\n // Note that it is intentional not to cache the result of this readBlob - we'll trust the real\n // IDocumentStorageService to cache appropriately, no need to double-cache.\n return this.internalStorageService.readBlob(id);\n }\n}\n//# sourceMappingURL=storageServiceWithAttachBlobs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"./performanceIsomorphic.js\";\n/**\n * Helper class for tracing performance of events\n * Time measurements are in milliseconds as a floating point with a decimal\n *\n * @internal\n */\nexport class Trace {\n static start() {\n const startTick = performance.now();\n return new Trace(startTick);\n }\n constructor(startTick) {\n this.startTick = startTick;\n this.lastTick = startTick;\n }\n trace() {\n const tick = performance.now();\n const event = {\n totalTimeElapsed: tick - this.startTick,\n duration: tick - this.lastTick,\n tick,\n };\n this.lastTick = tick;\n return event;\n }\n}\n//# sourceMappingURL=trace.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Handles garbage collection of expiring cache entries.\n * Not exported.\n */\nclass GarbageCollector {\n constructor(expiry, cleanup) {\n this.expiry = expiry;\n this.cleanup = cleanup;\n this.gcTimeouts = new Map();\n }\n /**\n * Schedule GC for the given key, as applicable\n */\n schedule(key) {\n if (this.expiry.policy !== \"indefinite\") {\n this.gcTimeouts.set(key, setTimeout(() => {\n this.cleanup(key);\n this.cancel(key);\n }, this.expiry.durationMs));\n }\n }\n /**\n * Cancel any pending GC for the given key\n */\n cancel(key) {\n const timeout = this.gcTimeouts.get(key);\n if (timeout !== undefined) {\n clearTimeout(timeout);\n this.gcTimeouts.delete(key);\n }\n }\n /**\n * Update any pending GC for the given key, as applicable\n */\n update(key) {\n // Cancel/reschedule new GC if the policy is sliding\n if (this.expiry.policy === \"sliding\") {\n this.cancel(key);\n this.schedule(key);\n }\n }\n}\n/**\n * A specialized cache for async work, allowing you to safely cache the promised result of some async work\n * without fear of running it multiple times or losing track of errors.\n * @legacy\n * @alpha\n */\nexport class PromiseCache {\n /**\n * Create the PromiseCache with the given options, with the following defaults:\n *\n * expiry: indefinite, removeOnError: true for all errors\n */\n constructor({ expiry = { policy: \"indefinite\" }, removeOnError = () => true, } = {}) {\n this.cache = new Map();\n this.removeOnError = removeOnError;\n this.gc = new GarbageCollector(expiry, (key) => this.remove(key));\n }\n /**\n * Check if there's anything cached at the given key\n */\n has(key) {\n return this.cache.has(key);\n }\n /**\n * Get the Promise for the given key, or undefined if it's not found.\n * Extend expiry if applicable.\n */\n get(key) {\n if (this.has(key)) {\n this.gc.update(key);\n }\n return this.cache.get(key);\n }\n /**\n * Remove the Promise for the given key, returning true if it was found and removed\n */\n remove(key) {\n this.gc.cancel(key);\n return this.cache.delete(key);\n }\n /**\n * Try to add the result of the given asyncFn, without overwriting an existing cache entry at that key.\n * Returns a Promise for the added or existing async work being done at that key.\n * @param key - key name where to store the async work\n * @param asyncFn - the async work to do and store, if not already in progress under the given key\n */\n async addOrGet(key, asyncFn) {\n // NOTE: Do not await the Promise returned by asyncFn!\n // Let the caller do so once we return or after a subsequent call to get\n let promise = this.get(key);\n if (promise === undefined) {\n // Wrap in an async lambda in case asyncFn disabled @typescript-eslint/promise-function-async\n const safeAsyncFn = async () => asyncFn();\n // Start the async work and put the Promise in the cache\n promise = safeAsyncFn();\n this.cache.set(key, promise);\n // If asyncFn throws, we may remove the Promise from the cache\n promise.catch((error) => {\n if (this.removeOnError(error)) {\n this.remove(key);\n }\n });\n this.gc.schedule(key);\n }\n return promise;\n }\n /**\n * Try to add the result of the given asyncFn, without overwriting an existing cache entry at that key.\n * Returns false if the cache already contained an entry at that key, and true otherwise.\n * @param key - key name where to store the async work\n * @param asyncFn - the async work to do and store, if not already in progress under the given key\n */\n add(key, asyncFn) {\n const alreadyPresent = this.has(key);\n // We are blindly adding the Promise to the cache here, which introduces a Promise in this scope.\n // Swallow Promise rejections here, since whoever gets this out of the cache to use it will await/catch.\n this.addOrGet(key, asyncFn).catch(() => { });\n return !alreadyPresent;\n }\n /**\n * Try to add the given value, without overwriting an existing cache entry at that key.\n * Returns a Promise for the added or existing async work being done at that key.\n * @param key - key name where to store the async work\n * @param value - value to store\n */\n async addValueOrGet(key, value) {\n return this.addOrGet(key, async () => value);\n }\n /**\n * Try to add the given value, without overwriting an existing cache entry at that key.\n * Returns false if the cache already contained an entry at that key, and true otherwise.\n * @param key - key name where to store the value\n * @param value - value to store\n */\n addValue(key, value) {\n return this.add(key, async () => value);\n }\n}\n//# sourceMappingURL=promiseCache.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createChildLogger, } from \"@fluidframework/telemetry-utils/internal\";\nexport class BatchTracker {\n constructor(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate, dateTimeProvider = () => performance.now()) {\n this.batchEventEmitter = batchEventEmitter;\n this.trackedBatchCount = 0;\n this.logger = createChildLogger({ logger, namespace: \"Batching\" });\n this.batchEventEmitter.on(\"batchBegin\", (message) => {\n this.startBatchSequenceNumber = message.sequenceNumber;\n this.batchProcessingStartTimeStamp = dateTimeProvider();\n this.trackedBatchCount++;\n });\n this.batchEventEmitter.on(\"batchEnd\", (error, message) => {\n assert(this.startBatchSequenceNumber !== undefined &&\n this.batchProcessingStartTimeStamp !== undefined, 0x2ba /* \"batchBegin must fire before batchEnd\" */);\n const length = message.sequenceNumber - this.startBatchSequenceNumber + 1;\n if (length >= batchLengthThreshold) {\n this.logger.sendPerformanceEvent({\n eventName: \"LengthTooBig\",\n length,\n threshold: batchLengthThreshold,\n batchEndSequenceNumber: message.sequenceNumber,\n duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n batchError: error !== undefined,\n });\n }\n if (this.trackedBatchCount % batchCountSamplingRate === 0) {\n this.logger.sendPerformanceEvent({\n eventName: \"Length\",\n length,\n samplingRate: batchCountSamplingRate,\n batchEndSequenceNumber: message.sequenceNumber,\n duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n });\n }\n this.startBatchSequenceNumber = undefined;\n this.batchProcessingStartTimeStamp = undefined;\n });\n }\n}\n/**\n * Track batch sizes in terms of op counts and processing times\n *\n * @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations\n * @param logger - See {@link @fluidframework/core-interfaces#ITelemetryLoggerExt}\n * @param batchLengthThreshold - threshold for the length of a batch when to send an error event\n * @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics\n */\nexport const BindBatchTracker = (batchEventEmitter, logger, batchLengthThreshold = 1000, batchCountSamplingRate = 1000) => new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);\n//# sourceMappingURL=batchTracker.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter, bufferToString, stringToBuffer, } from \"@fluid-internal/client-utils\";\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert, Deferred } from \"@fluidframework/core-utils/internal\";\nimport { canRetryOnError, runWithRetry } from \"@fluidframework/driver-utils/internal\";\nimport { FluidHandleBase, createResponseError, generateHandleContextPath, responseToException, } from \"@fluidframework/runtime-utils/internal\";\nimport { GenericError, LoggingError, PerformanceEvent, createChildMonitoringContext, wrapError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { getStorageIds, summarizeBlobManagerState, toRedirectTable, } from \"./blobManagerSnapSum.js\";\n/**\n * This class represents blob (long string)\n * This object is used only when creating (writing) new blob and serialization purposes.\n * De-serialization process goes through FluidObjectHandle and request flow:\n * DataObject.request() recognizes requests in the form of `/blobs/`\n * and loads blob.\n */\nexport class BlobHandle extends FluidHandleBase {\n get isAttached() {\n return this.routeContext.isAttached && this.attached;\n }\n constructor(path, routeContext, get, onAttachGraph) {\n super();\n this.path = path;\n this.routeContext = routeContext;\n this.get = get;\n this.onAttachGraph = onAttachGraph;\n this.attached = false;\n this.absolutePath = generateHandleContextPath(path, this.routeContext);\n }\n attachGraph() {\n if (!this.attached) {\n this.attached = true;\n this.onAttachGraph?.();\n }\n }\n bind(handle) {\n throw new Error(\"Cannot bind to blob handle\");\n }\n}\nconst stashedPendingBlobOverrides = {\n stashedUpload: true,\n storageId: undefined,\n minTTLInSeconds: undefined,\n uploadTime: undefined,\n};\nexport const blobManagerBasePath = \"_blobs\";\nexport class BlobManager extends TypedEventEmitter {\n constructor(props) {\n super();\n /**\n * Blobs which we have not yet seen a BlobAttach op round-trip and not yet attached to a DDS.\n */\n this.pendingBlobs = new Map();\n /**\n * Track ops in flight for online flow. This is used for optimizations where if we receive an ack for a storage ID,\n * we can resolve all pending blobs with the same storage ID even though they may have different local IDs. That's\n * because we know that the server will not delete the blob corresponding to that storage ID.\n */\n this.opsInFlight = new Map();\n this.stopAttaching = false;\n const { routeContext, snapshot, getStorage, sendBlobAttachOp, blobRequested, isBlobDeleted, runtime, stashedBlobs, closeContainer, } = props;\n this.routeContext = routeContext;\n this.getStorage = getStorage;\n this.blobRequested = blobRequested;\n this.isBlobDeleted = isBlobDeleted;\n this.runtime = runtime;\n this.closeContainer = closeContainer;\n this.mc = createChildMonitoringContext({\n logger: this.runtime.baseLogger,\n namespace: \"BlobManager\",\n });\n this.redirectTable = toRedirectTable(snapshot, this.mc.logger, this.runtime.attachState);\n // Begin uploading stashed blobs from previous container instance\n Object.entries(stashedBlobs ?? {}).forEach(([localId, entry]) => {\n const { acked, storageId, minTTLInSeconds, uploadTime } = entry;\n const blob = stringToBuffer(entry.blob, \"base64\");\n const pendingEntry = {\n blob,\n opsent: true,\n handleP: new Deferred(),\n storageId,\n uploadP: undefined,\n uploadTime,\n minTTLInSeconds,\n attached: true,\n acked,\n };\n this.pendingBlobs.set(localId, pendingEntry);\n if (storageId !== undefined && minTTLInSeconds && uploadTime) {\n const timeLapseSinceLocalUpload = (Date.now() - uploadTime) / 1000;\n // stashed entries with more than half-life in storage will not be reuploaded\n if (minTTLInSeconds - timeLapseSinceLocalUpload > minTTLInSeconds / 2) {\n return;\n }\n }\n this.pendingBlobs.set(localId, {\n ...pendingEntry,\n ...stashedPendingBlobOverrides,\n uploadP: this.uploadBlob(localId, blob),\n });\n });\n this.sendBlobAttachOp = (localId, blobId) => {\n const pendingEntry = this.pendingBlobs.get(localId);\n assert(pendingEntry !== undefined, 0x725 /* Must have pending blob entry for upcoming op */);\n if (pendingEntry?.uploadTime && pendingEntry?.minTTLInSeconds) {\n const secondsSinceUpload = (Date.now() - pendingEntry.uploadTime) / 1000;\n const expired = pendingEntry.minTTLInSeconds - secondsSinceUpload < 0;\n this.mc.logger.sendTelemetryEvent({\n eventName: \"sendBlobAttach\",\n secondsSinceUpload,\n minTTLInSeconds: pendingEntry.minTTLInSeconds,\n expired,\n });\n if (expired) {\n // we want to avoid submitting ops with broken handles\n this.closeContainer(new GenericError(\"Trying to submit a BlobAttach for expired blob\", undefined, {\n localId,\n blobId,\n secondsSinceUpload,\n }));\n }\n }\n pendingEntry.opsent = true;\n return sendBlobAttachOp(localId, blobId);\n };\n }\n get allBlobsAttached() {\n for (const [, entry] of this.pendingBlobs) {\n if (entry.attached === false) {\n return false;\n }\n }\n return true;\n }\n get hasPendingBlobs() {\n return ((this.runtime.attachState !== AttachState.Attached && this.redirectTable.size > 0) ||\n this.pendingBlobs.size > 0);\n }\n createAbortError(pending) {\n return new LoggingError(\"uploadBlob aborted\", {\n acked: pending?.acked,\n uploadTime: pending?.uploadTime,\n });\n }\n hasPendingStashedUploads() {\n return Array.from(this.pendingBlobs.values()).some((e) => e.stashedUpload === true);\n }\n /**\n * Upload blobs added while offline. This must be completed before connecting and resubmitting ops.\n */\n async trackPendingStashedUploads() {\n const pendingUploads = Array.from(this.pendingBlobs.values())\n .filter((e) => e.stashedUpload === true)\n .map(async (e) => e.uploadP);\n if (pendingUploads.length === 0) {\n return;\n }\n await PerformanceEvent.timedExecAsync(this.mc.logger, {\n eventName: \"BlobUploadProcessStashedChanges\",\n count: pendingUploads.length,\n }, async () => Promise.all(pendingUploads), { start: true, end: true });\n }\n async getBlob(blobId) {\n // Verify that the blob is not deleted, i.e., it has not been garbage collected. If it is, this will throw\n // an error, failing the call.\n this.verifyBlobNotDeleted(blobId);\n // Let runtime know that the corresponding GC node was requested.\n // Note that this will throw if the blob is inactive or tombstoned and throwing on incorrect usage\n // is configured.\n this.blobRequested(getGCNodePathFromBlobId(blobId));\n const pending = this.pendingBlobs.get(blobId);\n if (pending) {\n return pending.blob;\n }\n let storageId;\n if (this.runtime.attachState === AttachState.Detached) {\n assert(this.redirectTable.has(blobId), 0x383 /* requesting unknown blobs */);\n // Blobs created while the container is detached are stored in IDetachedBlobStorage.\n // The 'IDocumentStorageService.readBlob()' call below will retrieve these via localId.\n storageId = blobId;\n }\n else {\n const attachedStorageId = this.redirectTable.get(blobId);\n assert(!!attachedStorageId, 0x11f /* \"requesting unknown blobs\" */);\n storageId = attachedStorageId;\n }\n return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"AttachmentReadBlob\", id: storageId }, async () => {\n return this.getStorage().readBlob(storageId);\n }, { end: true, cancel: \"error\" });\n }\n getBlobHandle(id) {\n assert(this.redirectTable.has(id) || this.pendingBlobs.has(id), 0x384 /* requesting handle for unknown blob */);\n const pending = this.pendingBlobs.get(id);\n // Create a callback function for once the blob has been attached\n const callback = pending\n ? () => {\n pending.attached = true;\n // Notify listeners (e.g. serialization process) that blob has been attached\n this.emit(\"blobAttached\", pending);\n this.deletePendingBlobMaybe(id);\n }\n : undefined;\n return new BlobHandle(getGCNodePathFromBlobId(id), this.routeContext, async () => this.getBlob(id), callback);\n }\n async createBlobDetached(blob) {\n // Blobs created while the container is detached are stored in IDetachedBlobStorage.\n // The 'IDocumentStorageService.createBlob()' call below will respond with a localId.\n const response = await this.getStorage().createBlob(blob);\n this.setRedirection(response.id, undefined);\n return this.getBlobHandle(response.id);\n }\n async createBlob(blob, signal) {\n if (this.runtime.attachState === AttachState.Detached) {\n return this.createBlobDetached(blob);\n }\n if (this.runtime.attachState === AttachState.Attaching) {\n // blob upload is not supported in \"Attaching\" state\n this.mc.logger.sendTelemetryEvent({ eventName: \"CreateBlobWhileAttaching\" });\n await new Promise((resolve) => this.runtime.once(\"attached\", resolve));\n }\n assert(this.runtime.attachState === AttachState.Attached, 0x385 /* For clarity and paranoid defense against adding future attachment states */);\n if (signal?.aborted) {\n throw this.createAbortError();\n }\n // Create a local ID for the blob. After uploading it to storage and before returning it, a local ID to\n // storage ID mapping is created.\n const localId = uuid();\n const pendingEntry = {\n blob,\n handleP: new Deferred(),\n uploadP: this.uploadBlob(localId, blob),\n attached: false,\n acked: false,\n abortSignal: signal,\n opsent: false,\n };\n this.pendingBlobs.set(localId, pendingEntry);\n const abortListener = () => {\n if (!pendingEntry.acked) {\n pendingEntry.handleP.reject(this.createAbortError(pendingEntry));\n }\n };\n signal?.addEventListener(\"abort\", abortListener, { once: true });\n return pendingEntry.handleP.promise.finally(() => {\n signal?.removeEventListener(\"abort\", abortListener);\n });\n }\n async uploadBlob(localId, blob) {\n return runWithRetry(async () => {\n try {\n return await this.getStorage().createBlob(blob);\n }\n catch (error) {\n const entry = this.pendingBlobs.get(localId);\n assert(!!entry, 0x387 /* Must have pending blob entry for blob which failed to upload */);\n if (entry.opsent && !canRetryOnError(error)) {\n throw wrapError(error, () => new LoggingError(`uploadBlob error`, { canRetry: true }));\n }\n throw error;\n }\n }, \"createBlob\", this.mc.logger, {\n cancel: this.pendingBlobs.get(localId)?.abortSignal,\n }).then((response) => this.onUploadResolve(localId, response), (error) => {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"UploadBlobReject\",\n error,\n localId,\n });\n // it will only reject if we haven't sent an op\n // and is a non-retriable error. It will only reject\n // the promise but not throw any error outside.\n this.pendingBlobs.get(localId)?.handleP.reject(error);\n this.deletePendingBlob(localId);\n });\n }\n /**\n * Set up a mapping in the redirect table from fromId to toId. Also, notify the runtime that a reference is added\n * which is required for GC.\n */\n setRedirection(fromId, toId) {\n this.redirectTable.set(fromId, toId);\n }\n deletePendingBlobMaybe(id) {\n if (this.pendingBlobs.has(id)) {\n const entry = this.pendingBlobs.get(id);\n if (entry?.attached && entry?.acked) {\n this.deletePendingBlob(id);\n }\n }\n }\n deletePendingBlob(id) {\n if (this.pendingBlobs.delete(id) && !this.hasPendingBlobs) {\n this.emit(\"noPendingBlobs\");\n }\n }\n onUploadResolve(localId, response) {\n const entry = this.pendingBlobs.get(localId);\n assert(entry !== undefined, 0x6c8 /* pending blob entry not found for uploaded blob */);\n if ((entry.abortSignal?.aborted === true && !entry.opsent) || this.stopAttaching) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"BlobAborted\",\n localId,\n });\n this.deletePendingBlob(localId);\n return;\n }\n assert(entry.storageId === undefined, 0x386 /* Must have pending blob entry for uploaded blob */);\n entry.stashedUpload = undefined;\n entry.storageId = response.id;\n entry.uploadTime = Date.now();\n entry.minTTLInSeconds = response.minTTLInSeconds;\n // Send a blob attach op. This serves two purposes:\n // 1. If its a new blob, i.e., it isn't de-duped, the server will keep the blob alive if it sees this op\n // until its storage ID is added to the next summary.\n // 2. It will create a local ID to storage ID mapping in all clients which is needed to retrieve the\n // blob from the server via the storage ID.\n if (!entry.opsent) {\n this.sendBlobAttachOp(localId, response.id);\n }\n const storageIds = getStorageIds(this.redirectTable, this.runtime.attachState);\n if (storageIds.has(response.id)) {\n // The blob is de-duped. Set up a local ID to storage ID mapping and return the blob. Since this is\n // an existing blob, we don't have to wait for the op to be ack'd since this step has already\n // happened before and so, the server won't delete it.\n this.setRedirection(localId, response.id);\n entry.handleP.resolve(this.getBlobHandle(localId));\n this.deletePendingBlobMaybe(localId);\n }\n else {\n // If there is already an op for this storage ID, append the local ID to the list. Once any op for\n // this storage ID is ack'd, all pending blobs for it can be resolved since the op will keep the\n // blob alive in storage.\n this.opsInFlight.set(response.id, (this.opsInFlight.get(response.id) ?? []).concat(localId));\n }\n return response;\n }\n /**\n * Resubmit a BlobAttach op. Used to add storage IDs to ops that were\n * submitted to runtime while disconnected.\n * @param metadata - op metadata containing storage and/or local IDs\n */\n reSubmit(metadata) {\n assert(!!metadata, 0x38b /* Resubmitted ops must have metadata */);\n const { localId, blobId } = metadata;\n assert(localId !== undefined, 0x50d /* local ID not available on reSubmit */);\n const pendingEntry = this.pendingBlobs.get(localId);\n if (!blobId) {\n // We submitted this op while offline. The blob should have been uploaded by now.\n assert(pendingEntry?.opsent === true && !!pendingEntry?.storageId, 0x38d /* blob must be uploaded before resubmitting BlobAttach op */);\n return this.sendBlobAttachOp(localId, pendingEntry?.storageId);\n }\n return this.sendBlobAttachOp(localId, blobId);\n }\n processBlobAttachOp(message, local) {\n const localId = message.metadata?.localId;\n const blobId = message.metadata?.blobId;\n if (localId) {\n const pendingEntry = this.pendingBlobs.get(localId);\n if (pendingEntry?.abortSignal?.aborted) {\n this.deletePendingBlob(localId);\n return;\n }\n }\n assert(blobId !== undefined, 0x12a /* \"Missing blob id on metadata\" */);\n // Set up a mapping from local ID to storage ID. This is crucial since without this the blob cannot be\n // requested from the server.\n // Note: The check for undefined is needed for back-compat when localId was not part of the BlobAttach op that\n // was sent when online.\n if (localId !== undefined) {\n this.setRedirection(localId, blobId);\n }\n // set identity (id -> id) entry\n this.setRedirection(blobId, blobId);\n if (local) {\n assert(localId !== undefined, 0x50e /* local ID not present in blob attach message */);\n const waitingBlobs = this.opsInFlight.get(blobId);\n if (waitingBlobs !== undefined) {\n // For each op corresponding to this storage ID that we are waiting for, resolve the pending blob.\n // This is safe because the server will keep the blob alive and the op containing the local ID to\n // storage ID is already in flight and any op containing this local ID will be sequenced after that.\n waitingBlobs.forEach((pendingLocalId) => {\n const entry = this.pendingBlobs.get(pendingLocalId);\n assert(entry !== undefined, 0x38f /* local online BlobAttach op with no pending blob entry */);\n this.setRedirection(pendingLocalId, blobId);\n entry.acked = true;\n entry.handleP.resolve(this.getBlobHandle(pendingLocalId));\n this.deletePendingBlobMaybe(pendingLocalId);\n });\n this.opsInFlight.delete(blobId);\n }\n const localEntry = this.pendingBlobs.get(localId);\n if (localEntry) {\n localEntry.acked = true;\n localEntry.handleP.resolve(this.getBlobHandle(localId));\n this.deletePendingBlobMaybe(localId);\n }\n }\n }\n summarize(telemetryContext) {\n return summarizeBlobManagerState(this.redirectTable, this.runtime.attachState);\n }\n /**\n * Generates data used for garbage collection. Each blob uploaded represents a node in the GC graph as it can be\n * individually referenced by storing its handle in a referenced DDS. Returns the list of blob ids as GC nodes.\n * @param fullGC - true to bypass optimizations and force full generation of GC data. BlobManager doesn't care\n * about this for now because the data is a simple list of blob ids.\n */\n getGCData(fullGC = false) {\n const gcData = { gcNodes: {} };\n for (const [localId, storageId] of this.redirectTable) {\n assert(!!storageId, 0x390 /* Must be attached to get GC data */);\n // Only return local ids as GC nodes because a blob can only be referenced via its local id. The storage\n // id entries have the same key and value, ignore them.\n // The outbound routes are empty because a blob node cannot reference other nodes. It can only be referenced\n // by adding its handle to a referenced DDS.\n if (localId !== storageId) {\n gcData.gcNodes[getGCNodePathFromBlobId(localId)] = [];\n }\n }\n return gcData;\n }\n /**\n * Delete attachment blobs that are sweep ready.\n * @param sweepReadyBlobRoutes - The routes of blobs that are sweep ready and should be deleted. These routes will\n * be based off of local ids.\n * @returns The routes of blobs that were deleted.\n */\n deleteSweepReadyNodes(sweepReadyBlobRoutes) {\n this.deleteBlobsFromRedirectTable(sweepReadyBlobRoutes);\n return Array.from(sweepReadyBlobRoutes);\n }\n /**\n * Delete blobs with the given routes from the redirect table.\n * The routes are GC nodes paths of format -`//`. The blob ids are all local ids.\n * Deleting the blobs involves 2 steps:\n * 1. The redirect table entry for the local ids are deleted.\n * 2. If the storage ids corresponding to the deleted local ids are not in-use anymore, the redirect table entries\n * for the storage ids are deleted as well.\n *\n * Note that this does not delete the blobs from storage service immediately. Deleting the blobs from redirect table\n * will remove them the next summary. The service would them delete them some time in the future.\n */\n deleteBlobsFromRedirectTable(blobRoutes) {\n if (blobRoutes.length === 0) {\n return;\n }\n // This tracks the storage ids of local ids that are deleted. After the local ids have been deleted, if any of\n // these storage ids are unused, they will be deleted as well.\n const maybeUnusedStorageIds = new Set();\n for (const route of blobRoutes) {\n const blobId = getBlobIdFromGCNodePath(route);\n // If the blob hasn't already been deleted, log an error because this should never happen.\n // If the blob has already been deleted, log a telemetry event. This can happen because multiple GC\n // sweep ops can contain the same data store. It would be interesting to track how often this happens.\n const alreadyDeleted = this.isBlobDeleted(route);\n if (!this.redirectTable.has(blobId)) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"DeletedAttachmentBlobNotFound\",\n category: alreadyDeleted ? \"generic\" : \"error\",\n blobId,\n details: { alreadyDeleted },\n });\n continue;\n }\n const storageId = this.redirectTable.get(blobId);\n assert(!!storageId, 0x5bb /* Must be attached to run GC */);\n maybeUnusedStorageIds.add(storageId);\n this.redirectTable.delete(blobId);\n }\n // Find out storage ids that are in-use and remove them from maybeUnusedStorageIds. A storage id is in-use if\n // the redirect table has a local id -> storage id entry for it.\n for (const [localId, storageId] of this.redirectTable.entries()) {\n assert(!!storageId, 0x5bc /* Must be attached to run GC */);\n // For every storage id, the redirect table has a id -> id entry. These do not make the storage id in-use.\n if (maybeUnusedStorageIds.has(storageId) && localId !== storageId) {\n maybeUnusedStorageIds.delete(storageId);\n }\n }\n // For unused storage ids, delete their id -> id entries from the redirect table.\n // This way they'll be absent from the next summary, and the service is free to delete them from storage.\n for (const storageId of maybeUnusedStorageIds) {\n this.redirectTable.delete(storageId);\n }\n }\n /**\n * Verifies that the blob with given id is not deleted, i.e., it has not been garbage collected. If the blob is GC'd,\n * log an error and throw if necessary.\n */\n verifyBlobNotDeleted(blobId) {\n if (!this.isBlobDeleted(getGCNodePathFromBlobId(blobId))) {\n return;\n }\n const request = { url: blobId };\n const error = responseToException(createResponseError(404, `Blob was deleted`, request), request);\n // Only log deleted events. Tombstone events are logged by garbage collector.\n this.mc.logger.sendErrorEvent({\n eventName: \"GC_Deleted_Blob_Requested\",\n pkg: blobManagerBasePath,\n }, error);\n throw error;\n }\n setRedirectTable(table) {\n assert(this.runtime.attachState === AttachState.Detached, 0x252 /* \"redirect table can only be set in detached container\" */);\n assert(this.redirectTable.size === table.size, 0x391 /* Redirect table size must match BlobManager's local ID count */);\n for (const [localId, storageId] of table) {\n assert(this.redirectTable.has(localId), 0x254 /* \"unrecognized id in redirect table\" */);\n this.setRedirection(localId, storageId);\n // set identity (id -> id) entry\n this.setRedirection(storageId, storageId);\n }\n }\n /**\n * Part of container serialization when imminent closure is enabled (Currently when calling closeAndGetPendingLocalState).\n * This asynchronous function resolves all pending createBlob calls and waits for each blob\n * to be attached. It will also send BlobAttach ops for each pending blob that hasn't sent it\n * yet so that serialized container can resubmit them when rehydrated.\n *\n * @param stopBlobAttachingSignal - Optional signal to abort the blob attaching process.\n * @returns - A promise that resolves with the details of the attached blobs,\n * or undefined if no blobs were processed.\n */\n async attachAndGetPendingBlobs(stopBlobAttachingSignal) {\n return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"GetPendingBlobs\" }, async () => {\n if (this.pendingBlobs.size === 0) {\n return;\n }\n const blobs = {};\n const localBlobs = new Set();\n // This while is used to stash blobs created while attaching and getting blobs\n while (localBlobs.size < this.pendingBlobs.size) {\n const attachBlobsP = [];\n for (const [id, entry] of this.pendingBlobs) {\n if (!localBlobs.has(entry)) {\n localBlobs.add(entry);\n // Resolving the blob handle to let hosts continue with their operations (it will resolve\n // original createBlob call) and let them attach the blob. This is a lie we told since the upload\n // hasn't finished yet, but it's fine since we will retry on rehydration.\n entry.handleP.resolve(this.getBlobHandle(id));\n // Array of promises that will resolve when blobs get attached.\n attachBlobsP.push(new Promise((resolve, reject) => {\n stopBlobAttachingSignal?.addEventListener(\"abort\", () => {\n this.stopAttaching = true;\n reject(new Error(\"Operation aborted\"));\n }, { once: true });\n const onBlobAttached = (attachedEntry) => {\n if (attachedEntry === entry) {\n this.off(\"blobAttached\", onBlobAttached);\n resolve();\n }\n };\n if (!entry.attached) {\n this.on(\"blobAttached\", onBlobAttached);\n }\n else {\n resolve();\n }\n }));\n }\n }\n // Wait for all blobs to be attached. This is important, otherwise serialized container\n // could send the blobAttach op without any op that references the blob, making it useless.\n await Promise.allSettled(attachBlobsP).catch(() => { });\n }\n for (const [id, entry] of this.pendingBlobs) {\n if (stopBlobAttachingSignal?.aborted && !entry.attached) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"UnableToStashBlob\",\n id,\n });\n continue;\n }\n assert(entry.attached === true, 0x790 /* stashed blob should be attached */);\n if (!entry.opsent) {\n this.sendBlobAttachOp(id, entry.storageId);\n }\n blobs[id] = {\n blob: bufferToString(entry.blob, \"base64\"),\n storageId: entry.storageId,\n acked: entry.acked,\n minTTLInSeconds: entry.minTTLInSeconds,\n uploadTime: entry.uploadTime,\n };\n }\n return Object.keys(blobs).length > 0 ? blobs : undefined;\n });\n }\n}\n/**\n * For a blobId, returns its path in GC's graph. The node path is of the format `//`.\n * This path must match the path of the blob handle returned by the createBlob API because blobs are marked\n * referenced by storing these handles in a referenced DDS.\n */\nconst getGCNodePathFromBlobId = (blobId) => `/${blobManagerBasePath}/${blobId}`;\n/**\n * For a given GC node path, return the blobId. The node path is of the format `//`.\n */\nconst getBlobIdFromGCNodePath = (nodePath) => {\n const pathParts = nodePath.split(\"/\");\n assert(areBlobPathParts(pathParts), 0x5bd /* Invalid blob node path */);\n return pathParts[2];\n};\n/**\n * Returns whether a given path is for attachment blobs that are in the format - \"/blobManagerBasePath/...\".\n */\nexport const isBlobPath = (path) => areBlobPathParts(path.split(\"/\"));\nexport const areBlobPathParts = (pathParts) => pathParts.length === 3 && pathParts[1] === blobManagerBasePath;\n//# sourceMappingURL=blobManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport { createChildLogger, createSampledLogger, formatTick, } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * We report various latency-related errors when waiting for op roundtrip takes longer than that amout of time.\n */\nexport const latencyThreshold = 5000;\nclass OpPerfTelemetry {\n /**\n * Create an instance of OpPerfTelemetry which starts monitoring and generating telemetry related to op performance.\n *\n * @param clientId - The clientId of the current container.\n * @param deltaManager - DeltaManager instance to monitor.\n * @param containerRuntimeEvents - Emitter of events for the container runtime.\n * @param logger - Telemetry logger to write events to.\n */\n constructor(\n /**\n * The clientId of the current container.\n *\n * @remarks Until the container connects to the server and receives an ack for its own join op, this can be undefined.\n * It gets updated in response to event changes once the value provided by the server is available.\n * If the container loses its connection, this could be the last known clientId.\n */\n clientId, \n /**\n * DeltaManager instance to monitor.\n */\n deltaManager, \n /**\n * Emitter of events for the container runtime.\n */\n containerRuntimeEvents, \n /**\n * Telemetry logger to write events to.\n */\n logger) {\n this.clientId = clientId;\n this.deltaManager = deltaManager;\n this.msnTrackingTimestamp = 0;\n // Performance Data to be reported for ops round trips and processing.\n this.latencyStatistics = new Map();\n this.firstConnection = true;\n this.bootTime = performance.now();\n this.connectionStartTime = 0;\n this.gap = 0;\n /** Count of no-ops sent by this client. This variable is reset everytime the OpStats sampled event is logged */\n this.noOpCountForTelemetry = 0;\n /** Cumulative size of the ops processed by this client. This variable is reset everytime the OpStats sampled event is logged */\n this.processedOpSizeForTelemetry = 0;\n this.logger = createChildLogger({ logger, namespace: \"OpPerf\" });\n const deltaLatencyEventSampler = (() => {\n let eventCount = -1;\n return {\n sample: () => {\n eventCount++;\n const shouldSample = eventCount % OpPerfTelemetry.DELTA_LATENCY_SAMPLE_RATE === 0;\n if (shouldSample) {\n eventCount = 0;\n }\n return shouldSample;\n },\n };\n })();\n this.deltaLatencyLogger = createSampledLogger(logger, deltaLatencyEventSampler);\n // The SampledLogger here is used get access to the isSamplingDisabled property derived from\n // telemetry config properties. The actual sampling logic for op messages happens outside this SampledLogger\n // due to complexity of the different asynchronus scenarios of the op message lifecycle.\n this.opLatencyLogger = createSampledLogger(logger);\n const opsEventSampler = (() => {\n let eventCount = 0;\n return {\n sample: () => {\n eventCount++;\n const shouldSample = eventCount % OpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE === 0;\n if (shouldSample) {\n eventCount = 0;\n this.noOpCountForTelemetry = 0;\n this.processedOpSizeForTelemetry = 0;\n }\n return shouldSample;\n },\n };\n })();\n this.opsLogger = createSampledLogger(logger, opsEventSampler, true /* skipLoggingWhenSamplingIsDisabled */);\n this.deltaManager.on(\"pong\", (latency) => this.recordPingTime(latency));\n this.deltaManager.on(\"submitOp\", (message) => this.beforeOpSubmit(message));\n this.deltaManager.on(\"op\", (message) => this.afterProcessingOp(message));\n this.deltaManager.on(\"connect\", (details, opsBehind) => {\n if (opsBehind !== undefined) {\n this.connectionOpSeqNumber = this.deltaManager.lastKnownSeqNumber;\n this.gap = opsBehind;\n this.connectionStartTime = performance.now();\n // We might be already up-today. If so, report it right away.\n if (this.gap <= 0) {\n this.reportGettingUpToDate();\n }\n }\n });\n this.deltaManager.on(\"disconnect\", () => {\n this.sequenceNumberForMsnTracking = undefined;\n this.clientSequenceNumberForLatencyStatistics = undefined;\n this.connectionOpSeqNumber = undefined;\n this.firstConnection = false;\n this.latencyStatistics.clear();\n });\n this.deltaManager.outbound.on(\"push\", (messages) => {\n for (const msg of messages) {\n if (msg.type === MessageType.Operation &&\n (this.opLatencyLogger.isSamplingDisabled ||\n this.clientSequenceNumberForLatencyStatistics === msg.clientSequenceNumber)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const latencyStats = this.latencyStatistics.get(msg.clientSequenceNumber);\n assert(latencyStats !== undefined, 0x7c2 /* Latency stats for op should exist */);\n assert(latencyStats.opProcessingTimes.outboundPushEventTime === undefined, 0x2c8 /* \"outboundPushEventTime should be undefined\" */);\n assert(latencyStats.opPerfData.durationNetwork === undefined, 0x2c9 /* \"durationNetwork should be undefined\" */);\n latencyStats.opProcessingTimes.outboundPushEventTime = Date.now();\n assert(latencyStats.opPerfData.durationOutboundBatching === undefined, 0x2ca /* \"durationOutboundBatching should be undefined\" */);\n assert(latencyStats.opProcessingTimes.submitOpEventTime !== undefined, 0x2cb /* \"submitOpEventTime should be undefined\" */);\n latencyStats.opPerfData.durationOutboundBatching =\n latencyStats.opProcessingTimes.outboundPushEventTime -\n latencyStats.opProcessingTimes.submitOpEventTime;\n }\n }\n });\n this.deltaManager.inbound.on(\"push\", (message) => {\n if (this.clientId === message.clientId &&\n message.type === MessageType.Operation &&\n (this.opLatencyLogger.isSamplingDisabled ||\n this.clientSequenceNumberForLatencyStatistics === message.clientSequenceNumber)) {\n // We do an explicit check for undefined right after this\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const latencyStats = this.latencyStatistics.get(message.clientSequenceNumber);\n assert(latencyStats !== undefined, 0x7c3 /* Latency stats for op should exist */);\n if (latencyStats.opProcessingTimes.outboundPushEventTime !== undefined) {\n latencyStats.opProcessingTimes.inboundPushEventTime = Date.now();\n latencyStats.opPerfData.durationNetwork =\n latencyStats.opProcessingTimes.inboundPushEventTime -\n latencyStats.opProcessingTimes.outboundPushEventTime;\n latencyStats.opPerfData.lengthInboundQueue = this.deltaManager.inbound.length;\n }\n }\n if (isRuntimeMessage(message) && typeof message.contents === \"string\") {\n this.processedOpSizeForTelemetry += message.contents.length;\n }\n });\n this.deltaManager.inbound.on(\"idle\", (count, duration) => {\n // Do not want to log zero for sure.\n // We are more interested in aggregates, so logging only if we are processing some number of ops\n // Cut-off is arbitrary - can be increased or decreased based on amount of data collected and questions we\n // want to get answered\n // back-compat: Once 0.36 loader version saturates (count & duration args were added there),\n // we can remove typeof check.\n if (typeof count === \"number\" && count >= 100) {\n this.logger.sendPerformanceEvent({\n eventName: \"GetDeltas_OpProcessing\",\n count,\n duration,\n });\n }\n });\n containerRuntimeEvents.on(\"connected\", (newClientId) => {\n this.clientId = newClientId;\n });\n }\n reportGettingUpToDate() {\n this.connectionOpSeqNumber = undefined;\n this.logger.sendPerformanceEvent({\n eventName: \"ConnectionSpeed\",\n duration: performance.now() - this.connectionStartTime,\n ops: this.gap,\n // track time to connect only for first connection.\n timeToConnect: this.firstConnection\n ? formatTick(this.connectionStartTime - this.bootTime)\n : undefined,\n firstConnection: this.firstConnection,\n });\n }\n recordPingTime(latency) {\n this.pingLatency = latency;\n // Log if latency is longer than 1 min\n if (latency > 1000 * 60) {\n this.logger.sendErrorEvent({\n eventName: \"LatencyTooLong\",\n duration: latency,\n });\n }\n // logging one in every DELTA_LATENCY_SAMPLE_RATE pongs, including the first time, if it is a \"write\" client.\n if (this.deltaManager.active) {\n this.deltaLatencyLogger.sendPerformanceEvent({\n eventName: \"DeltaLatency\",\n duration: latency,\n });\n }\n }\n beforeOpSubmit(message) {\n // start with first client op and measure latency every 500 client ops\n if (this.opLatencyLogger.isSamplingDisabled ||\n (this.clientSequenceNumberForLatencyStatistics === undefined &&\n message.clientSequenceNumber % OpPerfTelemetry.OP_LATENCY_SAMPLE_RATE === 1)) {\n assert(this.latencyStatistics.get(message.clientSequenceNumber) === undefined, 0x7c4 /* Existing op perf data for client sequence number */);\n this.clientSequenceNumberForLatencyStatistics = message.clientSequenceNumber;\n this.latencyStatistics.set(message.clientSequenceNumber, {\n opProcessingTimes: {\n submitOpEventTime: Date.now(),\n },\n opPerfData: {},\n });\n }\n if (message.type === MessageType.NoOp) {\n // Count the number of no-ops submitted by this client.\n // The value is reset when we log the OpStats sampled event.\n this.noOpCountForTelemetry++;\n }\n }\n afterProcessingOp(message) {\n const sequenceNumber = message.sequenceNumber;\n if (sequenceNumber === this.connectionOpSeqNumber) {\n this.reportGettingUpToDate();\n }\n // Record collab window max size after every 1000th op.\n if (this.sequenceNumberForMsnTracking === undefined && sequenceNumber % 1000 === 0) {\n this.sequenceNumberForMsnTracking = sequenceNumber;\n this.msnTrackingTimestamp = message.timestamp;\n }\n if (this.sequenceNumberForMsnTracking !== undefined &&\n message.minimumSequenceNumber >= this.sequenceNumberForMsnTracking) {\n assert(this.msnTrackingTimestamp !== undefined, 0x2ce /* \"msnTrackingTimestamp should not be undefined\" */);\n this.logger.sendPerformanceEvent({\n eventName: \"MsnStatistics\",\n sequenceNumber,\n msnDistance: sequenceNumber - this.sequenceNumberForMsnTracking,\n duration: message.timestamp - this.msnTrackingTimestamp,\n });\n this.sequenceNumberForMsnTracking = undefined;\n }\n if (this.clientId === message.clientId &&\n message.type === MessageType.Operation &&\n (this.opLatencyLogger.isSamplingDisabled ||\n this.clientSequenceNumberForLatencyStatistics === message.clientSequenceNumber)) {\n // We do an explicit check for undefined right after this\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const latencyData = this.latencyStatistics.get(message.clientSequenceNumber);\n assert(latencyData !== undefined, 0x7c5 /* Undefined latency statistics for op */);\n assert(latencyData.opProcessingTimes.submitOpEventTime !== undefined, 0x120 /* \"Undefined latency statistics for op (op send time)\" */);\n const currentTime = Date.now();\n if (latencyData.opProcessingTimes.inboundPushEventTime !== undefined) {\n latencyData.opPerfData.durationInboundToProcessing =\n currentTime - latencyData.opProcessingTimes.inboundPushEventTime;\n }\n const duration = currentTime - latencyData.opProcessingTimes.submitOpEventTime;\n // One of the core expectations for Fluid service is to be fast.\n // When it's not the case, we want to learn about it and be able to investigate, so\n // raise awareness.\n // This also helps identify cases where it's due to client behavior (sending too many ops)\n // that results in overwhelming ordering service and thus starting to see long latencies.\n // The threshold could be adjusted, but ideally it stays workload-agnostic, as service\n // performance impacts all workloads relying on service.\n const category = duration > latencyThreshold ? \"error\" : \"performance\";\n this.opLatencyLogger.sendPerformanceEvent({\n eventName: \"OpRoundtripTime\",\n sequenceNumber,\n referenceSequenceNumber: message.referenceSequenceNumber,\n duration,\n category,\n pingLatency: this.pingLatency,\n msnDistance: this.deltaManager.lastSequenceNumber - this.deltaManager.minimumSequenceNumber,\n ...latencyData.opPerfData,\n });\n this.clientSequenceNumberForLatencyStatistics = undefined;\n this.latencyStatistics.delete(message.clientSequenceNumber);\n }\n if (isRuntimeMessage(message)) {\n // Sampled logging of Ops that have been processed by the current client, the NoOp sent and the\n // size of the ops processed within one sampling window of this log event.\n // This data will be used to monitor the efficiency of NoOp-heuristics or to get approximate collab window size.\n this.opsLogger.sendPerformanceEvent({\n eventName: \"OpStats\",\n // Logging as 'details' property to avoid adding new column name to the log tables */\n details: {\n // Count of the ops processed by the current client. Note: these counts are after\n // compression/grouping/chunking (if enabled) of the ops.\n processedOpCount: OpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE,\n // Cumulative size of all the ops processed by the current client since the last OpStats event log\n processedOpSize: this.processedOpSizeForTelemetry,\n // Count of all the NoOp sent by the current client since the last OpStats event log\n submitedNoOpCount: this.noOpCountForTelemetry,\n },\n });\n }\n }\n}\nOpPerfTelemetry.OP_LATENCY_SAMPLE_RATE = 500;\nOpPerfTelemetry.DELTA_LATENCY_SAMPLE_RATE = 100;\nOpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE = 500;\n/**\n * Starts monitoring and generation of telemetry related to op performance.\n *\n * @param clientId - The clientId of the current container.\n * @param deltaManager - DeltaManager instance to monitor.\n * @param containerRuntimeEvents - Emitter of events for the container runtime.\n * @param logger - Telemetry logger to write events to.\n */\nexport function ReportOpPerfTelemetry(clientId, deltaManager, containerRuntimeEvents, logger) {\n new OpPerfTelemetry(clientId, deltaManager, containerRuntimeEvents, logger);\n}\n//# sourceMappingURL=connectionTelemetry.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { generateHandleContextPath } from \"@fluidframework/runtime-utils/internal\";\nexport class ContainerFluidHandleContext {\n get IFluidHandleContext() {\n return this;\n }\n /**\n * Creates a new ContainerFluidHandleContext.\n * @param path - The path to this handle relative to the routeContext.\n * @param runtime - The IRuntime object this context represents.\n * @param routeContext - The parent IFluidHandleContext that has a route to this handle.\n */\n constructor(path, runtime, routeContext) {\n this.path = path;\n this.runtime = runtime;\n this.routeContext = routeContext;\n this.absolutePath = generateHandleContextPath(path, this.routeContext);\n }\n attachGraph() {\n throw new Error(\"can't attach container runtime form within container!\");\n }\n get isAttached() {\n return this.runtime.attachState !== AttachState.Detached;\n }\n async resolveHandle(request) {\n return this.runtime.resolveHandle(request);\n }\n}\n//# sourceMappingURL=containerHandleContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { summarizerClientType } from \"./summary/index.js\";\n/**\n * Base class for DeltaManager proxy that proxy's access to the real DeltaManager.\n *\n * This class allows us to build proxy functionality without actually having to implement all the methods\n * of the DeltaManager.\n */\nexport class BaseDeltaManagerProxy extends TypedEventEmitter {\n get IDeltaSender() {\n return this;\n }\n get inbound() {\n return this.deltaManager.inbound;\n }\n get outbound() {\n return this.deltaManager.outbound;\n }\n get inboundSignal() {\n return this.deltaManager.inboundSignal;\n }\n get minimumSequenceNumber() {\n return this.deltaManager.minimumSequenceNumber;\n }\n get lastSequenceNumber() {\n return this.deltaManager.lastSequenceNumber;\n }\n get lastMessage() {\n return this.deltaManager.lastMessage;\n }\n get lastKnownSeqNumber() {\n return this.deltaManager.lastKnownSeqNumber;\n }\n get initialSequenceNumber() {\n return this.deltaManager.initialSequenceNumber;\n }\n get hasCheckpointSequenceNumber() {\n return this.deltaManager.hasCheckpointSequenceNumber;\n }\n get clientDetails() {\n return this.deltaManager.clientDetails;\n }\n get version() {\n return this.deltaManager.version;\n }\n get maxMessageSize() {\n return this.deltaManager.maxMessageSize;\n }\n get serviceConfiguration() {\n return this.deltaManager.serviceConfiguration;\n }\n get active() {\n return this.deltaManager.active;\n }\n get readOnlyInfo() {\n return this.deltaManager.readOnlyInfo;\n }\n constructor(deltaManager) {\n super();\n this.deltaManager = deltaManager;\n this.onPrepareSend = (messageBuffer) => {\n this.emit(\"prepareSend\", messageBuffer);\n };\n this.onSubmitOp = (message) => {\n this.emit(\"submitOp\", message);\n };\n this.onOp = (message, processingTime) => {\n this.emit(\"op\", message, processingTime);\n };\n this.onPong = (latency) => {\n this.emit(\"pong\", latency);\n };\n this.onConnect = (details, opsBehind) => {\n this.emit(\"connect\", details, opsBehind);\n };\n this.onDisconnect = (reason, error) => {\n this.emit(\"disconnect\", reason, error);\n };\n this.onReadonly = (readonly, readonlyConnectionReason) => {\n this.emit(\"readonly\", readonly, readonlyConnectionReason);\n };\n // We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n super.setMaxListeners(0);\n this.deltaManager.on(\"prepareSend\", this.onPrepareSend);\n this.deltaManager.on(\"submitOp\", this.onSubmitOp);\n this.deltaManager.on(\"op\", this.onOp);\n this.deltaManager.on(\"pong\", this.onPong);\n this.deltaManager.on(\"connect\", this.onConnect);\n this.deltaManager.on(\"disconnect\", this.onDisconnect);\n this.deltaManager.on(\"readonly\", this.onReadonly);\n }\n dispose() {\n this.deltaManager.off(\"prepareSend\", this.onPrepareSend);\n this.deltaManager.off(\"submitOp\", this.onSubmitOp);\n this.deltaManager.off(\"op\", this.onOp);\n this.deltaManager.off(\"pong\", this.onPong);\n this.deltaManager.off(\"connect\", this.onConnect);\n this.deltaManager.off(\"disconnect\", this.onDisconnect);\n this.deltaManager.off(\"readonly\", this.onReadonly);\n }\n submitSignal(content, targetClientId) {\n return this.deltaManager.submitSignal(content, targetClientId);\n }\n flush() {\n return this.deltaManager.flush();\n }\n}\n/**\n * Proxy to the real IDeltaManager for restricting certain access to layers below container runtime in summarizer clients:\n * - Summarizer client should be read-only to layers below the container runtime to restrict local changes.\n * - Summarizer client should not be active to layers below the container runtime to restrict local changes.\n */\nexport class DeltaManagerSummarizerProxy extends BaseDeltaManagerProxy {\n get active() {\n // Summarize clients should not be active. There shouldn't be any local changes (writes) in the summarizer\n // except for the SummarizeOp which is generated by the runtime.\n return !this.isSummarizerClient && this.deltaManager.active;\n }\n get readOnlyInfo() {\n // Summarizer clients should be read-only as far as the runtime and layers below are concerned. There shouldn't\n // be any local changes (writes) in the summarizer except for the summarize op which is generated by the runtime.\n if (this.isSummarizerClient) {\n return {\n readonly: true,\n forced: false,\n permissions: undefined,\n storageOnly: false,\n };\n }\n return this.deltaManager.readOnlyInfo;\n }\n constructor(deltaManager) {\n super(deltaManager);\n this.deltaManager = deltaManager;\n this.isSummarizerClient = this.deltaManager.clientDetails.type === summarizerClientType;\n }\n}\nexport class DeltaManagerPendingOpsProxy extends BaseDeltaManagerProxy {\n get minimumSequenceNumber() {\n const minPendingSeqNum = this.pendingStateManager.minimumPendingMessageSequenceNumber;\n // There is a chance that minPendingSeqNum is greater than minimum sequence number.\n // minPendingSeqNum is based on the pending ops, so it's based on ref seq number.\n // Imagine an op has just be sent while there's another client that has been lagging behind,\n // it will likely have a ref seq number greater than the minimum seq number.\n if (minPendingSeqNum !== undefined &&\n minPendingSeqNum < this.deltaManager.minimumSequenceNumber) {\n return minPendingSeqNum;\n }\n return this.deltaManager.minimumSequenceNumber;\n }\n get lastMessage() {\n if (this.deltaManager.lastMessage === undefined) {\n return this.deltaManager.lastMessage;\n }\n return {\n ...this.deltaManager.lastMessage,\n minimumSequenceNumber: this.minimumSequenceNumber,\n };\n }\n constructor(deltaManager, pendingStateManager) {\n super(deltaManager);\n this.deltaManager = deltaManager;\n this.pendingStateManager = pendingStateManager;\n this.onOp = (message, processingTime) => {\n const messageIntercept = {\n ...message,\n minimumSequenceNumber: this.minimumSequenceNumber,\n };\n this.emit(\"op\", messageIntercept, processingTime);\n };\n }\n}\n//# sourceMappingURL=deltaManagerProxies.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ContainerErrorTypes } from \"@fluidframework/container-definitions/internal\";\nimport { LoggingError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Error indicating that a client's session has reached its time limit and is closed.\n */\nexport class ClientSessionExpiredError extends LoggingError {\n constructor(message, expiryMs) {\n super(message, { timeoutMs: expiryMs });\n this.expiryMs = expiryMs;\n this.errorType = ContainerErrorTypes.clientSessionExpiredError;\n }\n}\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError, validatePrecondition, } from \"@fluidframework/telemetry-utils/internal\";\nimport { defaultInactiveTimeoutMs, defaultSessionExpiryDurationMs, defaultSweepGracePeriodMs, gcGenerationOptionName, gcTestModeKey, maxSnapshotCacheExpiryMs, oneDayMs, runSessionExpiryKey, disableThrowOnTombstoneLoadKey, } from \"./gcDefinitions.js\";\nimport { getGCVersion, getGCVersionInEffect, shouldAllowGcSweep } from \"./gcHelpers.js\";\n/**\n * Generates configurations for the Garbage Collector that it uses to determine what to run and how.\n * @param mc - The monitoring context for reading configs from the config provider.\n * @param createParams - The creation params:\n * gcOptions - The garbage collector runtime options.\n * metadata - The container runtime's createParams.metadata.\n * existing - Whether the container is new or an existing one.\n * @returns The garbage collector configurations.\n */\nexport function generateGCConfigs(mc, createParams) {\n let gcAllowed = true;\n let sessionExpiryTimeoutMs;\n let tombstoneTimeoutMs;\n let persistedGcFeatureMatrix;\n let gcVersionInBaseSnapshot;\n /**\n * The following GC state is enabled during container creation and cannot be changed throughout its lifetime:\n * 1. Whether running GC mark phase is allowed or not.\n * 2. Whether running GC sweep phase is allowed or not.\n * 3. Whether GC session expiry is enabled or not.\n * For existing containers, we get this information from the metadata blob of its summary.\n */\n if (createParams.existing) {\n const metadata = createParams.metadata;\n gcVersionInBaseSnapshot = getGCVersion(metadata);\n // Existing documents which did not have metadata blob or had GC disabled have GC version as 0. GC will be\n // disabled for these documents.\n gcAllowed = gcVersionInBaseSnapshot !== 0;\n sessionExpiryTimeoutMs = metadata?.sessionExpiryTimeoutMs;\n const legacyPersistedSweepTimeoutMs = metadata?.sweepTimeoutMs;\n tombstoneTimeoutMs =\n metadata?.tombstoneTimeoutMs ??\n legacyPersistedSweepTimeoutMs ?? // Backfill old documents that have sweepTimeoutMs instead of tombstoneTimeoutMs\n computeTombstoneTimeout(sessionExpiryTimeoutMs); // Backfill old documents that didn't persist either value\n persistedGcFeatureMatrix = metadata?.gcFeatureMatrix;\n }\n else {\n // This Test Override only applies for new containers\n const testOverrideTombstoneTimeoutMs = mc.config.getNumber(\"Fluid.GarbageCollection.TestOverride.TombstoneTimeoutMs\");\n // Set the Session Expiry if session expiry flag isn't explicitly set to false.\n if (mc.config.getBoolean(runSessionExpiryKey) !== false) {\n sessionExpiryTimeoutMs =\n createParams.gcOptions.sessionExpiryTimeoutMs ?? defaultSessionExpiryDurationMs;\n }\n tombstoneTimeoutMs =\n testOverrideTombstoneTimeoutMs ?? computeTombstoneTimeout(sessionExpiryTimeoutMs);\n const gcGeneration = createParams.gcOptions[gcGenerationOptionName];\n if (gcGeneration !== undefined) {\n persistedGcFeatureMatrix = { gcGeneration };\n }\n }\n // The persisted GC generation must indicate Sweep is allowed for this document,\n // according to the GC Generation option provided this session.\n // Note that if no generation option is provided, Sweep is allowed for any document.\n const sweepAllowed = shouldAllowGcSweep(persistedGcFeatureMatrix ?? {} /* featureMatrix */, createParams.gcOptions[gcGenerationOptionName] /* currentGeneration */);\n /**\n * Whether sweep is enabled for this session or not. If sweep is enabled, Tombstones should fail on load and\n * sweep-ready nodes should be deleted.\n *\n * Assuming overall GC is allowed and tombstoneTimeout is provided, the following conditions have to be met to run sweep:\n *\n * 1. Sweep should be allowed in this container.\n * 2. Sweep should be enabled for this session.\n */\n const sweepEnabled = !gcAllowed || tombstoneTimeoutMs === undefined\n ? false\n : sweepAllowed && createParams.gcOptions.enableGCSweep === true;\n // Override inactive timeout if test config or gc options to override it is set.\n const inactiveTimeoutMs = mc.config.getNumber(\"Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs\") ??\n createParams.gcOptions.inactiveTimeoutMs ??\n defaultInactiveTimeoutMs;\n // Inactive timeout must be greater than tombstone timeout since a node goes from active -> inactive -> sweep ready.\n if (tombstoneTimeoutMs !== undefined && inactiveTimeoutMs > tombstoneTimeoutMs) {\n throw new UsageError(\"inactive timeout should not be greater than the tombstone timeout\");\n }\n // Whether we are running in test mode. In this mode, unreferenced nodes are immediately deleted.\n const testMode = mc.config.getBoolean(gcTestModeKey) ?? createParams.gcOptions.runGCInTestMode === true;\n const runFullGC = createParams.gcOptions.runFullGC;\n const sweepGracePeriodMs = createParams.gcOptions.sweepGracePeriodMs ?? defaultSweepGracePeriodMs;\n validatePrecondition(sweepGracePeriodMs >= 0, \"sweepGracePeriodMs must be non-negative\", {\n sweepGracePeriodMs,\n });\n const throwOnTombstoneLoad = mc.config.getBoolean(disableThrowOnTombstoneLoadKey) !== true &&\n sweepEnabled &&\n !createParams.isSummarizerClient;\n return {\n gcAllowed, // For this document\n sweepAllowed, // For this document\n sweepEnabled, // For this session\n runFullGC,\n testMode,\n sessionExpiryTimeoutMs,\n tombstoneTimeoutMs,\n sweepGracePeriodMs,\n inactiveTimeoutMs,\n persistedGcFeatureMatrix,\n gcVersionInBaseSnapshot,\n gcVersionInEffect: getGCVersionInEffect(mc.config),\n throwOnTombstoneLoad,\n };\n}\n/**\n * Tombstone timeout is the time after which unreferenced content is guaranteed not to be revived (re-referenced).\n * Tombstone timeout = session expiry timeout + snapshot cache expiry timeout + one day buffer.\n *\n * The snapshot cache expiry timeout cannot be known precisely but the upper bound is 5 days.\n * The buffer is added to account for any clock skew or other edge cases.\n * We use server timestamps throughout so the skew should be minimal but make it 1 day to be safe.\n *\n * If there is no Session Expiry timeout, GC can never guarantee an object won't be revived, so return undefined.\n */\nfunction computeTombstoneTimeout(sessionExpiryTimeoutMs) {\n const bufferMs = oneDayMs;\n return (sessionExpiryTimeoutMs && sessionExpiryTimeoutMs + maxSnapshotCacheExpiryMs + bufferMs);\n}\n//# sourceMappingURL=gcConfigs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Runs garbage collection on the given reference graph.\n * @param referenceGraph - The reference graph to run GC on. It's a list of nodes where each node has an id and set of\n * routes to other nodes in the graph.\n * @param rootIds - The ids of root nodes that are considered referenced.\n * @returns the ids of referenced nodes and the ids of deleted nodes in the referenced graph.\n */\nexport function runGarbageCollection(referenceGraph, rootIds) {\n // This set keeps track of nodes that we have visited. It is used to detect cycles in the graph.\n const visited = new Set();\n // This tracks the ids of referenced nodes. The nodes corresponding to rootIds are always considered\n // referenced so we start with those.\n const referencedIds = [...rootIds];\n for (const id of referencedIds) {\n // If we have already seen this node, ignore and continue. Else, add it to visited list.\n if (visited.has(id)) {\n continue;\n }\n visited.add(id);\n // Get the node for the referenced id and add its outbound routes to referencedIds since they are\n // also referenced.\n const routes = referenceGraph[id];\n if (routes !== undefined) {\n referencedIds.push(...routes);\n }\n }\n const referencedNodeIds = [];\n const deletedNodeIds = [];\n for (const id of Object.keys(referenceGraph)) {\n // The nodes from the reference graph whose ids are in the visited list are referenced.\n // The rest of the nodes are deleted.\n if (visited.has(id)) {\n referencedNodeIds.push(id);\n }\n else {\n deletedNodeIds.push(id);\n }\n }\n return { referencedNodeIds, deletedNodeIds };\n}\n//# sourceMappingURL=gcReferenceGraphAlgorithm.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { gcBlobPrefix, gcDeletedBlobKey, gcTombstoneBlobKey, gcTreeKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { SummaryTreeBuilder, mergeStats } from \"@fluidframework/runtime-utils/internal\";\nimport { generateSortedGCState } from \"./gcHelpers.js\";\nexport const gcStateBlobKey = `${gcBlobPrefix}_root`;\n/**\n * Encapsulates the garbage collection state that is tracked across summaries.\n * It maintains the GC state as per the latest summary in by the server. It updates state when a summary tracked by this\n * client is acked by the server or from a snapshot is downloaded from the server.\n * On summarize, it decides whether to write new state or re-use previous summary's state.\n */\nexport class GCSummaryStateTracker {\n constructor(\n // Tells whether GC should run or not.\n configs) {\n this.configs = configs;\n // Tracks the count of data stores whose state updated since the last summary, i.e., they went from referenced\n // to unreferenced or vice-versa.\n this.updatedDSCountSinceLastSummary = 0;\n /** API for ensuring the correct auto-recovery mitigations */\n this.autoRecovery = {\n requestFullGCOnNextRun: () => {\n this.fullGCModeForAutoRecovery = true;\n },\n fullGCRequested: () => {\n return this.fullGCModeForAutoRecovery;\n },\n };\n /** If true, the next GC run will do fullGC mode to regenerate the GC data for each node */\n this.fullGCModeForAutoRecovery = false;\n }\n /**\n * Called during GC initialization. Initialize the latest summary data from the base snapshot data.\n */\n initializeBaseState(baseSnapshotData) {\n if (baseSnapshotData === undefined) {\n return;\n }\n // If tracking state across summaries, update latest summary data from the snapshot's GC data.\n this.latestSummaryData = {\n serializedGCState: baseSnapshotData.gcState\n ? JSON.stringify(generateSortedGCState(baseSnapshotData.gcState))\n : undefined,\n serializedTombstones: JSON.stringify(baseSnapshotData.tombstones),\n serializedDeletedNodes: JSON.stringify(baseSnapshotData.deletedNodes),\n };\n }\n /**\n * Summarizes three component of the GC data - GC state, tombstones and deleted nodes.\n * It does incremental summary, i.e., it writes summary tree / summary blob only for the component that changed.\n * For components that did not change, a summary handle is returned that points to the previous successful summary.\n * If none of the components changed, it returns a summary handle for the entire GC data.\n */\n summarize(trackState, gcState, deletedNodes, tombstones) {\n if (!this.configs.gcAllowed) {\n return;\n }\n const serializedGCState = JSON.stringify(generateSortedGCState(gcState));\n // Serialize and write deleted nodes, if any. This is done irrespective of whether sweep is enabled or not so\n // to identify deleted nodes' usage.\n const serializedDeletedNodes = deletedNodes.size > 0 ? JSON.stringify(Array.from(deletedNodes).sort()) : undefined;\n // Serialize and write tombstones, if any.\n const serializedTombstones = tombstones.length > 0 ? JSON.stringify(tombstones.sort()) : undefined;\n /**\n * Incremental summary of GC data - If none of GC state, deleted nodes or tombstones changed since last summary,\n * write summary handle instead of summary tree for GC.\n * Otherwise, write the GC summary tree. In the tree, for each of these that changed, write a summary blob and\n * for each of these that did not change, write a summary handle.\n */\n this.pendingSummaryData = {\n serializedGCState,\n serializedTombstones,\n serializedDeletedNodes,\n };\n if (trackState && this.latestSummaryData !== undefined) {\n // If nothing changed since last summary, send a summary handle for the entire GC data.\n if (this.latestSummaryData.serializedGCState === serializedGCState &&\n this.latestSummaryData.serializedTombstones === serializedTombstones &&\n this.latestSummaryData.serializedDeletedNodes === serializedDeletedNodes) {\n const stats = mergeStats();\n stats.handleNodeCount++;\n return {\n summary: {\n type: SummaryType.Handle,\n handle: `/${gcTreeKey}`,\n handleType: SummaryType.Tree,\n },\n stats,\n };\n }\n // If some state changed, build a GC summary tree.\n return this.buildGCSummaryTree(serializedGCState, serializedTombstones, serializedDeletedNodes, true /* trackState */);\n }\n // If not tracking GC state, build a GC summary tree without any summary handles.\n return this.buildGCSummaryTree(serializedGCState, serializedTombstones, serializedDeletedNodes, false /* trackState */);\n }\n /**\n * Builds the GC summary tree which contains GC state, deleted nodes and tombstones.\n * If trackState is false, all of GC state, deleted nodes and tombstones are written as summary blobs.\n * If trackState is true, only states that changed are written. Rest are written as handles.\n * @param serializedGCState - The GC state serialized as string.\n * @param serializedTombstones - The tombstone state serialized as string.\n * @param serializedDeletedNodes - Deleted nodes serialized as string.\n * @param trackState - Whether we are tracking GC state across summaries.\n * @returns the GC summary tree.\n */\n buildGCSummaryTree(serializedGCState, serializedTombstones, serializedDeletedNodes, trackState) {\n const builder = new SummaryTreeBuilder();\n // If the GC state hasn't changed, write a summary handle, else write a summary blob for it.\n if (this.latestSummaryData?.serializedGCState === serializedGCState && trackState) {\n builder.addHandle(gcStateBlobKey, SummaryType.Blob, `/${gcTreeKey}/${gcStateBlobKey}`);\n }\n else {\n builder.addBlob(gcStateBlobKey, serializedGCState);\n }\n // If tombstones exist, write a summary handle if it hasn't changed. If it has changed, write a\n // summary blob.\n if (serializedTombstones !== undefined) {\n if (this.latestSummaryData?.serializedTombstones === serializedTombstones &&\n trackState) {\n builder.addHandle(gcTombstoneBlobKey, SummaryType.Blob, `/${gcTreeKey}/${gcTombstoneBlobKey}`);\n }\n else {\n builder.addBlob(gcTombstoneBlobKey, serializedTombstones);\n }\n }\n // If there are no deleted nodes, return the summary tree.\n if (serializedDeletedNodes === undefined) {\n return builder.getSummaryTree();\n }\n // If the deleted nodes hasn't changed, write a summary handle, else write a summary blob for it.\n if (this.latestSummaryData?.serializedDeletedNodes === serializedDeletedNodes &&\n trackState) {\n builder.addHandle(gcDeletedBlobKey, SummaryType.Blob, `/${gcTreeKey}/${gcDeletedBlobKey}`);\n }\n else {\n builder.addBlob(gcDeletedBlobKey, serializedDeletedNodes);\n }\n return builder.getSummaryTree();\n }\n /**\n * Called to refresh the latest summary state. This happens when a pending summary is acked.\n */\n async refreshLatestSummary(result) {\n if (!this.configs.gcAllowed || !result.isSummaryTracked) {\n return;\n }\n this.latestSummaryData = this.pendingSummaryData;\n this.pendingSummaryData = undefined;\n this.updatedDSCountSinceLastSummary = 0;\n this.fullGCModeForAutoRecovery = false;\n }\n /**\n * Called to update the state from a GC run's stats. Used to update the count of data stores whose state updated.\n */\n updateStateFromGCRunStats(stats) {\n this.updatedDSCountSinceLastSummary += stats.updatedDataStoreCount;\n }\n}\n//# sourceMappingURL=gcSummaryStateTracker.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { generateStack, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { GCNodeType, UnreferencedState, } from \"./gcDefinitions.js\";\n/**\n * Encapsulates the logic that tracks the various telemetry logged by the Garbage Collector.\n *\n * These events are not logged as errors, just generic events, since there can be false positives:\n *\n * 1. inactiveObject telemetry - When an inactive node is used - A node that has been unreferenced for inactiveTimeoutMs.\n * 2. tombstoneReadyObject telemetry - When a tombstone-ready node is used - A node that has been unreferenced for tombstoneTimeoutMs.\n * 3. sweepReadyObject telemetry - When a sweep-ready node is used - A node that has been unreferenced for tombstoneTimeoutMs + sweepGracePeriodMs.\n *\n * These events are logged as errors since they are based on the core GC logic:\n *\n * 1. Tombstone telemetry - When a tombstoned node is used - A node that has been marked as tombstone.\n * 2. Unknown outbound reference telemetry - When a node is referenced but GC was not notified of it when the new reference appeared.\n *\n * Note: The telemetry for a Deleted node being used is logged elsewhere in this package.\n */\nexport class GCTelemetryTracker {\n constructor(mc, configs, isSummarizerClient, createContainerMetadata, getNodeType, getNodeStateTracker, getNodePackagePath) {\n this.mc = mc;\n this.configs = configs;\n this.isSummarizerClient = isSummarizerClient;\n this.createContainerMetadata = createContainerMetadata;\n this.getNodeType = getNodeType;\n this.getNodeStateTracker = getNodeStateTracker;\n this.getNodePackagePath = getNodePackagePath;\n // Keeps track of unreferenced events that are logged for a node. This is used to limit the log generation to one\n // per event per node.\n this.loggedUnreferencedEvents = new Set();\n // Queue for unreferenced events that should be logged the next time GC runs.\n this.pendingEventsQueue = [];\n }\n /**\n * Returns whether an event should be logged for a node that isn't active anymore. This does not apply to\n * tombstoned nodes for which an event is always logged. Some scenarios where we won't log:\n * 1. When a DDS is changed. The corresponding data store's event will be logged instead.\n * 2. An event is logged only once per container instance per event per node.\n */\n shouldLogNonActiveEvent(nodeType, usageType, nodeStateTracker, uniqueEventId) {\n if (nodeStateTracker.state === UnreferencedState.Active) {\n return false;\n }\n if (nodeType === GCNodeType.Other) {\n return false;\n }\n // For sub data store (DDS) nodes, if they are changed, its data store will also be changed,\n // so skip logging to make the telemetry less noisy.\n if (nodeType === GCNodeType.SubDataStore && usageType === \"Changed\") {\n return false;\n }\n // Non-tombstone events are logged once per event per node. A unique id is generated by joining\n // node state (inactive / sweep ready), node's id and usage (loaded / changed / revived).\n if (this.loggedUnreferencedEvents.has(uniqueEventId)) {\n return false;\n }\n return true;\n }\n /**\n * Called when a node is used. If the node is inactive or tombstoned, log telemetry indicating object is used\n * when it should not have been.\n * @param trackedId - The id that GC uses to track the node. For SubDataStore nodes, this should be the DataStore ID.\n * @param INodeUsageProps - All kind of details about this event to be logged\n */\n nodeUsed(trackedId, { usageType, currentReferenceTimestampMs, packagePath, id: untaggedId, fromId: untaggedFromId, isTombstoned, ...otherNodeUsageProps }) {\n // Note: For SubDataStore Load usage, trackedId will be the DataStore's id, not the full path in question.\n // This is necessary because the SubDataStore path may be unrecognized by GC (if suited for a custom request handler)\n const nodeStateTracker = this.getNodeStateTracker(trackedId);\n const nodeType = this.getNodeType(untaggedId);\n const timeout = (() => {\n switch (nodeStateTracker?.state) {\n case UnreferencedState.Inactive:\n return this.configs.inactiveTimeoutMs;\n case UnreferencedState.TombstoneReady:\n return this.configs.tombstoneTimeoutMs;\n case UnreferencedState.SweepReady:\n return (this.configs.tombstoneTimeoutMs &&\n this.configs.tombstoneTimeoutMs + this.configs.sweepGracePeriodMs);\n default:\n return undefined;\n }\n })();\n const { persistedGcFeatureMatrix, ...configs } = this.configs;\n const unrefEventProps = {\n trackedId,\n type: nodeType,\n unrefTime: nodeStateTracker?.unreferencedTimestampMs ?? -1,\n age: nodeStateTracker !== undefined\n ? currentReferenceTimestampMs - nodeStateTracker.unreferencedTimestampMs\n : -1,\n timeout,\n isTombstoned,\n ...tagCodeArtifacts({ id: untaggedId, fromId: untaggedFromId }),\n ...otherNodeUsageProps,\n ...this.createContainerMetadata,\n gcConfigs: { ...configs, ...persistedGcFeatureMatrix },\n };\n // If the node that is used is tombstoned, log a tombstone telemetry.\n if (isTombstoned) {\n this.logTombstoneUsageTelemetry(unrefEventProps, nodeType, usageType, packagePath);\n }\n // After logging tombstone telemetry, if the node's unreferenced state is not tracked, there is nothing\n // else to log.\n if (nodeStateTracker === undefined) {\n return;\n }\n const state = nodeStateTracker.state;\n const uniqueEventId = `${state}-${untaggedId}-${usageType}`;\n if (!this.shouldLogNonActiveEvent(nodeType, usageType, nodeStateTracker, uniqueEventId)) {\n return;\n }\n // Add the unique event id so that we don't generate a log for this event again in this session.\n this.loggedUnreferencedEvents.add(uniqueEventId);\n // For summarizer client, queue the event so it is logged the next time GC runs if the event is still valid.\n // For non-summarizer client, log the event now since GC won't run on it. This may result in false positives\n // but it's a good signal nonetheless and we can consume it with a grain of salt.\n // Inactive errors are usages of Objects that are unreferenced for at least a period of 7 days.\n // SweepReady errors are usages of Objects that will be deleted by GC Sweep!\n if (this.isSummarizerClient) {\n this.pendingEventsQueue.push({\n ...unrefEventProps, // Note: Contains some properties from INodeUsageProps as well\n usageType,\n state,\n });\n }\n else {\n // For non-summarizer clients, only log \"Loaded\" type events since these objects may not be loaded in the\n // summarizer clients if they are based off of user actions (such as scrolling to content for these objects)\n // Events generated:\n // InactiveObject_Loaded, SweepReadyObject_Loaded\n if (usageType === \"Loaded\") {\n const { id, fromId, headers, gcConfigs, additionalProps, ...detailedProps } = unrefEventProps;\n const event = {\n eventName: `${state}Object_${usageType}`,\n ...tagCodeArtifacts({ pkg: packagePath?.join(\"/\") }),\n stack: generateStack(),\n id,\n fromId,\n headers: { ...headers },\n details: { ...detailedProps, ...additionalProps },\n gcConfigs,\n };\n // These are logged as generic events and not errors because there can be false positives. The Tombstone\n // and Delete errors are separately logged and are reliable.\n this.mc.logger.sendTelemetryEvent(event);\n }\n }\n }\n /**\n * Logs telemetry when a tombstoned object is changed, revived or loaded.\n */\n logTombstoneUsageTelemetry(unrefEventProps, nodeType, usageType, packagePath) {\n // This will log the following events:\n // GC_Tombstone_DataStore_Requested, GC_Tombstone_DataStore_Changed, GC_Tombstone_DataStore_Revived\n // GC_Tombstone_SubDataStore_Requested, GC_Tombstone_SubDataStore_Changed, GC_Tombstone_SubDataStore_Revived\n // GC_Tombstone_Blob_Requested, GC_Tombstone_Blob_Changed, GC_Tombstone_Blob_Revived\n const { id, fromId, headers, gcConfigs, additionalProps, ...detailedProps } = unrefEventProps;\n const eventUsageName = usageType === \"Loaded\" ? \"Requested\" : usageType;\n const event = {\n eventName: `GC_Tombstone_${nodeType}_${eventUsageName}`,\n ...tagCodeArtifacts({ pkg: packagePath?.join(\"/\") }),\n stack: generateStack(),\n id,\n fromId,\n headers: { ...headers },\n details: { ...detailedProps, ...additionalProps }, // Also includes some properties from INodeUsageProps type\n gcConfigs,\n };\n if (usageType === \"Loaded\" &&\n this.configs.throwOnTombstoneLoad &&\n !headers?.allowTombstone) {\n this.mc.logger.sendErrorEvent(event);\n }\n else {\n this.mc.logger.sendTelemetryEvent(event);\n }\n }\n /**\n * Log all new references or outbound routes in the current graph that haven't been explicitly notified to GC.\n * The principle is that every new reference or outbound route must be notified to GC via the\n * addedOutboundReference method. It it hasn't, its a bug and we want to identify these scenarios.\n *\n * In more simple terms:\n * Missing Explicit References = Current References - Previous References - Explicitly Added References;\n *\n * @param currentGCData - The GC data (reference graph) from the current GC run.\n * @param previousGCData - The GC data (reference graph) from the previous GC run.\n * @param explicitReferences - New references added explicity between the previous and the current run.\n */\n logIfMissingExplicitReferences(currentGCData, previousGCData, explicitReferences, logger) {\n for (const [nodeId, currentOutboundRoutes] of Object.entries(currentGCData.gcNodes)) {\n const previousRoutes = previousGCData.gcNodes[nodeId] ?? [];\n const explicitRoutes = explicitReferences.get(nodeId) ?? [];\n /**\n * 1. For routes in the current GC data, routes that were not present in previous GC data and did not have\n * explicit references should be added to missing explicit routes list.\n * 2. Only include data store and blob routes since GC only works for these two.\n * Note: Due to a bug with de-duped blobs, only adding data store routes for now.\n * 3. Ignore DDS routes to their parent datastores since those were added implicitly. So, there won't be\n * explicit routes to them.\n */\n const missingExplicitRoutes = [];\n for (const route of currentOutboundRoutes) {\n const nodeType = this.getNodeType(route);\n if ((nodeType === GCNodeType.DataStore || nodeType === GCNodeType.Blob) &&\n !nodeId.startsWith(route) &&\n !previousRoutes.includes(route) &&\n !explicitRoutes.includes(route)) {\n missingExplicitRoutes.push(route);\n }\n }\n if (missingExplicitRoutes.length > 0) {\n // Send as Generic not Error since there are known corner cases where this will fire.\n // E.g. If an old client re-references a node via an attach op (that doesn't include GC Data)\n logger.sendTelemetryEvent({\n eventName: \"gcUnknownOutboundReferences\",\n ...tagCodeArtifacts({\n id: nodeId,\n routes: JSON.stringify(missingExplicitRoutes),\n }),\n });\n }\n }\n }\n /**\n * Log events that are pending in pendingEventsQueue. This is called after GC runs in the summarizer client\n * so that the state of an unreferenced node is updated.\n */\n async logPendingEvents(logger) {\n // Events sent come only from the summarizer client. In between summaries, events are pushed to a queue and at\n // summary time they are then logged.\n // Events generated:\n // InactiveObject_Loaded, InactiveObject_Changed, InactiveObject_Revived\n // SweepReadyObject_Loaded, SweepReadyObject_Changed, SweepReadyObject_Revived\n for (const eventProps of this.pendingEventsQueue) {\n const { usageType, state, id, fromId, headers, gcConfigs, additionalProps, ...detailedProps } = eventProps;\n /**\n * Revived event is logged only if the node is active. If the node is not active, the reference to it was\n * from another unreferenced node and this scenario is not interesting to log.\n * Loaded and Changed events are logged only if the node is not active. If the node is active, it was\n * revived and a Revived event will be logged for it.\n */\n const nodeStateTracker = this.getNodeStateTracker(detailedProps.trackedId); // Note: This is never SubDataStore path\n const active = nodeStateTracker === undefined || nodeStateTracker.state === UnreferencedState.Active;\n if ((usageType === \"Revived\") === active) {\n const pkg = await this.getNodePackagePath(eventProps.id.value);\n const fromPkg = eventProps.fromId\n ? await this.getNodePackagePath(eventProps.fromId.value)\n : undefined;\n const event = {\n eventName: `${state}Object_${usageType}`,\n id,\n fromId,\n headers: { ...headers },\n details: { ...detailedProps, ...additionalProps },\n gcConfigs,\n ...tagCodeArtifacts({\n pkg: pkg?.join(\"/\"),\n fromPkg: fromPkg?.join(\"/\"),\n }),\n };\n // These are logged as generic events and not errors because there can be false positives. The Tombstone\n // and Delete errors are separately logged and are reliable.\n logger.sendTelemetryEvent(event);\n }\n }\n this.pendingEventsQueue = [];\n }\n}\n//# sourceMappingURL=gcTelemetry.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Timer } from \"@fluidframework/core-utils/internal\";\nimport { validatePrecondition } from \"@fluidframework/telemetry-utils/internal\";\nimport { UnreferencedState } from \"./gcDefinitions.js\";\n/** A wrapper around common-utils Timer that requires the timeout when calling start/restart */\nclass TimerWithNoDefaultTimeout extends Timer {\n constructor(callback) {\n // The default timeout/handlers will never be used since start/restart pass overrides below\n super(0, () => {\n throw new Error(\"DefaultHandler should not be used\");\n });\n this.callback = callback;\n }\n start(timeoutMs) {\n super.start(timeoutMs, this.callback);\n }\n restart(timeoutMs) {\n super.restart(timeoutMs, this.callback);\n }\n}\n/** The collection of UnreferencedStateTrackers for all unreferenced nodes. Ensures stopTracking is called when deleting */\nexport class UnreferencedStateTrackerMap extends Map {\n /** Delete the given key, and stop tracking if that node was actually unreferenced */\n delete(key) {\n // Stop tracking so as to clear out any running timers.\n this.get(key)?.stopTracking();\n // Delete the node as we don't need to track it any more.\n return super.delete(key);\n }\n}\n/**\n * Helper class that tracks the state of an unreferenced node such as the time it was unreferenced and if it can\n * be tombstoned or deleted by the sweep phase.\n */\nexport class UnreferencedStateTracker {\n get state() {\n return this._state;\n }\n constructor(unreferencedTimestampMs, \n /** The time after which node transitions to Inactive state. */\n inactiveTimeoutMs, \n /** The current reference timestamp used to track how long this node has been unreferenced for. */\n currentReferenceTimestampMs, \n /** The time after which node transitions to TombstoneReady state; undefined if session expiry is disabled. */\n tombstoneTimeoutMs, \n /** The delay from TombstoneReady to SweepReady (only applies if tombstoneTimeoutMs is defined) */\n sweepGracePeriodMs) {\n this.unreferencedTimestampMs = unreferencedTimestampMs;\n this.inactiveTimeoutMs = inactiveTimeoutMs;\n this.tombstoneTimeoutMs = tombstoneTimeoutMs;\n this.sweepGracePeriodMs = sweepGracePeriodMs;\n this._state = UnreferencedState.Active;\n validatePrecondition(this.tombstoneTimeoutMs === undefined ||\n this.tombstoneTimeoutMs >= this.inactiveTimeoutMs, \"inactiveTimeoutMs must not be greater than the tombstoneTimeoutMs\");\n this.sweepTimer = new TimerWithNoDefaultTimeout(() => {\n this._state = UnreferencedState.SweepReady;\n assert(!this.inactiveTimer.hasTimer && !this.tombstoneTimer.hasTimer, 0x863 /* inactiveTimer or tombstoneTimer still running after sweepTimer fired! */);\n });\n this.tombstoneTimer = new TimerWithNoDefaultTimeout(() => {\n this._state = UnreferencedState.TombstoneReady;\n assert(!this.inactiveTimer.hasTimer, 0x864 /* inactiveTimer still running after tombstoneTimer fired! */); // aka 0x3b1\n if (this.sweepGracePeriodMs > 0) {\n // After the node becomes tombstone ready, start the sweep timer after which the node will be ready for sweep.\n this.sweepTimer.restart(this.sweepGracePeriodMs);\n }\n else {\n this._state = UnreferencedState.SweepReady;\n }\n });\n this.inactiveTimer = new TimerWithNoDefaultTimeout(() => {\n this._state = UnreferencedState.Inactive;\n // After the node becomes inactive, start the tombstone timer after which the node will be ready for tombstone.\n if (this.tombstoneTimeoutMs !== undefined) {\n this.tombstoneTimer.restart(this.tombstoneTimeoutMs - this.inactiveTimeoutMs);\n }\n });\n this.updateTracking(currentReferenceTimestampMs);\n }\n /* Updates the unreferenced state based on the provided timestamp. */\n updateTracking(currentReferenceTimestampMs) {\n const unreferencedDurationMs = currentReferenceTimestampMs - this.unreferencedTimestampMs;\n // Below we will set the appropriate timer (or none). Any running timers are superceded by the new currentReferenceTimestampMs\n this.clearTimers();\n // If the node has been unreferenced long enough, update the state to SweepReady.\n if (this.tombstoneTimeoutMs !== undefined &&\n unreferencedDurationMs >= this.tombstoneTimeoutMs + this.sweepGracePeriodMs) {\n this._state = UnreferencedState.SweepReady;\n return;\n }\n // If the node has been unreferenced long enough, update the state to TombstoneReady.\n // Also, start a timer for the remainder of the sweep delay.\n if (this.tombstoneTimeoutMs !== undefined &&\n unreferencedDurationMs >= this.tombstoneTimeoutMs) {\n this._state = UnreferencedState.TombstoneReady;\n this.sweepTimer.restart(this.tombstoneTimeoutMs + this.sweepGracePeriodMs - unreferencedDurationMs);\n return;\n }\n // If the node has been unreferenced for long enough, update the state to inactive.\n // Also, start a timer for the remainder of the tombstone timeout.\n if (unreferencedDurationMs >= this.inactiveTimeoutMs) {\n this._state = UnreferencedState.Inactive;\n if (this.tombstoneTimeoutMs !== undefined) {\n this.tombstoneTimer.restart(this.tombstoneTimeoutMs - unreferencedDurationMs);\n }\n return;\n }\n // The node is still active. Ensure the inactive timer is running with the proper remaining duration.\n this.inactiveTimer.restart(this.inactiveTimeoutMs - unreferencedDurationMs);\n }\n clearTimers() {\n this.inactiveTimer.clear();\n this.tombstoneTimer.clear();\n this.sweepTimer.clear();\n }\n /** Stop tracking this node. Reset the unreferenced timers and state, if any. */\n stopTracking() {\n this.clearTimers();\n this._state = UnreferencedState.Active;\n }\n}\n//# sourceMappingURL=gcUnreferencedStateTracker.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, LazyPromise, Timer } from \"@fluidframework/core-utils/internal\";\nimport { gcTreeKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { createResponseError, responseToException, } from \"@fluidframework/runtime-utils/internal\";\nimport { DataProcessingError, PerformanceEvent, createChildLogger, createChildMonitoringContext, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { blobManagerBasePath } from \"../blobManager/index.js\";\nimport { TombstoneResponseHeaderKey } from \"../containerRuntime.js\";\nimport { ClientSessionExpiredError } from \"../error.js\";\nimport { ContainerMessageType } from \"../messageTypes.js\";\nimport { generateGCConfigs } from \"./gcConfigs.js\";\nimport { GCNodeType, GarbageCollectionMessageType, UnreferencedState, } from \"./gcDefinitions.js\";\nimport { cloneGCData, compatBehaviorAllowsGCMessageType, concatGarbageCollectionData, dataStoreNodePathOnly, getGCDataFromSnapshot, urlToGCNodePath, } from \"./gcHelpers.js\";\nimport { runGarbageCollection } from \"./gcReferenceGraphAlgorithm.js\";\nimport { GCSummaryStateTracker } from \"./gcSummaryStateTracker.js\";\nimport { GCTelemetryTracker } from \"./gcTelemetry.js\";\nimport { UnreferencedStateTracker, UnreferencedStateTrackerMap, } from \"./gcUnreferencedStateTracker.js\";\n/**\n * The garbage collector for the container runtime. It consolidates the garbage collection functionality and maintains\n * its state across summaries.\n *\n * Node - represented as nodeId, it's a node on the GC graph\n *\n * Outbound Route - a path from one node to another node, think `nodeA` -\\> `nodeB`\n *\n * Graph - all nodes with their respective routes\n *\n * ```\n *\t\t\t GC Graph\n *\n *\t\t\t Node\n *\t\tNodeId = \"datastore1\"\n *\t\t /\t\t\t \\\\\n *\tOutboundRoute OutboundRoute\n *\t\t /\t\t\t\t \\\\\n *\t Node\t\t\t Node\n * NodeId = \"dds1\"\t NodeId = \"dds2\"\n * ```\n */\nexport class GarbageCollector {\n static create(createParams) {\n return new GarbageCollector(createParams);\n }\n get shouldRunGC() {\n return this.configs.gcAllowed;\n }\n /** Returns the count of data stores whose GC state updated since the last summary. */\n get updatedDSCountSinceLastSummary() {\n return this.summaryStateTracker.updatedDSCountSinceLastSummary;\n }\n constructor(createParams) {\n // Keeps a list of references (edges in the GC graph) between GC runs. Each entry has a node id and a list of\n // outbound routes from that node.\n this.newReferencesSinceLastRun = new Map();\n // A list of nodes that have been tombstoned.\n this.tombstones = [];\n // A list of nodes that have been deleted during sweep phase.\n this.deletedNodes = new Set();\n /**\n * Map of node ids to their unreferenced state tracker\n * NOTE: The set of keys in this map is considered as the set of unreferenced nodes\n * as of the last GC run. So in between runs, nothing should be added or removed.\n */\n this.unreferencedNodesState = new UnreferencedStateTrackerMap();\n // The number of times GC has successfully completed on this instance of GarbageCollector.\n this.completedRuns = 0;\n this.runtime = createParams.runtime;\n this.isSummarizerClient = createParams.isSummarizerClient;\n this.getNodePackagePath = createParams.getNodePackagePath;\n this.getLastSummaryTimestampMs = createParams.getLastSummaryTimestampMs;\n this.submitMessage = createParams.submitMessage;\n const baseSnapshot = createParams.baseSnapshot;\n const readAndParseBlob = createParams.readAndParseBlob;\n const pendingSessionExpiryTimerStarted = createParams.sessionExpiryTimerStarted;\n this.mc = createChildMonitoringContext({\n logger: createParams.baseLogger,\n namespace: \"GarbageCollector\",\n properties: {\n all: { completedGCRuns: () => this.completedRuns },\n },\n });\n this.configs = generateGCConfigs(this.mc, createParams);\n // If session expiry is enabled, we need to close the container when the session expiry timeout expires.\n if (this.configs.sessionExpiryTimeoutMs !== undefined) {\n // If Test Override config is set, override Session Expiry timeout.\n const overrideSessionExpiryTimeoutMs = this.mc.config.getNumber(\"Fluid.GarbageCollection.TestOverride.SessionExpiryMs\");\n let timeoutMs = this.configs.sessionExpiryTimeoutMs;\n if (pendingSessionExpiryTimerStarted) {\n // NOTE: This assumes the client clock hasn't been tampered with since the original session\n const timeLapsedSincePendingTimer = Date.now() - pendingSessionExpiryTimerStarted;\n timeoutMs -= timeLapsedSincePendingTimer;\n }\n timeoutMs = overrideSessionExpiryTimeoutMs ?? timeoutMs;\n if (timeoutMs <= 0) {\n this.runtime.closeFn(new ClientSessionExpiredError(`Client session expired.`, timeoutMs));\n }\n this.sessionExpiryTimer = new Timer(timeoutMs, () => {\n this.runtime.closeFn(new ClientSessionExpiredError(`Client session expired.`, timeoutMs));\n });\n this.sessionExpiryTimer.start();\n this.sessionExpiryTimerStarted = Date.now();\n }\n this.summaryStateTracker = new GCSummaryStateTracker(this.configs);\n this.telemetryTracker = new GCTelemetryTracker(this.mc, this.configs, this.isSummarizerClient, createParams.createContainerMetadata, (nodeId) => this.runtime.getNodeType(nodeId), (nodeId) => this.unreferencedNodesState.get(nodeId), this.getNodePackagePath);\n // Get the GC data from the base snapshot. Use LazyPromise because we only want to do this once since it\n // it involves fetching blobs from storage which is expensive.\n this.baseSnapshotDataP = new LazyPromise(async () => {\n if (baseSnapshot === undefined) {\n return undefined;\n }\n try {\n // For newer documents, GC data should be present in the GC tree in the root of the snapshot.\n const gcSnapshotTree = baseSnapshot.trees[gcTreeKey];\n if (gcSnapshotTree === undefined) {\n // back-compat - Older documents get their gc data reset for simplicity as there are few of them\n // incremental gc summary will not work with older gc data as well\n return undefined;\n }\n const snapshotData = await getGCDataFromSnapshot(gcSnapshotTree, readAndParseBlob);\n // If the GC version in base snapshot does not match the GC version currently in effect, the GC data\n // in the snapshot cannot be interpreted correctly. Set everything to undefined except for\n // deletedNodes because irrespective of GC versions, these nodes have been deleted and cannot be\n // brought back. The deletedNodes info is needed to identify when these nodes are used.\n if (this.configs.gcVersionInEffect !== this.configs.gcVersionInBaseSnapshot) {\n return {\n gcState: undefined,\n tombstones: undefined,\n deletedNodes: snapshotData.deletedNodes,\n };\n }\n return snapshotData;\n }\n catch (error) {\n const dpe = DataProcessingError.wrapIfUnrecognized(error, \"FailedToInitializeGC\");\n dpe.addTelemetryProperties({\n gcConfigs: JSON.stringify(this.configs),\n });\n throw dpe;\n }\n });\n /**\n * Set up the initializer which initializes the GC state from the data in base snapshot. It sets up GC data\n * from the base GC state and starts tracking the state of unreferenced nodes.\n *\n * Must only be called if there is a current reference timestamp.\n */\n this.initializeGCStateFromBaseSnapshotP = new LazyPromise(async () => {\n const currentReferenceTimestampMs = this.runtime.getCurrentReferenceTimestampMs();\n assert(currentReferenceTimestampMs !== undefined, 0x8a4 /* Trying to initialize GC state without current timestamp */);\n /**\n * The base snapshot data will not be present if the container is loaded from:\n * 1. The first summary created by the detached container.\n * 2. A summary that was generated with GC disabled.\n * 3. A summary that was generated before GC even existed.\n */\n const baseSnapshotData = await this.baseSnapshotDataP;\n this.summaryStateTracker.initializeBaseState(baseSnapshotData);\n if (baseSnapshotData?.gcState === undefined) {\n return;\n }\n // Update unreferenced state tracking as per the GC state in the snapshot data and update gcDataFromLastRun\n // to the GC data from the snapshot data.\n const gcNodes = {};\n for (const [nodeId, nodeData] of Object.entries(baseSnapshotData.gcState.gcNodes)) {\n if (nodeData.unreferencedTimestampMs !== undefined) {\n this.unreferencedNodesState.set(nodeId, new UnreferencedStateTracker(nodeData.unreferencedTimestampMs, this.configs.inactiveTimeoutMs, currentReferenceTimestampMs, this.configs.tombstoneTimeoutMs, this.configs.sweepGracePeriodMs));\n }\n gcNodes[nodeId] = Array.from(nodeData.outboundRoutes);\n }\n this.gcDataFromLastRun = { gcNodes };\n });\n // Get the GC details from the GC state in the base summary. This is returned in getBaseGCDetails which is\n // used to initialize the GC state of all the nodes in the container.\n this.baseGCDetailsP = new LazyPromise(async () => {\n const baseSnapshotData = await this.baseSnapshotDataP;\n if (baseSnapshotData?.gcState === undefined) {\n return {};\n }\n // Note that the base GC details are returned even if GC is disabled. This is to handle the special scenario\n // where GC is disabled but GC state exists in base snapshot. In this scenario, the nodes which get the GC\n // state will re-summarize to reset any GC specific state in their summaries (like unreferenced flag).\n const gcNodes = {};\n for (const [nodeId, nodeData] of Object.entries(baseSnapshotData.gcState.gcNodes)) {\n gcNodes[nodeId] = Array.from(nodeData.outboundRoutes);\n }\n // Run GC on the nodes in the base summary to get the routes used in each node in the container.\n // This is an optimization for space (vs performance) wherein we don't need to store the used routes of\n // each node in the summary.\n const usedRoutes = runGarbageCollection(gcNodes, [\"/\"]).referencedNodeIds;\n return { gcData: { gcNodes }, usedRoutes };\n });\n // Log all the GC options and the state determined by the garbage collector.\n // This is useful even for interactive clients since they track unreferenced nodes and log errors.\n this.mc.logger.sendTelemetryEvent({\n eventName: \"GarbageCollectorLoaded\",\n gcConfigs: JSON.stringify(this.configs),\n gcOptions: JSON.stringify(createParams.gcOptions),\n ...createParams.createContainerMetadata,\n });\n }\n /**\n * Called during container initialization. Initializes the tombstone and deleted nodes state from the base snapshot.\n * Also, initializes the GC state including unreferenced nodes tracking if a current reference timestamp exists.\n * Note that if there is any GC state in the base snapshot, then there will definitely be a reference timestamp\n * to work with - The GC state would have been generated using a timestamp which is part of the snapshot.\n */\n async initializeBaseState() {\n const baseSnapshotData = await this.baseSnapshotDataP;\n /**\n * The base snapshot data will not be present if the container is loaded from:\n * 1. The first summary created by the detached container.\n * 2. A summary that was generated with GC disabled.\n * 3. A summary that was generated before GC even existed.\n */\n if (baseSnapshotData === undefined) {\n return;\n }\n // Initialize the deleted nodes from the snapshot. This is done irrespective of whether GC / sweep is enabled\n // to identify deleted nodes' usage.\n if (baseSnapshotData.deletedNodes !== undefined) {\n this.deletedNodes = new Set(baseSnapshotData.deletedNodes);\n }\n // Initialize the tombstone state from the snapshot. Also, notify the runtime of tombstone routes.\n if (baseSnapshotData.tombstones !== undefined) {\n // Create a copy since we are writing from a source we don't control\n this.tombstones = Array.from(baseSnapshotData.tombstones);\n this.runtime.updateTombstonedRoutes(this.tombstones);\n }\n await this.initializeOrUpdateGCState();\n }\n /**\n * Initialize the GC state if not already initialized. If GC state is already initialized, update the unreferenced\n * state tracking as per the current reference timestamp.\n */\n async initializeOrUpdateGCState() {\n const currentReferenceTimestampMs = this.runtime.getCurrentReferenceTimestampMs();\n if (currentReferenceTimestampMs === undefined) {\n return;\n }\n const initialized = this.gcDataFromLastRun !== undefined;\n await PerformanceEvent.timedExecAsync(this.mc.logger, {\n eventName: \"InitializeOrUpdateGCState\",\n }, async (event) => {\n // If the GC state hasn't been initialized yet, initialize it and return.\n if (!initialized) {\n await this.initializeGCStateFromBaseSnapshotP;\n }\n else {\n // If the GC state has been initialized, update the tracking of unreferenced nodes as per the current\n // reference timestamp.\n for (const [, nodeStateTracker] of this.unreferencedNodesState) {\n nodeStateTracker.updateTracking(currentReferenceTimestampMs);\n }\n }\n event.end({\n details: { initialized, unrefNodeCount: this.unreferencedNodesState.size },\n });\n });\n }\n /**\n * Called when the connection state of the runtime changes, i.e., it connects or disconnects. GC subscribes to this\n * to initialize or update the unreference state tracking.\n * @param connected - Whether the runtime connected / disconnected.\n * @param clientId - The clientId of this runtime.\n */\n setConnectionState(connected, clientId) {\n /**\n * When the client connects (or reconnects), attempt to initialize or update the GC state. This will keep\n * the unreferenced state tracking updated as per the reference timestamp at the time of connection.\n *\n * During GC initialization and during connections in read mode, it is possible that either no ops are\n * processed or only trailing ops are processed. This means that the GC state is not initialized or initialized\n * with an older reference timestamp. So, doing this on every connection will keep the unreferenced state\n * tracking up-to-date.\n */\n if (connected && this.shouldRunGC) {\n this.initializeOrUpdateGCState().catch((error) => {\n this.mc.logger.sendErrorEvent({\n eventName: \"GCInitializationOrUpdateFailed\",\n gcConfigs: JSON.stringify(this.configs),\n clientId,\n }, error);\n });\n }\n }\n /**\n * Returns a the GC details generated from the base summary. This is used to initialize the GC state of the nodes\n * in the container.\n */\n async getBaseGCDetails() {\n return this.baseGCDetailsP;\n }\n /**\n * Runs garbage collection and updates the reference / used state of the nodes in the container.\n * @returns stats of the GC run or undefined if GC did not run.\n */\n async collectGarbage(options, telemetryContext) {\n const fullGC = options.fullGC ??\n (this.configs.runFullGC === true ||\n this.summaryStateTracker.autoRecovery.fullGCRequested());\n // Add the options that are used to run GC to the telemetry context.\n telemetryContext?.setMultiple(\"fluid_GC\", \"Options\", {\n fullGC,\n runSweep: options.runSweep,\n });\n const logger = createChildLogger({\n logger: options.logger ?? this.mc.logger,\n properties: {\n all: { completedGCRuns: this.completedRuns, fullGC },\n },\n });\n /**\n * If there is no current reference timestamp, skip running GC. We need the current timestamp to track\n * how long objects have been unreferenced and if they should be deleted.\n *\n * Note that the only scenario where GC is called and there is no reference timestamp is when no ops have ever\n * been processed for this container and it is in read mode. In this scenario, there is no point in running GC\n * anyway because references in the container do not change without any ops, i.e., there is nothing to collect.\n */\n const currentReferenceTimestampMs = this.runtime.getCurrentReferenceTimestampMs();\n if (currentReferenceTimestampMs === undefined) {\n // Log an event so we can evaluate how often we run into this scenario.\n logger.sendErrorEvent({\n eventName: \"CollectGarbageCalledWithoutTimestamp\",\n gcConfigs: JSON.stringify(this.configs),\n });\n return undefined;\n }\n return PerformanceEvent.timedExecAsync(logger, { eventName: \"GarbageCollection\" }, async (event) => {\n /** Pre-GC steps */\n // Ensure that state has been initialized from the base snapshot data.\n await this.initializeGCStateFromBaseSnapshotP;\n /** GC step */\n const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);\n event.end({\n ...gcStats,\n details: {\n timestamp: currentReferenceTimestampMs,\n sweep: this.configs.sweepEnabled,\n tombstone: this.configs.throwOnTombstoneLoad,\n },\n });\n /** Post-GC steps */\n // Log pending unreferenced events such as a node being used after inactive. This is done after GC runs and\n // updates its state so that we don't send false positives based on intermediate state. For example, we may get\n // reference to an unreferenced node from another unreferenced node which means the node wasn't revived.\n await this.telemetryTracker.logPendingEvents(logger);\n // Update the state of summary state tracker from this run's stats.\n this.summaryStateTracker.updateStateFromGCRunStats(gcStats);\n this.newReferencesSinceLastRun.clear();\n this.completedRuns++;\n return gcStats;\n }, { end: true, cancel: \"error\" });\n }\n /**\n * Runs garbage collection. It does the following:\n *\n * 1. It generates / analyzes the runtime's reference graph.\n *\n * 2. Generates mark phase stats.\n *\n * 3. Runs Mark phase.\n *\n * 4. Runs Sweep phase.\n *\n * 5. Generates sweep phase stats.\n */\n async runGC(fullGC, currentReferenceTimestampMs, logger) {\n // 1. Generate / analyze the runtime's reference graph.\n // Get the reference graph (gcData) and run GC algorithm to get referenced / unreferenced nodes.\n const gcData = await this.runtime.getGCData(fullGC);\n const gcResult = runGarbageCollection(gcData.gcNodes, [\"/\"]);\n // Get all referenced nodes - References in this run + references between the previous and current runs.\n const allReferencedNodeIds = this.findAllNodesReferencedBetweenGCs(gcData, this.gcDataFromLastRun, logger) ??\n gcResult.referencedNodeIds;\n // 2. Get the mark phase stats based on the previous / current GC state.\n // This is done before running mark phase because we need the previous GC state before it is updated.\n const markPhaseStats = this.getMarkPhaseStats(gcResult);\n // 3. Run the Mark phase.\n // It will mark nodes as referenced / unreferenced and return lists of tombstone-ready and sweep-ready nodes.\n const { tombstoneReadyNodeIds, sweepReadyNodeIds } = this.runMarkPhase(gcResult, allReferencedNodeIds, currentReferenceTimestampMs);\n // 4. Run the Sweep phase.\n // It will initiate the deletion (sending the GC Sweep op) of any sweep-ready nodes that are\n // allowed to be deleted per config, and tombstone the rest along with the tombstone-ready nodes.\n // Note that no nodes will be deleted until the GC Sweep op is processed.\n this.runSweepPhase(gcResult, tombstoneReadyNodeIds, sweepReadyNodeIds);\n this.gcDataFromLastRun = cloneGCData(gcData);\n // 5. Get the sweep phase stats.\n const sweepPhaseStats = this.getSweepPhaseStats(this.deletedNodes, sweepReadyNodeIds, markPhaseStats);\n return { ...markPhaseStats, ...sweepPhaseStats };\n }\n /**\n * Runs the GC Mark phase. It does the following:\n *\n * 1. Marks all referenced nodes in this run by clearing tracking for them.\n *\n * 2. Marks unreferenced nodes in this run by starting tracking for them.\n *\n * 3. Calls the runtime to update nodes that were marked referenced.\n *\n * @param gcResult - The result of the GC run on the gcData.\n * @param allReferencedNodeIds - Nodes referenced in this GC run + referenced between previous and current GC run.\n * @param currentReferenceTimestampMs - The timestamp to be used for unreferenced nodes' timestamp.\n * @returns The sets of tombstone-ready and sweep-ready nodes, i.e., nodes that ready to be tombstoned or deleted.\n */\n runMarkPhase(gcResult, allReferencedNodeIds, currentReferenceTimestampMs) {\n // 1. Marks all referenced nodes by clearing their unreferenced tracker, if any.\n for (const nodeId of allReferencedNodeIds) {\n this.unreferencedNodesState.delete(nodeId);\n }\n // 2. Mark unreferenced nodes in this run by starting or updating unreferenced tracking for them.\n const tombstoneReadyNodeIds = new Set();\n const sweepReadyNodeIds = new Set();\n for (const nodeId of gcResult.deletedNodeIds) {\n const nodeStateTracker = this.unreferencedNodesState.get(nodeId);\n if (nodeStateTracker === undefined) {\n this.unreferencedNodesState.set(nodeId, new UnreferencedStateTracker(currentReferenceTimestampMs, this.configs.inactiveTimeoutMs, currentReferenceTimestampMs, this.configs.tombstoneTimeoutMs, this.configs.sweepGracePeriodMs));\n }\n else {\n // If a node was already unreferenced, update its tracking information. Since the current reference time\n // is from the ops seen, this will ensure that we keep updating unreferenced state as time moves forward.\n nodeStateTracker.updateTracking(currentReferenceTimestampMs);\n // If a node is tombstone or sweep-ready, store it so it can be returned.\n if (nodeStateTracker.state === UnreferencedState.TombstoneReady) {\n tombstoneReadyNodeIds.add(nodeId);\n }\n if (nodeStateTracker.state === UnreferencedState.SweepReady) {\n sweepReadyNodeIds.add(nodeId);\n }\n }\n }\n // 3. Call the runtime to update referenced nodes in this run.\n this.runtime.updateUsedRoutes(gcResult.referencedNodeIds);\n return { tombstoneReadyNodeIds, sweepReadyNodeIds };\n }\n /**\n * Runs the GC Sweep phase. It does the following:\n *\n * 1. Marks tombstone-ready nodes as tombstones.\n *\n * 2. Sends a sweep op to delete nodes that are sweep-ready. Once the op is ack'd, these nodes will be deleted.\n *\n * @param gcResult - The result of the GC run on the gcData.\n * @param tombstoneReadyNodes - List of nodes that are tombstone-ready.\n * @param sweepReadyNodes - List of nodes that are sweep-ready.\n */\n runSweepPhase(gcResult, tombstoneReadyNodes, sweepReadyNodes) {\n /**\n * Under \"Test Mode\", unreferenced nodes are immediately deleted without waiting for them to be sweep-ready.\n *\n * Otherwise, depending on how long it's been since the node was unreferenced, it will either be\n * marked as Tombstone, or deleted by Sweep.\n */\n if (this.configs.testMode) {\n // If we are running in GC test mode, unreferenced nodes (gcResult.deletedNodeIds) are deleted immediately.\n this.runtime.deleteSweepReadyNodes(gcResult.deletedNodeIds);\n return;\n }\n // We'll build up the lists of nodes to be either Tombstoned or Deleted\n // based on the configuration and the nodes' current state.\n // We must Tombstone any sweep-ready node that Sweep won't run for.\n // This is important because a container may never load during a node's Sweep Grace Period,\n // so that node would directly become sweep-ready skipping over tombstone-ready state,\n // but should be Tombstoned since Sweep is disabled.\n const { nodesToTombstone, nodesToDelete } = this.configs.sweepEnabled\n ? {\n nodesToDelete: [...sweepReadyNodes],\n nodesToTombstone: [...tombstoneReadyNodes],\n }\n : {\n nodesToDelete: [],\n nodesToTombstone: [...tombstoneReadyNodes, ...sweepReadyNodes],\n };\n this.tombstones = nodesToTombstone;\n this.runtime.updateTombstonedRoutes(this.tombstones);\n if (nodesToDelete.length > 0) {\n // Do not send DDS node ids in the GC op. This is an optimization to reduce its size. Since GC applies to\n // to data store only, all its DDSes are deleted along with it. The DDS ids will be retrieved from the\n // local state when processing the op.\n const sweepReadyDSAndBlobs = nodesToDelete.filter((nodeId) => {\n const nodeType = this.runtime.getNodeType(nodeId);\n return nodeType === GCNodeType.DataStore || nodeType === GCNodeType.Blob;\n });\n const contents = {\n type: GarbageCollectionMessageType.Sweep,\n deletedNodeIds: sweepReadyDSAndBlobs,\n };\n // Its fine for older clients to ignore this op because it doesn't have any functional impact. This op\n // is an optimization to ensure that all clients are in sync when it comes to deleted nodes to prevent their\n // accidental usage. The clients will sync without the delete op too but it may take longer.\n const containerGCMessage = {\n type: ContainerMessageType.GC,\n contents,\n compatDetails: { behavior: \"Ignore\" }, // DEPRECATED: For temporary back compat only\n };\n this.submitMessage(containerGCMessage);\n return;\n }\n }\n /**\n * Since GC runs periodically, the GC data that is generated only tells us the state of the world at that point in\n * time. There can be nodes that were referenced in between two runs and their unreferenced state needs to be\n * updated. For example, in the following scenarios not updating the unreferenced timestamp can lead to deletion of\n * these objects while there can be in-memory referenced to it:\n * 1. A node transitions from `unreferenced -> referenced -> unreferenced` between two runs. When the reference is\n * added, the object may have been accessed and in-memory reference to it added.\n * 2. A reference is added from one unreferenced node to one or more unreferenced nodes. Even though the node[s] were\n * unreferenced, they could have been accessed and in-memory reference to them added.\n *\n * This function identifies nodes that were referenced since the last run.\n * If these nodes are currently unreferenced, they will be assigned new unreferenced state by the current run.\n *\n * @returns A list of all nodes referenced from the last local summary until now.\n */\n findAllNodesReferencedBetweenGCs(currentGCData, previousGCData, logger) {\n // If we haven't run GC before there is nothing to do.\n // No previousGCData, means nothing is unreferenced, and there are no reference state trackers to clear\n if (previousGCData === undefined) {\n return undefined;\n }\n /**\n * If there are references that were not explicitly notified to GC, log an error because this should never happen.\n * If it does, this may result in the unreferenced timestamps of these nodes not updated when they were referenced.\n */\n this.telemetryTracker.logIfMissingExplicitReferences(currentGCData, previousGCData, this.newReferencesSinceLastRun, logger);\n // No references were added since the last run so we don't have to update reference states of any unreferenced\n // nodes. There is no in between state at this point.\n if (this.newReferencesSinceLastRun.size === 0) {\n return undefined;\n }\n /**\n * Generate a super set of the GC data that contains the nodes and edges from last run, plus any new node and\n * edges that have been added since then. To do this, combine the GC data from the last run and the current\n * run, and then add the references since last run.\n *\n * Note on why we need to combine the data from previous run, current run and all references in between -\n * 1. We need data from last run because some of its references may have been deleted since then. If those\n * references added new outbound references before they were deleted, we need to detect them.\n *\n * 2. We need new outbound references since last run because some of them may have been deleted later. If those\n * references added new outbound references before they were deleted, we need to detect them.\n *\n * 3. We need data from the current run because currently we may not detect when DDSes are referenced:\n * - We don't require DDSes handles to be stored in a referenced DDS.\n * - A new data store may have \"root\" DDSes already created and we don't detect them today.\n */\n const gcDataSuperSet = concatGarbageCollectionData(previousGCData, currentGCData);\n const newOutboundRoutesSinceLastRun = [];\n this.newReferencesSinceLastRun.forEach((outboundRoutes, sourceNodeId) => {\n if (gcDataSuperSet.gcNodes[sourceNodeId] === undefined) {\n gcDataSuperSet.gcNodes[sourceNodeId] = outboundRoutes;\n }\n else {\n // Non null asserting here because we are checking if it is undefined above.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n gcDataSuperSet.gcNodes[sourceNodeId].push(...outboundRoutes);\n }\n newOutboundRoutesSinceLastRun.push(...outboundRoutes);\n });\n /**\n * Run GC on the above reference graph starting with root and all new outbound routes. This will generate a\n * list of all nodes that could have been referenced since the last run. If any of these nodes are unreferenced,\n * unreferenced, stop tracking them and remove from unreferenced list.\n * Note that some of these nodes may be unreferenced now and if so, the current run will mark them as\n * unreferenced and add unreferenced state.\n */\n const gcResult = runGarbageCollection(gcDataSuperSet.gcNodes, [\n \"/\",\n ...newOutboundRoutesSinceLastRun,\n ]);\n return gcResult.referencedNodeIds;\n }\n /**\n * Summarizes the GC data and returns it as a summary tree.\n * We current write the entire GC state in a single blob. This can be modified later to write multiple\n * blobs. All the blob keys should start with `gcBlobPrefix`.\n */\n summarize(fullTree, trackState, telemetryContext) {\n if (!this.shouldRunGC || this.gcDataFromLastRun === undefined) {\n return;\n }\n const gcState = { gcNodes: {} };\n for (const [nodeId, outboundRoutes] of Object.entries(this.gcDataFromLastRun.gcNodes)) {\n gcState.gcNodes[nodeId] = {\n outboundRoutes,\n unreferencedTimestampMs: this.unreferencedNodesState.get(nodeId)?.unreferencedTimestampMs,\n };\n }\n return this.summaryStateTracker.summarize(trackState && !fullTree, gcState, this.deletedNodes, this.tombstones);\n }\n getMetadata() {\n return {\n /**\n * If GC is allowed, the GC data is written using the GC version in effect and that is the gcFeature that goes\n * into the metadata blob. If GC is disabled, the gcFeature is 0.\n */\n gcFeature: this.configs.gcAllowed ? this.configs.gcVersionInEffect : 0,\n gcFeatureMatrix: this.configs.persistedGcFeatureMatrix,\n sessionExpiryTimeoutMs: this.configs.sessionExpiryTimeoutMs,\n sweepEnabled: false, // DEPRECATED - to be removed\n tombstoneTimeoutMs: this.configs.tombstoneTimeoutMs,\n };\n }\n /**\n * Called to refresh the latest summary state. This happens when either a pending summary is acked.\n */\n async refreshLatestSummary(result) {\n return this.summaryStateTracker.refreshLatestSummary(result);\n }\n /**\n * Process a GC message.\n * @param message - The GC message from the container runtime.\n * @param messageTimestampMs - The timestamp of the message.\n * @param local - Whether it was send by this client.\n */\n processMessage(message, messageTimestampMs, local) {\n const gcMessageType = message.contents.type;\n switch (gcMessageType) {\n case GarbageCollectionMessageType.Sweep: {\n // Delete the nodes whose ids are present in the contents.\n this.deleteSweepReadyNodes(message.contents.deletedNodeIds);\n break;\n }\n case GarbageCollectionMessageType.TombstoneLoaded: {\n // Mark the node as referenced to ensure it isn't Swept\n const tombstonedNodePath = message.contents.nodePath;\n this.addedOutboundReference(\"/\", tombstonedNodePath, messageTimestampMs, true /* autorecovery */);\n // In case the cause of the TombstoneLoaded event is incorrect GC Data (i.e. the object is actually reachable),\n // do fullGC on the next run to get a chance to repair (in the likely case the bug is not deterministic)\n this.summaryStateTracker.autoRecovery.requestFullGCOnNextRun();\n break;\n }\n default: {\n if (!compatBehaviorAllowsGCMessageType(gcMessageType, message.compatDetails?.behavior)) {\n const error = DataProcessingError.create(`Garbage collection message of unknown type ${gcMessageType}`, \"processMessage\");\n throw error;\n }\n break;\n }\n }\n }\n /**\n * Delete nodes that are sweep-ready. Call the runtime to delete these nodes and clear the unreferenced state\n * tracking for nodes that are actually deleted by the runtime.\n *\n * Note that this doesn't check any configuration around whether Sweep is enabled.\n * That happens before the op is submitted, and from that point, any client should execute the delete.\n *\n * @param sweepReadyNodeIds - The ids of nodes that are ready to be deleted.\n */\n deleteSweepReadyNodes(sweepReadyNodeIds) {\n // Use a set for lookup because its much faster than array or map.\n const sweepReadyNodesSet = new Set(sweepReadyNodeIds);\n // The ids in the sweep-ready nodes do not contain DDS node ids. This is an optimization to reduce the size\n // of the GC op. Since GC applies to data store only, all its DDSes are deleted along with it. So, get the\n // DDS nodes ID from the unreferenced nodes state.\n const allSweepReadyNodeIds = Array.from(sweepReadyNodeIds);\n for (const [id] of this.unreferencedNodesState) {\n // Ignore data store nodes since they would already be in the list.\n const pathParts = id.split(\"/\");\n if (pathParts.length <= 2) {\n continue;\n }\n // Get the data store id part. Note that this may include blobs but that's okay since the part would just\n // be \"_blobs\" and it won't be found.\n const dsId = `/${pathParts[1]}`;\n if (sweepReadyNodesSet.has(dsId)) {\n allSweepReadyNodeIds.push(id);\n }\n }\n const deletedNodeIds = this.runtime.deleteSweepReadyNodes(allSweepReadyNodeIds);\n // Clear unreferenced state tracking for deleted nodes.\n for (const nodeId of deletedNodeIds) {\n // Usually we avoid modifying the set of unreferencedNodesState keys in between GC runs,\n // but this is ok since this node won't exist at all in the next GC run.\n this.unreferencedNodesState.delete(nodeId);\n this.deletedNodes.add(nodeId);\n }\n }\n /**\n * Called when a node with the given id is updated. If the node is inactive or tombstoned, this will log an error\n * or throw an error if failing on incorrect usage is configured.\n * @param IGCNodeUpdatedProps - Details about the node and how it was updated\n */\n nodeUpdated({ node, reason, timestampMs, packagePath, request, headerData, additionalProps, }) {\n // If there is no reference timestamp to work with, no ops have been processed after creation. If so, skip\n // logging as nothing interesting would have happened worth logging.\n if (!this.shouldRunGC || timestampMs === undefined) {\n return;\n }\n // trackedId will be either DataStore or Blob ID (not sub-DataStore ID, since some of those are unrecognized by GC)\n const trackedId = node.path;\n const isTombstoned = this.tombstones.includes(trackedId);\n const fullPath = request !== undefined ? urlToGCNodePath(request.url) : trackedId;\n // This will log if appropriate\n this.telemetryTracker.nodeUsed(trackedId, {\n id: fullPath,\n usageType: reason,\n currentReferenceTimestampMs: timestampMs,\n packagePath,\n completedGCRuns: this.completedRuns,\n isTombstoned,\n lastSummaryTime: this.getLastSummaryTimestampMs(),\n headers: headerData,\n requestUrl: request?.url,\n requestHeaders: JSON.stringify(request?.headers),\n additionalProps,\n });\n // Any time we log a Tombstone Loaded error (via Telemetry Tracker),\n // we want to also trigger autorecovery to avoid the object being deleted\n // Note: We don't need to trigger on \"Changed\" because any change will cause the object\n // to be loaded by the Summarizer, and auto-recovery will be triggered then.\n if (isTombstoned && reason === \"Loaded\") {\n // Note that when a DataStore and its DDS are all loaded, each will trigger AutoRecovery for itself.\n this.triggerAutoRecovery(fullPath);\n }\n const nodeType = this.runtime.getNodeType(fullPath);\n // Unless this is a Loaded event for a Blob or DataStore, we're done after telemetry tracking\n const loadedBlobOrDataStore = reason === \"Loaded\" &&\n (nodeType === GCNodeType.Blob || nodeType === GCNodeType.DataStore);\n if (!loadedBlobOrDataStore) {\n return;\n }\n const errorRequest = request ?? { url: fullPath };\n if (isTombstoned &&\n this.configs.throwOnTombstoneLoad &&\n headerData?.allowTombstone !== true) {\n // The requested data store is removed by gc. Create a 404 gc response exception.\n throw responseToException(createResponseError(404, `${nodeType} was tombstoned`, errorRequest, {\n [TombstoneResponseHeaderKey]: true,\n }), errorRequest);\n }\n }\n /**\n * The given node should have its unreferenced state reset in the next GC,\n * even if the true GC graph shows it is unreferenced. This will\n * prevent it from being deleted by Sweep (after the Grace Period).\n *\n * Submit a GC op indicating that the Tombstone with the given path has been loaded.\n * Broadcasting this information in the op stream allows the Summarizer to reset unreferenced state\n * before runnint GC next.\n */\n triggerAutoRecovery(nodePath) {\n // If sweep isn't enabled, auto-recovery isn't needed since its purpose is to prevent this object from being\n // deleted. It also would end up sending a GC op which can break clients running FF version 1.x.\n if (!this.configs.sweepEnabled) {\n return;\n }\n // Use compat behavior \"Ignore\" since this is an optimization to opportunistically protect\n // objects from deletion, so it's fine for older clients to ignore this op.\n const containerGCMessage = {\n type: ContainerMessageType.GC,\n contents: {\n type: GarbageCollectionMessageType.TombstoneLoaded,\n nodePath,\n },\n compatDetails: { behavior: \"Ignore\" }, // DEPRECATED: For temporary back compat only\n };\n this.submitMessage(containerGCMessage);\n }\n /**\n * Called when an outbound reference is added to a node. This is used to identify all nodes that have been\n * referenced between summaries so that their unreferenced timestamp can be reset.\n *\n * @param fromNodePath - The node from which the reference is added.\n * @param toNodePath - The node to which the reference is added.\n * @param timestampMs - The timestamp of the message that added the reference.\n * @param autorecovery - This reference is added artificially, for autorecovery. Used for logging.\n */\n addedOutboundReference(fromNodePath, toNodePath, timestampMs, autorecovery) {\n if (!this.shouldRunGC) {\n return;\n }\n if (!toNodePath.startsWith(\"/\")) {\n // A long time ago we stored handles with relatives paths. We don't expect to see these cases though\n // because GC was enabled only after we made the switch to always using absolute paths.\n this.mc.logger.sendErrorEvent({\n eventName: \"InvalidRelativeOutboundRoute\",\n ...tagCodeArtifacts({ fromId: fromNodePath, id: toNodePath }),\n });\n return;\n }\n assert(fromNodePath.startsWith(\"/\"), 0x8a5 /* fromNodePath must be an absolute path */);\n const outboundRoutes = this.newReferencesSinceLastRun.get(fromNodePath) ?? [];\n outboundRoutes.push(toNodePath);\n this.newReferencesSinceLastRun.set(fromNodePath, outboundRoutes);\n // GC won't recognize some subDataStore paths that we encounter (e.g. a path suited for a custom request handler)\n // So for subDataStore paths we need to check the parent dataStore for current tombstone/inactive status.\n const trackedId = this.runtime.getNodeType(toNodePath) === \"SubDataStore\"\n ? dataStoreNodePathOnly(toNodePath)\n : toNodePath;\n this.telemetryTracker.nodeUsed(trackedId, {\n id: toNodePath,\n fromId: fromNodePath,\n usageType: \"Revived\",\n currentReferenceTimestampMs: timestampMs,\n packagePath: undefined,\n completedGCRuns: this.completedRuns,\n isTombstoned: this.tombstones.includes(trackedId),\n lastSummaryTime: this.getLastSummaryTimestampMs(),\n autorecovery,\n });\n // This node is referenced - Clear its unreferenced state if present\n // But don't delete the node id from the map yet.\n // When generating GC stats, the set of nodes in here is used as the baseline for\n // what was unreferenced in the last GC run.\n // NOTE: We use toNodePath not trackedId even though it may be an unrecognized subDataStore route (hence no-op),\n // because a reference to such a path is not sufficient to consider the DataStore referenced.\n this.unreferencedNodesState.get(toNodePath)?.stopTracking();\n }\n /**\n * Returns whether a node with the given path has been deleted or not. This can be used by the runtime to identify\n * cases where objects are used after they are deleted and throw / log errors accordingly.\n */\n isNodeDeleted(nodePath) {\n return this.deletedNodes.has(nodePath);\n }\n dispose() {\n this.sessionExpiryTimer?.clear();\n this.sessionExpiryTimer = undefined;\n }\n /**\n * Generates the stats of a garbage collection mark phase run.\n * @param gcResult - The result of the current GC run.\n * @returns the stats of the mark phase run.\n */\n getMarkPhaseStats(gcResult) {\n const markPhaseStats = {\n nodeCount: 0,\n dataStoreCount: 0,\n attachmentBlobCount: 0,\n unrefNodeCount: 0,\n unrefDataStoreCount: 0,\n unrefAttachmentBlobCount: 0,\n updatedNodeCount: 0,\n updatedDataStoreCount: 0,\n updatedAttachmentBlobCount: 0,\n };\n const updateNodeStats = (nodeId, isReferenced) => {\n markPhaseStats.nodeCount++;\n // If there is no previous GC data, every node's state is generated and is considered as updated.\n // Otherwise, find out if any node went from referenced to unreferenced or vice-versa.\n const wasNotReferenced = this.unreferencedNodesState.has(nodeId);\n const stateUpdated = this.gcDataFromLastRun === undefined || wasNotReferenced === isReferenced;\n if (stateUpdated) {\n markPhaseStats.updatedNodeCount++;\n }\n if (!isReferenced) {\n markPhaseStats.unrefNodeCount++;\n }\n if (this.runtime.getNodeType(nodeId) === GCNodeType.DataStore) {\n markPhaseStats.dataStoreCount++;\n if (stateUpdated) {\n markPhaseStats.updatedDataStoreCount++;\n }\n if (!isReferenced) {\n markPhaseStats.unrefDataStoreCount++;\n }\n }\n if (this.runtime.getNodeType(nodeId) === GCNodeType.Blob) {\n markPhaseStats.attachmentBlobCount++;\n if (stateUpdated) {\n markPhaseStats.updatedAttachmentBlobCount++;\n }\n if (!isReferenced) {\n markPhaseStats.unrefAttachmentBlobCount++;\n }\n }\n };\n for (const nodeId of gcResult.referencedNodeIds) {\n updateNodeStats(nodeId, true /* referenced */);\n }\n for (const nodeId of gcResult.deletedNodeIds) {\n updateNodeStats(nodeId, false /* referenced */);\n }\n return markPhaseStats;\n }\n /**\n * Generates the stats of a garbage collection sweep phase run.\n * @param deletedNodes - The nodes that have already been deleted even before this run.\n * @param sweepReadyNodes - The nodes that are sweep-ready in this GC run. These will be deleted but are not deleted yet,\n * due to either sweep not being enabled or the Sweep Op needing to roundtrip before the delete is executed.\n * @param markPhaseStats - The stats of the mark phase run.\n * @returns the stats of the sweep phase run.\n */\n getSweepPhaseStats(deletedNodes, sweepReadyNodes, markPhaseStats) {\n // Initialize the life time node counts to the mark phase node counts. If sweep is not enabled,\n // these will be the life time node count for this container.\n const sweepPhaseStats = {\n lifetimeNodeCount: markPhaseStats.nodeCount,\n lifetimeDataStoreCount: markPhaseStats.dataStoreCount,\n lifetimeAttachmentBlobCount: markPhaseStats.attachmentBlobCount,\n deletedNodeCount: 0,\n deletedDataStoreCount: 0,\n deletedAttachmentBlobCount: 0,\n };\n // The runtime can't reliably identify the type of deleted nodes. So, get the type here. This should\n // be good enough because the only types that participate in GC today are data stores, DDSes and blobs.\n const getDeletedNodeType = (nodeId) => {\n const pathParts = nodeId.split(\"/\");\n if (pathParts[1] === blobManagerBasePath) {\n return GCNodeType.Blob;\n }\n if (pathParts.length === 2) {\n return GCNodeType.DataStore;\n }\n if (pathParts.length === 3) {\n return GCNodeType.SubDataStore;\n }\n return GCNodeType.Other;\n };\n for (const nodeId of deletedNodes) {\n sweepPhaseStats.deletedNodeCount++;\n const nodeType = getDeletedNodeType(nodeId);\n if (nodeType === GCNodeType.DataStore) {\n sweepPhaseStats.deletedDataStoreCount++;\n }\n else if (nodeType === GCNodeType.Blob) {\n sweepPhaseStats.deletedAttachmentBlobCount++;\n }\n }\n // The counts from the mark phase stats do not include nodes that were\n // deleted in previous runs. So, add the deleted node counts to life time stats.\n sweepPhaseStats.lifetimeNodeCount += sweepPhaseStats.deletedNodeCount;\n sweepPhaseStats.lifetimeDataStoreCount += sweepPhaseStats.deletedDataStoreCount;\n sweepPhaseStats.lifetimeAttachmentBlobCount += sweepPhaseStats.deletedAttachmentBlobCount;\n // These stats are used to estimate the impact of GC in terms of how much garbage is/will be cleaned up.\n // So we include the current sweep-ready node stats since these nodes will be deleted eventually.\n // - If sweep is enabled, this will happen in the run after the GC op round trips back\n // (they'll be in deletedNodes that time).\n // - If sweep is not enabled, we still want to include these nodes since they\n // _will be_ deleted once it is enabled.\n for (const nodeId of sweepReadyNodes) {\n sweepPhaseStats.deletedNodeCount++;\n const nodeType = this.runtime.getNodeType(nodeId);\n if (nodeType === GCNodeType.DataStore) {\n sweepPhaseStats.deletedDataStoreCount++;\n }\n else if (nodeType === GCNodeType.Blob) {\n sweepPhaseStats.deletedAttachmentBlobCount++;\n }\n }\n return sweepPhaseStats;\n }\n}\n//# sourceMappingURL=garbageCollection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nfunction isGroupContents(opContents) {\n return opContents?.type === OpGroupingManager.groupedBatchOp;\n}\nexport function isGroupedBatch(op) {\n return isGroupContents(op.contents);\n}\nexport class OpGroupingManager {\n constructor(config, logger) {\n this.config = config;\n this.logger = createChildLogger({ logger, namespace: \"OpGroupingManager\" });\n }\n /**\n * Creates a new batch with a single message of type \"groupedBatch\" and empty contents.\n * This is needed as a placeholder if a batch becomes empty on resubmit, but we are tracking batch IDs.\n * @param resubmittingBatchId - batch ID of the resubmitting batch\n * @param referenceSequenceNumber - reference sequence number\n * @returns - IBatch containing a single empty Grouped Batch op\n */\n createEmptyGroupedBatch(resubmittingBatchId, referenceSequenceNumber) {\n assert(this.config.groupedBatchingEnabled, 0xa00 /* cannot create empty grouped batch when grouped batching is disabled */);\n const serializedContent = JSON.stringify({\n type: OpGroupingManager.groupedBatchOp,\n contents: [],\n });\n return {\n contentSizeInBytes: 0,\n messages: [\n {\n metadata: { batchId: resubmittingBatchId },\n localOpMetadata: { emptyBatch: true },\n referenceSequenceNumber,\n contents: serializedContent,\n },\n ],\n referenceSequenceNumber,\n };\n }\n /**\n * Converts the given batch into a \"grouped batch\" - a batch with a single message of type \"groupedBatch\",\n * with contents being an array of the original batch's messages.\n *\n * @remarks - Remember that a BatchMessage has its content JSON serialized, so the incoming batch message contents\n * must be parsed first, and then the type and contents mentioned above are hidden in that JSON serialization.\n */\n groupBatch(batch) {\n assert(this.shouldGroup(batch), 0x946 /* cannot group the provided batch */);\n if (batch.messages.length >= 1000) {\n this.logger.sendTelemetryEvent({\n eventName: \"GroupLargeBatch\",\n length: batch.messages.length,\n threshold: this.config.opCountThreshold,\n reentrant: batch.hasReentrantOps,\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n referenceSequenceNumber: batch.messages[0].referenceSequenceNumber,\n });\n }\n // We expect this will be on the first message, if present at all.\n let groupedBatchId;\n for (const message of batch.messages) {\n if (message.metadata) {\n const { batch: _batch, batchId, ...rest } = message.metadata;\n if (batchId) {\n groupedBatchId = batchId;\n }\n assert(Object.keys(rest).length === 0, 0x5dd /* cannot group ops with metadata */);\n }\n }\n const serializedContent = JSON.stringify({\n type: OpGroupingManager.groupedBatchOp,\n contents: batch.messages.map((message) => ({\n contents: message.contents === undefined ? undefined : JSON.parse(message.contents),\n metadata: message.metadata,\n compression: message.compression,\n })),\n });\n const groupedBatch = {\n ...batch,\n messages: [\n {\n metadata: { batchId: groupedBatchId },\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n referenceSequenceNumber: batch.messages[0].referenceSequenceNumber,\n contents: serializedContent,\n },\n ],\n };\n return groupedBatch;\n }\n ungroupOp(op) {\n assert(isGroupContents(op.contents), 0x947 /* can only ungroup a grouped batch */);\n const contents = op.contents;\n let fakeCsn = 1;\n return contents.contents.map((subMessage) => ({\n ...op,\n clientSequenceNumber: fakeCsn++,\n contents: subMessage.contents,\n metadata: subMessage.metadata,\n compression: subMessage.compression,\n }));\n }\n shouldGroup(batch) {\n return (\n // Grouped batching must be enabled\n this.config.groupedBatchingEnabled &&\n // The number of ops in the batch must surpass the configured threshold\n // or be empty (to allow for empty batches to be grouped)\n (batch.messages.length === 0 || batch.messages.length >= this.config.opCountThreshold) &&\n // Support for reentrant batches must be explicitly enabled\n (this.config.reentrantBatchGroupingEnabled || batch.hasReentrantOps !== true));\n }\n}\nOpGroupingManager.groupedBatchOp = \"groupedBatch\";\n//# sourceMappingURL=opGroupingManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/** Compose original client ID and client sequence number into BatchId to stamp on the message during reconnect */\nexport function generateBatchId(originalClientId, batchStartCsn) {\n return `${originalClientId}_[${batchStartCsn}]`;\n}\n/**\n * Estimated size of the stringification overhead for an op accumulated\n * from runtime to loader to the service.\n */\nconst opOverhead = 200;\n/**\n * Helper class that manages partial batch & rollback.\n */\nexport class BatchManager {\n get length() {\n return this.pendingBatch.length;\n }\n get contentSizeInBytes() {\n return this.batchContentSize;\n }\n get sequenceNumbers() {\n return {\n referenceSequenceNumber: this.referenceSequenceNumber,\n clientSequenceNumber: this.clientSequenceNumber,\n };\n }\n get referenceSequenceNumber() {\n return this.pendingBatch.length === 0\n ? undefined\n : // Non null asserting here since we are checking the length above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.pendingBatch[this.pendingBatch.length - 1].referenceSequenceNumber;\n }\n constructor(options) {\n this.options = options;\n this.pendingBatch = [];\n this.batchContentSize = 0;\n this.hasReentrantOps = false;\n }\n push(message, reentrant, currentClientSequenceNumber) {\n const contentSize = this.batchContentSize + (message.contents?.length ?? 0);\n const opCount = this.pendingBatch.length;\n this.hasReentrantOps = this.hasReentrantOps || reentrant;\n // Attempt to estimate batch size, aka socket message size.\n // Each op has pretty large envelope, estimating to be 200 bytes.\n // Also content will be strigified, and that adds a lot of overhead due to a lot of escape characters.\n // Not taking it into account, as compression work should help there - compressed payload will be\n // initially stored as base64, and that requires only 2 extra escape characters.\n const socketMessageSize = contentSize + opOverhead * opCount;\n if (socketMessageSize >= this.options.hardLimit) {\n return false;\n }\n if (this.pendingBatch.length === 0) {\n this.clientSequenceNumber = currentClientSequenceNumber;\n }\n this.batchContentSize = contentSize;\n this.pendingBatch.push(message);\n return true;\n }\n get empty() {\n return this.pendingBatch.length === 0;\n }\n /**\n * Gets the pending batch and clears state for the next batch.\n */\n popBatch(batchId) {\n const batch = {\n messages: this.pendingBatch,\n contentSizeInBytes: this.batchContentSize,\n referenceSequenceNumber: this.referenceSequenceNumber,\n hasReentrantOps: this.hasReentrantOps,\n };\n this.pendingBatch = [];\n this.batchContentSize = 0;\n this.clientSequenceNumber = undefined;\n this.hasReentrantOps = false;\n return addBatchMetadata(batch, batchId);\n }\n /**\n * Capture the pending state at this point\n */\n checkpoint() {\n const startPoint = this.pendingBatch.length;\n return {\n rollback: (process) => {\n for (let i = this.pendingBatch.length; i > startPoint;) {\n i--;\n // Non null asserting here since we are iterating though pendingBatch\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const message = this.pendingBatch[i];\n this.batchContentSize -= message.contents?.length ?? 0;\n process(message);\n }\n this.pendingBatch.length = startPoint;\n },\n };\n }\n}\nconst addBatchMetadata = (batch, batchId) => {\n const batchEnd = batch.messages.length - 1;\n const firstMsg = batch.messages[0];\n const lastMsg = batch.messages[batchEnd];\n assert(firstMsg !== undefined && lastMsg !== undefined, 0x9d1 /* expected non-empty batch */);\n const firstMetadata = firstMsg.metadata ?? {};\n const lastMetadata = lastMsg.metadata ?? {};\n // Multi-message batches: mark the first and last messages with the \"batch\" flag indicating batch start/end\n if (batch.messages.length > 1) {\n firstMetadata.batch = true;\n lastMetadata.batch = false;\n firstMsg.metadata = firstMetadata;\n lastMsg.metadata = lastMetadata;\n }\n // If batchId is provided (e.g. in case of resubmit): stamp it on the first message\n if (batchId !== undefined) {\n firstMetadata.batchId = batchId;\n firstMsg.metadata = firstMetadata;\n }\n return batch;\n};\n/**\n * Estimates the real size in bytes on the socket for a given batch. It assumes that\n * the envelope size (and the size of an empty op) is 200 bytes, taking into account\n * extra overhead from stringification.\n *\n * @param batch - the batch to inspect\n * @returns An estimate of the payload size in bytes which will be produced when the batch is sent over the wire\n */\nexport const estimateSocketSize = (batch) => {\n return batch.contentSizeInBytes + opOverhead * batch.messages.length;\n};\nexport const sequenceNumbersMatch = (seqNums, otherSeqNums) => {\n return ((seqNums.referenceSequenceNumber === undefined ||\n otherSeqNums.referenceSequenceNumber === undefined ||\n seqNums.referenceSequenceNumber === otherSeqNums.referenceSequenceNumber) &&\n (seqNums.clientSequenceNumber === undefined ||\n otherSeqNums.clientSequenceNumber === undefined ||\n seqNums.clientSequenceNumber === otherSeqNums.clientSequenceNumber));\n};\n//# sourceMappingURL=batchManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DataCorruptionError, createChildLogger, extractSafePropertiesFromMessage, } from \"@fluidframework/telemetry-utils/internal\";\nimport { ContainerMessageType } from \"../messageTypes.js\";\nimport { estimateSocketSize } from \"./batchManager.js\";\nexport function isChunkedMessage(message) {\n return isChunkedContents(message.contents);\n}\nfunction isChunkedContents(contents) {\n return contents?.type === ContainerMessageType.ChunkedOp;\n}\n/**\n * Responsible for creating and reconstructing chunked messages.\n */\nexport class OpSplitter {\n constructor(chunks, submitBatchFn, chunkSizeInBytes, maxBatchSizeInBytes, logger) {\n this.submitBatchFn = submitBatchFn;\n this.chunkSizeInBytes = chunkSizeInBytes;\n this.maxBatchSizeInBytes = maxBatchSizeInBytes;\n this.chunkMap = new Map(chunks);\n this.logger = createChildLogger({ logger, namespace: \"OpSplitter\" });\n }\n get isBatchChunkingEnabled() {\n return (this.chunkSizeInBytes < Number.POSITIVE_INFINITY && this.submitBatchFn !== undefined);\n }\n get chunks() {\n return this.chunkMap;\n }\n clearPartialChunks(clientId) {\n if (this.chunkMap.has(clientId)) {\n this.chunkMap.delete(clientId);\n }\n }\n addChunk(clientId, chunkedContent, originalMessage) {\n let map = this.chunkMap.get(clientId);\n if (map === undefined) {\n map = [];\n this.chunkMap.set(clientId, map);\n }\n if (chunkedContent.chunkId !== map.length + 1) {\n // We are expecting the chunks to be processed sequentially, in the same order as they are sent.\n // Therefore, the chunkId of the incoming op needs to match the length of the array (1-based indexing)\n // holding the existing chunks for that particular clientId.\n throw new DataCorruptionError(\"Chunk Id mismatch\", {\n ...extractSafePropertiesFromMessage(originalMessage),\n chunkMapLength: map.length,\n chunkId: chunkedContent.chunkId,\n totalChunks: chunkedContent.totalChunks,\n });\n }\n map.push(chunkedContent.contents);\n }\n /**\n * Splits the first op of a compressed batch in chunks, sends the chunks separately and\n * returns a new batch composed of the last chunk and the rest of the ops in the original batch.\n *\n * A compressed batch is formed by one large op at the first position, followed by a series of placeholder ops\n * which are used in order to reserve the sequence numbers for when the first op gets unrolled into the original\n * uncompressed ops at ingestion in the runtime.\n *\n * If the first op is too large, it can be chunked (split into smaller op) which can be sent individually over the wire\n * and accumulate at ingestion, until the last op in the chunk is processed, when the original op is unrolled.\n *\n * This method will send the first N - 1 chunks separately and use the last chunk as the first message in the result batch\n * and then appends the original placeholder ops. This will ensure that the batch semantics of the original (non-compressed) batch\n * are preserved, as the original chunked op will be unrolled by the runtime when the first message in the batch is processed\n * (as it is the last chunk).\n *\n * To illustrate, if the input is `[largeOp, emptyOp, emptyOp]`, `largeOp` will be split into `[chunk1, chunk2, chunk3, chunk4]`.\n * `chunk1`, `chunk2` and `chunk3` will be sent individually and `[chunk4, emptyOp, emptyOp]` will be returned.\n *\n * @remarks - A side effect here is that 1 or more chunks are queued immediately for sending in next JS turn.\n *\n * @param batch - the compressed batch which needs to be processed\n * @returns A new adjusted batch (last chunk + empty placeholders) which can be sent over the wire\n */\n splitFirstBatchMessage(batch) {\n assert(this.isBatchChunkingEnabled, 0x513 /* Chunking needs to be enabled */);\n assert(batch.contentSizeInBytes > 0 && batch.messages.length > 0, 0x514 /* Batch needs to be non-empty */);\n assert(batch.referenceSequenceNumber !== undefined, 0x58a /* Batch must have a reference sequence number if non-empty */);\n assert(this.chunkSizeInBytes !== 0, 0x515 /* Chunk size needs to be non-zero */);\n assert(this.chunkSizeInBytes < this.maxBatchSizeInBytes, 0x516 /* Chunk size needs to be smaller than the max batch size */);\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstMessage = batch.messages[0]; // we expect this to be the large compressed op, which needs to be split\n assert((firstMessage.contents?.length ?? 0) >= this.chunkSizeInBytes, 0x518 /* First message in the batch needs to be chunkable */);\n const restOfMessages = batch.messages.slice(1); // we expect these to be empty ops, created to reserve sequence numbers\n const socketSize = estimateSocketSize(batch);\n const chunks = splitOp(firstMessage, this.chunkSizeInBytes, \n // If we estimate that the socket batch size will exceed the batch limit\n // we will inject an empty op to minimize the risk of the payload failing due to\n // the overhead from the trailing empty ops in the batch.\n socketSize >= this.maxBatchSizeInBytes);\n assert(this.submitBatchFn !== undefined, 0x519 /* We don't support old loaders */);\n // Send the first N-1 chunks immediately\n for (const chunk of chunks.slice(0, -1)) {\n this.submitBatchFn([chunkToBatchMessage(chunk, batch.referenceSequenceNumber)], batch.referenceSequenceNumber);\n }\n // The last chunk will be part of the new batch and needs to\n // preserve the batch metadata of the original batch\n const lastChunk = chunkToBatchMessage(\n // Non null asserting here because of the length assert above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n chunks[chunks.length - 1], batch.referenceSequenceNumber, { batch: firstMessage.metadata?.batch });\n this.logger.sendPerformanceEvent({\n // Used to be \"Chunked compressed batch\"\n eventName: \"CompressedChunkedBatch\",\n length: batch.messages.length,\n sizeInBytes: batch.contentSizeInBytes,\n chunks: chunks.length,\n chunkSizeInBytes: this.chunkSizeInBytes,\n socketSize,\n });\n return {\n messages: [lastChunk, ...restOfMessages],\n contentSizeInBytes: lastChunk.contents?.length ?? 0,\n referenceSequenceNumber: batch.referenceSequenceNumber,\n };\n }\n processChunk(message) {\n assert(isChunkedContents(message.contents), 0x948 /* message not of type ChunkedOp */);\n const contents = message.contents;\n // TODO: Verify whether this should be able to handle server-generated ops (with null clientId)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const clientId = message.clientId;\n const chunkedContent = contents.contents;\n this.addChunk(clientId, chunkedContent, message);\n if (chunkedContent.chunkId < chunkedContent.totalChunks) {\n // We are processing the op in chunks but haven't reached\n // the last chunk yet in order to reconstruct the original op\n return {\n isFinalChunk: false,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const serializedContent = this.chunkMap.get(clientId).join(\"\");\n this.clearPartialChunks(clientId);\n // The final/complete message will contain the data from all the chunks.\n // It will have the sequenceNumber of the last chunk\n const completeMessage = { ...message };\n completeMessage.contents =\n serializedContent === \"\" ? undefined : JSON.parse(serializedContent);\n // back-compat with 1.x builds\n // This is only required / present for non-compressed, chunked ops\n // For compressed ops, we have op grouping enabled, and type of each op is preserved within compressed content.\n completeMessage.type = chunkedContent.originalType;\n completeMessage.metadata = chunkedContent.originalMetadata;\n completeMessage.compression = chunkedContent.originalCompression;\n return {\n message: completeMessage,\n isFinalChunk: true,\n };\n }\n}\nconst chunkToBatchMessage = (chunk, referenceSequenceNumber, metadata = undefined) => {\n const payload = {\n type: ContainerMessageType.ChunkedOp,\n contents: chunk,\n };\n return {\n contents: JSON.stringify(payload),\n metadata,\n referenceSequenceNumber,\n };\n};\n/**\n * Splits an op into smaller ops (chunks), based on the size of the op and the `chunkSizeInBytes` parameter.\n *\n * The last op of the result will be bundled with empty ops in the same batch. There is a risk of the batch payload\n * exceeding the 1MB limit due to the overhead from the empty ops. If the last op is large, the risk is even higher.\n * To minimize the odds, an extra empty op can be added to the result using the `extraOp` parameter.\n *\n * @param op - the op to be split\n * @param chunkSizeInBytes - how large should the chunks be\n * @param extraOp - should an extra empty op be added to the result\n * @returns an array of chunked ops\n */\nexport const splitOp = (op, chunkSizeInBytes, extraOp = false) => {\n const chunks = [];\n assert(op.contents !== undefined && op.contents !== null, 0x51a /* We should have something to chunk */);\n const contentLength = op.contents.length;\n const chunkCount = Math.floor((contentLength - 1) / chunkSizeInBytes) + 1 + (extraOp ? 1 : 0);\n let offset = 0;\n for (let chunkId = 1; chunkId <= chunkCount; chunkId++) {\n const chunk = {\n chunkId,\n contents: op.contents.substr(offset, chunkSizeInBytes),\n totalChunks: chunkCount,\n };\n if (chunkId === chunkCount) {\n // We don't need to port these to all the chunks,\n // as we rebuild the original op when we process the\n // last chunk, therefore it is the only one that needs it.\n chunk.originalMetadata = op.metadata;\n chunk.originalCompression = op.compression;\n // back-compat with 1.x builds\n // 2.x builds only do chunking for compressed ops.\n // originalType is no longer used in such cases, as each op preserves its type within compressed payload.\n // But, if 1.x builds see this op, and there is no type on the message, then it will ignore this message silently.\n // This is really bad, as we will crash on later ops and it's very hard to debug these cases.\n // If we put some known type here, then we will crash on it (as 1.x does not understand compression, and thus will not\n // find info on the op like address of the channel to deliver the op)\n chunk.originalType = \"component\";\n }\n chunks.push(chunk);\n offset += chunkSizeInBytes;\n assert(chunkId >= chunkCount - 1 || offset <= contentLength, 0x58b /* Content offset within bounds */);\n }\n assert(offset >= contentLength, 0x58c /* Content offset equal or larger than content length */);\n assert(chunks.length === chunkCount, 0x5a5 /* Expected number of chunks */);\n return chunks;\n};\n//# sourceMappingURL=opSplitter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/** Syntactic sugar for casting */\nexport function asBatchMetadata(metadata) {\n return metadata;\n}\n/** Syntactic sugar for casting */\nexport function asEmptyBatchLocalOpMetadata(localOpMetadata) {\n return localOpMetadata;\n}\n//# sourceMappingURL=metadata.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { ContainerMessageType, } from \"../messageTypes.js\";\nimport { asBatchMetadata } from \"../metadata.js\";\nimport { isGroupedBatch } from \"./opGroupingManager.js\";\nimport { isChunkedMessage } from \"./opSplitter.js\";\nfunction assertHasClientId(message) {\n assert(message.clientId !== null, 0xa02 /* Server-generated message should not reach RemoteMessageProcessor */);\n}\n/**\n * Stateful class for processing incoming remote messages as the virtualization measures are unwrapped,\n * potentially across numerous inbound ops.\n *\n * @internal\n */\nexport class RemoteMessageProcessor {\n constructor(opSplitter, opDecompressor, opGroupingManager) {\n this.opSplitter = opSplitter;\n this.opDecompressor = opDecompressor;\n this.opGroupingManager = opGroupingManager;\n }\n get partialMessages() {\n return this.opSplitter.chunks;\n }\n clearPartialMessagesFor(clientId) {\n this.opSplitter.clearPartialChunks(clientId);\n }\n /**\n * Ungroups and Unchunks the runtime ops of a batch received over the wire\n * @param remoteMessageCopy - A shallow copy of a message from another client, possibly virtualized\n * (grouped, compressed, and/or chunked).\n * Being a shallow copy, it's considered mutable, meaning no other Container or other parallel procedure\n * depends on this object instance.\n * Note remoteMessageCopy.contents (and other object props) MUST not be modified,\n * but may be overwritten (as is the case with contents).\n *\n * Incoming messages will always have compression, chunking, and grouped batching happen in a defined order and that order cannot be changed.\n * When processing these messages, the order is:\n * 1. If chunked, process the chunk and only continue if this is a final chunk\n * 2. If compressed, decompress the message and store for further unrolling of the decompressed content\n * 3. If grouped, ungroup the message\n * For more details, see https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/src/opLifecycle/README.md#inbound\n *\n * @returns all the unchunked, decompressed, ungrouped, unpacked InboundSequencedContainerRuntimeMessage from a single batch\n * or undefined if the batch is not yet complete.\n */\n process(remoteMessageCopy, logLegacyCase) {\n let message = remoteMessageCopy;\n assertHasClientId(message);\n const clientId = message.clientId;\n if (isChunkedMessage(message)) {\n const chunkProcessingResult = this.opSplitter.processChunk(message);\n // Only continue further if current chunk is the final chunk\n if (!chunkProcessingResult.isFinalChunk) {\n return undefined;\n }\n // This message will always be compressed\n message = chunkProcessingResult.message;\n }\n if (this.opDecompressor.isCompressedMessage(message)) {\n this.opDecompressor.decompressAndStore(message);\n }\n if (this.opDecompressor.currentlyUnrolling) {\n message = this.opDecompressor.unroll(message);\n // Need to unpack after unrolling if not a groupedBatch\n if (!isGroupedBatch(message)) {\n unpack(message);\n }\n }\n if (isGroupedBatch(message)) {\n // We should be awaiting a new batch (batchInProgress undefined)\n assert(this.batchInProgress === undefined, 0x9d3 /* Grouped batch interrupting another batch */);\n const batchId = asBatchMetadata(message.metadata)?.batchId;\n const groupedMessages = this.opGroupingManager.ungroupOp(message).map(unpack);\n return {\n messages: groupedMessages, // Will be [] for an empty batch\n batchStartCsn: message.clientSequenceNumber,\n clientId,\n batchId,\n // If the batch is empty, we need to return the sequence number aside\n emptyBatchSequenceNumber: groupedMessages.length === 0 ? message.sequenceNumber : undefined,\n };\n }\n // Do a final unpack of runtime messages in case the message was not grouped, compressed, or chunked\n unpackRuntimeMessage(message, logLegacyCase);\n const { batchEnded } = this.addMessageToBatch(message);\n if (!batchEnded) {\n // batch not yet complete\n return undefined;\n }\n const completedBatch = this.batchInProgress;\n this.batchInProgress = undefined;\n return completedBatch;\n }\n /**\n * Add the given message to the current batch, and indicate whether the batch is now complete.\n *\n * @returns batchEnded: true if the batch is now complete, batchEnded: false if more messages are expected\n */\n addMessageToBatch(message) {\n const batchMetadataFlag = asBatchMetadata(message.metadata)?.batch;\n if (this.batchInProgress === undefined) {\n // We are waiting for a new batch\n assert(batchMetadataFlag !== false, 0x9d5 /* Unexpected batch end marker */);\n // Start of a new multi-message batch\n if (batchMetadataFlag === true) {\n this.batchInProgress = {\n messages: [message],\n batchId: asBatchMetadata(message.metadata)?.batchId,\n clientId: message.clientId,\n batchStartCsn: message.clientSequenceNumber,\n };\n return { batchEnded: false };\n }\n // Single-message batch (Since metadata flag is undefined)\n this.batchInProgress = {\n messages: [message],\n batchStartCsn: message.clientSequenceNumber,\n clientId: message.clientId,\n batchId: asBatchMetadata(message.metadata)?.batchId,\n };\n return { batchEnded: true };\n }\n assert(batchMetadataFlag !== true, 0x9d6 /* Unexpected batch start marker */);\n this.batchInProgress.messages.push(message);\n return { batchEnded: batchMetadataFlag === false };\n }\n}\n/**\n * Takes an incoming message and if the contents is a string, JSON.parse's it in place\n * @param mutableMessage - op message received\n * @param hasModernRuntimeMessageEnvelope - false if the message does not contain the modern op envelop where message.type is MessageType.Operation\n * @param logLegacyCase - callback to log when legacy op is encountered\n */\nexport function ensureContentsDeserialized(mutableMessage, hasModernRuntimeMessageEnvelope, logLegacyCase) {\n // Currently the loader layer is parsing the contents of the message as JSON if it is a string,\n // so we never expect to see this case.\n // We intend to remove that logic from the Loader, at which point we will have it here.\n // Only hasModernRuntimeMessageEnvelope true will be expected to have JSON contents.\n let didParseJsonContents;\n if (typeof mutableMessage.contents === \"string\" && mutableMessage.contents !== \"\") {\n mutableMessage.contents = JSON.parse(mutableMessage.contents);\n didParseJsonContents = true;\n }\n else {\n didParseJsonContents = false;\n }\n // The DeltaManager parses the contents of the message as JSON if it is a string,\n // so we should never end up parsing it here.\n // Let's observe if we are wrong about this to learn about these cases.\n if (didParseJsonContents) {\n logLegacyCase(\"ensureContentsDeserialized_foundJsonContents\");\n }\n}\n/**\n * For a given message, it moves the nested InboundContainerRuntimeMessage props one level up.\n *\n * The return type illustrates the assumption that the message param\n * becomes a InboundSequencedContainerRuntimeMessage by the time the function returns\n * (but there is no runtime validation of the 'type' or 'compatDetails' values).\n */\nfunction unpack(message) {\n // We assume the contents is an InboundContainerRuntimeMessage (the message is \"packed\")\n const contents = message.contents;\n // We're going to unpack message in-place (promoting those properties of contents up to message itself)\n const messageUnpacked = message;\n messageUnpacked.type = contents.type;\n messageUnpacked.contents = contents.contents;\n if (\"compatDetails\" in contents) {\n messageUnpacked.compatDetails =\n contents.compatDetails;\n }\n return messageUnpacked;\n}\n/**\n * Unpacks runtime messages.\n *\n * @remarks This API makes no promises regarding backward-compatibility. This is internal API.\n * @param message - message (as it observed in storage / service)\n * @returns whether the given message was unpacked\n *\n * @internal\n */\nexport function unpackRuntimeMessage(message, logLegacyCase = () => { }) {\n if (message.type !== MessageType.Operation) {\n // Legacy format, but it's already \"unpacked\",\n // i.e. message.type is actually ContainerMessageType.\n // Or it's non-runtime message.\n // Nothing to do in such case.\n return false;\n }\n // legacy op format?\n // TODO: Unsure if this is a real format we should be concerned with. There doesn't appear to be anything prepared to handle the address member.\n if (message.contents.address !== undefined &&\n message.contents.type === undefined) {\n message.type = ContainerMessageType.FluidDataStoreOp;\n logLegacyCase(\"unpackRuntimeMessage_contentsWithAddress\");\n }\n else {\n // new format\n unpack(message);\n }\n return true;\n}\n//# sourceMappingURL=remoteMessageProcessor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer, Uint8ArrayToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { decompress } from \"lz4js\";\nimport { CompressionAlgorithms } from \"../containerRuntime.js\";\n/**\n * State machine that \"unrolls\" contents of compressed batches of ops after decompressing them.\n * This class relies on some implicit contracts defined below:\n * 1. A compressed batch will have its first message with batch metadata set to true and compressed set to true\n * 2. Messages in the middle of a compressed batch will have neither batch metadata nor the compression property set\n * 3. The final message of a batch will have batch metadata set to false\n * 4. An individually compressed op will have undefined batch metadata and compression set to true\n */\nexport class OpDecompressor {\n constructor(logger) {\n this.activeBatch = false;\n this.processedCount = 0;\n /** Is the decompressed and stored batch only comprised of a single message */\n this.isSingleMessageBatch = false;\n this.logger = createChildLogger({ logger, namespace: \"OpDecompressor\" });\n }\n isCompressedMessage(message) {\n if (message.compression === CompressionAlgorithms.lz4) {\n return true;\n }\n /**\n * Back-compat self healing mechanism for ADO:3538, as loaders from\n * version client_v2.0.0-internal.1.2.0 to client_v2.0.0-internal.2.2.0 do not\n * support adding the proper compression metadata to compressed messages submitted\n * by the runtime. Should be removed after the loader reaches sufficient saturation\n * for a version greater or equal than client_v2.0.0-internal.2.2.0.\n *\n * The condition holds true for compressed messages, regardless of metadata. We are ultimately\n * looking for a message with a single property `packedContents` inside `contents`, of type 'string'\n * with a base64 encoded value.\n */\n try {\n if (message.contents !== null &&\n typeof message.contents === \"object\" &&\n Object.keys(message.contents).length === 1 &&\n typeof message.contents.packedContents ===\n \"string\" &&\n message.contents.packedContents.length > 0 &&\n IsoBuffer.from(message.contents.packedContents, \"base64\").toString(\"base64\") === message.contents.packedContents) {\n this.logger.sendTelemetryEvent({\n eventName: \"LegacyCompression\",\n type: message.type,\n batch: message.metadata?.batch,\n });\n return true;\n }\n }\n catch (err) {\n return false;\n }\n return false;\n }\n get currentlyUnrolling() {\n return this.activeBatch;\n }\n /**\n * Decompress the given compressed message and store it to be subsequently unrolled.\n * The stored message will be of type `any[]` where each element represents a message's `contents`\n */\n decompressAndStore(message) {\n assert(message.compression === undefined || message.compression === CompressionAlgorithms.lz4, 0x511 /* Only lz4 compression is supported */);\n assert(this.isCompressedMessage(message), 0x940 /* provided message should be compressed */);\n assert(this.activeBatch === false, 0x4b8 /* shouldn't have multiple active batches */);\n this.activeBatch = true;\n const batchMetadata = message.metadata?.batch;\n if (batchMetadata === undefined) {\n this.isSingleMessageBatch = true;\n }\n else {\n assert(batchMetadata === true, 0x941 /* invalid batch metadata */);\n }\n const contents = IsoBuffer.from(message.contents.packedContents, \"base64\");\n const decompressedMessage = decompress(contents);\n const intoString = Uint8ArrayToString(decompressedMessage);\n const asObj = JSON.parse(intoString);\n this.rootMessageContents = asObj;\n }\n /**\n * Unroll the next message from the decompressed content provided to {@link decompressAndStore}\n * @returns the unrolled `ISequencedDocumentMessage`\n */\n unroll(message) {\n assert(this.currentlyUnrolling, 0x942 /* not currently unrolling */);\n assert(this.rootMessageContents !== undefined, 0x943 /* missing rootMessageContents */);\n assert(this.rootMessageContents.length > this.processedCount, 0x944 /* no more content to unroll */);\n const batchMetadata = message.metadata?.batch;\n if (batchMetadata === false || this.isSingleMessageBatch) {\n // End of compressed batch\n const returnMessage = newMessage(message, this.rootMessageContents[this.processedCount]);\n this.activeBatch = false;\n this.isSingleMessageBatch = false;\n this.rootMessageContents = undefined;\n this.processedCount = 0;\n return returnMessage;\n }\n else if (batchMetadata === true) {\n // Start of compressed batch\n return newMessage(message, this.rootMessageContents[this.processedCount++]);\n }\n assert(batchMetadata === undefined, 0x945 /* invalid batch metadata */);\n assert(message.contents === undefined, 0x512 /* Expecting empty message */);\n // Continuation of compressed batch\n return newMessage(message, this.rootMessageContents[this.processedCount++]);\n }\n}\n// We should not be mutating the input message nor its metadata\nconst newMessage = (originalMessage, contents) => ({\n ...originalMessage,\n contents,\n compression: undefined,\n // TODO: It should already be the case that we're not modifying any metadata, not clear if/why this shallow clone should be required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n metadata: originalMessage.metadata === undefined\n ? undefined\n : { ...originalMessage.metadata },\n});\n//# sourceMappingURL=opDecompressor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { GenericError, UsageError, createChildLogger, } from \"@fluidframework/telemetry-utils/internal\";\nimport { BatchManager, estimateSocketSize, sequenceNumbersMatch, } from \"./batchManager.js\";\n/**\n * Temporarily increase the stack limit while executing the provided action.\n * If a negative value is provided for `length`, no stack frames will be collected.\n * If Infinity is provided, all frames will be collected.\n *\n * ADO:4663 - add this to the common packages.\n *\n * @param action - action which returns an error\n * @param length - number of stack frames to collect, 50 if unspecified.\n * @returns the result of the action provided\n */\nexport function getLongStack(action, length = 50) {\n const errorObj = Error;\n if (\n /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n // ?? is not logically equivalent when the first clause returns false.\n (Object.getOwnPropertyDescriptor(errorObj, \"stackTraceLimit\") ||\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(errorObj), \"stackTraceLimit\"))?.writable !== true\n /* eslint-enable @typescript-eslint/prefer-nullish-coalescing */\n ) {\n return action();\n }\n const originalStackTraceLimit = errorObj.stackTraceLimit;\n try {\n errorObj.stackTraceLimit = length;\n return action();\n }\n finally {\n errorObj.stackTraceLimit = originalStackTraceLimit;\n }\n}\n/**\n * The Outbox collects messages submitted by the ContainerRuntime into a batch,\n * and then flushes the batch when requested.\n *\n * @remarks There are actually multiple independent batches (some are for a specific message type),\n * to support slight variation in semantics for each batch (e.g. support for rebasing or grouping).\n */\nexport class Outbox {\n constructor(params) {\n this.params = params;\n this.batchRebasesToReport = 5;\n this.rebasing = false;\n /**\n * Track the number of ops which were detected to have a mismatched\n * reference sequence number, in order to self-throttle the telemetry events.\n *\n * This should be removed as part of ADO:2322\n */\n this.maxMismatchedOpsToReport = 3;\n this.mismatchedOpsReported = 0;\n this.logger = createChildLogger({ logger: params.logger, namespace: \"Outbox\" });\n const isCompressionEnabled = this.params.config.compressionOptions.minimumBatchSizeInBytes !==\n Number.POSITIVE_INFINITY;\n // We need to allow infinite size batches if we enable compression\n const hardLimit = isCompressionEnabled ? Infinity : this.params.config.maxBatchSizeInBytes;\n this.mainBatch = new BatchManager({ hardLimit, canRebase: true });\n this.blobAttachBatch = new BatchManager({ hardLimit, canRebase: true });\n this.idAllocationBatch = new BatchManager({ hardLimit, canRebase: false });\n }\n get messageCount() {\n return this.mainBatch.length + this.blobAttachBatch.length + this.idAllocationBatch.length;\n }\n get isEmpty() {\n return this.messageCount === 0;\n }\n /**\n * Detect whether batching has been interrupted by an incoming message being processed. In this case,\n * we will flush the accumulated messages to account for that and create a new batch with the new\n * message as the first message.\n *\n * @remarks - To detect batch interruption, we compare both the reference sequence number\n * (i.e. last message processed by DeltaManager) and the client sequence number of the\n * last message processed by the ContainerRuntime. In the absence of op reentrancy, this\n * pair will remain stable during a single JS turn during which the batch is being built up.\n */\n maybeFlushPartialBatch() {\n const mainBatchSeqNums = this.mainBatch.sequenceNumbers;\n const blobAttachSeqNums = this.blobAttachBatch.sequenceNumbers;\n const idAllocSeqNums = this.idAllocationBatch.sequenceNumbers;\n assert(this.params.config.disablePartialFlush ||\n (sequenceNumbersMatch(mainBatchSeqNums, blobAttachSeqNums) &&\n sequenceNumbersMatch(mainBatchSeqNums, idAllocSeqNums)), 0x58d /* Reference sequence numbers from both batches must be in sync */);\n const currentSequenceNumbers = this.params.getCurrentSequenceNumbers();\n if (sequenceNumbersMatch(mainBatchSeqNums, currentSequenceNumbers) &&\n sequenceNumbersMatch(blobAttachSeqNums, currentSequenceNumbers) &&\n sequenceNumbersMatch(idAllocSeqNums, currentSequenceNumbers)) {\n // The reference sequence numbers are stable, there is nothing to do\n return;\n }\n if (++this.mismatchedOpsReported <= this.maxMismatchedOpsToReport) {\n this.logger.sendTelemetryEvent({\n category: this.params.config.disablePartialFlush ? \"error\" : \"generic\",\n eventName: \"ReferenceSequenceNumberMismatch\",\n mainReferenceSequenceNumber: mainBatchSeqNums.referenceSequenceNumber,\n mainClientSequenceNumber: mainBatchSeqNums.clientSequenceNumber,\n blobAttachReferenceSequenceNumber: blobAttachSeqNums.referenceSequenceNumber,\n blobAttachClientSequenceNumber: blobAttachSeqNums.clientSequenceNumber,\n currentReferenceSequenceNumber: currentSequenceNumbers.referenceSequenceNumber,\n currentClientSequenceNumber: currentSequenceNumbers.clientSequenceNumber,\n }, getLongStack(() => new UsageError(\"Submission of an out of order message\")));\n }\n if (!this.params.config.disablePartialFlush) {\n this.flushAll();\n }\n }\n submit(message) {\n this.maybeFlushPartialBatch();\n this.addMessageToBatchManager(this.mainBatch, message);\n }\n submitBlobAttach(message) {\n this.maybeFlushPartialBatch();\n this.addMessageToBatchManager(this.blobAttachBatch, message);\n // If compression is enabled, we will always successfully receive\n // blobAttach ops and compress then send them at the next JS turn, regardless\n // of the overall size of the accumulated ops in the batch.\n // However, it is more efficient to flush these ops faster, preferably\n // after they reach a size which would benefit from compression.\n if (this.blobAttachBatch.contentSizeInBytes >=\n this.params.config.compressionOptions.minimumBatchSizeInBytes) {\n this.flushInternal(this.blobAttachBatch);\n }\n }\n submitIdAllocation(message) {\n this.maybeFlushPartialBatch();\n this.addMessageToBatchManager(this.idAllocationBatch, message);\n }\n addMessageToBatchManager(batchManager, message) {\n if (!batchManager.push(message, this.isContextReentrant(), this.params.getCurrentSequenceNumbers().clientSequenceNumber)) {\n throw new GenericError(\"BatchTooLarge\", /* error */ undefined, {\n opSize: message.contents?.length ?? 0,\n batchSize: batchManager.contentSizeInBytes,\n count: batchManager.length,\n limit: batchManager.options.hardLimit,\n });\n }\n }\n /**\n * Flush all the batches to the ordering service.\n * This method is expected to be called at the end of a batch.\n * @param resubmittingBatchId - If defined, indicates this is a resubmission of a batch\n * with the given Batch ID, which must be preserved\n */\n flush(resubmittingBatchId) {\n if (this.isContextReentrant()) {\n const error = new UsageError(\"Flushing is not supported inside DDS event handlers\");\n this.params.closeContainer(error);\n throw error;\n }\n this.flushAll(resubmittingBatchId);\n }\n flushAll(resubmittingBatchId) {\n // Don't use resubmittingBatchId for idAllocationBatch.\n // ID Allocation messages are not directly resubmitted so we don't want to reuse the batch ID.\n this.flushInternal(this.idAllocationBatch);\n // We need to flush an empty batch if the main batch *becomes* empty on resubmission.\n // When resubmitting the main batch, the blobAttach batch will always be empty since we don't resubmit them simultaneously.\n // And conversely, the blobAttach will never *become* empty on resubmit.\n // So if both blobAttachBatch and mainBatch are empty, we must submit an empty main batch.\n if (resubmittingBatchId && this.blobAttachBatch.empty && this.mainBatch.empty) {\n this.flushEmptyBatch(resubmittingBatchId);\n return;\n }\n this.flushInternal(this.blobAttachBatch, true /* disableGroupedBatching */, resubmittingBatchId);\n this.flushInternal(this.mainBatch, false /* disableGroupedBatching */, resubmittingBatchId);\n }\n flushEmptyBatch(resubmittingBatchId) {\n const referenceSequenceNumber = this.params.getCurrentSequenceNumbers().referenceSequenceNumber;\n assert(referenceSequenceNumber !== undefined, 0xa01 /* reference sequence number should be defined */);\n const emptyGroupedBatch = this.params.groupingManager.createEmptyGroupedBatch(resubmittingBatchId, referenceSequenceNumber);\n let clientSequenceNumber;\n if (this.params.shouldSend()) {\n clientSequenceNumber = this.sendBatch(emptyGroupedBatch);\n }\n this.params.pendingStateManager.onFlushBatch(emptyGroupedBatch.messages, // This is the single empty Grouped Batch message\n clientSequenceNumber);\n return;\n }\n flushInternal(batchManager, disableGroupedBatching = false, resubmittingBatchId) {\n if (batchManager.empty) {\n return;\n }\n const rawBatch = batchManager.popBatch(resubmittingBatchId);\n const shouldGroup = !disableGroupedBatching && this.params.groupingManager.shouldGroup(rawBatch);\n if (batchManager.options.canRebase && rawBatch.hasReentrantOps === true && shouldGroup) {\n assert(!this.rebasing, 0x6fa /* A rebased batch should never have reentrant ops */);\n // If a batch contains reentrant ops (ops created as a result from processing another op)\n // it needs to be rebased so that we can ensure consistent reference sequence numbers\n // and eventual consistency at the DDS level.\n this.rebase(rawBatch, batchManager);\n return;\n }\n let clientSequenceNumber;\n // Did we disconnect? (i.e. is shouldSend false?)\n // If so, do nothing, as pending state manager will resubmit it correctly on reconnect.\n // Because flush() is a task that executes async (on clean stack), we can get here in disconnected state.\n if (this.params.shouldSend()) {\n const processedBatch = this.compressBatch(shouldGroup ? this.params.groupingManager.groupBatch(rawBatch) : rawBatch);\n clientSequenceNumber = this.sendBatch(processedBatch);\n assert(clientSequenceNumber === undefined || clientSequenceNumber >= 0, 0x9d2 /* unexpected negative clientSequenceNumber (empty batch should yield undefined) */);\n }\n this.params.pendingStateManager.onFlushBatch(rawBatch.messages, clientSequenceNumber);\n }\n /**\n * Rebases a batch. All the ops in the batch are resubmitted to the runtime and\n * they will end up back in the same batch manager they were flushed from and subsequently flushed.\n *\n * @param rawBatch - the batch to be rebased\n */\n rebase(rawBatch, batchManager) {\n assert(!this.rebasing, 0x6fb /* Reentrancy */);\n assert(batchManager.options.canRebase, 0x9a7 /* BatchManager does not support rebase */);\n this.rebasing = true;\n for (const message of rawBatch.messages) {\n this.params.reSubmit({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n content: message.contents,\n localOpMetadata: message.localOpMetadata,\n opMetadata: message.metadata,\n });\n }\n if (this.batchRebasesToReport > 0) {\n this.logger.sendTelemetryEvent({\n eventName: \"BatchRebase\",\n length: rawBatch.messages.length,\n referenceSequenceNumber: rawBatch.referenceSequenceNumber,\n }, new UsageError(\"BatchRebase\"));\n this.batchRebasesToReport--;\n }\n this.flushInternal(batchManager);\n this.rebasing = false;\n }\n isContextReentrant() {\n return this.params.opReentrancy() && !this.rebasing;\n }\n /**\n * As necessary and enabled, compresses and chunks the given batch.\n *\n * @remarks - If chunking happens, a side effect here is that 1 or more chunks are queued immediately for sending in next JS turn.\n *\n * @param batch - Raw or Grouped batch to consider for compression/chunking\n * @returns Either (A) the original batch, (B) a compressed batch (same length as original),\n * or (C) a batch containing the last chunk (plus empty placeholders from compression if applicable).\n */\n compressBatch(batch) {\n if (batch.messages.length === 0 ||\n this.params.config.compressionOptions === undefined ||\n this.params.config.compressionOptions.minimumBatchSizeInBytes >\n batch.contentSizeInBytes ||\n this.params.submitBatchFn === undefined) {\n // Nothing to do if the batch is empty or if compression is disabled or not supported, or if we don't need to compress\n return batch;\n }\n const compressedBatch = this.params.compressor.compressBatch(batch);\n if (this.params.splitter.isBatchChunkingEnabled) {\n return compressedBatch.contentSizeInBytes <= this.params.splitter.chunkSizeInBytes\n ? compressedBatch\n : this.params.splitter.splitFirstBatchMessage(compressedBatch);\n }\n if (compressedBatch.contentSizeInBytes >= this.params.config.maxBatchSizeInBytes) {\n throw new GenericError(\"BatchTooLarge\", /* error */ undefined, {\n batchSize: batch.contentSizeInBytes,\n compressedBatchSize: compressedBatch.contentSizeInBytes,\n count: compressedBatch.messages.length,\n limit: this.params.config.maxBatchSizeInBytes,\n chunkingEnabled: this.params.splitter.isBatchChunkingEnabled,\n compressionOptions: JSON.stringify(this.params.config.compressionOptions),\n socketSize: estimateSocketSize(batch),\n });\n }\n return compressedBatch;\n }\n /**\n * Sends the batch object to the container context to be sent over the wire.\n *\n * @param batch - batch to be sent\n * @returns the clientSequenceNumber of the start of the batch, or undefined if nothing was sent\n */\n sendBatch(batch) {\n const length = batch.messages.length;\n if (length === 0) {\n return undefined; // Nothing submitted\n }\n const socketSize = estimateSocketSize(batch);\n if (socketSize >= this.params.config.maxBatchSizeInBytes) {\n this.logger.sendPerformanceEvent({\n eventName: \"LargeBatch\",\n length: batch.messages.length,\n sizeInBytes: batch.contentSizeInBytes,\n socketSize,\n });\n }\n let clientSequenceNumber;\n if (this.params.submitBatchFn === undefined) {\n // Legacy path - supporting old loader versions. Can be removed only when LTS moves above\n // version that has support for batches (submitBatchFn)\n assert(\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n batch.messages[0].compression === undefined, 0x5a6 /* Compression should not have happened if the loader does not support it */);\n clientSequenceNumber = this.params.legacySendBatchFn(batch);\n }\n else {\n assert(batch.referenceSequenceNumber !== undefined, 0x58e /* Batch must not be empty */);\n clientSequenceNumber = this.params.submitBatchFn(batch.messages.map((message) => ({\n contents: message.contents,\n metadata: message.metadata,\n compression: message.compression,\n referenceSequenceNumber: message.referenceSequenceNumber,\n })), batch.referenceSequenceNumber);\n }\n // Convert from clientSequenceNumber of last message in the batch to clientSequenceNumber of first message.\n clientSequenceNumber -= length - 1;\n assert(clientSequenceNumber >= 0, 0x3d0 /* clientSequenceNumber can't be negative */);\n return clientSequenceNumber;\n }\n /**\n * @returns A checkpoint object per batch that facilitates iterating over the batch messages when rolling back.\n */\n getBatchCheckpoints() {\n // This variable is declared with a specific type so that we have a standard import of the IBatchCheckpoint type.\n // When the type is inferred, the generated .d.ts uses a dynamic import which doesn't resolve.\n const mainBatch = this.mainBatch.checkpoint();\n return {\n mainBatch,\n idAllocationBatch: this.idAllocationBatch.checkpoint(),\n blobAttachBatch: this.blobAttachBatch.checkpoint(),\n };\n }\n}\n//# sourceMappingURL=outbox.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError, createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { compress } from \"lz4js\";\nimport { CompressionAlgorithms } from \"../containerRuntime.js\";\nimport { estimateSocketSize } from \"./batchManager.js\";\n/**\n * Compresses batches of ops. It generates a single compressed op that contains\n * the contents of each op in the batch. It then submits empty ops for each original\n * op to reserve sequence numbers.\n */\nexport class OpCompressor {\n constructor(logger) {\n this.logger = createChildLogger({ logger, namespace: \"OpCompressor\" });\n }\n /**\n * Combines the contents of the batch into a single JSON string and compresses it, putting\n * the resulting string as the first message of the batch. The rest of the messages are\n * empty placeholders to reserve sequence numbers.\n * @param batch - The batch to compress\n * @returns A batch of the same length as the input batch, containing a single compressed message followed by empty placeholders\n */\n compressBatch(batch) {\n assert(batch.contentSizeInBytes > 0 && batch.messages.length > 0, 0x5a4 /* Batch should not be empty */);\n const compressionStart = Date.now();\n const contentsAsBuffer = new TextEncoder().encode(this.serializeBatchContents(batch));\n const compressedContents = compress(contentsAsBuffer);\n const compressedContent = IsoBuffer.from(compressedContents).toString(\"base64\");\n const duration = Date.now() - compressionStart;\n const messages = [];\n messages.push({\n // Non null asserting here because of the length assert above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ...batch.messages[0],\n contents: JSON.stringify({ packedContents: compressedContent }),\n // Non null asserting here because of the length assert above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n metadata: batch.messages[0].metadata,\n compression: CompressionAlgorithms.lz4,\n });\n // Add empty placeholder messages to reserve the sequence numbers\n for (const message of batch.messages.slice(1)) {\n messages.push({\n localOpMetadata: message.localOpMetadata,\n metadata: message.metadata,\n referenceSequenceNumber: message.referenceSequenceNumber,\n });\n }\n const compressedBatch = {\n contentSizeInBytes: compressedContent.length,\n messages,\n referenceSequenceNumber: batch.referenceSequenceNumber,\n };\n if (batch.contentSizeInBytes > 200000) {\n this.logger.sendPerformanceEvent({\n eventName: \"CompressedBatch\",\n duration,\n sizeBeforeCompression: batch.contentSizeInBytes,\n sizeAfterCompression: compressedBatch.contentSizeInBytes,\n opCount: compressedBatch.messages.length,\n socketSize: estimateSocketSize(compressedBatch),\n });\n }\n return compressedBatch;\n }\n /**\n * Combine the batch's content strings into a single JSON string (a serialized array)\n */\n serializeBatchContents(batch) {\n try {\n // Yields a valid JSON array, since each message.contents is already serialized to JSON\n return `[${batch.messages.map(({ contents }) => contents).join(\",\")}]`;\n }\n catch (e) {\n if (e.message === \"Invalid string length\") {\n // This is how JSON.stringify signals that\n // the content size exceeds its capacity\n const error = new UsageError(\"Payload too large\");\n this.logger.sendErrorEvent({\n eventName: \"BatchTooLarge\",\n size: batch.contentSizeInBytes,\n length: batch.messages.length,\n }, error);\n throw error;\n }\n throw e;\n }\n }\n}\n//# sourceMappingURL=opCompressor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Lazy } from \"@fluidframework/core-utils/internal\";\nimport { DataProcessingError, LoggingError, extractSafePropertiesFromMessage, } from \"@fluidframework/telemetry-utils/internal\";\nimport Deque from \"double-ended-queue\";\nimport { v4 as uuid } from \"uuid\";\nimport { asBatchMetadata, asEmptyBatchLocalOpMetadata } from \"./metadata.js\";\nimport { generateBatchId } from \"./opLifecycle/index.js\";\nfunction isEmptyBatchPendingMessage(message) {\n const content = JSON.parse(message.content);\n return content.type === \"groupedBatch\" && content.contents?.length === 0;\n}\nfunction buildPendingMessageContent(message) {\n // IMPORTANT: Order matters here, this must match the order of the properties used\n // when submitting the message.\n const { type, contents, compatDetails } = message;\n // Any properties that are not defined, won't be emitted by stringify.\n return JSON.stringify({ type, contents, compatDetails });\n}\nfunction typesOfKeys(obj) {\n return Object.keys(obj).reduce((acc, key) => {\n acc[key] = typeof obj[key];\n return acc;\n }, {});\n}\nfunction scrubAndStringify(message) {\n // Scrub the whole object in case there are unexpected keys\n const scrubbed = typesOfKeys(message);\n // For these known/expected keys, we can either drill in (for contents)\n // or just use the value as-is (since it's not personal info)\n scrubbed.contents = message.contents && typesOfKeys(message.contents);\n scrubbed.compatDetails = message.compatDetails;\n scrubbed.type = message.type;\n return JSON.stringify(scrubbed);\n}\nfunction withoutLocalOpMetadata(message) {\n return {\n ...message,\n localOpMetadata: undefined,\n };\n}\n/**\n * Get the effective batch ID for a pending message.\n * If the batch ID is already present in the message's op metadata, return it.\n * Otherwise, generate a new batch ID using the client ID and batch start CSN.\n * @param pendingMessage - The pending message\n * @returns The effective batch ID\n */\nfunction getEffectiveBatchId(pendingMessage) {\n return (asBatchMetadata(pendingMessage.opMetadata)?.batchId ??\n generateBatchId(pendingMessage.batchInfo.clientId, pendingMessage.batchInfo.batchStartCsn));\n}\n/**\n * PendingStateManager is responsible for maintaining the messages that have not been sent or have not yet been\n * acknowledged by the server. It also maintains the batch information for both automatically and manually flushed\n * batches along with the messages.\n * When the Container reconnects, it replays the pending states, which includes manual flushing\n * of messages and triggering resubmission of unacked ops.\n *\n * It verifies that all the ops are acked, are received in the right order and batch information is correct.\n */\nexport class PendingStateManager {\n /**\n * The pending messages count. Includes `pendingMessages` and `initialMessages` to keep in sync with\n * 'hasPendingMessages'.\n */\n get pendingMessagesCount() {\n return this.pendingMessages.length + this.initialMessages.length;\n }\n /**\n * The minimumPendingMessageSequenceNumber is the minimum of the first pending message and the first initial message.\n *\n * We need this so that we can properly keep local data and maintain the correct sequence window.\n */\n get minimumPendingMessageSequenceNumber() {\n return this.pendingMessages.peekFront()?.referenceSequenceNumber;\n }\n /**\n * Called to check if there are any pending messages in the pending message queue.\n * @returns A boolean indicating whether there are messages or not.\n */\n hasPendingMessages() {\n return this.pendingMessagesCount !== 0;\n }\n getLocalState(snapshotSequenceNumber) {\n assert(this.initialMessages.isEmpty(), 0x2e9 /* \"Must call getLocalState() after applying initial states\" */);\n // Using snapshot sequence number to filter ops older than our latest snapshot.\n // Such ops should not be declared in pending/stashed state. Snapshot seq num will not\n // be available when the container is not attached. Therefore, no filtering is needed.\n const newSavedOps = [...this.savedOps].filter((message) => {\n assert(message.sequenceNumber !== undefined, 0x97c /* saved op should already have a sequence number */);\n return message.sequenceNumber > (snapshotSequenceNumber ?? 0);\n });\n this.pendingMessages.toArray().forEach((message) => {\n if (snapshotSequenceNumber !== undefined &&\n message.referenceSequenceNumber < snapshotSequenceNumber) {\n throw new LoggingError(\"trying to stash ops older than our latest snapshot\");\n }\n });\n return {\n pendingStates: [\n ...newSavedOps,\n ...this.pendingMessages.toArray().map(withoutLocalOpMetadata),\n ],\n };\n }\n constructor(stateHandler, stashedLocalState, logger) {\n this.stateHandler = stateHandler;\n this.logger = logger;\n /** Messages that will need to be resubmitted if not ack'd before the next reconnection */\n this.pendingMessages = new Deque();\n /** Messages stashed from a previous container, now being rehydrated. Need to be resubmitted. */\n this.initialMessages = new Deque();\n /**\n * Sequenced local ops that are saved when stashing since pending ops may depend on them\n */\n this.savedOps = [];\n /** Used to stand in for batchStartCsn for messages that weren't submitted (so no CSN) */\n this.negativeCounter = -1;\n this.disposeOnce = new Lazy(() => {\n this.initialMessages.clear();\n this.pendingMessages.clear();\n });\n this.dispose = () => this.disposeOnce.value;\n if (stashedLocalState?.pendingStates) {\n this.initialMessages.push(...stashedLocalState.pendingStates);\n }\n }\n get disposed() {\n return this.disposeOnce.evaluated;\n }\n /**\n * The given batch has been flushed, and needs to be tracked locally until the corresponding\n * acks are processed, to ensure it is successfully sent.\n * @param batch - The batch that was flushed\n * @param clientSequenceNumber - The CSN of the first message in the batch,\n * or undefined if the batch was not yet sent (e.g. by the time we flushed we lost the connection)\n */\n onFlushBatch(batch, clientSequenceNumber) {\n // If we're connected this is the client of the current connection,\n // otherwise it's the clientId that just disconnected\n // It's only undefined if we've NEVER connected. This is a tight corner case and we can\n // simply make up a unique ID in this case.\n const clientId = this.stateHandler.clientId() ?? uuid();\n // If the batch was not yet sent, we need to assign a unique batchStartCsn\n // Use a negative number to distinguish these from real CSNs\n const batchStartCsn = clientSequenceNumber ?? this.negativeCounter--;\n for (const message of batch) {\n const { contents: content = \"\", referenceSequenceNumber, localOpMetadata, metadata: opMetadata, } = message;\n const pendingMessage = {\n type: \"message\",\n referenceSequenceNumber,\n content,\n localOpMetadata,\n opMetadata,\n // Note: We only will read this off the first message, but put it on all for simplicity\n batchInfo: { clientId, batchStartCsn, length: batch.length },\n };\n this.pendingMessages.push(pendingMessage);\n }\n }\n /**\n * Applies stashed ops at their reference sequence number so they are ready to be ACKed or resubmitted\n * @param seqNum - Sequence number at which to apply ops. Will apply all ops if seqNum is undefined.\n */\n async applyStashedOpsAt(seqNum) {\n // apply stashed ops at sequence number\n while (!this.initialMessages.isEmpty()) {\n if (seqNum !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const peekMessage = this.initialMessages.peekFront();\n if (peekMessage.referenceSequenceNumber > seqNum) {\n break; // nothing left to do at this sequence number\n }\n if (peekMessage.referenceSequenceNumber < seqNum) {\n throw new Error(\"loaded from snapshot too recent to apply stashed ops\");\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextMessage = this.initialMessages.shift();\n // Nothing to apply if the message is an empty batch.\n // We still need to track it for resubmission.\n try {\n if (isEmptyBatchPendingMessage(nextMessage)) {\n nextMessage.localOpMetadata = { emptyBatch: true }; // equivalent to applyStashedOp for empty batch\n patchbatchInfo(nextMessage); // Back compat\n this.pendingMessages.push(nextMessage);\n continue;\n }\n // applyStashedOp will cause the DDS to behave as if it has sent the op but not actually send it\n const localOpMetadata = await this.stateHandler.applyStashedOp(nextMessage.content);\n if (!this.stateHandler.isAttached()) {\n if (localOpMetadata !== undefined) {\n throw new Error(\"Local Op Metadata must be undefined when not attached\");\n }\n }\n else {\n nextMessage.localOpMetadata = localOpMetadata;\n // then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect\n patchbatchInfo(nextMessage); // Back compat\n this.pendingMessages.push(nextMessage);\n }\n }\n catch (error) {\n throw DataProcessingError.wrapIfUnrecognized(error, \"applyStashedOp\", nextMessage);\n }\n }\n }\n /**\n * Processes an inbound batch of messages - May be local or remote.\n *\n * @param batch - The inbound batch of messages to process. Could be local or remote.\n * @param local - true if we submitted this batch and expect corresponding pending messages\n * @returns The inbound batch's messages with localOpMetadata \"zipped\" in.\n *\n * @remarks Closes the container if:\n * - The batchStartCsn doesn't match for local batches\n */\n processInboundBatch(batch, local) {\n if (local) {\n return this.processPendingLocalBatch(batch);\n }\n // No localOpMetadata for remote messages\n return batch.messages.map((message) => ({ message }));\n }\n /**\n * Processes the incoming batch from the server that was submitted by this client.\n * It verifies that messages are received in the right order and that the batch information is correct.\n * @param batch - The inbound batch (originating from this client) to correlate with the pending local state\n * @returns The inbound batch's messages with localOpMetadata \"zipped\" in.\n */\n processPendingLocalBatch(batch) {\n this.onLocalBatchBegin(batch);\n // Empty batch\n if (batch.messages.length === 0) {\n assert(batch.emptyBatchSequenceNumber !== undefined, 0x9fb /* Expected sequence number for empty batch */);\n const localOpMetadata = this.processNextPendingMessage(batch.emptyBatchSequenceNumber);\n assert(asEmptyBatchLocalOpMetadata(localOpMetadata)?.emptyBatch === true, 0xa20 /* Expected empty batch marker */);\n return [];\n }\n return batch.messages.map((message) => ({\n message,\n localOpMetadata: this.processNextPendingMessage(message.sequenceNumber, message),\n }));\n }\n /**\n * Processes the pending local copy of message that's been ack'd by the server.\n * @param sequenceNumber - The sequenceNumber from the server corresponding to the next pending message.\n * @param message - [optional] The entire incoming message, for comparing contents with the pending message for extra validation.\n * @throws DataProcessingError if the pending message content doesn't match the incoming message content.\n * @returns - The localOpMetadata of the next pending message, to be sent to whoever submitted the original message.\n */\n processNextPendingMessage(sequenceNumber, message) {\n const pendingMessage = this.pendingMessages.peekFront();\n assert(pendingMessage !== undefined, 0x169 /* \"No pending message found for this remote message\" */);\n pendingMessage.sequenceNumber = sequenceNumber;\n this.savedOps.push(withoutLocalOpMetadata(pendingMessage));\n this.pendingMessages.shift();\n // message is undefined in the Empty Batch case,\n // because we don't have an incoming message to compare and pendingMessage is just a placeholder anyway.\n if (message !== undefined) {\n const messageContent = buildPendingMessageContent(message);\n // Stringified content should match\n if (pendingMessage.content !== messageContent) {\n const pendingContentObj = JSON.parse(pendingMessage.content);\n const incomingContentObj = JSON.parse(messageContent);\n const contentsMatch = pendingContentObj.contents === incomingContentObj.contents ||\n (pendingContentObj.contents !== undefined &&\n incomingContentObj.contents !== undefined &&\n JSON.stringify(pendingContentObj.contents) ===\n JSON.stringify(incomingContentObj.contents));\n this.logger.sendErrorEvent({\n eventName: \"unexpectedAckReceived\",\n details: {\n pendingContentScrubbed: scrubAndStringify(pendingContentObj),\n incomingContentScrubbed: scrubAndStringify(incomingContentObj),\n contentsMatch,\n },\n });\n throw DataProcessingError.create(\"pending local message content mismatch\", \"unexpectedAckReceived\", message);\n }\n }\n return pendingMessage.localOpMetadata;\n }\n /**\n * Check if the incoming batch matches the batch info for the next pending message.\n */\n onLocalBatchBegin(batch) {\n // Get the next message from the pending queue. Verify a message exists.\n const pendingMessage = this.pendingMessages.peekFront();\n assert(pendingMessage !== undefined, 0xa21 /* No pending message found as we start processing this remote batch */);\n // Note: This could be undefined if this batch became empty on resubmit.\n // In this case the next pending message is an empty batch marker.\n // Empty batches became empty on Resubmit, and submit them and track them in case\n // a different fork of this container also submitted the same batch (and it may not be empty for that fork).\n const firstMessage = batch.messages.length > 0 ? batch.messages[0] : undefined;\n const expectedPendingBatchLength = batch.messages.length === 0 ? 1 : batch.messages.length;\n // We expect the incoming batch to be of the same length, starting at the same clientSequenceNumber,\n // as the batch we originally submitted.\n // We have another later check to compare the message contents, which we'd expect to fail if this check does,\n // so we don't throw here, merely log. In a later release this check may replace that one.\n if (pendingMessage.batchInfo.batchStartCsn !== batch.batchStartCsn ||\n (pendingMessage.batchInfo.length >= 0 && // -1 length is back compat and isn't suitable for this check\n pendingMessage.batchInfo.length !== expectedPendingBatchLength)) {\n this.logger?.sendErrorEvent({\n eventName: \"BatchInfoMismatch\",\n details: {\n pendingBatchCsn: pendingMessage.batchInfo.batchStartCsn,\n batchStartCsn: batch.batchStartCsn,\n pendingBatchLength: pendingMessage.batchInfo.length,\n batchLength: batch.messages.length,\n pendingMessageBatchMetadata: asBatchMetadata(pendingMessage.opMetadata)?.batch,\n messageBatchMetadata: asBatchMetadata(firstMessage?.metadata)?.batch,\n },\n messageDetails: firstMessage && extractSafePropertiesFromMessage(firstMessage),\n });\n }\n }\n /**\n * Called when the Container's connection state changes. If the Container gets connected, it replays all the pending\n * states in its queue. This includes triggering resubmission of unacked ops.\n * ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)\n */\n replayPendingStates() {\n assert(this.stateHandler.connected(), 0x172 /* \"The connection state is not consistent with the runtime\" */);\n // This assert suggests we are about to send same ops twice, which will result in data loss.\n assert(this.clientIdFromLastReplay !== this.stateHandler.clientId(), 0x173 /* \"replayPendingStates called twice for same clientId!\" */);\n this.clientIdFromLastReplay = this.stateHandler.clientId();\n assert(this.initialMessages.isEmpty(), 0x174 /* \"initial states should be empty before replaying pending\" */);\n const initialPendingMessagesCount = this.pendingMessages.length;\n let remainingPendingMessagesCount = this.pendingMessages.length;\n // Process exactly `pendingMessagesCount` items in the queue as it represents the number of messages that were\n // pending when we connected. This is important because the `reSubmitFn` might add more items in the queue\n // which must not be replayed.\n while (remainingPendingMessagesCount > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let pendingMessage = this.pendingMessages.shift();\n remainingPendingMessagesCount--;\n const batchMetadataFlag = asBatchMetadata(pendingMessage.opMetadata)?.batch;\n assert(batchMetadataFlag !== false, 0x41b /* We cannot process batches in chunks */);\n // The next message starts a batch (possibly single-message), and we'll need its batchId.\n const batchId = getEffectiveBatchId(pendingMessage);\n // Resubmit no messages, with the batchId. Will result in another empty batch marker.\n if (asEmptyBatchLocalOpMetadata(pendingMessage.localOpMetadata)?.emptyBatch === true) {\n this.stateHandler.reSubmitBatch([], batchId);\n continue;\n }\n /**\n * We must preserve the distinct batches on resubmit.\n * Note: It is not possible for the PendingStateManager to receive a partially acked batch. It will\n * either receive the whole batch ack or nothing at all. @see ScheduleManager for how this works.\n */\n if (batchMetadataFlag === undefined) {\n // Single-message batch\n this.stateHandler.reSubmitBatch([\n {\n content: pendingMessage.content,\n localOpMetadata: pendingMessage.localOpMetadata,\n opMetadata: pendingMessage.opMetadata,\n },\n ], batchId);\n continue;\n }\n // else: batchMetadataFlag === true (It's a typical multi-message batch)\n assert(remainingPendingMessagesCount > 0, 0x554 /* Last pending message cannot be a batch begin */);\n const batch = [];\n // check is >= because batch end may be last pending message\n while (remainingPendingMessagesCount >= 0) {\n batch.push({\n content: pendingMessage.content,\n localOpMetadata: pendingMessage.localOpMetadata,\n opMetadata: pendingMessage.opMetadata,\n });\n if (pendingMessage.opMetadata?.batch === false) {\n break;\n }\n assert(remainingPendingMessagesCount > 0, 0x555 /* No batch end found */);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n pendingMessage = this.pendingMessages.shift();\n remainingPendingMessagesCount--;\n assert(pendingMessage.opMetadata?.batch !== true, 0x556 /* Batch start needs a corresponding batch end */);\n }\n this.stateHandler.reSubmitBatch(batch, batchId);\n }\n // pending ops should no longer depend on previous sequenced local ops after resubmit\n this.savedOps = [];\n // We replayPendingStates on read connections too - we expect these to get nack'd though, and to then reconnect\n // on a write connection and replay again. This filters out the replay that happens on the read connection so\n // we only see the replays on write connections (that have a chance to go through).\n if (this.stateHandler.isActiveConnection()) {\n this.logger?.sendTelemetryEvent({\n eventName: \"PendingStatesReplayed\",\n count: initialPendingMessagesCount,\n clientId: this.stateHandler.clientId(),\n });\n }\n }\n}\n/** For back-compat if trying to apply stashed ops that pre-date batchInfo */\nfunction patchbatchInfo(message) {\n const batchInfo = message.batchInfo;\n if (batchInfo === undefined) {\n // Using uuid guarantees uniqueness, retaining existing behavior\n message.batchInfo = { clientId: uuid(), batchStartCsn: -1, length: -1 };\n }\n}\n//# sourceMappingURL=pendingStateManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { formatTick } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there\n * is more than one op a particular run of the queue. It does not schedule if there is just one\n * op or just one batch in the run. It does the following two things:\n *\n * 1. If the ops have been processed for more than a specific amount of time, it pauses the queue\n * and calls setTimeout to schedule a resume of the queue. This ensures that we don't block\n * the JS thread for a long time processing ops synchronously (for example, when catching up\n * ops right after boot or catching up ops / delayed realizing data stores by summarizer).\n *\n * 2. If we scheduled a particular run of the queue, it logs telemetry for the number of ops\n * processed, the time and number of turns it took to process the ops.\n */\nexport class DeltaScheduler {\n constructor(deltaManager, logger) {\n this.logger = logger;\n // The increase in time for processing ops after each turn.\n this.processingTimeIncrement = 10;\n this.currentAllowedProcessingTimeForTurn = DeltaScheduler.processingTime;\n // This keeps track of the number of times inbound queue has been scheduled. After a particular\n // count, we log telemetry for the number of ops processed, the time and number of turns it took\n // to process the ops.\n this.schedulingCount = 0;\n this.deltaManager = deltaManager;\n this.deltaManager.inbound.on(\"idle\", () => {\n this.inboundQueueIdle();\n });\n }\n batchBegin(message) {\n if (!this.processingStartTime) {\n this.processingStartTime = performance.now();\n }\n if (this.schedulingLog === undefined && this.schedulingCount % 500 === 0) {\n // Every 500th time we are scheduling the inbound queue, we log telemetry for the\n // number of ops processed, the time and number of turns it took to process the ops.\n this.schedulingLog = {\n opsRemainingToProcess: 0,\n numberOfTurns: 1,\n totalProcessingTime: 0,\n numberOfBatchesProcessed: 0,\n firstSequenceNumber: message.sequenceNumber,\n lastSequenceNumber: message.sequenceNumber,\n startTime: performance.now(),\n };\n }\n }\n batchEnd(message) {\n if (this.schedulingLog) {\n this.schedulingLog.numberOfBatchesProcessed++;\n this.schedulingLog.lastSequenceNumber = message.sequenceNumber;\n this.schedulingLog.opsRemainingToProcess = this.deltaManager.inbound.length;\n }\n if (this.shouldRunScheduler()) {\n const currentTime = performance.now();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const elapsedTime = currentTime - this.processingStartTime;\n if (elapsedTime > this.currentAllowedProcessingTimeForTurn) {\n // We have processed ops for more than the total processing time. So, pause the\n // queue, yield the thread and schedule a resume.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.deltaManager.inbound.pause();\n // Increase the total processing time. Keep doing this after each turn until all the ops have\n // been processed. This way we keep the responsiveness at the beginning while also making sure\n // that all the ops process fairly quickly.\n this.currentAllowedProcessingTimeForTurn += this.processingTimeIncrement;\n // If we are logging the telemetry this time, update the telemetry log object.\n if (this.schedulingLog) {\n this.schedulingLog.numberOfTurns++;\n this.schedulingLog.totalProcessingTime += elapsedTime;\n }\n setTimeout(() => {\n if (this.schedulingLog) {\n this.logger.sendTelemetryEvent({\n eventName: \"InboundOpsPartialProcessingTime\",\n duration: formatTick(elapsedTime),\n opsProcessed: this.schedulingLog.lastSequenceNumber -\n this.schedulingLog.firstSequenceNumber +\n 1,\n opsRemainingToProcess: this.deltaManager.inbound.length,\n processingTime: formatTick(this.schedulingLog.totalProcessingTime),\n numberOfTurns: this.schedulingLog.numberOfTurns,\n batchesProcessed: this.schedulingLog.numberOfBatchesProcessed,\n timeToResume: formatTick(performance.now() - currentTime),\n });\n }\n this.deltaManager.inbound.resume();\n });\n this.processingStartTime = undefined;\n }\n }\n }\n inboundQueueIdle() {\n if (this.schedulingLog) {\n // Add the time taken for processing the final ops to the total processing time in the\n // telemetry log object.\n const currentTime = performance.now();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.schedulingLog.totalProcessingTime += currentTime - this.processingStartTime;\n this.logger.sendTelemetryEvent({\n eventName: \"InboundOpsProcessingTime\",\n opsRemainingToProcess: this.schedulingLog.opsRemainingToProcess,\n numberOfTurns: this.schedulingLog.numberOfTurns,\n processingTime: formatTick(this.schedulingLog.totalProcessingTime),\n opsProcessed: this.schedulingLog.lastSequenceNumber - this.schedulingLog.firstSequenceNumber + 1,\n batchesProcessed: this.schedulingLog.numberOfBatchesProcessed,\n duration: formatTick(currentTime - this.schedulingLog.startTime),\n schedulingCount: this.schedulingCount,\n });\n this.schedulingLog = undefined;\n }\n // If we scheduled this batch of the inbound queue, increment the counter that tracks the\n // number of times we have done this.\n this.schedulingCount++;\n // Reset the processing times.\n this.processingStartTime = undefined;\n this.currentAllowedProcessingTimeForTurn = DeltaScheduler.processingTime;\n }\n /**\n * This function tells whether we should run the scheduler.\n */\n shouldRunScheduler() {\n // If there are still ops in the queue after the one we are processing now, we should\n // run the scheduler.\n return this.deltaManager.inbound.length > 0;\n }\n}\n// The time for processing ops in a single turn.\nDeltaScheduler.processingTime = 50;\n//# sourceMappingURL=deltaScheduler.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport { DataCorruptionError, DataProcessingError, createChildLogger, extractSafePropertiesFromMessage, } from \"@fluidframework/telemetry-utils/internal\";\nimport { DeltaScheduler } from \"./deltaScheduler.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\n/**\n * This class has the following responsibilities:\n *\n * 1. It tracks batches as we process ops and raises \"batchBegin\" and \"batchEnd\" events.\n * As part of it, it validates batch correctness (i.e. no system ops in the middle of batch)\n *\n * 2. It creates instance of ScheduleManagerCore that ensures we never start processing ops from batch\n * unless all ops of the batch are in.\n */\nexport class ScheduleManager {\n constructor(deltaManager, emitter, getClientId, logger) {\n this.deltaManager = deltaManager;\n this.emitter = emitter;\n this.getClientId = getClientId;\n this.logger = logger;\n this.hitError = false;\n this.deltaScheduler = new DeltaScheduler(this.deltaManager, createChildLogger({ logger: this.logger, namespace: \"DeltaScheduler\" }));\n void new ScheduleManagerCore(deltaManager, getClientId, logger);\n }\n beforeOpProcessing(message) {\n if (this.batchClientId !== message.clientId) {\n assert(this.batchClientId === undefined, 0x2a2 /* \"Batch is interrupted by other client op. Should be caught by trackPending()\" */);\n // This could be the beginning of a new batch or an individual message.\n this.emitter.emit(\"batchBegin\", message);\n this.deltaScheduler.batchBegin(message);\n const batch = message?.metadata?.batch;\n // TODO: Verify whether this should be able to handle server-generated ops (with null clientId)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.batchClientId = batch ? message.clientId : undefined;\n }\n }\n afterOpProcessing(error, message) {\n // If this is no longer true, we need to revisit what we do where we set this.hitError.\n assert(!this.hitError, 0x2a3 /* \"container should be closed on any error\" */);\n if (error) {\n // We assume here that loader will close container and stop processing all future ops.\n // This is implicit dependency. If this flow changes, this code might no longer be correct.\n this.hitError = true;\n this.batchClientId = undefined;\n this.emitter.emit(\"batchEnd\", error, message);\n this.deltaScheduler.batchEnd(message);\n return;\n }\n const batch = message?.metadata?.batch;\n // If no batchClientId has been set then we're in an individual batch. Else, if we get\n // batch end metadata, this is end of the current batch.\n if (this.batchClientId === undefined || batch === false) {\n this.batchClientId = undefined;\n this.emitter.emit(\"batchEnd\", undefined, message);\n this.deltaScheduler.batchEnd(message);\n return;\n }\n }\n}\n/**\n * This class controls pausing and resuming of inbound queue to ensure that we never\n * start processing ops in a batch IF we do not have all ops in the batch.\n */\nclass ScheduleManagerCore {\n constructor(deltaManager, getClientId, logger) {\n this.deltaManager = deltaManager;\n this.getClientId = getClientId;\n this.logger = logger;\n this.localPaused = false;\n this.timePaused = 0;\n this.batchCount = 0;\n // Listen for delta manager sends and add batch metadata to messages\n this.deltaManager.on(\"prepareSend\", (messages) => {\n if (messages.length === 0) {\n return;\n }\n // First message will have the batch flag set to true if doing a batched send\n // Non null asserting because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstMessageMetadata = messages[0].metadata;\n if (!firstMessageMetadata?.batch) {\n return;\n }\n // If the batch contains only a single op, clear the batch flag.\n if (messages.length === 1) {\n delete firstMessageMetadata.batch;\n return;\n }\n // Set the batch flag to false on the last message to indicate the end of the send batch\n // Non null asserting here because of the length check at the start of the function\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const lastMessage = messages[messages.length - 1];\n // TODO: It's not clear if this shallow clone is required, as opposed to just setting \"batch\" to false.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n lastMessage.metadata = { ...lastMessage.metadata, batch: false };\n });\n // Listen for updates and peek at the inbound\n this.deltaManager.inbound.on(\"push\", (message) => {\n this.trackPending(message);\n });\n // Start with baseline - empty inbound queue.\n assert(!this.localPaused, 0x293 /* \"initial state\" */);\n const allPending = this.deltaManager.inbound.toArray();\n for (const pending of allPending) {\n this.trackPending(pending);\n }\n // We are intentionally directly listening to the \"op\" to inspect system ops as well.\n // If we do not observe system ops, we are likely to hit 0x296 assert when system ops\n // precedes start of incomplete batch.\n this.deltaManager.on(\"op\", (message) => this.afterOpProcessing(message));\n }\n /**\n * The only public function in this class - called when we processed an op,\n * to make decision if op processing should be paused or not after that.\n */\n afterOpProcessing(message) {\n assert(!this.localPaused, 0x294 /* \"can't have op processing paused if we are processing an op\" */);\n // If the inbound queue is ever empty, nothing to do!\n if (this.deltaManager.inbound.length === 0) {\n assert(this.pauseSequenceNumber === undefined, 0x295 /* \"there should be no pending batch if we have no ops\" */);\n return;\n }\n // The queue is\n // 1. paused only when the next message to be processed is the beginning of a batch. Done in two places:\n // - here (processing ops until reaching start of incomplete batch)\n // - in trackPending(), when queue was empty and start of batch showed up.\n // 2. resumed when batch end comes in (in trackPending())\n // do we have incomplete batch to worry about?\n if (this.pauseSequenceNumber !== undefined) {\n if (message.sequenceNumber >= this.pauseSequenceNumber) {\n throw DataProcessingError.create(\n // Former assert 0x296\n \"Incomplete batch\", \"ScheduleManager\", message, {\n type: message.type,\n contentType: typeof message.contents,\n batch: message.metadata?.batch,\n compression: message.compression,\n pauseSeqNum: this.pauseSequenceNumber,\n });\n }\n // If the next op is the start of incomplete batch, then we can't process it until it's fully in - pause!\n if (message.sequenceNumber + 1 === this.pauseSequenceNumber) {\n this.pauseQueue();\n }\n }\n }\n pauseQueue() {\n assert(!this.localPaused, 0x297 /* \"always called from resumed state\" */);\n this.localPaused = true;\n this.timePaused = performance.now();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.deltaManager.inbound.pause();\n }\n resumeQueue(startBatch, messageEndBatch) {\n const endBatch = messageEndBatch.sequenceNumber;\n const duration = this.localPaused ? performance.now() - this.timePaused : undefined;\n this.batchCount++;\n if (this.batchCount % 1000 === 1) {\n this.logger.sendTelemetryEvent({\n eventName: \"BatchStats\",\n sequenceNumber: endBatch,\n length: endBatch - startBatch + 1,\n msnDistance: endBatch - messageEndBatch.minimumSequenceNumber,\n duration,\n batchCount: this.batchCount,\n interrupted: this.localPaused,\n });\n }\n // Return early if no change in value\n if (!this.localPaused) {\n return;\n }\n this.localPaused = false;\n this.deltaManager.inbound.resume();\n }\n /**\n * Called for each incoming op (i.e. inbound \"push\" notification)\n */\n trackPending(message) {\n assert(this.deltaManager.inbound.length !== 0, 0x298 /* \"we have something in the queue that generates this event\" */);\n assert((this.currentBatchClientId === undefined) === (this.pauseSequenceNumber === undefined), 0x299 /* \"non-synchronized state\" */);\n const metadata = message.metadata;\n // batchMetadata will be true for the message that starts a batch, false for the one that ends it, and\n // undefined for all other messages.\n const batchMetadata = metadata?.batch;\n // Protocol messages are never part of a runtime batch of messages\n if (!isRuntimeMessage(message)) {\n // Protocol messages should never show up in the middle of the batch!\n if (this.currentBatchClientId !== undefined) {\n throw DataProcessingError.create(\"Received a system message during batch processing\", // Formerly known as assert 0x29a\n \"trackPending\", message, {\n runtimeVersion: pkgVersion,\n batchClientId: \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.currentBatchClientId === null ? \"null\" : this.currentBatchClientId,\n pauseSequenceNumber: this.pauseSequenceNumber,\n localBatch: this.currentBatchClientId === this.getClientId(),\n messageType: message.type,\n });\n }\n assert(batchMetadata === undefined, 0x29b /* \"system op in a batch?\" */);\n assert(!this.localPaused, 0x29c /* \"we should be processing ops when there is no active batch\" */);\n return;\n }\n if (this.currentBatchClientId === undefined && batchMetadata === undefined) {\n assert(!this.localPaused, 0x29d /* \"we should be processing ops when there is no active batch\" */);\n return;\n }\n // If we got here, the message is part of a batch. Either starting, in progress, or ending.\n // If this is not the start of the batch, error out if the message was sent by a client other than the one that\n // started the current batch (it should not be possible for ops from other clients to get interleaved with a batch).\n if (this.currentBatchClientId !== undefined &&\n this.currentBatchClientId !== message.clientId) {\n throw new DataCorruptionError(\"OpBatchIncomplete\", {\n runtimeVersion: pkgVersion,\n batchClientId: \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.currentBatchClientId === null ? \"null\" : this.currentBatchClientId,\n pauseSequenceNumber: this.pauseSequenceNumber,\n localBatch: this.currentBatchClientId === this.getClientId(),\n localMessage: message.clientId === this.getClientId(),\n ...extractSafePropertiesFromMessage(message),\n });\n }\n // The queue is\n // 1. paused only when the next message to be processed is the beginning of a batch. Done in two places:\n // - in afterOpProcessing() - processing ops until reaching start of incomplete batch\n // - here, when queue was empty and start of batch showed up (batchMetadata === true below).\n // 2. resumed when batch end comes in (batchMetadata === false below)\n if (batchMetadata) {\n assert(this.currentBatchClientId === undefined, 0x29e /* \"there can't be active batch\" */);\n assert(!this.localPaused, 0x29f /* \"we should be processing ops when there is no active batch\" */);\n this.pauseSequenceNumber = message.sequenceNumber;\n // TODO: Verify whether this should be able to handle server-generated ops (with null clientId)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.currentBatchClientId = message.clientId;\n // Start of the batch\n // Only pause processing if queue has no other ops!\n // If there are any other ops in the queue, processing will be stopped when they are processed!\n if (this.deltaManager.inbound.length === 1) {\n this.pauseQueue();\n }\n }\n else if (batchMetadata === false) {\n assert(this.pauseSequenceNumber !== undefined, 0x2a0 /* \"batch presence was validated above\" */);\n // Batch is complete, we can process it!\n this.resumeQueue(this.pauseSequenceNumber, message);\n this.pauseSequenceNumber = undefined;\n this.currentBatchClientId = undefined;\n }\n else {\n // Continuation of current batch. Do nothing\n assert(this.currentBatchClientId !== undefined, 0x2a1 /* \"logic error\" */);\n }\n }\n}\n//# sourceMappingURL=scheduleManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DataProcessingError } from \"@fluidframework/telemetry-utils/internal\";\nimport { pkgVersion } from \"../packageVersion.js\";\n/**\n * Current version known properties that define document schema\n * This must be bumped whenever the format of document schema or protocol for changing the current document schema changes.\n * Ex: adding a new configuration property (under IDocumentSchema.runtime) does not require changing this version.\n * Ex: Changing the 'document schema acceptance' mechanism from convert-and-swap to one requiring consensus does require changing this version.\n * @legacy\n * @alpha\n */\nexport const currentDocumentVersionSchema = 1;\nclass TrueOrUndefined {\n and(currentDocSchema, desiredDocSchema) {\n return currentDocSchema === true && desiredDocSchema === true ? true : undefined;\n }\n or(currentDocSchema, desiredDocSchema) {\n return currentDocSchema === true || desiredDocSchema === true ? true : undefined;\n }\n validate(t) {\n return t === undefined || t === true;\n }\n}\nclass TrueOrUndefinedMax extends TrueOrUndefined {\n and(currentDocSchema, desiredDocSchema) {\n return this.or(currentDocSchema, desiredDocSchema);\n }\n}\nclass MultiChoice {\n constructor(choices) {\n this.choices = choices;\n }\n and(currentDocSchema, desiredDocSchema) {\n if (currentDocSchema === undefined || desiredDocSchema === undefined) {\n return undefined;\n }\n return this.choices[Math.min(this.choices.indexOf(currentDocSchema), this.choices.indexOf(desiredDocSchema))];\n }\n or(currentDocSchema, desiredDocSchema) {\n if (currentDocSchema === undefined) {\n return desiredDocSchema;\n }\n if (desiredDocSchema === undefined) {\n return currentDocSchema;\n }\n return this.choices[Math.max(this.choices.indexOf(currentDocSchema), this.choices.indexOf(desiredDocSchema))];\n }\n validate(t) {\n return t === undefined || (typeof t === \"string\" && this.choices.includes(t));\n }\n}\nclass IdCompressorProperty extends MultiChoice {\n // document schema always wins!\n and(currentDocSchema, desiredDocSchema) {\n return currentDocSchema;\n }\n}\nclass CheckVersions {\n or(currentDocSchema = [], desiredDocSchema = []) {\n const set = new Set([...currentDocSchema, ...desiredDocSchema]);\n return arrayToProp([...set.values()]);\n }\n // Once version is there, it stays there forever.\n and(currentDocSchema = [], desiredDocSchema = []) {\n return this.or(currentDocSchema, desiredDocSchema);\n }\n validate(t) {\n return t === undefined || (Array.isArray(t) && !t.includes(pkgVersion));\n }\n}\n/**\n * Helper structure to valida if a schema is compatible with existing code.\n */\nconst documentSchemaSupportedConfigs = {\n explicitSchemaControl: new TrueOrUndefinedMax(), // once new behavior shows up, it's sticky\n idCompressorMode: new IdCompressorProperty([\"delayed\", \"on\"]),\n opGroupingEnabled: new TrueOrUndefined(),\n compressionLz4: new TrueOrUndefined(),\n disallowedVersions: new CheckVersions(),\n};\n/**\n * Checks if a given schema is compatible with current code, i.e. if current code can understand all the features of that schema.\n * If schema is not compatible with current code, it throws an exception.\n * @param documentSchema - current schema\n */\nfunction checkRuntimeCompatibility(documentSchema, schemaName) {\n // Back-compat - we can't do anything about legacy documents.\n // There is no way to validate them, so we are taking a guess that safe deployment processes used by a given app\n // do not run into compat problems.\n if (documentSchema === undefined) {\n return;\n }\n const msg = \"Document can't be opened with current version of the code\";\n if (documentSchema.version !== currentDocumentVersionSchema) {\n throw DataProcessingError.create(msg, \"checkRuntimeCompat1\", undefined, // message\n {\n runtimeSchemaVersion: documentSchema.version,\n currentRuntimeSchemaVersion: currentDocumentVersionSchema,\n schemaName,\n });\n }\n let unknownProperty;\n const regSeq = documentSchema.refSeq;\n // defence in depth - it should not be possible to get here anything other than integer, but worth validating it.\n if (typeof regSeq !== \"number\" || regSeq < 0 || !Number.isInteger(regSeq)) {\n unknownProperty = \"refSeq\";\n }\n else if (documentSchema.runtime === null || typeof documentSchema.runtime !== \"object\") {\n unknownProperty = \"runtime\";\n }\n else {\n for (const [name, value] of Object.entries(documentSchema.runtime)) {\n const validator = documentSchemaSupportedConfigs[name];\n if (validator === undefined || !validator.validate(value)) {\n unknownProperty = `runtime/${name}`;\n }\n }\n }\n if (unknownProperty !== undefined) {\n const value = documentSchema[unknownProperty];\n throw DataProcessingError.create(msg, \"checkRuntimeCompat2\", undefined, // message\n {\n codeVersion: currentDocumentVersionSchema,\n property: unknownProperty,\n value,\n schemaName,\n });\n }\n}\nfunction and(currentDocSchema, desiredDocSchema) {\n const runtime = {};\n for (const key of new Set([\n ...Object.keys(currentDocSchema.runtime),\n ...Object.keys(desiredDocSchema.runtime),\n ])) {\n runtime[key] = documentSchemaSupportedConfigs[key].and(currentDocSchema.runtime[key], desiredDocSchema.runtime[key]);\n }\n return {\n version: currentDocumentVersionSchema,\n refSeq: currentDocSchema.refSeq,\n runtime,\n };\n}\nfunction or(currentDocSchema, desiredDocSchema) {\n const runtime = {};\n for (const key of new Set([\n ...Object.keys(currentDocSchema.runtime),\n ...Object.keys(desiredDocSchema.runtime),\n ])) {\n runtime[key] = documentSchemaSupportedConfigs[key].or(currentDocSchema.runtime[key], desiredDocSchema.runtime[key]);\n }\n return {\n version: currentDocumentVersionSchema,\n refSeq: currentDocSchema.refSeq,\n runtime,\n };\n}\nfunction same(currentDocSchema, desiredDocSchema) {\n for (const key of new Set([\n ...Object.keys(currentDocSchema.runtime),\n ...Object.keys(desiredDocSchema.runtime),\n ])) {\n // If schemas differ only by type of behavior, then we should not send schema change ops!\n if (key !== \"explicitSchemaControl\" &&\n currentDocSchema.runtime[key] !== desiredDocSchema.runtime[key]) {\n return false;\n }\n }\n return true;\n}\nfunction boolToProp(b) {\n return b ? true : undefined;\n}\nfunction arrayToProp(arr) {\n return arr.length === 0 ? undefined : arr;\n}\n/* eslint-disable jsdoc/check-indentation */\n/**\n * Controller of document schema.\n *\n * Recommended pre-reading: https://github.com/microsoft/FluidFramework/blob/main/packages/dds/SchemaVersioning.md\n *\n * This class manages current document schema and transitions between document schemas.\n * At the moment, it only focuses on subset of document schema, specifically - how FluidFramework runtime serializes data\n * (summary and op format), features & capabilities that a version of runtime has to support and understand in\n * order to collaborate on a document.\n * New features that modify document format have to be included in document schema definition.\n * Usage of such features could only happen after document schema has been updated to reflect such feature.\n *\n * This formality allows clients that do not understand such features to fail right away when they observe\n * document schema listing capabilities that such client does not understand.\n * Old clients will fail in predictable way. This allows us to\n * 1) Immediately see such issues and adjust if features are enabled too early, before changes have been saturated.\n * 2) There is no way to get to 100% saturation with new code. Even if we have 99.99% saturation, there are\n * still 0.01% of clients who will fail. Failing early and predictably ensures they have no chance to limp along\n * and potentially corrupt the document. This is especially true for summarizer client, who could simply \"undo\"\n * changes it does not understands.\n *\n * It's important to note how it overlaps with feature gates and safe velocity.\n * If new feature was in use, that resulted in a number of documents referencing such feature in document schema.\n * But, developers (through code deployment or feature gates) could disable usage of such features.\n * That will stop a process of further document schema changes (for documents that were not using such feature).\n * And documents that already list such capability in their schema will continue to do so. Later ensures that old\n * clients who do not understand such feature will continue to fail to open such documents, as such documents very\n * likely contain data in a new format.\n *\n * Controller operates with 4 schemas:\n * - document schema: whatever we loaded from summary metadata + ops. It follows eventuall consistency rules (i.e. like DDS).\n * - desired schema - what client is asking for to have (i.e. all the desired settings, based on runtime options / feature gates).\n * - session schema - current session schema. It's \"and\" of the above two schemas.\n * - future schema - \"or\" of document and desires schemas.\n *\n * \"or\" & \"and\" operators are defined individually for each property. For Boolean properties it's literally &&, || operators.\n * But for other properties it's more nuanced.\n *\n * Whenver document schema does not match future schema, controller will send an op that attempts to changs documents schema to\n * future schema.\n *\n * Users of this class need to use DocumentsSchemaController.sessionSchema to determine what features can be used.\n *\n * There are two modes this class can operate:\n * 1) Legacy mode. In such mode it does not issue any ops to change document schema. Any changes happen implicitly,\n * right away, and new features are available right away\n * 2) Non-legacy mode. In such mode any changes to schema require an op roundtrip. This class will manage such transitions.\n * However code should assume that any new features that were not enabled in a given document will not be available\n * for a given session. That's because this session may never send any ops (including read-only documents). Or it may\n * fail to convert schema.\n * This class promises eventual movement forward. I.e. if new feature is allowed (let's say - through feature gates),\n * then eventually all documents that are modified will have that feature reflected in their schema. It could require\n * multiple reloads / new sessions to get there (depends on if code reacts to schema changes right away, or only consults\n * schema on document load).\n *\n * How schemas are changed (in non-legacy mode):\n * If a client needs to change a schema, it will attempt to do so as part of normal ops sending process.\n * Changes happen in CAS (Compare-and-swap) fashion, i.e. client tells current schema and schema it wants to change to.\n * When a number of clients race to change a schema, then only one of them will win, all others will fail because they will\n * reference old schema that is no longer in effect.\n * Clients can retry, but current implementation is simply - they will not (and will rely on next session / reload to do\n * recalc and decide if schema needs to be changed or not).\n *\n * @legacy\n * @alpha\n */\nexport class DocumentsSchemaController {\n /**\n * Constructs DocumentsSchemaController that controls current schema and processes around it, including changes in schema.\n * @param existing - Is the document existing document, or a new doc.\n * @param documentMetadataSchema - current document's schema, if present.\n * @param features - features of the document schema that current session wants to see enabled.\n * @param onSchemaChange - callback that is called whenever schema is changed (not called on creation / load, only when processing document schema change ops)\n */\n constructor(existing, snapshotSequenceNumber, documentMetadataSchema, features, onSchemaChange) {\n this.onSchemaChange = onSchemaChange;\n this.sendOp = true;\n // For simplicity, let's only support new schema features for explicit schema control mode\n assert(features.disallowedVersions.length === 0 || features.explicitSchemaControl, 0x949 /* not supported */);\n // Desired schema by this session - almost all props are coming from arguments\n this.desiredSchema = {\n version: currentDocumentVersionSchema,\n refSeq: documentMetadataSchema?.refSeq ?? 0,\n runtime: {\n explicitSchemaControl: boolToProp(features.explicitSchemaControl),\n compressionLz4: boolToProp(features.compressionLz4),\n idCompressorMode: features.idCompressorMode,\n opGroupingEnabled: boolToProp(features.opGroupingEnabled),\n disallowedVersions: arrayToProp(features.disallowedVersions),\n },\n };\n // Schema coming from document metadata (snapshot we loaded from), or if no document exists\n // (this is a new document) then this is the same as desiredSchema (same as session schema in such case).\n // Latter is importnat sure that's what will go into summary.\n this.documentSchema = !existing\n ? this.desiredSchema\n : documentMetadataSchema ??\n ({\n version: currentDocumentVersionSchema,\n // see comment in summarizeDocumentSchema() on why it has to stay zero\n refSeq: 0,\n // If it's existing document and it has no schema, then it was written by legacy client.\n // If it's a new document, then we define it's legacy-related behaviors.\n runtime: {\n explicitSchemaControl: boolToProp(!existing && features.explicitSchemaControl),\n },\n });\n checkRuntimeCompatibility(this.documentSchema, \"document\");\n this.validateSeqNumber(this.documentSchema.refSeq, snapshotSequenceNumber, \"summary\");\n // Use legacy behavior only if both document and options tell us to use legacy.\n // Otherwise it's no longer legacy time!\n this.explicitSchemaControl =\n this.documentSchema.runtime.explicitSchemaControl === true ||\n features.explicitSchemaControl;\n // Calculate\n // - current session schema (overlap of document schema and desired schema)\n // - future schema to propose (concatination of document schema and desired schema)\n if (!this.explicitSchemaControl || !existing) {\n this.sessionSchema = this.desiredSchema;\n assert(boolToProp(this.explicitSchemaControl) ===\n this.sessionSchema.runtime.explicitSchemaControl, 0x94a /* explicitSchemaControl */);\n this.futureSchema = undefined;\n }\n else {\n this.sessionSchema = and(this.documentSchema, this.desiredSchema);\n this.futureSchema = or(this.documentSchema, this.desiredSchema);\n assert(this.sessionSchema.runtime.explicitSchemaControl === true, 0x94b /* legacy */);\n assert(this.futureSchema.runtime.explicitSchemaControl === true, 0x94c /* legacy */);\n if (same(this.documentSchema, this.futureSchema)) {\n this.futureSchema = undefined;\n }\n }\n // Validate that schema we are operating in is actually a schema we consider compatible with current runtime.\n checkRuntimeCompatibility(this.desiredSchema, \"desired\");\n checkRuntimeCompatibility(this.sessionSchema, \"session\");\n checkRuntimeCompatibility(this.futureSchema, \"future\");\n }\n summarizeDocumentSchema(refSeq) {\n // For legacy behavior, we could write nothing (return undefined).\n // It does not buy us anything, as whatever written in summary does not actually impact clients operating in legacy mode.\n // But writing current used config (and assuming most of the clients settle on same config over time) will help with transition\n // out of legacy mode, as clients transitioning out of it would be able to use all the\n // features that are mentioned in schema right away, without a need to go through schema transition (and thus for a session or\n // two losing ability to use all the features)\n const schema = this.explicitSchemaControl ? this.documentSchema : this.desiredSchema;\n // It's important to keep refSeq at zero in legacy mode, such that transition out of it is simple and we do not have\n // race conditions. If we put any other number (including latest seq number), then we will have two clients\n // (loading from two different summaries) with different numbers, and eventual consistency will be broken as schema\n // change ops will be interpretted differently by those two clients.\n assert(this.explicitSchemaControl || schema.refSeq === 0, 0x94d /* refSeq should be zero */);\n return schema;\n }\n /**\n * Called by Container runtime whenever it is about to send some op.\n * It gives opportunity for controller to issue its own ops - we do not want to send ops if there are no local changes in document.\n * Please consider note above constructor about race conditions - current design is to send op only once in a session lifetime.\n * @returns Optional message to send.\n */\n maybeSendSchemaMessage() {\n if (this.sendOp && this.futureSchema !== undefined) {\n this.sendOp = false;\n assert(this.explicitSchemaControl && this.futureSchema.runtime.explicitSchemaControl === true, 0x94e /* not legacy */);\n return {\n ...this.futureSchema,\n refSeq: this.documentSchema.refSeq,\n };\n }\n }\n validateSeqNumber(schemaSeqNumber, lastKnowSeqNumber, message) {\n if (!Number.isInteger(schemaSeqNumber) || !(schemaSeqNumber <= lastKnowSeqNumber)) {\n throw DataProcessingError.create(\"DocSchema: Incorrect sequence number\", \"checkRuntimeCompat3\", undefined, // message\n {\n schemaSeqNumber,\n sequenceNumber: lastKnowSeqNumber,\n message,\n });\n }\n }\n /**\n * Process document schema change message\n * Called by ContainerRuntime whenever it sees document schema messages.\n * @param content - content of the message\n * @param local - whether op is local\n * @param sequenceNumber - sequence number of the op\n * @returns - true if schema was accepted, otherwise false (rejected due to failed CAS)\n */\n processDocumentSchemaOp(content, local, sequenceNumber) {\n this.validateSeqNumber(content.refSeq, this.documentSchema.refSeq, \"content.refSeq\");\n this.validateSeqNumber(this.documentSchema.refSeq, sequenceNumber, \"refSeq\");\n // validate is strickly less, not equal\n assert(this.documentSchema.refSeq < sequenceNumber, 0x950 /* time should move forward only! */);\n if (content.refSeq !== this.documentSchema.refSeq) {\n // CAS failed\n return false;\n }\n // This assert should be after checking for successful CAS above.\n // This will ensure we do not trip on our own messages that are no longer wanted as we processed someone else schema change message.\n assert(!local || (this.explicitSchemaControl && this.futureSchema !== undefined), 0x951 /* not sending ops */);\n // Changes are in effect. Immediately check that this client understands these changes\n checkRuntimeCompatibility(content, \"change\");\n const schema = { ...content, refSeq: sequenceNumber };\n this.documentSchema = schema;\n this.sessionSchema = and(this.documentSchema, this.desiredSchema);\n assert(this.sessionSchema.refSeq === sequenceNumber, 0x97d /* seq# */);\n // legacy behavior is automatically off for the document once someone sends a schema op -\n // from now on it's fully controlled by ops.\n // This is very important, as summarizeDocumentSchema() should use this new schema!\n this.explicitSchemaControl = true;\n // Stop attempting changing schema.\n // If it was local op, then we succeeded and do not need to try again.\n // If it was remote op, then some changes happened to schema.\n // We would need to recalculate this.futureSchema by merging changes that we just received.\n // Avoid this complexity for now - a new client session (loading from new summary with these changes)\n // will automatically do this recalculation and will figure out\n this.futureSchema = undefined;\n this.onSchemaChange(this.sessionSchema);\n return true;\n }\n onDisconnect() {\n this.sendOp = true;\n }\n}\n/* eslint-enable jsdoc/check-indentation */\n//# sourceMappingURL=documentSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { channelsTreeName } from \"@fluidframework/runtime-definitions/internal\";\n/** Path for nodes in a tree with escaped special characters */\nexport class EscapedPath {\n constructor(path) {\n this.path = path;\n }\n static create(path) {\n return new EscapedPath(encodeURIComponent(path));\n }\n static createAndConcat(pathParts) {\n let ret = EscapedPath.create(pathParts[0] ?? \"\");\n for (let i = 1; i < pathParts.length; i++) {\n // Non null asserting here since we are iterating over pathParts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ret = ret.concat(EscapedPath.create(pathParts[i]));\n }\n return ret;\n }\n toString() {\n return this.path;\n }\n concat(path) {\n return new EscapedPath(`${this.path}/${path.path}`);\n }\n}\n/** Information about a summary relevant to a specific node in the tree */\nexport class SummaryNode {\n /** Creates an instance that is valid for the root with specific basePath and localPath */\n static createForRoot(referenceSequenceNumber) {\n return new SummaryNode({\n referenceSequenceNumber,\n basePath: undefined,\n localPath: EscapedPath.create(\"\"), // root hard-coded to \"\"\n });\n }\n /** Summary reference sequence number, i.e. last sequence number seen when it was created */\n get referenceSequenceNumber() {\n return this.summary.referenceSequenceNumber;\n }\n /** Full path to parent node, or undefined if this is the root */\n get basePath() {\n return this.summary.basePath;\n }\n /** Relative path to this node from its parent node */\n get localPath() {\n return this.summary.localPath;\n }\n /** Relative path from this node to its node innermost base summary */\n get additionalPath() {\n return this.summary.additionalPath;\n }\n set additionalPath(additionalPath) {\n this.summary.additionalPath = additionalPath;\n }\n constructor(summary) {\n this.summary = summary;\n }\n /** Gets the full path to this node, to be used when sending a handle */\n get fullPath() {\n return this.basePath?.concat(this.localPath) ?? this.localPath;\n }\n /**\n * Gets the full path to this node's innermost base summary.\n * The children nodes can use this as their basePath to determine their path.\n */\n get fullPathForChildren() {\n return this.additionalPath !== undefined\n ? this.fullPath.concat(this.additionalPath)\n : this.fullPath;\n }\n /**\n * Creates a new node within the same summary for a child of this node.\n * @param id - id of the child node\n */\n createForChild(id) {\n return new SummaryNode({\n referenceSequenceNumber: this.referenceSequenceNumber,\n basePath: this.fullPathForChildren,\n localPath: EscapedPath.create(id),\n });\n }\n}\n/**\n * Checks if the summary contains .channels subtree where the children subtrees\n * would be located if exists.\n * @param baseSummary - summary to check\n */\nexport function parseSummaryForSubtrees(baseSummary) {\n // New versions of snapshots have child nodes isolated in .channels subtree\n const channelsSubtree = baseSummary.trees[channelsTreeName];\n if (channelsSubtree !== undefined) {\n return {\n childrenTree: channelsSubtree,\n childrenPathPart: channelsTreeName,\n };\n }\n return {\n childrenTree: baseSummary,\n childrenPathPart: undefined,\n };\n}\n//# sourceMappingURL=summarizerNodeUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { CreateSummarizerNodeSource, } from \"@fluidframework/runtime-definitions/internal\";\nimport { mergeStats } from \"@fluidframework/runtime-utils/internal\";\nimport { LoggingError, PerformanceEvent, TelemetryDataTag, createChildLogger, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { EscapedPath, SummaryNode, parseSummaryForSubtrees, } from \"./summarizerNodeUtils.js\";\n/**\n * Encapsulates the summarizing work and state of an individual tree node in the\n * summary tree. It tracks changes and allows for optimizations when unchanged, or\n * can allow for fallback summaries to be generated when an error is encountered.\n * Usage is for the root node to call startSummary first to begin tracking a WIP\n * (work in progress) summary. Then all nodes will call summarize to summaries their\n * individual parts. Once completed and uploaded to storage, the root node will call\n * completeSummary or clearSummary to clear the WIP summary tracking state if something\n * went wrong. The SummarizerNodes will track all pending summaries that have been\n * recorded by the completeSummary call. When one of them is acked, the root node should\n * call refreshLatestSummary to inform the tree of SummarizerNodes of the new baseline\n * latest successful summary.\n */\nexport class SummarizerNode {\n /**\n * The reference sequence number of the most recent acked summary.\n * Returns 0 if there is not yet an acked summary.\n */\n get referenceSequenceNumber() {\n return this._latestSummary?.referenceSequenceNumber ?? 0;\n }\n /**\n * Do not call constructor directly.\n * Use createRootSummarizerNode to create root node, or createChild to create child nodes.\n */\n constructor(baseLogger, summarizeInternalFn, config, _changeSequenceNumber, \n /** Undefined means created without summary */\n _latestSummary, wipSummaryLogger, \n /** A unique id of this node to be logged when sending telemetry. */\n telemetryNodeId) {\n this.summarizeInternalFn = summarizeInternalFn;\n this._changeSequenceNumber = _changeSequenceNumber;\n this._latestSummary = _latestSummary;\n this.wipSummaryLogger = wipSummaryLogger;\n this.telemetryNodeId = telemetryNodeId;\n this.children = new Map();\n this.pendingSummaries = new Map();\n this.wipSkipRecursion = false;\n this.canReuseHandle = config.canReuseHandle ?? true;\n // All logs posted by the summarizer node should include the telemetryNodeId.\n this.logger = createChildLogger({\n logger: baseLogger,\n properties: {\n all: tagCodeArtifacts({ id: this.telemetryNodeId }),\n },\n });\n }\n /**\n * In order to produce a summary with a summarizer node, the summarizer node system must be notified a summary has\n * started. This is done by calling startSummary. This will track the reference sequence number of the summary and\n * run some validation checks to ensure the summary is correct.\n * @param referenceSequenceNumber - the number of ops processed up to this point\n * @param summaryLogger - the logger to use for the summary\n * @param latestSummaryRefSeqNum - the reference sequence number of the latest summary. Another way to think about\n * it is the reference sequence number of the previous summary.\n * @returns the number of nodes in the tree, the number of nodes that are invalid, and the different types of\n * sequence number mismatches\n */\n startSummary(referenceSequenceNumber, summaryLogger, latestSummaryRefSeqNum) {\n assert(this.wipSummaryLogger === undefined, 0x19f /* \"wipSummaryLogger should not be set yet in startSummary\" */);\n assert(this.wipReferenceSequenceNumber === undefined, 0x1a0 /* \"Already tracking a summary\" */);\n let nodes = 1;\n let invalidNodes = 0;\n const sequenceNumberMismatchKeySet = new Set();\n const nodeLatestSummaryRefSeqNum = this._latestSummary?.referenceSequenceNumber;\n if (nodeLatestSummaryRefSeqNum !== undefined &&\n latestSummaryRefSeqNum !== nodeLatestSummaryRefSeqNum) {\n invalidNodes++;\n sequenceNumberMismatchKeySet.add(`${latestSummaryRefSeqNum}-${nodeLatestSummaryRefSeqNum}`);\n }\n this.wipSummaryLogger = summaryLogger;\n for (const child of this.children.values()) {\n const childStartSummaryResult = child.startSummary(referenceSequenceNumber, this.wipSummaryLogger, latestSummaryRefSeqNum);\n nodes += childStartSummaryResult.nodes;\n invalidNodes += childStartSummaryResult.invalidNodes;\n for (const invalidSequenceNumber of childStartSummaryResult.mismatchNumbers) {\n sequenceNumberMismatchKeySet.add(invalidSequenceNumber);\n }\n }\n this.wipReferenceSequenceNumber = referenceSequenceNumber;\n return {\n nodes,\n invalidNodes,\n mismatchNumbers: sequenceNumberMismatchKeySet,\n };\n }\n async summarize(fullTree, trackState = true, telemetryContext) {\n // If trackState is false, call summarize internal directly and don't track any state.\n if (!trackState) {\n return this.summarizeInternalFn(fullTree, trackState, telemetryContext);\n }\n // Try to reuse the tree if unchanged\n if (this.canReuseHandle && !fullTree && !this.hasChanged()) {\n const latestSummary = this._latestSummary;\n if (latestSummary !== undefined) {\n this.wipLocalPaths = {\n localPath: latestSummary.localPath,\n additionalPath: latestSummary.additionalPath,\n };\n this.wipSkipRecursion = true;\n const stats = mergeStats();\n stats.handleNodeCount++;\n return {\n summary: {\n type: SummaryType.Handle,\n handle: latestSummary.fullPath.path,\n handleType: SummaryType.Tree,\n },\n stats,\n };\n }\n }\n let incrementalSummaryContext;\n if (!fullTree) {\n assert(this.wipReferenceSequenceNumber !== undefined, 0x5df /* Summarize should not be called when not tracking the summary */);\n incrementalSummaryContext =\n this._latestSummary !== undefined\n ? {\n summarySequenceNumber: this.wipReferenceSequenceNumber,\n latestSummarySequenceNumber: this._latestSummary.referenceSequenceNumber,\n // TODO: remove summaryPath\n summaryPath: this._latestSummary.fullPath.path,\n }\n : undefined;\n }\n const result = await this.summarizeInternalFn(fullTree, trackState, telemetryContext, incrementalSummaryContext);\n this.wipLocalPaths = { localPath: EscapedPath.create(result.id) };\n if (result.pathPartsForChildren !== undefined) {\n this.wipLocalPaths.additionalPath = EscapedPath.createAndConcat(result.pathPartsForChildren);\n }\n return { summary: result.summary, stats: result.stats };\n }\n /**\n * Validates that the in-progress summary is correct, i.e., summarize should have run for all non-skipped\n * nodes. This will only be called for the root summarizer node and is called by it recursively on all child nodes.\n *\n * @returns ValidateSummaryResult which contains a boolean success indicating whether the validation was successful.\n * In case of failure, additional information is returned indicating type of failure and where it was.\n */\n validateSummary() {\n return this.validateSummaryCore(false /* parentSkipRecursion */);\n }\n /**\n * Validates that the in-progress summary is correct for all nodes, i.e., summarize should have run for all\n * non-skipped nodes.\n * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.\n * In that case, the children will not have work-in-progress state.\n *\n * @returns ValidateSummaryResult which contains a boolean success indicating whether the validation was successful.\n * In case of failure, additional information is returned indicating type of failure and where it was.\n */\n validateSummaryCore(parentSkipRecursion) {\n if (this.wasSummarizeMissed(parentSkipRecursion)) {\n return {\n success: false,\n reason: \"NodeDidNotSummarize\",\n id: {\n tag: TelemetryDataTag.CodeArtifact,\n value: this.telemetryNodeId,\n },\n // These errors are usually transient and should go away when summarize is retried.\n retryAfterSeconds: 1,\n };\n }\n if (parentSkipRecursion) {\n return { success: true };\n }\n for (const child of this.children.values()) {\n const result = child.validateSummaryCore(this.wipSkipRecursion || parentSkipRecursion);\n // If any child fails, return the failure.\n if (!result.success) {\n return result;\n }\n }\n return { success: true };\n }\n wasSummarizeMissed(parentSkipRecursion) {\n assert(this.wipSummaryLogger !== undefined, 0x6fc /* wipSummaryLogger should have been set in startSummary or ctor */);\n assert(this.wipReferenceSequenceNumber !== undefined, 0x6fd /* Not tracking a summary */);\n // If the parent node skipped recursion, it did not call summarize on this node. So, summarize was not missed\n // but was intentionally not called.\n // Otherwise, summarize should have been called on this node and wipLocalPaths must be set.\n if (parentSkipRecursion || this.wipLocalPaths !== undefined) {\n return false;\n }\n /**\n * The absence of wip local path indicates that summarize was not called for this node. Return failure.\n * This can happen if:\n * 1. A child node was created after summarize was already called on the parent. For example, a data store\n * is realized (loaded) after summarize was called on it creating summarizer nodes for its DDSes. In this case,\n * parentSkipRecursion will be true and the if block above would handle it.\n * 2. A new node was created but summarize was never called on it. This can mean that the summary that is\n * generated may not have the data from this node. We should not continue, log and throw an error. This\n * will help us identify these cases and take appropriate action.\n *\n * This happens due to scenarios such as data store created during summarize. Such errors should go away when\n * summarize is attempted again.\n */\n return true;\n }\n /**\n * Called after summary has been uploaded to the server. Add the work-in-progress state to the pending summary\n * queue. We track this until we get an ack from the server for this summary.\n * @param proposalHandle - The handle of the summary that was uploaded to the server.\n */\n completeSummary(proposalHandle) {\n this.completeSummaryCore(proposalHandle, undefined /* parentPath */, false /* parentSkipRecursion */);\n }\n /**\n * Recursive implementation for completeSummary, with additional internal-only parameters.\n * @param proposalHandle - The handle of the summary that was uploaded to the server.\n * @param parentPath - The path of the parent node which is used to build the path of this node.\n * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.\n * In that case, the children will not have work-in-progress state.\n * @param validate - true to validate that the in-progress summary is correct for all nodes.\n */\n completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion) {\n assert(this.wipReferenceSequenceNumber !== undefined, 0x1a4 /* \"Not tracking a summary\" */);\n let localPathsToUse = this.wipLocalPaths;\n if (parentSkipRecursion) {\n const latestSummary = this._latestSummary;\n if (latestSummary !== undefined) {\n // This case the parent node created a failure summary or was reused.\n // This node and all children should only try to reference their path\n // by its last known good state in the actual summary tree.\n // If parent fails or is reused, the child summarize is not called so\n // it did not get a chance to change its paths.\n // In this case, essentially only propagate the new summary ref seq num.\n localPathsToUse = {\n localPath: latestSummary.localPath,\n additionalPath: latestSummary.additionalPath,\n };\n }\n else {\n // This case the child is added after the latest non-failure summary.\n // This node and all children should consider themselves as still not\n // having a successful summary yet.\n // We cannot \"reuse\" this node if unchanged since that summary, because\n // handles will be unable to point to that node. It never made it to the\n // tree itself, and only exists as an attach op in the _outstandingOps.\n this.clearSummary();\n return;\n }\n }\n // If localPathsToUse is undefined, it means summarize didn't run for this node and in that case the validate\n // step should have failed.\n assert(localPathsToUse !== undefined, 0x6fe /* summarize didn't run for node */);\n const summary = new SummaryNode({\n ...localPathsToUse,\n referenceSequenceNumber: this.wipReferenceSequenceNumber,\n basePath: parentPath,\n });\n const fullPathForChildren = summary.fullPathForChildren;\n for (const child of this.children.values()) {\n child.completeSummaryCore(proposalHandle, fullPathForChildren, this.wipSkipRecursion || parentSkipRecursion);\n }\n // Note that this overwrites existing pending summary with\n // the same proposalHandle. If proposalHandle is something like\n // a hash or unique identifier, this should be fine. If storage\n // can return the same proposalHandle for a different summary,\n // this should still be okay, because we should be proposing the\n // newer one later which would have to overwrite the previous one.\n this.pendingSummaries.set(proposalHandle, summary);\n this.clearSummary();\n }\n clearSummary() {\n this.wipReferenceSequenceNumber = undefined;\n this.wipLocalPaths = undefined;\n this.wipSkipRecursion = false;\n this.wipSummaryLogger = undefined;\n for (const child of this.children.values()) {\n child.clearSummary();\n }\n }\n /**\n * Refreshes the latest summary tracked by this node. If we have a pending summary for the given proposal handle,\n * it becomes the latest summary. If the current summary is already ahead, we skip the update.\n * If the current summary is behind, then we do not refresh.\n *\n * @returns true if the summary is tracked by this node, false otherwise.\n */\n async refreshLatestSummary(proposalHandle, summaryRefSeq) {\n const eventProps = {\n proposalHandle,\n summaryRefSeq,\n referenceSequenceNumber: this.referenceSequenceNumber,\n };\n return PerformanceEvent.timedExecAsync(this.logger, {\n eventName: \"refreshLatestSummary\",\n ...eventProps,\n }, async (event) => {\n // Refresh latest summary should not happen while a summary is in progress. If it does, it can result\n // in inconsistent state, so, we should not continue;\n if (this.isSummaryInProgress()) {\n throw new LoggingError(\"UnexpectedRefreshDuringSummarize\", {\n inProgressSummaryRefSeq: this.wipReferenceSequenceNumber,\n });\n }\n let isSummaryTracked = false;\n let isSummaryNewer = false;\n if (summaryRefSeq > this.referenceSequenceNumber) {\n isSummaryNewer = true;\n }\n const maybeSummaryNode = this.pendingSummaries.get(proposalHandle);\n if (maybeSummaryNode !== undefined) {\n this.refreshLatestSummaryFromPending(proposalHandle, maybeSummaryNode.referenceSequenceNumber);\n isSummaryTracked = true;\n }\n event.end({ ...eventProps, isSummaryNewer, pendingSummaryFound: isSummaryTracked });\n return { isSummaryTracked, isSummaryNewer };\n }, { start: true, end: true, cancel: \"error\" });\n }\n /**\n * Called when we get an ack from the server for a summary we've just sent. Updates the reference state of this node\n * from the state in the pending summary queue.\n * @param proposalHandle - Handle for the current proposal.\n * @param referenceSequenceNumber - Reference sequence number of sent summary.\n */\n refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber) {\n const summaryNode = this.pendingSummaries.get(proposalHandle);\n if (summaryNode === undefined) {\n // This should only happen if parent skipped recursion AND no prior summary existed.\n assert(this._latestSummary === undefined, 0x1a6 /* \"Not found pending summary, but this node has previously completed a summary\" */);\n return;\n }\n else {\n assert(referenceSequenceNumber === summaryNode.referenceSequenceNumber, 0x1a7 /* Pending summary reference sequence number should be consistent */);\n // Clear earlier pending summaries\n this.pendingSummaries.delete(proposalHandle);\n }\n this.refreshLatestSummaryCore(referenceSequenceNumber);\n this._latestSummary = summaryNode;\n // Propagate update to all child nodes\n for (const child of this.children.values()) {\n child.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);\n }\n }\n refreshLatestSummaryCore(referenceSequenceNumber) {\n for (const [key, value] of this.pendingSummaries) {\n if (value.referenceSequenceNumber < referenceSequenceNumber) {\n this.pendingSummaries.delete(key);\n }\n }\n }\n updateBaseSummaryState(snapshot) {\n // Check base summary to see if it has any additional path parts\n // separating child SummarizerNodes. Checks for .channels subtrees.\n const { childrenPathPart } = parseSummaryForSubtrees(snapshot);\n if (childrenPathPart !== undefined && this._latestSummary !== undefined) {\n this._latestSummary.additionalPath = EscapedPath.create(childrenPathPart);\n }\n }\n recordChange(op) {\n this.invalidate(op.sequenceNumber);\n }\n invalidate(sequenceNumber) {\n if (sequenceNumber > this._changeSequenceNumber) {\n this._changeSequenceNumber = sequenceNumber;\n }\n }\n /**\n * True if a change has been recorded with sequence number exceeding\n * the latest successfully acked summary reference sequence number.\n * False implies that the previous summary can be reused.\n */\n hasChanged() {\n return this._changeSequenceNumber > this.referenceSequenceNumber;\n }\n get latestSummary() {\n return this._latestSummary;\n }\n createChild(\n /** Summarize function */\n summarizeInternalFn, \n /** Initial id or path part of this node */\n id, \n /**\n * Information needed to create the node.\n * If it is from a base summary, it will assert that a summary has been seen.\n * Attach information if it is created from an attach op.\n */\n createParam, config = {}) {\n assert(!this.children.has(id), 0x1ab /* \"Create SummarizerNode child already exists\" */);\n const createDetails = this.getCreateDetailsForChild(id, createParam);\n const child = new SummarizerNode(this.logger, summarizeInternalFn, config, createDetails.changeSequenceNumber, createDetails.latestSummary, this.wipSummaryLogger, createDetails.telemetryNodeId);\n // There may be additional state that has to be updated in this child. For example, if a summary is being\n // tracked, the child's summary tracking state needs to be updated too. Same goes for pendingSummaries we might\n // have outstanding on the parent in case we realize nodes in between Summary Op and Summary Ack.\n this.maybeUpdateChildState(child, id);\n this.children.set(id, child);\n return child;\n }\n getChild(id) {\n return this.children.get(id);\n }\n /**\n * Returns the details needed to create a child node.\n * @param id - Initial id or path part of the child node.\n * @param createParam - Information needed to create the node.\n * @returns the details needed to create the child node.\n */\n getCreateDetailsForChild(id, createParam) {\n let latestSummary;\n let changeSequenceNumber;\n const parentLatestSummary = this._latestSummary;\n switch (createParam.type) {\n case CreateSummarizerNodeSource.FromAttach: {\n if (parentLatestSummary !== undefined &&\n createParam.sequenceNumber <= parentLatestSummary.referenceSequenceNumber) {\n // Prioritize latest summary if it was after this node was attached.\n latestSummary = parentLatestSummary.createForChild(id);\n }\n changeSequenceNumber = createParam.sequenceNumber;\n break;\n }\n case CreateSummarizerNodeSource.FromSummary:\n case CreateSummarizerNodeSource.Local: {\n latestSummary = parentLatestSummary?.createForChild(id);\n changeSequenceNumber = parentLatestSummary?.referenceSequenceNumber ?? -1;\n break;\n }\n default: {\n const type = createParam.type;\n unreachableCase(createParam, `Unexpected CreateSummarizerNodeSource: ${type}`);\n }\n }\n const childTelemetryNodeId = `${this.telemetryNodeId ?? \"\"}/${id}`;\n return {\n latestSummary,\n changeSequenceNumber,\n telemetryNodeId: childTelemetryNodeId,\n };\n }\n /**\n * Updates the state of the child if required. For example, if a summary is currently being tracked, the child's\n * summary tracking state needs to be updated too.\n * Also, in case a child node gets realized in between Summary Op and Summary Ack, let's initialize the child's\n * pending summary as well.\n * @param child - The child node whose state is to be updated.\n * @param id - Initial id or path part of this node\n *\n */\n maybeUpdateChildState(child, id) {\n // If a summary is in progress, this child was created after the summary started. So, we need to update the\n // child's summary state as well.\n if (this.isSummaryInProgress()) {\n child.wipReferenceSequenceNumber = this.wipReferenceSequenceNumber;\n }\n // In case we have pending summaries on the parent, let's initialize it on the child.\n if (child._latestSummary !== undefined) {\n for (const [key, value] of this.pendingSummaries.entries()) {\n const newLatestSummaryNode = new SummaryNode({\n referenceSequenceNumber: value.referenceSequenceNumber,\n basePath: child._latestSummary.basePath,\n localPath: child._latestSummary.localPath,\n });\n child.addPendingSummary(key, newLatestSummaryNode);\n }\n }\n }\n addPendingSummary(key, summary) {\n this.pendingSummaries.set(key, summary);\n }\n /**\n * Tells whether summary tracking is in progress. True if \"startSummary\" API is called before summarize.\n */\n isSummaryInProgress() {\n return this.wipReferenceSequenceNumber !== undefined;\n }\n /**\n * Creates and throws an error due to unexpected conditions.\n */\n throwUnexpectedError(eventProps) {\n const error = new LoggingError(eventProps.eventName, {\n ...eventProps,\n referenceSequenceNumber: this.wipReferenceSequenceNumber,\n ...tagCodeArtifacts({\n id: this.telemetryNodeId,\n }),\n });\n this.logger.sendErrorEvent(eventProps, error);\n throw error;\n }\n}\n/**\n * Creates a root summarizer node.\n * @param logger - Logger to use within SummarizerNode\n * @param summarizeInternalFn - Function to generate summary\n * @param changeSequenceNumber - Sequence number of latest change to new node/subtree\n * @param referenceSequenceNumber - Reference sequence number of last acked summary,\n * or undefined if not loaded from summary\n * @param config - Configure behavior of summarizer node\n */\nexport const createRootSummarizerNode = (logger, summarizeInternalFn, changeSequenceNumber, referenceSequenceNumber, config = {}) => new SummarizerNode(logger, summarizeInternalFn, config, changeSequenceNumber, referenceSequenceNumber === undefined\n ? undefined\n : SummaryNode.createForRoot(referenceSequenceNumber), undefined /* wipSummaryLogger */, \"\" /* telemetryNodeId */);\n//# sourceMappingURL=summarizerNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, LazyPromise } from \"@fluidframework/core-utils/internal\";\nimport { unpackChildNodesUsedRoutes } from \"@fluidframework/runtime-utils/internal\";\nimport { LoggingError, TelemetryDataTag, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { cloneGCData, unpackChildNodesGCDetails } from \"../../gc/index.js\";\nimport { SummarizerNode } from \"./summarizerNode.js\";\nimport { SummaryNode, } from \"./summarizerNodeUtils.js\";\n// Extend SummaryNode to add used routes tracking to it.\nclass SummaryNodeWithGC extends SummaryNode {\n constructor(serializedUsedRoutes, summary) {\n super(summary);\n this.serializedUsedRoutes = serializedUsedRoutes;\n }\n}\n/**\n * Extends the functionality of SummarizerNode to manage this node's garbage collection data:\n *\n * - Adds a new API `getGCData` to return GC data of this node.\n *\n * - Caches the result of `getGCData` to be used if nothing changes between summaries.\n *\n * - Manages the used routes of this node. These are used to identify if this node is referenced in the document\n * and to determine if the node's used state changed since last summary.\n *\n * - Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls\n * directly into summarizeInternal method.\n */\nexport class SummarizerNodeWithGC extends SummarizerNode {\n /**\n * Do not call constructor directly.\n * Use createRootSummarizerNodeWithGC to create root node, or createChild to create child nodes.\n */\n constructor(logger, summarizeInternalFn, config, changeSequenceNumber, \n /** Undefined means created without summary */\n latestSummary, wipSummaryLogger, getGCDataFn, getBaseGCDetailsFn, \n /** A unique id of this node to be logged when sending telemetry. */\n telemetryId) {\n super(logger, summarizeInternalFn, config, changeSequenceNumber, latestSummary, wipSummaryLogger, telemetryId);\n this.getGCDataFn = getGCDataFn;\n // Keeps track of whether we have loaded the base details to ensure that we only do it once.\n this.baseGCDetailsLoaded = false;\n // Set used routes to have self route by default. This makes the node referenced by default. This is done to ensure\n // that this node is not marked as collected when running GC has been disabled. Once, the option to disable GC is\n // removed (from runGC flag in IContainerRuntimeOptions), this should be changed to be have no routes by default.\n this.usedRoutes = [\"\"];\n this.gcDisabled = config.gcDisabled === true;\n this.baseGCDetailsP = new LazyPromise(async () => {\n return (await getBaseGCDetailsFn?.()) ?? { usedRoutes: [] };\n });\n this.childNodesBaseGCDetailsP = new LazyPromise(async () => {\n await this.loadBaseGCDetails();\n return unpackChildNodesGCDetails({ gcData: this.gcData, usedRoutes: this.usedRoutes });\n });\n }\n /**\n * Loads state from this node's initial GC summary details. This contains the following data from the last summary\n * seen by the server for this client:\n * - usedRoutes: This is used to figure out if the used state of this node changed since last summary.\n * - gcData: The garbage collection data of this node that is required for running GC.\n */\n async loadBaseGCDetails() {\n if (this.baseGCDetailsLoaded) {\n return;\n }\n const baseGCDetails = await this.baseGCDetailsP;\n // Possible race - If there were parallel calls to loadBaseGCDetails, we want to make sure that we update\n // the state from the base details only once.\n if (this.baseGCDetailsLoaded) {\n return;\n }\n this.baseGCDetailsLoaded = true;\n // Update GC data, used routes and reference used routes. The used routes are sorted because they are compared\n // across GC runs to check if they changed. Sorting ensures that the elements are in the same order.\n // If the GC details has GC data, initialize our GC data from it.\n if (baseGCDetails.gcData !== undefined) {\n this.gcData = cloneGCData(baseGCDetails.gcData);\n }\n if (baseGCDetails.usedRoutes !== undefined) {\n this.usedRoutes = Array.from(baseGCDetails.usedRoutes).sort();\n this.referenceUsedRoutes = Array.from(baseGCDetails.usedRoutes).sort();\n }\n }\n /**\n * Returns the GC data of this node. If nothing has changed since last summary, it tries to reuse the data from\n * the previous summary. Else, it gets new GC data from the underlying Fluid object.\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n */\n async getGCData(fullGC = false) {\n assert(!this.gcDisabled, 0x1b2 /* \"Getting GC data should not be called when GC is disabled!\" */);\n assert(this.getGCDataFn !== undefined, 0x1b3 /* \"GC data cannot be retrieved without getGCDataFn\" */);\n // Load GC details from the initial summary, if not already loaded. If this is the first time this function is\n // called and the node's data has not changed since last summary, the GC data in initial details is returned.\n await this.loadBaseGCDetails();\n // If there is no new data since last summary and we have GC data from the previous run, return it. The previous\n // GC data may not be available if loaded from a snapshot with either GC disabled or before GC was added.\n // Note - canReuseHandle is checked to be consistent with summarize - generate GC data for nodes for which\n // summary must be generated.\n if (this.canReuseHandle &&\n !fullGC &&\n !this.hasDataChanged() &&\n this.gcData !== undefined) {\n return cloneGCData(this.gcData);\n }\n const gcData = await this.getGCDataFn(fullGC);\n this.gcData = cloneGCData(gcData);\n return gcData;\n }\n /**\n * Called during the start of a summary. Updates the work-in-progress used routes.\n */\n startSummary(referenceSequenceNumber, summaryLogger, latestSummaryRefSeqNum) {\n // If GC is disabled, skip setting wip used routes since we should not track GC state.\n if (!this.gcDisabled) {\n assert(this.wipSerializedUsedRoutes === undefined, 0x1b4 /* \"We should not already be tracking used routes when to track a new summary\" */);\n }\n return super.startSummary(referenceSequenceNumber, summaryLogger, latestSummaryRefSeqNum);\n }\n /**\n * Validates that the in-progress summary is correct for all nodes, i.e., GC should have run for non-skipped nodes.\n * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when running GC.\n * In that case, the children will not have work-in-progress state.\n *\n * @returns ValidateSummaryResult which contains a boolean success indicating whether the validation was successful.\n * In case of failure, additional information is returned indicating type of failure and where it was.\n */\n validateSummaryCore(parentSkipRecursion) {\n if (this.wasGCMissed()) {\n return {\n success: false,\n reason: \"NodeDidNotRunGC\",\n id: {\n tag: TelemetryDataTag.CodeArtifact,\n value: this.telemetryNodeId,\n },\n // These errors are usually transient and should go away when summarize / GC is retried.\n retryAfterSeconds: 1,\n };\n }\n return super.validateSummaryCore(parentSkipRecursion);\n }\n wasGCMissed() {\n // If GC is disabled, it should not have run so it was not missed.\n // Otherwise, GC should have been called on this node and wipSerializedUsedRoutes must be set.\n if (this.gcDisabled || this.wipSerializedUsedRoutes !== undefined) {\n return false;\n }\n /**\n * The absence of wip used routes indicates that GC was not run on this node. This can happen if:\n * 1. A child node was created after GC was already run on the parent. For example, a data store\n * is realized (loaded) after GC was run on it creating summarizer nodes for its DDSes. In this\n * case, the parent will pass on used routes to the child nodes and it will have wip used routes.\n * 2. A new node was created but GC was never run on it. This can mean that the GC data generated\n * during summarize is incomplete.\n *\n * This happens due to scenarios such as data store created during summarize. Such errors should go away when\n * summarize is attempted again.\n */\n return true;\n }\n /**\n * Called after summary has been uploaded to the server. Add the work-in-progress state to the pending\n * summary queue. We track this until we get an ack from the server for this summary.\n * @param proposalHandle - The handle of the summary that was uploaded to the server.\n * @param parentPath - The path of the parent node which is used to build the path of this node.\n * @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.\n * In that case, the children will not have work-in-progress state.\n */\n completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion) {\n let wipSerializedUsedRoutes;\n // If GC is disabled, don't set wip used routes.\n if (!this.gcDisabled) {\n wipSerializedUsedRoutes = this.wipSerializedUsedRoutes;\n }\n super.completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion);\n // If GC is disabled, skip setting pending summary with GC state.\n if (!this.gcDisabled) {\n const summaryNode = this.pendingSummaries.get(proposalHandle);\n if (summaryNode !== undefined) {\n const summaryNodeWithGC = new SummaryNodeWithGC(wipSerializedUsedRoutes, summaryNode);\n this.pendingSummaries.set(proposalHandle, summaryNodeWithGC);\n }\n }\n }\n /**\n * Clears the work-in-progress state.\n */\n clearSummary() {\n this.wipSerializedUsedRoutes = undefined;\n this.wipChildNodesUsedRoutes = undefined;\n super.clearSummary();\n }\n /**\n * Called when we get an ack from the server for a summary we sent. Update the reference state of this node\n * from the state in the pending summary queue.\n */\n refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber) {\n // If GC is disabled, skip setting referenced used routes since we are not tracking GC state.\n if (!this.gcDisabled) {\n const summaryNode = this.pendingSummaries.get(proposalHandle);\n if (summaryNode !== undefined) {\n // If a pending summary exists, it must have used routes since GC is enabled.\n const summaryNodeWithGC = summaryNode;\n if (summaryNodeWithGC.serializedUsedRoutes === undefined) {\n const error = new LoggingError(\"MissingGCStateInPendingSummary\", {\n proposalHandle,\n referenceSequenceNumber,\n ...tagCodeArtifacts({\n id: this.telemetryNodeId,\n }),\n });\n this.logger.sendErrorEvent({\n eventName: error.message,\n }, error);\n throw error;\n }\n this.referenceUsedRoutes = JSON.parse(summaryNodeWithGC.serializedUsedRoutes);\n }\n }\n return super.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);\n }\n /**\n * Override the createChild method to return an instance of SummarizerNodeWithGC.\n */\n createChild(\n /** Summarize function */\n summarizeInternalFn, \n /** Initial id or path part of this node */\n id, \n /**\n * Information needed to create the node.\n * If it is from a base summary, it will assert that a summary has been seen.\n * Attach information if it is created from an attach op.\n */\n createParam, config = {}, getGCDataFn) {\n assert(!this.children.has(id), 0x1b6 /* \"Create SummarizerNode child already exists\" */);\n /**\n * Update the child node's base GC details from this node's current GC details instead of updating from the base\n * GC details of this node. This will handle scenarios where the GC details was updated during refresh from\n * snapshot and the child node wasn't created then. If a child is created after that, its GC details should be\n * the one from the downloaded snapshot and not the base GC details.\n */\n const getChildBaseGCDetailsFn = async () => {\n const childNodesBaseGCDetails = await this.childNodesBaseGCDetailsP;\n return childNodesBaseGCDetails.get(id) ?? {};\n };\n const createDetails = this.getCreateDetailsForChild(id, createParam);\n const child = new SummarizerNodeWithGC(this.logger, summarizeInternalFn, {\n ...config,\n // Propagate our gcDisabled state to the child if its not explicity specified in child's config.\n gcDisabled: config.gcDisabled ?? this.gcDisabled,\n }, createDetails.changeSequenceNumber, createDetails.latestSummary, this.wipSummaryLogger, getGCDataFn, getChildBaseGCDetailsFn, createDetails.telemetryNodeId);\n // There may be additional state that has to be updated in this child. For example, if a summary is being\n // tracked, the child's summary tracking state needs to be updated too.\n this.maybeUpdateChildState(child, id);\n this.children.set(id, child);\n return child;\n }\n /**\n * Updates the state of the child if required. For example, if a summary is currently being tracked, the child's\n * summary tracking state needs to be updated too.\n * Also, in case a child node gets realized in between Summary Op and Summary Ack, let's initialize the child's\n * pending summary as well. Finally, if the pendingSummaries entries have serializedRoutes, replicate them to the\n * pendingSummaries from the child nodes.\n * @param child - The child node whose state is to be updated.\n * @param id - Initial id or path part of this node\n */\n maybeUpdateChildState(child, id) {\n super.maybeUpdateChildState(child, id);\n // If GC has run on this node and summarization isn't complete, this.wipSerializedUsedRoutes will be defined.\n // In that case, update the used routes of the child node. This can happen in scenarios where a data store\n // doesn't have any ops but its reference state changed. So, it gets realized during summarize after GC ran\n // so GC would not have run on this node which is fine.\n if (this.wipSerializedUsedRoutes !== undefined) {\n // If the child route used routes are not defined, initialize it now and it can be used for all child nodes\n // created until this summarization process is completed. This is an optimization to unpack the used routes\n // only when needed.\n if (this.wipChildNodesUsedRoutes === undefined) {\n this.wipChildNodesUsedRoutes = unpackChildNodesUsedRoutes(this.usedRoutes);\n }\n child.updateUsedRoutes(this.wipChildNodesUsedRoutes.get(id) ?? [\"\"]);\n }\n // In case we have pending summaries on the parent, let's initialize it on the child.\n if (child.latestSummary !== undefined) {\n for (const [key, value] of this.pendingSummaries.entries()) {\n const summaryNodeWithGC = value;\n if (summaryNodeWithGC.serializedUsedRoutes !== undefined) {\n const childNodeUsedRoutes = unpackChildNodesUsedRoutes(JSON.parse(summaryNodeWithGC.serializedUsedRoutes));\n const newSerializedRoutes = childNodeUsedRoutes.get(id) ?? [\"\"];\n const newLatestSummaryNode = new SummaryNodeWithGC(JSON.stringify(newSerializedRoutes), {\n referenceSequenceNumber: value.referenceSequenceNumber,\n basePath: child.latestSummary.basePath,\n localPath: child.latestSummary.localPath,\n });\n child.addPendingSummary(key, newLatestSummaryNode);\n }\n }\n }\n }\n /**\n * Deletes the child node with the given id.\n */\n deleteChild(id) {\n this.children.delete(id);\n }\n /**\n * Override the getChild method to return an instance of SummarizerNodeWithGC.\n */\n getChild(id) {\n return this.children.get(id);\n }\n isReferenced() {\n return this.usedRoutes.includes(\"\") || this.usedRoutes.includes(\"/\");\n }\n updateUsedRoutes(usedRoutes) {\n // Sort the given routes before updating. This will ensure that the routes compared in hasUsedStateChanged()\n // are in the same order.\n this.usedRoutes = usedRoutes.sort();\n // If GC is not disabled and a summary is in progress, update the work-in-progress used routes so that it can\n // be tracked for this summary.\n if (!this.gcDisabled && this.isSummaryInProgress()) {\n this.wipSerializedUsedRoutes = JSON.stringify(this.usedRoutes);\n }\n }\n /**\n * Override the hasChanged method. If this node data or its used state changed, the node is considered changed.\n */\n hasChanged() {\n return this.hasDataChanged() || this.hasUsedStateChanged();\n }\n /**\n * This tells whether the data in this node has changed or not.\n */\n hasDataChanged() {\n return super.hasChanged();\n }\n /**\n * This tells whether the used state of this node has changed since last successful summary. If the used routes\n * of this node changed, its used state is considered changed. Basically, if this node or any of its child nodes\n * was previously used and became unused (or vice versa), its used state has changed.\n */\n hasUsedStateChanged() {\n // If GC is disabled, it should not affect summary state, return false.\n if (this.gcDisabled) {\n return false;\n }\n return (this.referenceUsedRoutes === undefined ||\n JSON.stringify(this.usedRoutes) !== JSON.stringify(this.referenceUsedRoutes));\n }\n}\n/**\n * Creates a root summarizer node with GC functionality built-in.\n * @param logger - Logger to use within SummarizerNode\n * @param summarizeInternalFn - Function to generate summary\n * @param changeSequenceNumber - Sequence number of latest change to new node/subtree\n * @param referenceSequenceNumber - Reference sequence number of last acked summary,\n * or undefined if not loaded from summary\n * @param config - Configure behavior of summarizer node\n * @param getGCDataFn - Function to get the GC data of this node\n * @param baseGCDetailsP - Function to get the initial GC details of this node\n */\nexport const createRootSummarizerNodeWithGC = (logger, summarizeInternalFn, changeSequenceNumber, referenceSequenceNumber, config = {}, getGCDataFn, getBaseGCDetailsFn) => new SummarizerNodeWithGC(logger, summarizeInternalFn, config, changeSequenceNumber, referenceSequenceNumber === undefined\n ? undefined\n : SummaryNode.createForRoot(referenceSequenceNumber), undefined /* wipSummaryLogger */, getGCDataFn, getBaseGCDetailsFn, \"\" /* telemetryId */);\n//# sourceMappingURL=summarizerNodeWithGc.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert, Deferred } from \"@fluidframework/core-utils/internal\";\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nvar SummaryState;\n(function (SummaryState) {\n SummaryState[SummaryState[\"Local\"] = 0] = \"Local\";\n SummaryState[SummaryState[\"Broadcast\"] = 1] = \"Broadcast\";\n SummaryState[SummaryState[\"Acked\"] = 2] = \"Acked\";\n SummaryState[SummaryState[\"Nacked\"] = -1] = \"Nacked\";\n})(SummaryState || (SummaryState = {}));\nclass Summary {\n static createLocal(clientId, clientSequenceNumber) {\n return new Summary(clientId, clientSequenceNumber);\n }\n static createFromOp(op) {\n // TODO: Verify whether this should be able to handle server-generated ops (with null clientId)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const summary = new Summary(op.clientId, op.clientSequenceNumber);\n summary.broadcast(op);\n return summary;\n }\n get summaryOp() {\n return this._summaryOp;\n }\n get summaryAckNack() {\n return this._summaryAckNack;\n }\n constructor(clientId, clientSequenceNumber) {\n this.clientId = clientId;\n this.clientSequenceNumber = clientSequenceNumber;\n this.state = SummaryState.Local;\n this.defSummaryOp = new Deferred();\n this.defSummaryAck = new Deferred();\n }\n hasBeenAcked() {\n return this.state === SummaryState.Acked;\n }\n broadcast(op) {\n assert(this.state === SummaryState.Local, 0x175 /* \"Can only broadcast if summarizer starts in local state\" */);\n this._summaryOp = op;\n this.defSummaryOp.resolve();\n this.state = SummaryState.Broadcast;\n return true;\n }\n ackNack(op) {\n assert(this.state === SummaryState.Broadcast, 0x176 /* \"Can only ack/nack if summarizer is in broadcasting state\" */);\n this._summaryAckNack = op;\n this.defSummaryAck.resolve();\n this.state = op.type === MessageType.SummaryAck ? SummaryState.Acked : SummaryState.Nacked;\n return true;\n }\n async waitBroadcast() {\n await this.defSummaryOp.promise;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._summaryOp;\n }\n async waitAckNack() {\n await this.defSummaryAck.promise;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._summaryAckNack;\n }\n}\n/**\n * This class watches summaries created by a specific client.\n * It should be created and managed from a SummaryCollection.\n */\nclass ClientSummaryWatcher {\n get disposed() {\n return this._disposed;\n }\n constructor(clientId, summaryCollection) {\n this.clientId = clientId;\n this.summaryCollection = summaryCollection;\n // key: clientSeqNum\n this.localSummaries = new Map();\n this._disposed = false;\n }\n /**\n * Watches for a specific sent summary op.\n * @param clientSequenceNumber - client sequence number of sent summary op\n */\n watchSummary(clientSequenceNumber) {\n let summary = this.localSummaries.get(clientSequenceNumber);\n if (!summary) {\n summary = Summary.createLocal(this.clientId, clientSequenceNumber);\n this.localSummaries.set(summary.clientSequenceNumber, summary);\n }\n return summary;\n }\n /**\n * Waits until all of the pending summaries in the underlying SummaryCollection\n * are acked/nacked.\n */\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n waitFlushed() {\n return this.summaryCollection.waitFlushed();\n }\n /**\n * Gets a watched summary or returns undefined if not watched.\n * @param clientSequenceNumber - client sequence number of sent summary op\n */\n tryGetSummary(clientSequenceNumber) {\n return this.localSummaries.get(clientSequenceNumber);\n }\n /**\n * Starts watching a summary made by this client.\n * @param summary - summary to start watching\n */\n setSummary(summary) {\n this.localSummaries.set(summary.clientSequenceNumber, summary);\n }\n dispose() {\n this.summaryCollection.removeWatcher(this.clientId);\n this._disposed = true;\n }\n}\n/**\n * Data structure that looks at the op stream to track summaries as they\n * are broadcast, acked and nacked.\n * It provides functionality for watching specific summaries.\n * @legacy\n * @alpha\n */\nexport class SummaryCollection extends TypedEventEmitter {\n get latestAck() {\n return this.lastAck;\n }\n emit(event, ...args) {\n return super.emit(event, ...args);\n }\n get opsSinceLastAck() {\n return (this.deltaManager.lastSequenceNumber -\n (this.lastAck?.summaryAck.sequenceNumber ?? this.deltaManager.initialSequenceNumber));\n }\n addOpListener(listener) {\n this.deltaManager.on(\"op\", listener);\n }\n removeOpListener(listener) {\n this.deltaManager.off(\"op\", listener);\n }\n constructor(deltaManager, logger) {\n super();\n this.deltaManager = deltaManager;\n this.logger = logger;\n // key: clientId\n this.summaryWatchers = new Map();\n // key: summarySeqNum\n this.pendingSummaries = new Map();\n this.refreshWaitNextAck = new Deferred();\n this.deltaManager.on(\"op\", (op) => this.handleOp(op));\n }\n /**\n * Creates and returns a summary watcher for a specific client.\n * This will allow for local sent summaries to be better tracked.\n * @param clientId - client id for watcher\n */\n createWatcher(clientId) {\n const watcher = new ClientSummaryWatcher(clientId, this);\n this.summaryWatchers.set(clientId, watcher);\n return watcher;\n }\n removeWatcher(clientId) {\n this.summaryWatchers.delete(clientId);\n }\n setPendingAckTimerTimeoutCallback(maxAckWaitTime, timeoutCallback) {\n this.maxAckWaitTime = maxAckWaitTime;\n this.pendingAckTimerTimeoutCallback = timeoutCallback;\n }\n unsetPendingAckTimerTimeoutCallback() {\n this.maxAckWaitTime = undefined;\n this.pendingAckTimerTimeoutCallback = undefined;\n }\n /**\n * Returns a promise that resolves once all pending summary ops\n * have been acked or nacked.\n */\n async waitFlushed() {\n while (this.pendingSummaries.size > 0) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const promises = Array.from(this.pendingSummaries, ([, summary]) => summary.waitAckNack());\n await Promise.all(promises);\n }\n return this.lastAck;\n }\n /**\n * Returns a promise that resolves once a summary is acked that has a reference\n * sequence number greater than or equal to the passed in sequence number.\n * @param referenceSequenceNumber - reference sequence number to wait for\n * @returns The latest acked summary\n */\n async waitSummaryAck(referenceSequenceNumber) {\n while (!this.lastAck ||\n this.lastAck.summaryOp.referenceSequenceNumber < referenceSequenceNumber) {\n await this.refreshWaitNextAck.promise;\n }\n return this.lastAck;\n }\n parseContent(op) {\n // back-compat: ADO #1385: Make this unconditional in the future,\n // when Container.processRemoteMessage stops parsing contents. That said, we should move to\n // listen for \"op\" events from ContainerRuntime, and parsing may not be required at all if\n // ContainerRuntime.process() would parse it for all types of ops.\n // Can make either of those changes only when LTS moves to a version that has no content\n // parsing in loader layer!\n if (typeof op.contents === \"string\") {\n op.contents = JSON.parse(op.contents);\n }\n }\n /**\n * Handler for ops; only handles ops relating to summaries.\n * @param op - op message to handle\n */\n handleOp(opArg) {\n const op = { ...opArg };\n switch (op.type) {\n case MessageType.Summarize:\n this.parseContent(op);\n return this.handleSummaryOp(op);\n case MessageType.SummaryAck:\n case MessageType.SummaryNack:\n // Old files (prior to PR #10077) may not contain this info\n // back-compat: ADO #1385: remove cast when ISequencedDocumentMessage changes are propagated\n if (op.data !== undefined) {\n op.contents = JSON.parse(op.data);\n }\n else {\n this.parseContent(op);\n }\n return op.type === MessageType.SummaryAck\n ? this.handleSummaryAck(op)\n : this.handleSummaryNack(op);\n default: {\n // If the difference between timestamp of current op and last summary op is greater than\n // the maxAckWaitTime, then we need to inform summarizer to not wait and summarize\n // immediately as we have already waited for maxAckWaitTime.\n const lastOpTimestamp = op.timestamp;\n if (this.lastSummaryTimestamp !== undefined &&\n this.maxAckWaitTime !== undefined &&\n lastOpTimestamp - this.lastSummaryTimestamp >= this.maxAckWaitTime) {\n this.pendingAckTimerTimeoutCallback?.();\n }\n this.emit(\"default\", op);\n return;\n }\n }\n }\n handleSummaryOp(op) {\n let summary;\n // Check if summary already being watched, broadcast if so\n // TODO: Verify whether this should be able to handle server-generated ops (with null clientId)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const watcher = this.summaryWatchers.get(op.clientId);\n if (watcher) {\n summary = watcher.tryGetSummary(op.clientSequenceNumber);\n if (summary) {\n summary.broadcast(op);\n }\n }\n // If not watched, create from op\n if (!summary) {\n summary = Summary.createFromOp(op);\n if (watcher) {\n watcher.setSummary(summary);\n }\n }\n this.pendingSummaries.set(op.sequenceNumber, summary);\n this.lastSummaryTimestamp = op.timestamp;\n this.emit(MessageType.Summarize, op);\n }\n handleSummaryAck(op) {\n const seq = op.contents.summaryProposal.summarySequenceNumber;\n const summary = this.pendingSummaries.get(seq);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- optional chain is not logically equivalent\n if (!summary || summary.summaryOp === undefined) {\n // Summary ack without an op should be rare. We could fetch the\n // reference sequence number from the snapshot, but instead we\n // will not emit this ack. It should be the case that the summary\n // op that this ack is for is earlier than this file was loaded\n // from. i.e. initialSequenceNumber > summarySequenceNumber.\n // We really don't care about it for now, since it is older than\n // the one we loaded from.\n if (seq > this.deltaManager.initialSequenceNumber) {\n // Potential causes for it to be later than our initialSequenceNumber\n // are that the summaryOp was nacked then acked, double-acked, or\n // the summarySequenceNumber is incorrect.\n this.logger.sendTelemetryEvent({\n eventName: \"SummaryAckWithoutOp\",\n sequenceNumber: op.sequenceNumber, // summary ack seq #\n summarySequenceNumber: seq, // missing summary seq #\n initialSequenceNumber: this.deltaManager.initialSequenceNumber,\n });\n }\n return;\n }\n summary.ackNack(op);\n this.pendingSummaries.delete(seq);\n // Track latest ack\n if (!this.lastAck ||\n seq > this.lastAck.summaryAck.contents.summaryProposal.summarySequenceNumber) {\n this.lastAck = {\n summaryOp: summary.summaryOp,\n summaryAck: op,\n };\n this.refreshWaitNextAck.resolve();\n this.refreshWaitNextAck = new Deferred();\n this.emit(MessageType.SummaryAck, op);\n }\n }\n handleSummaryNack(op) {\n const seq = op.contents.summaryProposal.summarySequenceNumber;\n const summary = this.pendingSummaries.get(seq);\n if (summary) {\n summary.ackNack(op);\n this.pendingSummaries.delete(seq);\n this.emit(MessageType.SummaryNack, op);\n }\n }\n}\n//# sourceMappingURL=summaryCollection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable @rushstack/no-new-null */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError, createChildLogger, } from \"@fluidframework/telemetry-utils/internal\";\nimport { summarizerClientType } from \"./summarizerClientElection.js\";\n/**\n * Tracks clients in the Quorum. It maintains their order using their join op\n * sequence numbers.\n * Internally, the collection of clients is maintained in a doubly-linked list,\n * with pointers to both the first and last nodes.\n * The first (root) node is a placeholder to simplify logic and reduce null checking.\n */\nexport class OrderedClientCollection extends TypedEventEmitter {\n get count() {\n return this.clientMap.size;\n }\n get oldestClient() {\n return this.rootNode.youngerClient;\n }\n constructor(logger, deltaManager, quorum) {\n super();\n /** Collection of ALL clients currently in the quorum, with client ids as keys. */\n this.clientMap = new Map();\n /** Placeholder head node of linked list, for simplified null checking. */\n this.rootNode = {\n sequenceNumber: -1,\n olderClient: undefined,\n youngerClient: undefined,\n };\n /** Pointer to end of linked list, for optimized client adds. */\n this._youngestClient = this.rootNode;\n this.logger = createChildLogger({ logger, namespace: \"OrderedClientCollection\" });\n const members = quorum.getMembers();\n for (const [clientId, client] of members) {\n this.addClient(clientId, client);\n }\n quorum.on(\"addMember\", (clientId, client) => {\n const newClient = this.addClient(clientId, client);\n this.emit(\"addClient\", newClient, deltaManager.lastSequenceNumber);\n });\n quorum.on(\"removeMember\", (clientId) => {\n const sequenceNumber = deltaManager.lastSequenceNumber;\n const removeClient = this.removeClient(clientId);\n if (removeClient === undefined) {\n this.logger.sendErrorEvent({\n eventName: \"ClientNotFound\",\n clientId,\n sequenceNumber,\n });\n }\n else {\n this.emit(\"removeClient\", removeClient, sequenceNumber);\n }\n });\n }\n addClient(clientId, client) {\n // Normal case is adding the latest client, which will bypass loop.\n // Find where it belongs otherwise (maybe possible during initial load?).\n assert(client.sequenceNumber > -1, 0x1f6 /* \"Negative client sequence number not allowed\" */);\n let currClient = this._youngestClient;\n while (currClient.sequenceNumber > client.sequenceNumber) {\n assert(currClient.olderClient !== undefined, 0x1f7 /* \"Previous client should always be defined\" */);\n // Note: If adding a client older than the elected client, it will not be automatically elected.\n currClient = currClient.olderClient;\n }\n // Now currClient is the node right before where the new client node should be.\n const newClient = {\n clientId,\n sequenceNumber: client.sequenceNumber,\n client: { ...client.client }, // shallow clone\n olderClient: currClient,\n youngerClient: currClient.youngerClient,\n };\n // Update prev node to point to this new node.\n newClient.olderClient.youngerClient = newClient;\n if (newClient.youngerClient === undefined) {\n // Update linked list end pointer to youngest client.\n this._youngestClient = newClient;\n }\n else {\n // Update next node to point back to this new node.\n newClient.youngerClient.olderClient = newClient;\n }\n this.clientMap.set(clientId, newClient);\n return newClient;\n }\n removeClient(clientId) {\n const removeClient = this.clientMap.get(clientId);\n if (removeClient === undefined) {\n return;\n }\n // Update prev node to point to next node.\n removeClient.olderClient.youngerClient = removeClient.youngerClient;\n if (removeClient.youngerClient === undefined) {\n // Update linked list end pointer to youngest client.\n this._youngestClient = removeClient.olderClient;\n }\n else {\n // Update next node to point back to previous node.\n removeClient.youngerClient.olderClient = removeClient.olderClient;\n }\n this.clientMap.delete(clientId);\n return removeClient;\n }\n /** Returns an array of all clients being tracked in order from oldest to newest. */\n getAllClients() {\n const result = [];\n let currClient = this.rootNode;\n while (currClient.youngerClient !== undefined) {\n result.push(currClient.youngerClient);\n currClient = currClient.youngerClient;\n }\n return result;\n }\n}\n/**\n * Adapter for OrderedClientCollection, with the purpose of deterministically maintaining\n * a currently elected client, excluding ineligible clients, in a distributed fashion.\n * This can be true as long as incrementElectedClient and resetElectedClient calls\n * are called under the same conditions for all clients.\n */\nexport class OrderedClientElection extends TypedEventEmitter {\n get eligibleCount() {\n return this._eligibleCount;\n }\n get electionSequenceNumber() {\n return this._electionSequenceNumber;\n }\n /**\n * OrderedClientCollection tracks electedClient and electedParent separately. This allows us to handle the case\n * where a new interactive parent client has been elected, but the summarizer is still doing work, so\n * a new summarizer should not yet be spawned. In this case, changing electedParent will cause SummaryManager\n * to stop the current summarizer, but a new summarizer will not be spawned until the old summarizer client has\n * left the quorum.\n *\n * Details:\n *\n * electedParent is the interactive client that has been elected to spawn a summarizer. It is typically the oldest\n * eligible interactive client in the quorum. Only the electedParent is permitted to spawn a summarizer.\n * Once elected, this client will remain the electedParent until it leaves the quorum or the summarizer that\n * it spawned stops producing summaries, at which point a new electedParent will be chosen.\n *\n * electedClient is the non-interactive summarizer client if one exists. If not, then electedClient is equal to\n * electedParent. If electedParent === electedClient, this is the signal for electedParent to spawn a new\n * electedClient. Once a summarizer client becomes electedClient, a new summarizer will not be spawned until\n * electedClient leaves the quorum.\n *\n * A typical sequence looks like this:\n *\n * i. Begin by electing A. electedParent === A, electedClient === A.\n *\n * ii. SummaryManager running on A spawns a summarizer client, A'. electedParent === A, electedClient === A'\n *\n * iii. A' stops producing summaries. A new parent client, B, is elected. electedParent === B, electedClient === A'\n *\n * iv. SummaryManager running on A detects the change to electedParent and tells the summarizer to stop, but A'\n * is in mid-summarization. No new summarizer is spawned, as electedParent !== electedClient.\n *\n * v. A' completes its summary, and the summarizer and backing client are torn down.\n *\n * vi. A' leaves the quorum, and B takes its place as electedClient. electedParent === B, electedClient === B\n *\n * vii. SummaryManager running on B spawns a summarizer client, B'. electedParent === B, electedClient === B'\n */\n get electedClient() {\n return this._electedClient;\n }\n get electedParent() {\n return this._electedParent;\n }\n constructor(logger, orderedClientCollection, \n /** Serialized state from summary or current sequence number at time of load if new. */\n initialState, isEligibleFn, recordPerformanceEvents = false) {\n super();\n this.logger = logger;\n this.orderedClientCollection = orderedClientCollection;\n this.isEligibleFn = isEligibleFn;\n this.recordPerformanceEvents = recordPerformanceEvents;\n this._eligibleCount = 0;\n let initialClient;\n let initialParent;\n for (const client of orderedClientCollection.getAllClients()) {\n this.addClient(client, 0);\n if (typeof initialState !== \"number\") {\n if (client.clientId === initialState.electedClientId) {\n initialClient = client;\n if (initialState.electedParentId === undefined &&\n client.client.details.type !== summarizerClientType) {\n // If there was no elected parent in the serialized data, use this one.\n initialParent = client;\n }\n }\n if (client.clientId === initialState.electedParentId) {\n initialParent = client;\n }\n }\n }\n orderedClientCollection.on(\"addClient\", (client, seq) => this.addClient(client, seq));\n orderedClientCollection.on(\"removeClient\", (client, seq) => this.removeClient(client, seq));\n if (typeof initialState === \"number\") {\n this._electionSequenceNumber = initialState;\n }\n else {\n // Override the initially elected client with the initial state.\n if (initialClient?.clientId !== initialState.electedClientId) {\n // Cannot find initially elected client, so elect undefined.\n this.logger.sendErrorEvent({\n eventName: \"InitialElectedClientNotFound\",\n electionSequenceNumber: initialState.electionSequenceNumber,\n expectedClientId: initialState.electedClientId,\n electedClientId: initialClient?.clientId,\n clientCount: orderedClientCollection.count,\n });\n }\n else if (initialClient !== undefined && !isEligibleFn(initialClient)) {\n // Initially elected client is ineligible, so elect next eligible client.\n initialClient = initialParent = this.findFirstEligibleParent(initialParent);\n this.logger.sendErrorEvent({\n eventName: \"InitialElectedClientIneligible\",\n electionSequenceNumber: initialState.electionSequenceNumber,\n expectedClientId: initialState.electedClientId,\n electedClientId: initialClient?.clientId,\n });\n }\n this._electedParent = initialParent;\n this._electedClient = initialClient;\n this._electionSequenceNumber = initialState.electionSequenceNumber;\n }\n }\n /**\n * Tries changing the elected client, raising an event if it is different.\n * Note that this function does no eligibility or suitability checks. If we get here, then\n * we will set _electedClient, and we will set _electedParent if this is an interactive client.\n */\n tryElectingClient(client, sequenceNumber, reason) {\n this.sendPerformanceEvent(\"TryElectingClient\", client, sequenceNumber, false /* forceSend */, reason);\n let change = false;\n const isSummarizerClient = client?.client.details.type === summarizerClientType;\n const prevClient = this._electedClient;\n if (this._electedClient !== client) {\n this.sendPerformanceEvent(\"ClientElected\", client, sequenceNumber, true /* forceSend */, reason);\n // Changing the elected client. Record the sequence number and note that we have to fire an event.\n this._electionSequenceNumber = sequenceNumber;\n this._electedClient = client;\n change = true;\n }\n if (this._electedParent !== client && !isSummarizerClient) {\n this.sendPerformanceEvent(\"InteractiveClientElected\", client, sequenceNumber, true /* forceSend */, reason);\n // Changing the elected parent as well.\n this._electedParent = client;\n change = true;\n }\n if (change) {\n this.emit(\"election\", client, sequenceNumber, prevClient);\n }\n }\n tryElectingParent(client, sequenceNumber, reason) {\n this.sendPerformanceEvent(\"TryElectingParent\", client, sequenceNumber, false /* forceSend */, reason);\n if (this._electedParent !== client) {\n this.sendPerformanceEvent(\"ParentElected\", client, sequenceNumber, true /* forceSend */, reason);\n this._electedParent = client;\n this.emit(\"election\", this._electedClient, sequenceNumber, this._electedClient);\n }\n }\n /**\n * Helper function to find the first eligible parent client starting with the passed in client,\n * or undefined if none are eligible.\n * @param client - client to start checking\n * @returns oldest eligible client starting with passed in client or undefined if none.\n */\n findFirstEligibleParent(client) {\n let candidateClient = client;\n while (candidateClient !== undefined &&\n (!this.isEligibleFn(candidateClient) ||\n candidateClient.client.details.type === summarizerClientType)) {\n candidateClient = candidateClient.youngerClient;\n }\n return candidateClient;\n }\n /**\n * Updates tracking for when a new client is added to the collection.\n * Will automatically elect that new client if none is elected currently.\n * @param client - client added to the collection\n * @param sequenceNumber - sequence number when client was added\n */\n addClient(client, sequenceNumber) {\n this.sendPerformanceEvent(\"AddClient\", client, sequenceNumber);\n if (this.isEligibleFn(client)) {\n this._eligibleCount++;\n const newClientIsSummarizer = client.client.details.type === summarizerClientType;\n const electedClientIsSummarizer = this._electedClient?.client.details.type === summarizerClientType;\n // Note that we allow a summarizer client to supersede an interactive client as elected client.\n if (this._electedClient === undefined ||\n (!electedClientIsSummarizer && newClientIsSummarizer)) {\n this.tryElectingClient(client, sequenceNumber, \"AddClient\");\n }\n else if (this._electedParent === undefined && !newClientIsSummarizer) {\n // This is an odd case. If the _electedClient is set, the _electedParent should be as well.\n this.tryElectingParent(client, sequenceNumber, \"AddClient\");\n }\n }\n }\n /**\n * Updates tracking for when an existing client is removed from the collection.\n * Will automatically elect next oldest client if currently elected is removed.\n * @param client - client removed from the collection\n * @param sequenceNumber - sequence number when client was removed\n */\n removeClient(client, sequenceNumber) {\n this.sendPerformanceEvent(\"RemoveClient\", client, sequenceNumber);\n if (this.isEligibleFn(client)) {\n this._eligibleCount--;\n if (this._electedClient === client) {\n // Removing the _electedClient. There are 2 possible cases:\n if (this._electedParent !== client) {\n // 1. The _electedClient is a summarizer that we've been allowing to finish its work.\n // Let the _electedParent become the _electedClient so that it can start its own summarizer.\n if (this._electedClient.client.details.type !== summarizerClientType) {\n throw new UsageError(\"Elected client should be a summarizer client 1\");\n }\n this.tryElectingClient(this._electedParent, sequenceNumber, \"RemoveSummarizerClient\");\n }\n else {\n // 2. The _electedClient is an interactive client that has left the quorum.\n // Automatically shift to next oldest client.\n const nextClient = this.findFirstEligibleParent(this._electedParent?.youngerClient) ??\n this.findFirstEligibleParent(this.orderedClientCollection.oldestClient);\n this.tryElectingClient(nextClient, sequenceNumber, \"RemoveClient\");\n }\n }\n else if (this._electedParent === client) {\n // Removing the _electedParent (but not _electedClient).\n // Shift to the next oldest parent, but do not replace the _electedClient,\n // which is a summarizer that is still doing work.\n if (this._electedClient?.client.details.type !== summarizerClientType) {\n throw new UsageError(\"Elected client should be a summarizer client 2\");\n }\n const nextParent = this.findFirstEligibleParent(this._electedParent?.youngerClient) ??\n this.findFirstEligibleParent(this.orderedClientCollection.oldestClient);\n this.tryElectingParent(nextParent, sequenceNumber, \"RemoveClient\");\n }\n }\n }\n getAllEligibleClients() {\n return this.orderedClientCollection.getAllClients().filter(this.isEligibleFn);\n }\n /**\n * Advance election to the next-oldest client. This is called if the current parent is leaving the quorum,\n * or if the current summarizer is not responsive and we want to stop it and spawn a new one.\n */\n incrementElectedClient(sequenceNumber) {\n const nextClient = this.findFirstEligibleParent(this._electedParent?.youngerClient) ??\n this.findFirstEligibleParent(this.orderedClientCollection.oldestClient);\n if (this._electedClient === undefined || this._electedClient === this._electedParent) {\n this.tryElectingClient(nextClient, sequenceNumber, \"IncrementElectedClient\");\n }\n else {\n // The _electedClient is a summarizer and should not be replaced until it leaves the quorum.\n // Changing the _electedParent will stop the summarizer.\n this.tryElectingParent(nextClient, sequenceNumber, \"IncrementElectedClient\");\n }\n }\n /**\n * (Re-)start election with the oldest client in the quorum. This is called if we need to summarize\n * and no client has been elected.\n */\n resetElectedClient(sequenceNumber) {\n const firstClient = this.findFirstEligibleParent(this.orderedClientCollection.oldestClient);\n if (this._electedClient === undefined || this._electedClient === this._electedParent) {\n this.tryElectingClient(firstClient, sequenceNumber, \"ResetElectedClient\");\n }\n else {\n // The _electedClient is a summarizer and should not be replaced until it leaves the quorum.\n // Changing the _electedParent will stop the summarizer.\n this.tryElectingParent(firstClient, sequenceNumber, \"ResetElectedClient\");\n }\n }\n peekNextElectedClient() {\n return (this.findFirstEligibleParent(this._electedParent?.youngerClient) ??\n this.findFirstEligibleParent(this.orderedClientCollection.oldestClient));\n }\n serialize() {\n return {\n electionSequenceNumber: this.electionSequenceNumber,\n electedClientId: this.electedClient?.clientId,\n electedParentId: this.electedParent?.clientId,\n };\n }\n sendPerformanceEvent(eventName, client, sequenceNumber, forceSend = false, reason) {\n if (this.recordPerformanceEvents || forceSend) {\n this.logger.sendPerformanceEvent({\n eventName,\n clientId: client?.clientId,\n sequenceNumber,\n electedClientId: this.electedClient?.clientId,\n electedParentId: this.electedParent?.clientId,\n isEligible: client !== undefined ? this.isEligibleFn(client) : false,\n isSummarizerClient: client?.client.details.type === summarizerClientType,\n reason,\n });\n }\n }\n}\n//# sourceMappingURL=orderedClientElection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport const opSize = (op) => {\n // Some messages may already have string contents,\n // so stringifying them again will add inaccurate overhead.\n const content = typeof op.contents === \"string\" ? op.contents : JSON.stringify(op.contents) ?? \"\";\n const data = opHasData(op) ? op.data : \"\";\n return content.length + data.length;\n};\nconst opHasData = (op) => op.data !== undefined;\n//# sourceMappingURL=opProperties.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Timer } from \"@fluidframework/core-utils/internal\";\n/** Simple implementation of class for tracking summarize heuristic data. */\nexport class SummarizeHeuristicData {\n get lastAttempt() {\n return this._lastAttempt;\n }\n get lastSuccessfulSummary() {\n return this._lastSuccessfulSummary;\n }\n get opsSinceLastSummary() {\n return this.numNonRuntimeOpsBefore + this.numRuntimeOpsBefore;\n }\n constructor(lastOpSequenceNumber, \n /** Baseline attempt data used for comparisons with subsequent attempts/calculations. */\n attemptBaseline) {\n this.lastOpSequenceNumber = lastOpSequenceNumber;\n this.hasMissingOpData = false;\n this.totalOpsSize = 0;\n /**\n * Cumulative size in bytes of all the ops at the beginning of the summarization attempt.\n * Is used to adjust totalOpsSize appropriately after successful summarization.\n */\n this.totalOpsSizeBefore = 0;\n this.numNonRuntimeOps = 0;\n /**\n * Number of non-runtime ops at beginning of attempting to summarize.\n * Is used to adjust numNonRuntimeOps appropriately after successful summarization.\n */\n this.numNonRuntimeOpsBefore = 0;\n this.numRuntimeOps = 0;\n /**\n * Number of runtime ops at beginning of attempting to summarize.\n * Is used to adjust numRuntimeOps appropriately after successful summarization.\n */\n this.numRuntimeOpsBefore = 0;\n this._lastAttempt = attemptBaseline;\n this._lastSuccessfulSummary = { ...attemptBaseline };\n }\n updateWithLastSummaryAckInfo(lastSummary) {\n this._lastAttempt = lastSummary;\n this._lastSuccessfulSummary = { ...lastSummary };\n }\n recordAttempt(refSequenceNumber) {\n this._lastAttempt = {\n refSequenceNumber: refSequenceNumber ?? this.lastOpSequenceNumber,\n summaryTime: Date.now(),\n };\n this.numNonRuntimeOpsBefore = this.numNonRuntimeOps;\n this.numRuntimeOpsBefore = this.numRuntimeOps;\n this.totalOpsSizeBefore = this.totalOpsSize;\n }\n markLastAttemptAsSuccessful() {\n this._lastSuccessfulSummary = { ...this.lastAttempt };\n this.numNonRuntimeOps -= this.numNonRuntimeOpsBefore;\n this.numNonRuntimeOpsBefore = 0;\n this.numRuntimeOps -= this.numRuntimeOpsBefore;\n this.numRuntimeOpsBefore = 0;\n this.totalOpsSize -= this.totalOpsSizeBefore;\n this.totalOpsSizeBefore = 0;\n }\n}\n/**\n * This class contains the heuristics for when to summarize.\n */\nexport class SummarizeHeuristicRunner {\n constructor(heuristicData, configuration, trySummarize, logger, summarizeStrategies = getDefaultSummaryHeuristicStrategies()) {\n this.heuristicData = heuristicData;\n this.configuration = configuration;\n this.logger = logger;\n this.summarizeStrategies = summarizeStrategies;\n this.idleTimer = new Timer(this.idleTime, () => this.runSummarize(\"idle\"));\n this.runSummarize = (reason) => {\n this.idleTimer?.clear();\n // We shouldn't attempt a summary if there are no new processed ops\n const opsSinceLastAck = this.opsSinceLastAck;\n if (opsSinceLastAck > 0) {\n trySummarize(reason);\n }\n };\n }\n get idleTime() {\n const maxIdleTime = this.configuration.maxIdleTime;\n const minIdleTime = this.configuration.minIdleTime;\n const weightedNumOfOps = getWeightedNumberOfOps(this.heuristicData.numRuntimeOps, this.heuristicData.numNonRuntimeOps, this.configuration.runtimeOpWeight, this.configuration.nonRuntimeOpWeight);\n const pToMaxOps = (weightedNumOfOps * 1.0) / this.configuration.maxOps;\n if (pToMaxOps >= 1) {\n return minIdleTime;\n }\n // Return a ratioed idle time based on the percentage of ops\n return maxIdleTime - (maxIdleTime - minIdleTime) * pToMaxOps;\n }\n get opsSinceLastAck() {\n return (this.heuristicData.lastOpSequenceNumber -\n this.heuristicData.lastSuccessfulSummary.refSequenceNumber);\n }\n start() {\n this.idleTimer?.start(this.idleTime);\n }\n run() {\n for (const strategy of this.summarizeStrategies) {\n if (strategy.shouldRunSummary(this.configuration, this.heuristicData)) {\n return this.runSummarize(strategy.summarizeReason);\n }\n }\n this.idleTimer?.restart(this.idleTime);\n }\n shouldRunLastSummary() {\n const weightedOpsSinceLastAck = getWeightedNumberOfOps(this.heuristicData.numRuntimeOps, this.heuristicData.numNonRuntimeOps, this.configuration.runtimeOpWeight, this.configuration.nonRuntimeOpWeight);\n const minOpsForLastSummaryAttempt = this.configuration.minOpsForLastSummaryAttempt;\n this.logger.sendTelemetryEvent({\n eventName: \"ShouldRunLastSummary\",\n weightedOpsSinceLastAck,\n minOpsForLastSummaryAttempt,\n });\n return weightedOpsSinceLastAck >= minOpsForLastSummaryAttempt;\n }\n dispose() {\n this.idleTimer?.clear();\n }\n}\n/** Strategy used to run a summary when it's been a while since our last successful summary */\nclass MaxTimeSummaryHeuristicStrategy {\n constructor() {\n this.summarizeReason = \"maxTime\";\n }\n shouldRunSummary(configuration, heuristicData) {\n const timeSinceLastSummary = Date.now() - heuristicData.lastSuccessfulSummary.summaryTime;\n return timeSinceLastSummary > configuration.maxTime;\n }\n}\nfunction getWeightedNumberOfOps(runtimeOpCount, nonRuntimeOpCount, runtimeOpWeight, nonRuntimeOpWeight) {\n return runtimeOpWeight * runtimeOpCount + nonRuntimeOpWeight * nonRuntimeOpCount;\n}\n/** Strategy used to do a weighted analysis on the ops we've processed since the last successful summary */\nclass WeightedOpsSummaryHeuristicStrategy {\n constructor() {\n this.summarizeReason = \"maxOps\";\n }\n shouldRunSummary(configuration, heuristicData) {\n const weightedNumOfOps = getWeightedNumberOfOps(heuristicData.numRuntimeOps, heuristicData.numNonRuntimeOps, configuration.runtimeOpWeight, configuration.nonRuntimeOpWeight);\n return weightedNumOfOps > configuration.maxOps;\n }\n}\nfunction getDefaultSummaryHeuristicStrategies() {\n return [new MaxTimeSummaryHeuristicStrategy(), new WeightedOpsSummaryHeuristicStrategy()];\n}\n//# sourceMappingURL=summarizerHeuristics.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Deferred, Timer, } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes, MessageType } from \"@fluidframework/driver-definitions/internal\";\nimport { getRetryDelaySecondsFromError } from \"@fluidframework/driver-utils/internal\";\nimport { isFluidError, LoggingError, PerformanceEvent, wrapError, } from \"@fluidframework/telemetry-utils/internal\";\n/** Helper function to wait for a promise or PromiseTimer to elapse. */\nexport async function raceTimer(promise, timer, cancellationToken) {\n const promises = [\n promise.then((value) => ({ result: \"done\", value })),\n timer.then(({ timerResult: result }) => ({ result })),\n ];\n if (cancellationToken !== undefined) {\n promises.push(cancellationToken.waitCancelled.then(() => ({ result: \"cancelled\" })));\n }\n return Promise.race(promises);\n}\n// Send some telemetry if generate summary takes too long\nconst maxSummarizeTimeoutTime = 20000; // 20 sec\nconst maxSummarizeTimeoutCount = 5; // Double and resend 5 times\nconst summarizeErrors = {\n /**\n * Error encountered while generating the summary tree, uploading\n * it to storage, or submitting the op. It could be a result of\n * the client becoming disconnected while generating or an actual error.\n */\n submitSummaryFailure: \"Error while generating, uploading, or submitting summary\",\n /**\n * The summaryAckWaitTimeout time has elapsed before receiving the summarize op\n * sent by this summarize attempt. It is expected to be broadcast quickly.\n */\n summaryOpWaitTimeout: \"Timeout while waiting for summarize op broadcast\",\n /**\n * The summaryAckWaitTimeout time has elapsed before receiving either a\n * summaryAck or summaryNack op from the server in response to this\n * summarize attempt. It is expected that the server should respond.\n */\n summaryAckWaitTimeout: \"Timeout while waiting for summaryAck/summaryNack op\",\n /**\n * The server responded with a summaryNack op, thus rejecting this\n * summarize attempt.\n */\n summaryNack: \"Server rejected summary via summaryNack op\",\n disconnect: \"Summary cancelled due to summarizer or main client disconnect\",\n};\n// Helper functions to report failures and return.\nexport const getFailMessage = (errorCode) => `${errorCode}: ${summarizeErrors[errorCode]}`;\nexport class SummarizeResultBuilder {\n constructor() {\n this.summarySubmitted = new Deferred();\n this.summaryOpBroadcasted = new Deferred();\n this.receivedSummaryAckOrNack = new Deferred();\n }\n /**\n * Fails one or more of the three results as per the passed params.\n * If submit fails, all three results fail.\n * If op broadcast fails, only op broadcast result and ack nack result fails.\n * If ack nack fails, only ack nack result fails.\n */\n fail(message, error, submitFailureResult, nackSummaryResult) {\n assert(!this.receivedSummaryAckOrNack.isCompleted, 0x25e /* \"no reason to call fail if all promises have been completed\" */);\n const result = {\n success: false,\n message,\n data: undefined,\n error,\n };\n // Note that if any of these are already resolved, it will be a no-op. For example, if ack nack failed but\n // submit summary and op broadcast has already been resolved as passed, only ack nack result will get modified.\n this.summarySubmitted.resolve({ ...result, data: submitFailureResult });\n this.summaryOpBroadcasted.resolve(result);\n this.receivedSummaryAckOrNack.resolve({ ...result, data: nackSummaryResult });\n }\n build() {\n return {\n summarySubmitted: this.summarySubmitted.promise,\n summaryOpBroadcasted: this.summaryOpBroadcasted.promise,\n receivedSummaryAckOrNack: this.receivedSummaryAckOrNack.promise,\n };\n }\n}\n/**\n * Errors type for errors hit during summary that may be retriable.\n */\nexport class RetriableSummaryError extends LoggingError {\n constructor(message, retryAfterSeconds, props) {\n super(message, props);\n this.retryAfterSeconds = retryAfterSeconds;\n }\n}\n/**\n * This class generates and tracks a summary attempt.\n */\nexport class SummaryGenerator {\n constructor(pendingAckTimer, heuristicData, submitSummaryCallback, successfulSummaryCallback, refreshLatestSummaryCallback, summaryWatcher, logger) {\n this.pendingAckTimer = pendingAckTimer;\n this.heuristicData = heuristicData;\n this.submitSummaryCallback = submitSummaryCallback;\n this.successfulSummaryCallback = successfulSummaryCallback;\n this.refreshLatestSummaryCallback = refreshLatestSummaryCallback;\n this.summaryWatcher = summaryWatcher;\n this.logger = logger;\n this.summarizeTimer = new Timer(maxSummarizeTimeoutTime, () => this.summarizeTimerHandler(maxSummarizeTimeoutTime, 1));\n }\n /**\n * Generates summary and listens for broadcast and ack/nack.\n * Returns true for ack, false for nack, and undefined for failure or timeout.\n * @param summaryOptions - options controlling how the summary is generated or submitted.\n * @param resultsBuilder - optional, result builder to use to build pass or fail result.\n */\n summarize(summaryOptions, resultsBuilder = new SummarizeResultBuilder()) {\n this.summarizeCore(summaryOptions, resultsBuilder).catch((error) => {\n const message = \"UnexpectedSummarizeError\";\n summaryOptions.summaryLogger.sendErrorEvent({ eventName: message }, error);\n resultsBuilder.fail(message, error);\n });\n return resultsBuilder.build();\n }\n async summarizeCore(submitSummaryOptions, resultsBuilder) {\n const { summaryLogger, cancellationToken, ...summarizeOptions } = submitSummaryOptions;\n // Note: timeSinceLastAttempt and timeSinceLastSummary for the\n // first summary are basically the time since the summarizer was loaded.\n const timeSinceLastAttempt = Date.now() - this.heuristicData.lastAttempt.summaryTime;\n const timeSinceLastSummary = Date.now() - this.heuristicData.lastSuccessfulSummary.summaryTime;\n let summarizeTelemetryProps = {\n ...summarizeOptions,\n fullTree: summarizeOptions.fullTree ?? false,\n timeSinceLastAttempt,\n timeSinceLastSummary,\n };\n const summarizeEvent = PerformanceEvent.start(summaryLogger, {\n eventName: \"Summarize\",\n ...summarizeTelemetryProps,\n }, { start: true, end: true, cancel: \"generic\" });\n let summaryData;\n /**\n * Summarization can fail during submit, during op broadcast or during nack.\n * For submit failures, submitFailureResult should be provided. For nack failures, nackSummaryResult should\n * be provided. For op broadcast failures, only errors / properties should be provided.\n */\n const fail = (errorCode, error, properties, submitFailureResult, nackSummaryResult) => {\n // Report any failure as an error unless it was due to cancellation (like \"disconnected\" error)\n // If failure happened on upload, we may not yet realized that socket disconnected, so check\n // offlineError too.\n const category = cancellationToken.cancelled ||\n (isFluidError(error) && error?.errorType === DriverErrorTypes.offlineError)\n ? \"generic\"\n : \"error\";\n const reason = getFailMessage(errorCode);\n summarizeEvent.cancel({\n ...properties,\n reason,\n category,\n retryAfterSeconds: error.retryAfterSeconds,\n }, error); // disconnect & summaryAckTimeout do not have proper error.\n resultsBuilder.fail(reason, error, submitFailureResult, nackSummaryResult);\n };\n // Wait to generate and send summary\n this.summarizeTimer.start();\n try {\n // Need to save refSeqNum before we record new attempt (happens as part of submitSummaryCallback)\n const lastAttemptRefSeqNum = this.heuristicData.lastAttempt.refSequenceNumber;\n summaryData = await this.submitSummaryCallback(submitSummaryOptions);\n // Cumulatively add telemetry properties based on how far generateSummary went.\n const referenceSequenceNumber = summaryData.referenceSequenceNumber;\n summarizeTelemetryProps = {\n ...summarizeTelemetryProps,\n referenceSequenceNumber,\n minimumSequenceNumber: summaryData.minimumSequenceNumber,\n opsSinceLastAttempt: referenceSequenceNumber - lastAttemptRefSeqNum,\n opsSinceLastSummary: referenceSequenceNumber - this.heuristicData.lastSuccessfulSummary.refSequenceNumber,\n stage: summaryData.stage,\n };\n summarizeTelemetryProps = this.addSummaryDataToTelemetryProps(summaryData, summarizeTelemetryProps);\n if (summaryData.stage !== \"submit\") {\n const errorCode = \"submitSummaryFailure\";\n const retriableError = summaryData.error ?? new RetriableSummaryError(getFailMessage(errorCode));\n return fail(errorCode, retriableError, summarizeTelemetryProps, {\n stage: summaryData.stage,\n });\n }\n /**\n * With incremental summaries, if the full tree was not summarized, only data stores that changed should\n * be summarized. A data store is considered changed if either or both of the following is true:\n * - It has received an op.\n * - Its reference state changed, i.e., it went from referenced to unreferenced or vice-versa.\n *\n * In the extreme case, every op can be for a different data store and each op can result in the reference\n * state change of multiple data stores. So, the total number of data stores that are summarized should not\n * exceed the number of ops since last summary + number of data store whose reference state changed.\n */\n if (!submitSummaryOptions.fullTree) {\n const { summarizedDataStoreCount, gcStateUpdatedDataStoreCount = 0 } = summaryData.summaryStats;\n if (summarizedDataStoreCount >\n gcStateUpdatedDataStoreCount + this.heuristicData.opsSinceLastSummary) {\n summaryLogger.sendErrorEvent({\n eventName: \"IncrementalSummaryViolation\",\n summarizedDataStoreCount,\n gcStateUpdatedDataStoreCount,\n opsSinceLastSummary: this.heuristicData.opsSinceLastSummary,\n });\n }\n }\n // Log event here on summary success only, as Summarize_cancel duplicates failure logging.\n summarizeEvent.reportEvent(\"generate\", { ...summarizeTelemetryProps });\n resultsBuilder.summarySubmitted.resolve({ success: true, data: summaryData });\n }\n catch (error) {\n return fail(\"submitSummaryFailure\", wrapError(error, (message) => new RetriableSummaryError(message, getRetryDelaySecondsFromError(error))), undefined /* properties */, {\n stage: \"unknown\",\n });\n }\n finally {\n if (summaryData === undefined) {\n this.heuristicData.recordAttempt();\n }\n this.summarizeTimer.clear();\n }\n try {\n const pendingTimeoutP = this.pendingAckTimer.start();\n const summary = this.summaryWatcher.watchSummary(summaryData.clientSequenceNumber);\n // Wait for broadcast\n const waitBroadcastResult = await raceTimer(summary.waitBroadcast(), pendingTimeoutP, cancellationToken);\n if (waitBroadcastResult.result === \"cancelled\") {\n const errorCode = \"disconnect\";\n return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));\n }\n if (waitBroadcastResult.result !== \"done\") {\n // The summary op may not have been received within the timeout due to a transient error. So,\n // fail with a retriable error to re-attempt the summary if possible.\n const errorCode = \"summaryOpWaitTimeout\";\n return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */));\n }\n const summarizeOp = waitBroadcastResult.value;\n const broadcastDuration = Date.now() - this.heuristicData.lastAttempt.summaryTime;\n resultsBuilder.summaryOpBroadcasted.resolve({\n success: true,\n data: { summarizeOp, broadcastDuration },\n });\n this.heuristicData.lastAttempt.summarySequenceNumber = summarizeOp.sequenceNumber;\n summaryLogger.sendTelemetryEvent({\n eventName: \"Summarize_Op\",\n duration: broadcastDuration,\n referenceSequenceNumber: summarizeOp.referenceSequenceNumber,\n summarySequenceNumber: summarizeOp.sequenceNumber,\n handle: summarizeOp.contents.handle,\n });\n // Wait for ack/nack\n const waitAckNackResult = await raceTimer(summary.waitAckNack(), pendingTimeoutP, cancellationToken);\n if (waitAckNackResult.result === \"cancelled\") {\n const errorCode = \"disconnect\";\n return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));\n }\n if (waitAckNackResult.result !== \"done\") {\n const errorCode = \"summaryAckWaitTimeout\";\n // The summary ack may not have been received within the timeout due to a transient error. So,\n // fail with a retriable error to re-attempt the summary if possible.\n return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */));\n }\n const ackNackOp = waitAckNackResult.value;\n this.pendingAckTimer.clear();\n // Update for success/failure\n const ackNackDuration = Date.now() - this.heuristicData.lastAttempt.summaryTime;\n // adding new properties\n summarizeTelemetryProps = {\n ackWaitDuration: ackNackDuration,\n ackNackSequenceNumber: ackNackOp.sequenceNumber,\n summarySequenceNumber: ackNackOp.contents.summaryProposal.summarySequenceNumber,\n ...summarizeTelemetryProps,\n };\n if (ackNackOp.type === MessageType.SummaryAck) {\n this.heuristicData.markLastAttemptAsSuccessful();\n this.successfulSummaryCallback();\n summarizeEvent.end({\n ...summarizeTelemetryProps,\n handle: ackNackOp.contents.handle,\n });\n // This processes the summary ack of the successful summary. This is so that the next summary does not\n // start before the ack of the previous summary is processed.\n await this.refreshLatestSummaryCallback({\n proposalHandle: summarizeOp.contents.handle,\n ackHandle: ackNackOp.contents.handle,\n summaryRefSeq: summarizeOp.referenceSequenceNumber,\n summaryLogger,\n });\n resultsBuilder.receivedSummaryAckOrNack.resolve({\n success: true,\n data: {\n summaryAckOp: ackNackOp,\n ackNackDuration,\n },\n });\n }\n else {\n // Check for retryDelay in summaryNack response.\n assert(ackNackOp.type === MessageType.SummaryNack, 0x274 /* \"type check\" */);\n const summaryNack = ackNackOp.contents;\n const errorMessage = summaryNack?.message;\n const retryAfterSeconds = summaryNack?.retryAfter;\n const errorCode = \"summaryNack\";\n // pre-0.58 error message prefix: summaryNack\n const error = new RetriableSummaryError(getFailMessage(errorCode), retryAfterSeconds, {\n errorMessage,\n });\n assert(getRetryDelaySecondsFromError(error) === retryAfterSeconds, 0x25f /* \"retryAfterSeconds\" */);\n // This will only set resultsBuilder.receivedSummaryAckOrNack, as other promises are already set.\n return fail(errorCode, error, { ...summarizeTelemetryProps, nackRetryAfter: retryAfterSeconds }, undefined /* submitFailureResult */, { summaryNackOp: ackNackOp, ackNackDuration });\n }\n }\n finally {\n this.pendingAckTimer.clear();\n }\n }\n addSummaryDataToTelemetryProps(summaryData, initialProps) {\n switch (summaryData.stage) {\n case \"base\":\n return initialProps;\n case \"generate\":\n return {\n ...initialProps,\n ...summaryData.summaryStats,\n generateDuration: summaryData.generateDuration,\n };\n case \"upload\":\n return {\n ...initialProps,\n ...summaryData.summaryStats,\n generateDuration: summaryData.generateDuration,\n handle: summaryData.handle,\n uploadDuration: summaryData.uploadDuration,\n };\n case \"submit\":\n return {\n ...initialProps,\n ...summaryData.summaryStats,\n generateDuration: summaryData.generateDuration,\n handle: summaryData.handle,\n uploadDuration: summaryData.uploadDuration,\n clientSequenceNumber: summaryData.clientSequenceNumber,\n hasMissingOpData: this.heuristicData.hasMissingOpData,\n opsSizesSinceLastSummary: this.heuristicData.totalOpsSize,\n nonRuntimeOpsSinceLastSummary: this.heuristicData.numNonRuntimeOps,\n runtimeOpsSinceLastSummary: this.heuristicData.numRuntimeOps,\n };\n default:\n assert(true, 0x397 /* Unexpected summary stage */);\n }\n return initialProps;\n }\n summarizeTimerHandler(time, count) {\n this.logger.sendPerformanceEvent({\n eventName: \"SummarizeTimeout\",\n timeoutTime: time,\n timeoutCount: count,\n });\n if (count < maxSummarizeTimeoutCount) {\n // Double and start a new timer\n const nextTime = time * 2;\n this.summarizeTimer.start(nextTime, () => this.summarizeTimerHandler(nextTime, count + 1));\n }\n }\n dispose() {\n this.summarizeTimer.clear();\n }\n}\n//# sourceMappingURL=summaryGenerator.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert, Deferred, PromiseTimer, delay } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes, MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { UsageError, createChildLogger, createChildMonitoringContext, isFluidError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { opSize } from \"../opProperties.js\";\nimport { SummarizeHeuristicRunner } from \"./summarizerHeuristics.js\";\nimport { RetriableSummaryError, SummarizeResultBuilder, SummaryGenerator, raceTimer, } from \"./summaryGenerator.js\";\nconst maxSummarizeAckWaitTime = 10 * 60 * 1000; // 10 minutes\n/**\n * The maximum number of summarization attempts that will be done by default in case of failures\n * that can be retried.\n */\nexport const defaultMaxAttempts = 2;\n/**\n * The default value for maximum number of summarization attempts that will be done for summarization failures where\n * submit fails and the failure can be retried.\n */\nexport const defaultMaxAttemptsForSubmitFailures = 5;\n/**\n * An instance of RunningSummarizer manages the heuristics for summarizing.\n * Until disposed, the instance of RunningSummarizer can assume that it is\n * in a state of running, meaning it is connected and initialized. It keeps\n * track of summaries that it is generating as they are broadcast and acked/nacked.\n * This object is created and controlled by Summarizer object.\n */\nexport class RunningSummarizer extends TypedEventEmitter {\n static async start(logger, summaryWatcher, configuration, submitSummaryCallback, refreshLatestSummaryAckCallback, heuristicData, summaryCollection, cancellationToken, stopSummarizerCallback, runtime) {\n const summarizer = new RunningSummarizer(logger, summaryWatcher, configuration, submitSummaryCallback, refreshLatestSummaryAckCallback, heuristicData, summaryCollection, cancellationToken, stopSummarizerCallback, runtime);\n // If there have been any acks newer that the one this client loaded from until now, process them before\n // starting the running summarizer which will trigger summary heuristics.\n // This is done primarily to handle scenarios where the summarizer loads from a cached snapshot and there\n // is newer one available. The ack for the newer summary is processed before summarizing because otherwise\n // that summary would fail as it has an older parent.\n let nextReferenceSequenceNumber = runtime.deltaManager.initialSequenceNumber + 1;\n const latestAck = summaryCollection.latestAck;\n if (latestAck !== undefined &&\n latestAck.summaryOp.referenceSequenceNumber >= nextReferenceSequenceNumber) {\n await summarizer.handleSummaryAck(latestAck);\n nextReferenceSequenceNumber = latestAck.summaryOp.referenceSequenceNumber + 1;\n }\n await summarizer.waitStart();\n // Process summary acks asynchronously\n // Note: no exceptions are thrown from processIncomingSummaryAcks handler as it handles all exceptions\n summarizer.processIncomingSummaryAcks(nextReferenceSequenceNumber).catch((error) => {\n createChildLogger({ logger }).sendErrorEvent({ eventName: \"HandleSummaryAckFatalError\" }, error);\n });\n // Update heuristic counts\n // By the time we get here, there are potentially ops missing from the heuristic summary counts\n // Examples of where this could happen:\n // 1. Op is processed during the time that we are initiating the RunningSummarizer instance but before we\n // listen for the op events (will get missed by the handlers in the current workflow)\n // 2. Op was sequenced after the last time we summarized (op sequence number > summarize ref sequence number)\n const diff = runtime.deltaManager.lastSequenceNumber -\n (heuristicData.lastSuccessfulSummary.refSequenceNumber +\n heuristicData.numNonRuntimeOps +\n heuristicData.numRuntimeOps);\n heuristicData.hasMissingOpData = diff > 0;\n if (heuristicData.hasMissingOpData) {\n // Split the diff 50-50 and increment the counts appropriately\n heuristicData.numNonRuntimeOps += Math.ceil(diff / 2);\n heuristicData.numRuntimeOps += Math.floor(diff / 2);\n }\n // Update last seq number (in case the handlers haven't processed anything yet)\n heuristicData.lastOpSequenceNumber = runtime.deltaManager.lastSequenceNumber;\n // Start heuristics\n summarizer.heuristicRunner?.start();\n summarizer.heuristicRunner?.run();\n return summarizer;\n }\n get disposed() {\n return this._disposed;\n }\n constructor(baseLogger, summaryWatcher, configuration, submitSummaryCallback, refreshLatestSummaryAckCallback, heuristicData, summaryCollection, cancellationToken, stopSummarizerCallback, runtime) {\n super();\n this.summaryWatcher = summaryWatcher;\n this.configuration = configuration;\n this.submitSummaryCallback = submitSummaryCallback;\n this.refreshLatestSummaryAckCallback = refreshLatestSummaryAckCallback;\n this.heuristicData = heuristicData;\n this.summaryCollection = summaryCollection;\n this.cancellationToken = cancellationToken;\n this.stopSummarizerCallback = stopSummarizerCallback;\n this.runtime = runtime;\n this.stopping = false;\n this._disposed = false;\n this.tryWhileSummarizing = false;\n this.summarizeCount = 0;\n this.totalSuccessfulAttempts = 0;\n this.initialized = false;\n this.refreshLatestSummaryAckAndHandleError = async (options) => {\n return this.refreshLatestSummaryAckCallback(options).catch(async (error) => {\n // If the error is 404, so maybe the fetched version no longer exists on server. We just\n // ignore this error in that case, as that means we will have another summaryAck for the\n // latest version with which we will refresh the state. However in case of single commit\n // summary, we might be missing a summary ack, so in that case we are still fine as the\n // code in `submitSummary` function in container runtime, will refresh the latest state\n // by calling `prefetchLatestSummaryThenClose`. We will load the next summarizer from the\n // updated state and be fine.\n const isIgnoredError = isFluidError(error) &&\n error.errorType === DriverErrorTypes.fileNotFoundOrAccessDeniedError;\n options.summaryLogger.sendTelemetryEvent({\n eventName: isIgnoredError\n ? \"HandleSummaryAckErrorIgnored\"\n : \"HandleLastSummaryAckError\",\n referenceSequenceNumber: options.summaryRefSeq,\n proposalHandle: options.proposalHandle,\n ackHandle: options.ackHandle,\n }, error);\n });\n };\n /**\n * RunningSummarizer's logger includes the sequenced index of the current summary on each event.\n * If some other Summarizer code wants that event on their logs they can get it here,\n * but only if they're logging about that same summary.\n * @param summaryOpRefSeq - RefSeq number of the summary op, to ensure the log correlation will be correct\n */\n this.tryGetCorrelatedLogger = (summaryOpRefSeq) => this.heuristicData.lastAttempt.refSequenceNumber === summaryOpRefSeq\n ? this.mc.logger\n : undefined;\n /** We only want a single heuristic runner micro-task (will provide better optimized grouping of ops) */\n this.heuristicRunnerMicroTaskExists = false;\n const telemetryProps = {\n summarizeCount: () => this.summarizeCount,\n summarizerSuccessfulAttempts: () => this.totalSuccessfulAttempts,\n };\n this.mc = createChildMonitoringContext({\n logger: baseLogger,\n namespace: \"Running\",\n properties: {\n all: telemetryProps,\n },\n });\n if (configuration.state !== \"disableHeuristics\") {\n assert(this.configuration.state === \"enabled\", 0x2ea /* \"Configuration state should be enabled\" */);\n this.heuristicRunner = new SummarizeHeuristicRunner(heuristicData, this.configuration, (reason) => this.trySummarize(reason), this.mc.logger);\n }\n assert(this.configuration.state !== \"disabled\", 0x2eb /* \"Summary not supported with configuration disabled\" */);\n // Cap the maximum amount of time client will wait for a summarize op ack to maxSummarizeAckWaitTime\n // configuration.maxAckWaitTime is composed from defaults, server values, and runtime overrides\n const maxAckWaitTime = Math.min(this.configuration.maxAckWaitTime, maxSummarizeAckWaitTime);\n this.pendingAckTimer = new PromiseTimer(maxAckWaitTime, () => {\n // Note: summarizeCount (from ChildLogger definition) may be 0,\n // since this code path is hit when RunningSummarizer first starts up,\n // before this instance has kicked off a new summarize run.\n this.mc.logger.sendErrorEvent({\n eventName: \"SummaryAckWaitTimeout\",\n message: \"Pending summary ack not received in time\",\n maxAckWaitTime,\n referenceSequenceNumber: this.heuristicData.lastAttempt.refSequenceNumber,\n summarySequenceNumber: this.heuristicData.lastAttempt.summarySequenceNumber,\n timePending: Date.now() - this.heuristicData.lastAttempt.summaryTime,\n });\n });\n // Set up pending ack timeout by op timestamp differences for previous summaries.\n summaryCollection.setPendingAckTimerTimeoutCallback(maxAckWaitTime, () => {\n if (this.pendingAckTimer.hasTimer) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"MissingSummaryAckFoundByOps\",\n referenceSequenceNumber: this.heuristicData.lastAttempt.refSequenceNumber,\n summarySequenceNumber: this.heuristicData.lastAttempt.summarySequenceNumber,\n });\n this.pendingAckTimer.clear();\n }\n });\n const immediatelyRefreshLatestSummaryAck = this.mc.config.getBoolean(\"Fluid.Summarizer.immediatelyRefreshLatestSummaryAck\") ?? true;\n this.generator = new SummaryGenerator(this.pendingAckTimer, this.heuristicData, this.submitSummaryCallback, () => {\n this.totalSuccessfulAttempts++;\n }, async (options) => {\n if (immediatelyRefreshLatestSummaryAck) {\n await this.refreshLatestSummaryAckAndHandleError(options);\n }\n }, this.summaryWatcher, this.mc.logger);\n // Listen to runtime for ops\n this.runtimeListener = (op, runtimeMessage) => {\n this.handleOp(op, runtimeMessage === true);\n };\n this.runtime.on(\"op\", this.runtimeListener);\n // The max attempts for submit failures can be overridden via a feature flag. This allows us to\n // tweak this as per telemetry data until we arrive at a stable number.\n // If its set to a number higher than `defaultMaxAttemptsForSubmitFailures`, it will be ignored.\n const overrideMaxAttempts = this.mc.config.getNumber(\"Fluid.Summarizer.AttemptsForSubmitFailures\");\n this.maxAttemptsForSubmitFailures =\n overrideMaxAttempts && overrideMaxAttempts < defaultMaxAttemptsForSubmitFailures\n ? overrideMaxAttempts\n : defaultMaxAttemptsForSubmitFailures;\n }\n async handleSummaryAck(ack) {\n const refSequenceNumber = ack.summaryOp.referenceSequenceNumber;\n const summaryLogger = this.tryGetCorrelatedLogger(refSequenceNumber) ?? this.mc.logger;\n const summaryOpHandle = ack.summaryOp.contents.handle;\n const summaryAckHandle = ack.summaryAck.contents.handle;\n while (this.summarizingLock !== undefined) {\n summaryLogger.sendTelemetryEvent({\n eventName: \"RefreshAttemptWithSummarizerRunning\",\n referenceSequenceNumber: refSequenceNumber,\n proposalHandle: summaryOpHandle,\n ackHandle: summaryAckHandle,\n });\n await this.summarizingLock;\n }\n // Make sure we block any summarizer from being executed/enqueued while\n // executing the refreshLatestSummaryAck.\n // https://dev.azure.com/fluidframework/internal/_workitems/edit/779\n await this.lockedSummaryAction(() => { }, async () => {\n const options = {\n proposalHandle: summaryOpHandle,\n ackHandle: summaryAckHandle,\n summaryRefSeq: refSequenceNumber,\n summaryLogger,\n };\n await this.refreshLatestSummaryAckAndHandleError(options);\n }, () => { });\n }\n /**\n * Responsible for receiving and processing all the summary acks.\n * It starts processing ACKs after the one for the summary this client loaded from (initialSequenceNumber). Any\n * ACK before that is not interesting as it will simply be ignored.\n *\n * @param referenceSequenceNumber - The referenceSequenceNumber of the summary from which to start processing\n * acks.\n */\n async processIncomingSummaryAcks(referenceSequenceNumber) {\n // Start waiting for acks that are for summaries newer that the one this client loaded from.\n let nextReferenceSequenceNumber = referenceSequenceNumber;\n while (!this.disposed) {\n const ackedSummary = await this.summaryCollection.waitSummaryAck(nextReferenceSequenceNumber);\n await this.handleSummaryAck(ackedSummary);\n nextReferenceSequenceNumber = ackedSummary.summaryOp.referenceSequenceNumber + 1;\n }\n }\n dispose() {\n this.runtime.off(\"op\", this.runtimeListener);\n this.summaryWatcher.dispose();\n this.heuristicRunner?.dispose();\n this.heuristicRunner = undefined;\n this.generator.dispose();\n this.pendingAckTimer.clear();\n this.disposeEnqueuedSummary();\n this._disposed = true;\n this.stopping = true;\n }\n handleOp(op, runtimeMessage) {\n this.heuristicData.lastOpSequenceNumber = op.sequenceNumber;\n if (runtimeMessage) {\n this.heuristicData.numRuntimeOps++;\n }\n else {\n this.heuristicData.numNonRuntimeOps++;\n }\n this.heuristicData.totalOpsSize += opSize(op);\n // Check for enqueued on-demand summaries; Intentionally do nothing otherwise\n if (this.initialized &&\n this.opCanTriggerSummary(op, runtimeMessage) &&\n !this.tryRunEnqueuedSummary() &&\n !this.heuristicRunnerMicroTaskExists) {\n this.heuristicRunnerMicroTaskExists = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n Promise.resolve()\n .then(() => {\n this.heuristicRunner?.run();\n })\n .finally(() => {\n this.heuristicRunnerMicroTaskExists = false;\n });\n }\n }\n /**\n * Can the given op trigger a summary?\n * # Currently always prevents summaries for Summarize and SummaryAck/Nack ops\n * @param op - op to check\n * @returns true if this op can trigger a summary\n */\n opCanTriggerSummary(op, runtimeMessage) {\n switch (op.type) {\n case MessageType.Summarize:\n case MessageType.SummaryAck:\n case MessageType.SummaryNack:\n return false;\n default:\n return runtimeMessage || this.nonRuntimeOpCanTriggerSummary();\n }\n }\n nonRuntimeOpCanTriggerSummary() {\n const opsSinceLastAck = this.heuristicData.lastOpSequenceNumber -\n this.heuristicData.lastSuccessfulSummary.refSequenceNumber;\n return (this.configuration.state === \"enabled\" &&\n (this.configuration.nonRuntimeHeuristicThreshold === undefined ||\n this.configuration.nonRuntimeHeuristicThreshold <= opsSinceLastAck));\n }\n async waitStop(allowLastSummary) {\n if (this.stopping) {\n return;\n }\n this.stopping = true;\n this.disposeEnqueuedSummary();\n // This will try to run lastSummary if needed.\n if (allowLastSummary && this.heuristicRunner?.shouldRunLastSummary()) {\n if (this.summarizingLock === undefined) {\n this.trySummarizeOnce(\n // summarizeProps\n { summarizeReason: \"lastSummary\" }, {});\n }\n }\n // Note that trySummarizeOnce() call above returns right away, without waiting.\n // So we need to wait for its completion, otherwise it would be destroyed right away.\n // That said, if summary lock was taken upfront, this wait might wait on multiple retries to\n // submit summary. We should reconsider this flow and make summarizer move to exit faster.\n // This resolves when the current pending summary gets an ack or fails.\n await this.summarizingLock;\n }\n async waitStart() {\n // Wait no longer than ack timeout for all pending\n const waitStartResult = await raceTimer(this.summaryWatcher.waitFlushed(), this.pendingAckTimer.start());\n this.pendingAckTimer.clear();\n // Remove pending ack wait timeout by op timestamp comparison, because\n // it has race conditions with summaries submitted by this same client.\n this.summaryCollection.unsetPendingAckTimerTimeoutCallback();\n if (waitStartResult.result === \"done\" && waitStartResult.value !== undefined) {\n this.heuristicData.updateWithLastSummaryAckInfo({\n refSequenceNumber: waitStartResult.value.summaryOp.referenceSequenceNumber,\n // This will be the Summarizer starting point so only use timestamps from client's machine.\n summaryTime: Date.now(),\n summarySequenceNumber: waitStartResult.value.summaryOp.sequenceNumber,\n });\n }\n this.initialized = true;\n }\n beforeSummaryAction() {\n this.summarizeCount++;\n }\n afterSummaryAction() {\n const retry = this.tryWhileSummarizing;\n this.tryWhileSummarizing = false;\n // After summarizing, we should check to see if we need to summarize again.\n // Rerun the heuristics and check for enqueued summaries.\n if (!this.stopping && !this.tryRunEnqueuedSummary() && retry) {\n this.heuristicRunner?.run();\n }\n }\n /**\n * Runs single summary action that prevents any other concurrent actions.\n * Assumes that caller checked upfront for lack of concurrent action (this.summarizingLock)\n * before calling this API. I.e. caller is responsible for either erroring out or waiting on this promise.\n * @param before - set of instructions to run before running the action.\n * @param action - action to perform.\n * @param after - set of instructions to run after running the action.\n * @returns The result of the action.\n */\n async lockedSummaryAction(before, action, after) {\n assert(this.summarizingLock === undefined, 0x25b /* \"Caller is responsible for checking lock\" */);\n const summarizingLock = new Deferred();\n this.summarizingLock = summarizingLock.promise;\n before();\n return action().finally(() => {\n summarizingLock.resolve();\n this.summarizingLock = undefined;\n after();\n });\n }\n /**\n * Runs single summarize attempt\n * @param summarizeProps - props to log with each telemetry event associated with this attempt\n * @param options - summary options\n * @param cancellationToken - cancellation token to use to be able to cancel this summary, if needed\n * @param resultsBuilder - optional, result builder to use.\n * @returns ISummarizeResult - result of running a summary.\n */\n trySummarizeOnce(summarizeProps, options, resultsBuilder = new SummarizeResultBuilder()) {\n this.lockedSummaryAction(() => {\n this.beforeSummaryAction();\n }, async () => {\n const summaryLogger = createChildLogger({\n logger: this.mc.logger,\n properties: { all: summarizeProps },\n });\n const summaryOptions = {\n ...options,\n summaryLogger,\n cancellationToken: this.cancellationToken,\n latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,\n };\n const summarizeResult = this.generator.summarize(summaryOptions, resultsBuilder);\n // ensure we wait till the end of the process\n const result = await summarizeResult.receivedSummaryAckOrNack;\n if (!result.success) {\n this.mc.logger.sendErrorEvent({\n eventName: \"SummarizeFailed\",\n maxAttempts: 1,\n summaryAttempts: 1,\n }, result.error);\n }\n }, () => {\n this.afterSummaryAction();\n }).catch((error) => {\n // SummaryGenerator.summarize() does not throw exceptions - it converts them to failed result\n // on resultsBuilder\n // We do not care about exceptions on receivedSummaryAckOrNack - caller should check results\n // and take a appropriate action.\n });\n return resultsBuilder.build();\n }\n /** Heuristics summarize attempt. */\n trySummarize(reason) {\n if (this.summarizingLock !== undefined) {\n // lockedSummaryAction() will retry heuristic-based summary at the end of current attempt\n // if it's still needed\n this.tryWhileSummarizing = true;\n return;\n }\n this.lockedSummaryAction(() => {\n this.beforeSummaryAction();\n }, async () => {\n return this.trySummarizeWithRetries(reason);\n }, () => {\n this.afterSummaryAction();\n }).catch((error) => {\n this.mc.logger.sendErrorEvent({ eventName: \"UnexpectedSummarizeError\" }, error);\n });\n }\n /**\n * Tries to summarize with retries where retry is based on the failure params.\n * For example, summarization may be retried for failures with \"retryAfterSeconds\" param.\n */\n async trySummarizeWithRetries(reason) {\n // Helper to set summarize options, telemetry properties and call summarize.\n const attemptSummarize = (attemptNumber, finalAttempt) => {\n const summarizeOptions = {\n fullTree: false,\n };\n const summarizeProps = {\n summarizeReason: reason,\n summaryAttempts: attemptNumber,\n ...summarizeOptions,\n finalAttempt,\n };\n const summaryLogger = createChildLogger({\n logger: this.mc.logger,\n properties: { all: summarizeProps },\n });\n const summaryOptions = {\n ...summarizeOptions,\n summaryLogger,\n cancellationToken: this.cancellationToken,\n finalAttempt,\n latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,\n };\n const summarizeResult = this.generator.summarize(summaryOptions);\n return { summarizeProps, summarizeResult };\n };\n // The max number of attempts are based on the stage at which summarization failed. If it fails before it is\n // submitted, a different value is used compared to if it fails after submission. Usually, in the former case,\n // we would retry more often as its cheaper and retries are likely to succeed.\n // This makes it harder to predict how many attempts would actually happen as that depends on how far an attempt\n // made. To keep things simple, the max attempts is reset after every attempt based on where it failed. This may\n // result in some failures not being retried depending on what happened before this attempt. That's fine because\n // such scenarios are very unlikely and even if it happens, it would resolve when a new summarizer starts over.\n // For example - When failure switches from one the submit failures to nack failure, only one more retry will\n // happen irrespective of the value of `defaultMaxAttempts`.\n let maxAttempts = defaultMaxAttempts;\n let currentAttempt = 0;\n let retryAfterSeconds;\n let done = false;\n let status = \"success\";\n let results;\n let error;\n do {\n currentAttempt++;\n if (this.cancellationToken.cancelled) {\n status = \"canceled\";\n done = true;\n break;\n }\n const attemptResult = attemptSummarize(currentAttempt, false /* finalAttempt */);\n results = attemptResult.summarizeResult;\n // Ack / nack is the final step, so if it succeeds we're done.\n const ackNackResult = await results.receivedSummaryAckOrNack;\n if (ackNackResult.success) {\n status = \"success\";\n done = true;\n break;\n }\n // Update max attempts from the failure result.\n // If submit summary failed, use maxAttemptsForSubmitFailures. Else use the defaultMaxAttempts.\n // Note: Check \"summarySubmitted\" result first because if it fails, ack nack would fail as well.\n const submitSummaryResult = await results.summarySubmitted;\n maxAttempts = !submitSummaryResult.success\n ? this.maxAttemptsForSubmitFailures\n : defaultMaxAttempts;\n // Emit \"summarize\" event for this failed attempt.\n status = \"failure\";\n error = ackNackResult.error;\n retryAfterSeconds = error.retryAfterSeconds;\n const eventProps = {\n result: status,\n currentAttempt,\n maxAttempts,\n error,\n };\n this.emit(\"summarize\", eventProps);\n // Break if the failure doesn't have \"retryAfterSeconds\" or we are one less from max number of attempts.\n // Note that the final attempt if \"retryAfterSeconds\" does exist happens outside of the do..while loop.\n if (retryAfterSeconds === undefined || currentAttempt >= maxAttempts - 1) {\n done = true;\n }\n // If the failure has \"retryAfterSeconds\", add a delay of that time before starting the next attempt.\n if (retryAfterSeconds !== undefined && retryAfterSeconds > 0) {\n this.mc.logger.sendPerformanceEvent({\n eventName: \"SummarizeAttemptDelay\",\n duration: retryAfterSeconds * 1000,\n summaryNackDelay: ackNackResult.data !== undefined, // This will only be defined only for nack failures.\n stage: submitSummaryResult.data?.stage,\n ...attemptResult.summarizeProps,\n });\n await delay(retryAfterSeconds * 1000);\n }\n } while (!done);\n // If the attempt was successful, emit \"summarize\" event and return. A failed attempt may be retried below.\n if (status !== \"failure\") {\n this.emit(\"summarize\", { result: status, currentAttempt, maxAttempts });\n return results;\n }\n // If summarization wasn't successful above and the failure contains \"retryAfterSeconds\", perform one last\n // attempt. This gives a chance to the runtime to perform additional steps in the last attempt.\n if (retryAfterSeconds !== undefined) {\n const { summarizeResult } = attemptSummarize(++currentAttempt, true /* finalAttempt */);\n // Ack / nack is the final step, so if it succeeds we're done.\n const ackNackResult = await summarizeResult.receivedSummaryAckOrNack;\n status = ackNackResult.success ? \"success\" : \"failure\";\n if (!ackNackResult.success) {\n error = ackNackResult.error;\n }\n const eventProps = {\n result: status,\n currentAttempt,\n maxAttempts,\n error: ackNackResult.success ? undefined : ackNackResult.error,\n };\n this.emit(\"summarize\", eventProps);\n results = summarizeResult;\n }\n // If summarization is still unsuccessful, stop the summarizer.\n if (status === \"failure\") {\n this.mc.logger.sendErrorEvent({\n eventName: \"SummarizeFailed\",\n maxAttempts,\n summaryAttempts: currentAttempt,\n }, error);\n this.stopSummarizerCallback(\"failToSummarize\");\n }\n return results;\n }\n /**\n * Attempts to generate a summary on demand with retries in case of failures. The retry logic is the same\n * as heuristics based summaries.\n */\n async summarizeOnDemandWithRetries(reason, resultsBuilder) {\n const results = await this.trySummarizeWithRetries(reason);\n if (results === undefined) {\n resultsBuilder.fail(\"Summarization was canceled\", new RetriableSummaryError(\"Summarization was canceled\"));\n return resultsBuilder.build();\n }\n const submitResult = await results.summarySubmitted;\n const summaryOpBroadcastedResult = await results.summaryOpBroadcasted;\n const ackNackResult = await results.receivedSummaryAckOrNack;\n resultsBuilder.summarySubmitted.resolve(submitResult);\n resultsBuilder.summaryOpBroadcasted.resolve(summaryOpBroadcastedResult);\n resultsBuilder.receivedSummaryAckOrNack.resolve(ackNackResult);\n return resultsBuilder.build();\n }\n /** {@inheritdoc (ISummarizer:interface).summarizeOnDemand} */\n summarizeOnDemand(options, resultsBuilder = new SummarizeResultBuilder()) {\n if (this.stopping) {\n resultsBuilder.fail(\"RunningSummarizer stopped or disposed\", new RetriableSummaryError(\"RunningSummarizer stopped or disposed\"));\n return resultsBuilder.build();\n }\n // Check for concurrent summary attempts. If one is found,\n // return a promise that caller can await before trying again.\n if (this.summarizingLock !== undefined) {\n // The heuristics are blocking concurrent summarize attempts.\n throw new UsageError(\"Attempted to run an already-running summarizer on demand\");\n }\n const { reason, ...summarizeOptions } = options;\n if (options.retryOnFailure === true) {\n this.summarizeOnDemandWithRetries(`onDemand;${reason}`, resultsBuilder).catch((error) => {\n resultsBuilder.fail(\"summarize failed\", error);\n });\n }\n else {\n this.trySummarizeOnce({ summarizeReason: `onDemand/${reason}` }, summarizeOptions, resultsBuilder);\n }\n return resultsBuilder.build();\n }\n /** {@inheritdoc (ISummarizer:interface).enqueueSummarize} */\n enqueueSummarize(options) {\n const { reason, afterSequenceNumber = 0, override = false, ...summarizeOptions } = options;\n let overridden = false;\n if (this.enqueuedSummary !== undefined) {\n if (!override) {\n return { alreadyEnqueued: true };\n }\n // Override existing enqueued summarize attempt.\n this.enqueuedSummary.resultsBuilder.fail(\"Aborted; overridden by another enqueue summarize attempt\", new RetriableSummaryError(\"Summary was overridden by another enqueue summarize attempt\"));\n this.enqueuedSummary = undefined;\n overridden = true;\n }\n this.enqueuedSummary = {\n reason: `enqueue;${reason}`,\n afterSequenceNumber,\n summarizeOptions,\n resultsBuilder: new SummarizeResultBuilder(),\n };\n const results = this.enqueuedSummary.resultsBuilder.build();\n this.tryRunEnqueuedSummary();\n return overridden\n ? {\n ...results,\n alreadyEnqueued: true,\n overridden: true,\n }\n : results;\n }\n tryRunEnqueuedSummary() {\n if (this.stopping) {\n this.disposeEnqueuedSummary();\n return false;\n }\n if (this.enqueuedSummary === undefined ||\n this.heuristicData.lastOpSequenceNumber < this.enqueuedSummary.afterSequenceNumber ||\n this.summarizingLock !== undefined) {\n // If no enqueued summary is ready or a summary is already in progress, take no action.\n return false;\n }\n const { reason, resultsBuilder, summarizeOptions } = this.enqueuedSummary;\n // Set to undefined first, so that subsequent enqueue attempt while summarize will occur later.\n this.enqueuedSummary = undefined;\n this.trySummarizeOnce({ summarizeReason: `enqueuedSummary/${reason}` }, summarizeOptions, resultsBuilder);\n return true;\n }\n disposeEnqueuedSummary() {\n if (this.enqueuedSummary !== undefined) {\n this.enqueuedSummary.resultsBuilder.fail(\"RunningSummarizer stopped or disposed\", new RetriableSummaryError(\"RunningSummarizer stopped or disposed\"));\n this.enqueuedSummary = undefined;\n }\n }\n}\n//# sourceMappingURL=runningSummarizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { Deferred } from \"@fluidframework/core-utils/internal\";\nimport { LoggingError, UsageError, createChildLogger, wrapErrorAndLog, } from \"@fluidframework/telemetry-utils/internal\";\nimport { RunningSummarizer } from \"./runningSummarizer.js\";\nimport { SummarizeHeuristicData } from \"./summarizerHeuristics.js\";\nimport { SummarizeResultBuilder } from \"./summaryGenerator.js\";\nconst summarizingError = \"summarizingError\";\nexport class SummarizingWarning extends LoggingError {\n constructor(errorMessage, logged = false) {\n super(errorMessage);\n this.logged = logged;\n this.errorType = summarizingError;\n this.canRetry = true;\n }\n static wrap(error, logged = false, logger) {\n const newErrorFn = (errMsg) => new SummarizingWarning(errMsg, logged);\n return wrapErrorAndLog(error, newErrorFn, logger);\n }\n}\nexport const createSummarizingWarning = (errorMessage, logged) => new SummarizingWarning(errorMessage, logged);\n/**\n * Summarizer is responsible for coordinating when to generate and send summaries.\n * It is the main entry point for summary work.\n * It is created only by summarizing container (i.e. one with clientType === \"summarizer\")\n * @legacy\n * @alpha\n */\nexport class Summarizer extends TypedEventEmitter {\n get ISummarizer() {\n return this;\n }\n constructor(\n /** Reference to runtime that created this object.\n * i.e. runtime with clientType === \"summarizer\"\n */\n runtime, configurationGetter, \n /** Represents an object that can generate summary.\n * In practical terms, it's same runtime (this.runtime) with clientType === \"summarizer\".\n */\n internalsProvider, handleContext, summaryCollection, runCoordinatorCreateFn) {\n super();\n this.runtime = runtime;\n this.configurationGetter = configurationGetter;\n this.internalsProvider = internalsProvider;\n this.summaryCollection = summaryCollection;\n this.runCoordinatorCreateFn = runCoordinatorCreateFn;\n this._disposed = false;\n this.starting = false;\n this.stopDeferred = new Deferred();\n this.handleSummarizeEvent = (eventProps) => {\n this.emit(\"summarize\", eventProps);\n };\n this.logger = createChildLogger({\n logger: this.runtime.baseLogger,\n namespace: \"Summarizer\",\n });\n }\n async run(onBehalfOf) {\n try {\n return await this.runCore(onBehalfOf);\n }\n catch (error) {\n this.stop(\"summarizerException\");\n throw SummarizingWarning.wrap(error, false /* logged */, this.logger);\n }\n finally {\n this.close();\n }\n }\n /**\n * Stops the summarizer from running. This will complete\n * the run promise, and also close the container.\n * @param reason - reason code for stopping\n */\n stop(reason) {\n this.stopDeferred.resolve(reason);\n }\n close() {\n // This will result in \"summarizerClientDisconnected\" stop reason recorded in telemetry,\n // unless stop() was called earlier\n this.dispose();\n this.runtime.disposeFn();\n }\n async runCore(onBehalfOf) {\n const runCoordinator = await this.runCoordinatorCreateFn(this.runtime);\n // Wait for either external signal to cancel, or loss of connectivity.\n const stopP = Promise.race([runCoordinator.waitCancelled, this.stopDeferred.promise]);\n void stopP.then((reason) => {\n this.logger.sendTelemetryEvent({\n eventName: \"StoppingSummarizer\",\n onBehalfOf,\n reason,\n });\n });\n if (runCoordinator.cancelled) {\n return runCoordinator.waitCancelled;\n }\n const runningSummarizer = await this.start(onBehalfOf, runCoordinator);\n // Wait for either external signal to cancel, or loss of connectivity.\n const stopReason = await stopP;\n // There are two possible approaches here:\n // 1. Propagate cancellation from this.stopDeferred to runCoordinator. This will ensure that we move to the exit\n // faster, including breaking out of the RunningSummarizer.trySummarize() faster.\n // We could create new coordinator and pass it to waitStop() -> trySummarizeOnce(\"lastSummary\") flow.\n // The con of this approach is that we might cancel active summary, and lastSummary will fail because it\n // did not wait for ack/nack from previous summary. Plus we disregard any 429 kind of info from service\n // that way (i.e. trySummarize() loop might have been waiting for 5 min because storage told us so).\n // In general, it's more wasted resources.\n // 2. We can not do it and make waitStop() do last summary only if there was no active summary. This ensures\n // that client behaves properly (from server POV) and we do not waste resources. But, it may mean we wait\n // substantially longer for trySummarize() retries to play out and thus this summary loop may run into\n // conflict with new summarizer client starting on different client.\n // As of now, #2 is implemented. It's more forward looking, as issue #7279 suggests changing design for new\n // summarizer client to not be created until current summarizer fully moves to exit, and that would reduce\n // cons of #2 substantially.\n // Cleanup after running\n await runningSummarizer.waitStop(!runCoordinator.cancelled && Summarizer.stopReasonCanRunLastSummary(stopReason));\n // Propagate reason and ensure that if someone is waiting for cancellation token, they are moving to exit\n runCoordinator.stop(stopReason);\n return stopReason;\n }\n /**\n * Should we try to run a last summary for the given stop reason?\n * Currently only allows \"parentNotConnected\"\n * @param stopReason - SummarizerStopReason\n * @returns `true` if the stop reason can run a last summary, otherwise `false`.\n */\n static stopReasonCanRunLastSummary(stopReason) {\n return stopReason === \"parentNotConnected\";\n }\n /**\n * Put the summarizer in a started state, including creating and initializing the RunningSummarizer.\n * The start request can come either from the SummaryManager (in the auto-summarize case) or from the user\n * (in the on-demand case).\n * @param onBehalfOf - ID of the client that requested that the summarizer start\n * @param runCoordinator - cancellation token\n * @param newConfig - Summary configuration to override the existing config when invoking the RunningSummarizer.\n * @returns A promise that is fulfilled when the RunningSummarizer is ready.\n */\n async start(onBehalfOf, runCoordinator) {\n if (this.runningSummarizer) {\n if (this.runningSummarizer.disposed) {\n throw new UsageError(\"Starting a disposed summarizer\");\n }\n return this.runningSummarizer;\n }\n if (this.starting) {\n throw new UsageError(\"Attempting to start a summarizer that is already starting\");\n }\n this.starting = true;\n // Initialize values and first ack (time is not exact)\n this.logger.sendTelemetryEvent({\n eventName: \"RunningSummarizer\",\n onBehalfOf,\n initSummarySeqNumber: this.runtime.deltaManager.initialSequenceNumber,\n config: JSON.stringify(this.configurationGetter()),\n });\n // Summarizing container ID (with clientType === \"summarizer\")\n const clientId = this.runtime.clientId;\n if (clientId === undefined) {\n throw new UsageError(\"clientId should be defined if connected.\");\n }\n this._heuristicData = new SummarizeHeuristicData(this.runtime.deltaManager.lastSequenceNumber, {\n /** summary attempt baseline for heuristics */\n refSequenceNumber: this.runtime.deltaManager.initialSequenceNumber,\n summaryTime: Date.now(),\n });\n const runningSummarizer = await RunningSummarizer.start(this.logger, this.summaryCollection.createWatcher(clientId), this.configurationGetter(), async (...args) => this.internalsProvider.submitSummary(...args), // submitSummaryCallback\n async (...args) => this.internalsProvider.refreshLatestSummaryAck(...args), // refreshLatestSummaryAckCallback\n this._heuristicData, this.summaryCollection, runCoordinator /* cancellationToken */, (reason) => runCoordinator.stop(reason) /* stopSummarizerCallback */, this.runtime);\n this.runningSummarizer = runningSummarizer;\n this.runningSummarizer.on(\"summarize\", this.handleSummarizeEvent);\n this.starting = false;\n return runningSummarizer;\n }\n /**\n * Disposes of resources after running. This cleanup will\n * clear any outstanding timers and reset some of the state\n * properties.\n * Called by ContainerRuntime when it is disposed, as well as at the end the run().\n */\n dispose() {\n // Given that the call can come from own ContainerRuntime, ensure that we stop all the processes.\n this.stop(\"summarizerClientDisconnected\");\n this._disposed = true;\n if (this.runningSummarizer) {\n this.runningSummarizer.off(\"summarize\", this.handleSummarizeEvent);\n this.runningSummarizer.dispose();\n this.runningSummarizer = undefined;\n }\n }\n summarizeOnDemand(options) {\n try {\n if (this._disposed || this.runningSummarizer?.disposed) {\n throw new UsageError(\"Summarizer is already disposed.\");\n }\n if (this.runtime.summarizerClientId !== undefined &&\n this.runtime.summarizerClientId !== this.runtime.clientId) {\n // If there is an elected summarizer, and it's not this one, don't allow on-demand summary.\n // This is to prevent the on-demand summary and heuristic-based summary from stepping on\n // each other.\n throw new UsageError(\"On-demand summary attempted while an elected summarizer is present\");\n }\n const builder = new SummarizeResultBuilder();\n if (this.runningSummarizer) {\n // Summarizer is already running. Go ahead and start.\n return this.runningSummarizer.summarizeOnDemand(options, builder);\n }\n // Summarizer isn't running, so we need to start it, which is an async operation.\n // Manage the promise related to creating the cancellation token here.\n // The promises related to starting, summarizing,\n // and submitting are communicated to the caller through the results builder.\n const coordinatorCreateP = this.runCoordinatorCreateFn(this.runtime);\n coordinatorCreateP\n .then((runCoordinator) => {\n // Successfully created the cancellation token. Start the summarizer.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const startP = this.start(this.runtime.clientId, runCoordinator);\n startP\n .then(async (runningSummarizer) => {\n // Successfully started the summarizer. Run it.\n runningSummarizer.summarizeOnDemand(options, builder);\n // Wait for a command to stop or loss of connectivity before tearing down the summarizer and client.\n const stopReason = await Promise.race([\n this.stopDeferred.promise,\n runCoordinator.waitCancelled,\n ]);\n await runningSummarizer.waitStop(false);\n runCoordinator.stop(stopReason);\n this.close();\n })\n .catch((reason) => {\n builder.fail(\"Failed to start summarizer\", reason);\n });\n })\n .catch((reason) => {\n builder.fail(\"Failed to create cancellation token\", reason);\n });\n return builder.build();\n }\n catch (error) {\n throw SummarizingWarning.wrap(error, false /* logged */, this.logger);\n }\n }\n enqueueSummarize(options) {\n if (this._disposed ||\n this.runningSummarizer === undefined ||\n this.runningSummarizer.disposed) {\n throw new UsageError(\"Summarizer is not running or already disposed.\");\n }\n return this.runningSummarizer.enqueueSummarize(options);\n }\n recordSummaryAttempt(summaryRefSeqNum) {\n this._heuristicData?.recordAttempt(summaryRefSeqNum);\n }\n}\n//# sourceMappingURL=summarizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Deferred } from \"@fluidframework/core-utils/internal\";\n/**\n * Can be useful in testing as well as in places where caller does not use cancellation.\n * This object implements ISummaryCancellationToken interface but cancellation is never leveraged.\n * @internal\n */\nexport const neverCancelledSummaryToken = {\n cancelled: false,\n waitCancelled: new Promise(() => { }),\n};\n/**\n * Helper class to coordinate something that needs to run only while connected.\n * This provides promises that resolve as it starts or stops. Stopping happens\n * when disconnected or if stop() is called.\n */\nexport class RunWhileConnectedCoordinator {\n get cancelled() {\n if (!this._cancelled) {\n assert(this.active(), 0x25d /* \"We should never connect as 'read'\" */);\n // This check can't be enabled in current design due to lastSummary flow, where\n // summarizer for closed container stays around and can produce one more summary.\n // Currently we solve the problem of overlapping summarizer by doing wait in\n // SummaryManager.createSummarizer()\n // Better solution would involve these steps:\n // 1. Summarizer selection logic should chose summarizing client (with clientType === \"summarizer\")\n // if such client exists.\n // 2. Summarizer should be updated about such changes (to update onBehalfOfClientId)\n //\n // assert(this.runtime.summarizerClientId === this.onBehalfOfClientId ||\n // this.runtime.summarizerClientId === this.runtime.clientId, \"onBehalfOfClientId\");\n }\n return this._cancelled;\n }\n /**\n * Returns a promise that resolves once stopped either externally or by disconnect.\n */\n get waitCancelled() {\n return this.stopDeferred.promise;\n }\n static async create(runtime, active) {\n const obj = new RunWhileConnectedCoordinator(runtime, active);\n await obj.waitStart();\n return obj;\n }\n constructor(runtime, active) {\n this.runtime = runtime;\n this.active = active;\n this._cancelled = false;\n this.stopDeferred = new Deferred();\n }\n /**\n * Starts and waits for a promise which resolves when connected.\n * The promise will also resolve if stopped either externally or by disconnect.\n *\n * We only listen on disconnected event for clientType === \"summarizer\" container!\n * And only do it here - no other place should check it! That way we have only one place\n * that controls policy and it's easy to change policy in the future if we want to!\n * We do not listen for \"main\" (aka interactive) container disconnect here, as it's\n * responsibility of SummaryManager to decide if that's material or not. There are cases\n * like \"lastSummary\", or main client experiencing nacks / disconnects due to hitting limit\n * of non-summarized ops, where can make determination to continue with summary even if main\n * client is disconnected.\n */\n async waitStart() {\n if (this.runtime.disposed) {\n this.stop(\"summarizerClientDisconnected\");\n return;\n }\n this.runtime.once(\"dispose\", () => this.stop(\"summarizerClientDisconnected\"));\n if (!this.runtime.connected) {\n const waitConnected = new Promise((resolve) => this.runtime.once(\"connected\", resolve));\n await Promise.race([waitConnected, this.waitCancelled]);\n }\n this.runtime.once(\"disconnected\", () => this.stop(\"summarizerClientDisconnected\"));\n }\n /**\n * Stops running.\n */\n stop(reason) {\n if (!this._cancelled) {\n this._cancelled = true;\n this.stopDeferred.resolve(reason);\n }\n }\n}\n//# sourceMappingURL=runWhileConnectedCoordinator.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport { PerformanceEvent, createChildLogger, } from \"@fluidframework/telemetry-utils/internal\";\nimport { Summarizer } from \"./summarizer.js\";\nconst defaultInitialDelayMs = 5000;\nconst defaultOpsToBypassInitialDelay = 4000;\nexport var SummaryManagerState;\n(function (SummaryManagerState) {\n SummaryManagerState[SummaryManagerState[\"Off\"] = 0] = \"Off\";\n SummaryManagerState[SummaryManagerState[\"Starting\"] = 1] = \"Starting\";\n SummaryManagerState[SummaryManagerState[\"Running\"] = 2] = \"Running\";\n SummaryManagerState[SummaryManagerState[\"Stopping\"] = 3] = \"Stopping\";\n})(SummaryManagerState || (SummaryManagerState = {}));\n/**\n * SummaryManager is created by parent container (i.e. interactive container with clientType !== \"summarizer\") only.\n * It observes changes in calculated summarizer and reacts to changes by either creating summarizer client or\n * stopping existing summarizer client.\n */\nexport class SummaryManager extends TypedEventEmitter {\n get disposed() {\n return this._disposed;\n }\n get currentState() {\n return this.state;\n }\n constructor(clientElection, connectedState, summaryCollection, parentLogger, \n /** Creates summarizer by asking interactive container to spawn summarizing container and\n * get back its Summarizer instance. */\n createSummarizerFn, startThrottler, { initialDelayMs = defaultInitialDelayMs, opsToBypassInitialDelay = defaultOpsToBypassInitialDelay, } = {}) {\n super();\n this.clientElection = clientElection;\n this.connectedState = connectedState;\n this.summaryCollection = summaryCollection;\n this.createSummarizerFn = createSummarizerFn;\n this.startThrottler = startThrottler;\n this.state = SummaryManagerState.Off;\n this._disposed = false;\n this.handleConnected = (clientId) => {\n this.latestClientId = clientId;\n // If we have a summarizer, it should have been either cancelled on disconnected by now.\n // But because of lastSummary process, it can still hang around, so there is not much we can\n // check or assert.\n this.refreshSummarizer();\n };\n this.handleDisconnected = () => {\n this.refreshSummarizer();\n };\n this.handleSummarizeEvent = (eventProps) => {\n this.emit(\"summarize\", eventProps);\n };\n this.refreshSummarizer = () => {\n // Transition states depending on shouldSummarize, which is a calculated property\n // that is only true if this client is connected and is the elected summarizer.\n const shouldSummarizeState = this.getShouldSummarizeState();\n switch (this.state) {\n case SummaryManagerState.Off: {\n if (shouldSummarizeState.shouldSummarize) {\n this.startSummarization();\n }\n return;\n }\n case SummaryManagerState.Starting: {\n // Cannot take any action until summarizer is created\n // state transition will occur after creation\n return;\n }\n case SummaryManagerState.Running: {\n if (shouldSummarizeState.shouldSummarize === false) {\n this.stop(shouldSummarizeState.stopReason);\n }\n return;\n }\n case SummaryManagerState.Stopping: {\n // Cannot take any action until running summarizer finishes\n // state transition will occur after it stops\n return;\n }\n default: {\n return;\n }\n }\n };\n this.logger = createChildLogger({\n logger: parentLogger,\n namespace: \"SummaryManager\",\n properties: {\n all: { clientId: () => this.latestClientId },\n },\n });\n this.connectedState.on(\"connected\", this.handleConnected);\n this.connectedState.on(\"disconnected\", this.handleDisconnected);\n this.latestClientId = this.connectedState.clientId;\n this.opsToBypassInitialDelay = opsToBypassInitialDelay;\n this.initialDelayMs = initialDelayMs;\n }\n /**\n * Until start is called, the SummaryManager won't begin attempting to start summarization. This ensures there's\n * a window between construction and starting where the caller can attach listeners.\n */\n start() {\n this.clientElection.on(\"electedSummarizerChanged\", this.refreshSummarizer);\n this.refreshSummarizer();\n }\n getShouldSummarizeState() {\n if (this.disposed) {\n return { shouldSummarize: false, stopReason: \"parentNotConnected\" };\n }\n // Note that if we're in the Running state, the electedClient may be a summarizer client, so we can't\n // enforce connectedState.clientId === clientElection.electedClientId. But once we're Running, we should\n // only transition to Stopping when the electedParentId changes. Stopping the summarizer without\n // changing the electedParent will just cause us to transition to Starting again.\n // New Parent has been elected and it is not the current client, or\n if (this.connectedState.clientId !== this.clientElection.electedParentId) {\n return { shouldSummarize: false, stopReason: \"notElectedParent\" };\n }\n // We are not already running the summarizer and we are not the current elected client id.\n if (this.state !== SummaryManagerState.Running &&\n this.connectedState.clientId !== this.clientElection.electedClientId) {\n return { shouldSummarize: false, stopReason: \"notElectedClient\" };\n }\n if (!this.connectedState.connected) {\n return { shouldSummarize: false, stopReason: \"parentNotConnected\" };\n }\n return { shouldSummarize: true };\n }\n startSummarization() {\n assert(this.state === SummaryManagerState.Off, 0x261 /* \"Expected: off\" */);\n this.state = SummaryManagerState.Starting;\n assert(this.summarizer === undefined, 0x262 /* \"Old summarizer is still working!\" */);\n this.delayBeforeCreatingSummarizer()\n .then(async (startWithInitialDelay) => {\n if (this.disposed) {\n return \"early exit (disposed)\";\n }\n // Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore\n // but only if creation was delayed. If it was not, then we want to ensure we always create\n // a summarizer to kick off lastSummary. Without that, we would not be able to summarize and get\n // document out of broken state if it has too many ops and ordering service keeps nacking main\n // container (and thus it goes into cycle of reconnects)\n // If we can't run the LastSummary, simply return as to avoid paying the cost of launching\n // the summarizer at all.\n const shouldSummarizeStateEarlyStage = this.getShouldSummarizeState();\n if (startWithInitialDelay &&\n shouldSummarizeStateEarlyStage.shouldSummarize === false) {\n return `early exit ${shouldSummarizeStateEarlyStage.stopReason}`;\n }\n // We transition to Running before requesting the summarizer, because after requesting we can't predict\n // when the electedClient will be replaced with the new summarizer client.\n // The alternative would be to let connectedState.clientId !== clientElection.electedClientId when\n // state === Starting || state === Running.\n assert(this.state === SummaryManagerState.Starting, 0x263 /* \"Expected: starting\" */);\n this.state = SummaryManagerState.Running;\n const summarizer = await this.createSummarizerFn();\n this.summarizer = summarizer;\n this.summarizer.on(\"summarize\", this.handleSummarizeEvent);\n // Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore\n // If we can't run the LastSummary, simply return as to avoid paying the cost of launching\n // the summarizer at all.\n const shouldSummarizeState = this.getShouldSummarizeState();\n if (shouldSummarizeState.shouldSummarize === false) {\n // In order to allow the last summary to run, we not only need a stop reason that would\n // allow it but also, startWithInitialDelay to be false (start the summarization immediately),\n // which would happen when we have a high enough number of unsummarized ops.\n if (startWithInitialDelay ||\n !Summarizer.stopReasonCanRunLastSummary(shouldSummarizeState.stopReason)) {\n this.state = SummaryManagerState.Starting;\n summarizer.stop(shouldSummarizeState.stopReason);\n return `early exit after starting summarizer ${shouldSummarizeState.stopReason}`;\n }\n this.logger.sendTelemetryEvent({\n eventName: \"LastAttemptToSummarize\",\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const clientId = this.latestClientId;\n return PerformanceEvent.timedExecAsync(this.logger, { eventName: \"RunningSummarizer\", attempt: this.startThrottler.numAttempts }, async () => summarizer.run(clientId));\n })\n .then((reason) => {\n this.logger.sendTelemetryEvent({\n eventName: \"EndingSummarizer\",\n reason,\n });\n })\n .catch((error) => {\n this.logger.sendTelemetryEvent({\n eventName: \"EndingSummarizer\",\n reason: \"exception\",\n }, error);\n // Most of exceptions happen due to container being closed while loading it, due to\n // summarizer container loosing connection while load.\n // Not worth reporting such errors as errors. That said, we might miss some real errors if\n // we ignore blindly, so try to narrow signature we are looking for - skip logging\n // error only if this client should no longer be a summarizer (which in practice\n // means it also lost connection), and error happened on load (we do not have summarizer).\n // We could annotate the error raised in Container.load where the container closed during load with no error\n // and check for that case here, but that does not seem to be necessary.\n if (this.getShouldSummarizeState().shouldSummarize || this.summarizer !== undefined) {\n // Report any failure as an error unless it was due to cancellation (like \"disconnected\" error)\n // If failure happened on container load, we may not yet realized that socket disconnected, so check\n // offlineError.\n const category = error?.errorType === DriverErrorTypes.offlineError ? \"generic\" : \"error\";\n this.logger.sendTelemetryEvent({\n eventName: \"SummarizerException\",\n category,\n }, error);\n }\n })\n .finally(() => {\n assert(this.state !== SummaryManagerState.Off, 0x264 /* \"Expected: Not Off\" */);\n this.state = SummaryManagerState.Off;\n this.summarizer?.off(\"summarize\", this.handleSummarizeEvent);\n this.summarizer?.close();\n this.summarizer = undefined;\n if (this.getShouldSummarizeState().shouldSummarize) {\n this.startSummarization();\n }\n });\n }\n stop(reason) {\n if (!SummaryManager.isStartingOrRunning(this.state)) {\n return;\n }\n this.state = SummaryManagerState.Stopping;\n // Stopping the running summarizer client should trigger a change\n // in states when the running summarizer closes\n this.summarizer?.stop(reason);\n }\n /**\n * Implements initial delay before creating summarizer\n * @returns `true`, if creation is delayed due to heuristics (not many ops to summarize).\n * `false` if summarizer should start immediately due to too many unsummarized ops.\n */\n async delayBeforeCreatingSummarizer() {\n // throttle creation of new summarizer containers to prevent spamming the server with websocket connections\n let delayMs = this.startThrottler.getDelay();\n // We have been elected the summarizer. Some day we may be able to summarize with a live document but for\n // now we play it safe and launch a second copy.\n this.logger.sendTelemetryEvent({\n eventName: \"CreatingSummarizer\",\n throttlerDelay: delayMs,\n initialDelay: this.initialDelayMs,\n startThrottlerMaxDelayMs: this.startThrottler.maxDelayMs,\n opsSinceLastAck: this.summaryCollection.opsSinceLastAck,\n opsToBypassInitialDelay: this.opsToBypassInitialDelay,\n electedParentId: this.clientElection.electedParentId,\n electedClientId: this.clientElection.electedClientId,\n });\n // This delay helps ensure that last summarizer that might be left from previous client\n // has enough time to complete its last summary and thus new summarizer not conflict with previous one.\n // If, however, there are too many unsummarized ops, try to resolve it as quickly as possible, with\n // understanding that we may see nacks because of such quick action.\n // A better design would be for summarizer election logic to always select current summarizer as\n // summarizing client (i.e. clientType === \"summarizer\" can be elected) to ensure that nobody else can\n // summarizer while it finishes its work and moves to exit.\n // It also helps with pure boot scenario (single client) to offset expensive work a bit out from\n // critical boot sequence.\n let startWithInitialDelay = false;\n if (this.summaryCollection.opsSinceLastAck < this.opsToBypassInitialDelay) {\n startWithInitialDelay = true;\n delayMs = Math.max(delayMs, this.initialDelayMs);\n }\n if (delayMs > 0) {\n let timer;\n let resolveOpPromiseFn;\n // Create a listener that will break the delay if we've exceeded the initial delay ops count.\n const opsListenerFn = () => {\n if (this.summaryCollection.opsSinceLastAck >= this.opsToBypassInitialDelay) {\n clearTimeout(timer);\n resolveOpPromiseFn();\n }\n };\n // Create a Promise that will resolve when the delay expires.\n const delayPromise = new Promise((resolve) => {\n timer = setTimeout(() => resolve(), delayMs);\n });\n // Create a Promise that will resolve if the ops count passes the threshold.\n const opPromise = new Promise((resolve) => {\n resolveOpPromiseFn = resolve;\n });\n this.summaryCollection.addOpListener(opsListenerFn);\n await Promise.race([delayPromise, opPromise]);\n this.summaryCollection.removeOpListener(opsListenerFn);\n }\n return startWithInitialDelay;\n }\n summarizeOnDemand(options) {\n if (this.summarizer === undefined) {\n throw Error(\"No running summarizer client\");\n // TODO: could spawn a summarizer client temporarily.\n }\n return this.summarizer.summarizeOnDemand(options);\n }\n enqueueSummarize(options) {\n if (this.summarizer === undefined) {\n throw Error(\"No running summarizer client\");\n // TODO: could spawn a summarizer client temporarily.\n }\n return this.summarizer.enqueueSummarize(options);\n }\n dispose() {\n this.clientElection.off(\"electedSummarizerChanged\", this.refreshSummarizer);\n this.connectedState.off(\"connected\", this.handleConnected);\n this.connectedState.off(\"disconnected\", this.handleDisconnected);\n this.summarizer?.off(\"summarize\", this.handleSummarizeEvent);\n this._disposed = true;\n }\n}\nSummaryManager.isStartingOrRunning = (state) => state === SummaryManagerState.Starting || state === SummaryManagerState.Running;\n//# sourceMappingURL=summaryManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Used to give increasing delay times for throttling a single functionality.\n * Delay is based on previous attempts within specified time window, subtracting delay time.\n */\nexport class Throttler {\n get numAttempts() {\n return this.startTimes.length;\n }\n /**\n * Gets all attempt start times after compensating for the delay times\n * by adding the delay times to the actual times.\n */\n getAttempts() {\n return [...this.startTimes];\n }\n /**\n * Latest attempt time after compensating for the delay time itself\n * by adding the delay time to the actual time.\n */\n get latestAttemptTime() {\n return this.startTimes.length > 0\n ? this.startTimes[this.startTimes.length - 1]\n : undefined;\n }\n constructor(\n /** Width of sliding delay window in milliseconds. */\n delayWindowMs, \n /** Maximum delay allowed in milliseconds. */\n maxDelayMs, \n /**\n * Delay function used to calculate what the delay should be.\n * The input is the number of attempts that occurred within the sliding window.\n * The result is the calculated delay in milliseconds.\n */\n delayFn) {\n this.delayWindowMs = delayWindowMs;\n this.maxDelayMs = maxDelayMs;\n this.delayFn = delayFn;\n this.startTimes = [];\n }\n getDelay() {\n const now = Date.now();\n const latestAttemptTime = this.latestAttemptTime;\n if (latestAttemptTime !== undefined) {\n // If getDelay was called sooner than the most recent delay,\n // subtract the remaining time, since we previously added it.\n const earlyMs = latestAttemptTime - now;\n if (earlyMs > 0) {\n this.startTimes = this.startTimes.map((t) => t - earlyMs);\n }\n }\n // Remove all attempts that have already fallen out of the window.\n this.startTimes = this.startTimes.filter((t) => now - t < this.delayWindowMs);\n // Compute delay, but do not exceed the specified max delay.\n const delayMs = Math.min(this.delayFn(this.startTimes.length), this.maxDelayMs);\n // Record this attempt start time.\n this.startTimes.push(now);\n // Account for the delay time, by effectively removing it from the delay window.\n this.startTimes = this.startTimes.map((t) => t + delayMs);\n if (delayMs === this.maxDelayMs) {\n // We hit max delay, so adding more won't affect anything.\n // Shift off oldest time to stop this array from growing forever.\n this.startTimes.shift();\n }\n return delayMs;\n }\n}\n/**\n * Helper function to generate simple exponential throttle functions.\n * f(n) = [coefficient] x ([multiplier]^n) + [flatOffset]\n * where n = number of attempts, and f(n) = delay time in milliseconds.\n * If not provided, coefficient will default to 1, multiplier to 2,\n * minimum delay to 0, and the offset to 0, yielding:\n * 0 ms, 2 ms, 4 ms, 8 ms, ..., 2^n ms\n * where M = multiplier; an exponential back-off.\n * Use initialDelay to decide what should happen when numAttempts is 0,\n * leave it undefined to not special case.\n */\nexport const formExponentialFn = ({ multiplier = 2, coefficient = 1, offset = 0, initialDelay = undefined, } = {}) => (numAttempts) => Math.max(0, numAttempts <= 0 && initialDelay !== undefined\n ? initialDelay\n : coefficient * Math.pow(multiplier, numAttempts) + offset);\n/** f(n) = C x (B^(n+A)) + F = (C x B^A) x B^n + F */\nexport const formExponentialFnWithAttemptOffset = (attemptOffset, { multiplier = 2, coefficient = 1, offset = 0, initialDelay = undefined, } = {}) => formExponentialFn({\n multiplier,\n coefficient: coefficient * Math.pow(multiplier, attemptOffset),\n offset,\n initialDelay,\n});\n/**\n * Helper function to generate simple linear throttle functions.\n * f(n) = [coefficient] x n + [flatOffset]\n * where n = number of attempts, and f(n) = delay time in milliseconds.\n * If not provided, coefficient will default to 1, and offset to 0, yielding:\n * 0 ms, 1 ms, 2 ms, 3 ms, ..., n ms delays; a linear back-off.\n */\nexport const formLinearFn = ({ coefficient = 1, offset = 0 } = {}) => (numAttempts) => Math.max(0, coefficient * numAttempts + offset);\n/** f(n) = C x (n+A) + F = C x n + (C x A + F) */\nexport const formLinearFnWithAttemptOffset = (attemptOffset, { coefficient = 1, offset = 0 } = {}) => formLinearFn({\n coefficient,\n offset: coefficient * attemptOffset + offset,\n});\n//# sourceMappingURL=throttler.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Trace, TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { AttachState, } from \"@fluidframework/container-definitions\";\nimport { LoaderHeader, } from \"@fluidframework/container-definitions/internal\";\nimport { assert, Deferred, LazyPromise, PromiseCache, delay, } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType, } from \"@fluidframework/driver-definitions\";\nimport { DriverHeader, FetchSource, MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { readAndParse } from \"@fluidframework/driver-utils/internal\";\nimport { FlushMode, FlushModeExperimental, channelsTreeName, gcTreeKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { GCDataBuilder, RequestParser, TelemetryContext, addBlobToSummary, addSummarizeResultToSummary, calculateStats, create404Response, exceptionToResponse, responseToException, seqFromTree, } from \"@fluidframework/runtime-utils/internal\";\nimport { DataCorruptionError, DataProcessingError, GenericError, LoggingError, PerformanceEvent, \n// eslint-disable-next-line import/no-deprecated\nTaggedLoggerAdapter, UsageError, createChildLogger, createChildMonitoringContext, createSampledLogger, loggerToMonitoringContext, raiseConnectedEvent, wrapError, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { BindBatchTracker } from \"./batchTracker.js\";\nimport { BlobManager, blobManagerBasePath, blobsTreeName, isBlobPath, loadBlobManagerLoadInfo, } from \"./blobManager/index.js\";\nimport { ChannelCollection, getSummaryForDatastores, wrapContext, } from \"./channelCollection.js\";\nimport { ReportOpPerfTelemetry } from \"./connectionTelemetry.js\";\nimport { ContainerFluidHandleContext } from \"./containerHandleContext.js\";\nimport { channelToDataStore } from \"./dataStore.js\";\nimport { FluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nimport { DeltaManagerPendingOpsProxy, DeltaManagerSummarizerProxy, } from \"./deltaManagerProxies.js\";\nimport { GCNodeType, GarbageCollector, gcGenerationOptionName, } from \"./gc/index.js\";\nimport { ContainerMessageType, } from \"./messageTypes.js\";\nimport { ensureContentsDeserialized, OpCompressor, OpDecompressor, OpGroupingManager, OpSplitter, Outbox, RemoteMessageProcessor, } from \"./opLifecycle/index.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { PendingStateManager, } from \"./pendingStateManager.js\";\nimport { ScheduleManager } from \"./scheduleManager.js\";\nimport { DocumentsSchemaController, OrderedClientCollection, OrderedClientElection, RetriableSummaryError, RunWhileConnectedCoordinator, Summarizer, SummarizerClientElection, SummaryCollection, SummaryManager, aliasBlobName, chunksBlobName, createRootSummarizerNodeWithGC, electedSummarizerBlobName, extractSummaryMetadataMessage, idCompressorBlobName, metadataBlobName, rootHasIsolatedChannels, summarizerClientType, wrapSummaryInChannelsTree, } from \"./summary/index.js\";\nimport { Throttler, formExponentialFn } from \"./throttler.js\";\n/**\n * Utility to implement compat behaviors given an unknown message type\n * The parameters are typed to support compile-time enforcement of handling all known types/behaviors\n *\n * @param _unknownContainerRuntimeMessageType - Typed as something unexpected, to ensure all known types have been\n * handled before calling this function (e.g. in a switch statement).\n * @param compatBehavior - Typed redundantly with CompatModeBehavior to ensure handling is added when updating that type\n */\nfunction compatBehaviorAllowsMessageType(_unknownContainerRuntimeMessageType, compatBehavior) {\n // undefined defaults to same behavior as \"FailToProcess\"\n return compatBehavior === \"Ignore\";\n}\n/**\n * @legacy\n * @alpha\n */\nexport const DefaultSummaryConfiguration = {\n state: \"enabled\",\n minIdleTime: 0,\n maxIdleTime: 30 * 1000, // 30 secs.\n maxTime: 60 * 1000, // 1 min.\n maxOps: 100, // Summarize if 100 weighted ops received since last snapshot.\n minOpsForLastSummaryAttempt: 10,\n maxAckWaitTime: 3 * 60 * 1000, // 3 mins.\n maxOpsSinceLastSummary: 7000,\n initialSummarizerDelayMs: 5 * 1000, // 5 secs.\n nonRuntimeOpWeight: 0.1,\n runtimeOpWeight: 1.0,\n nonRuntimeHeuristicThreshold: 20,\n};\n/**\n * Error responses when requesting a deleted object will have this header set to true\n * @legacy\n * @alpha\n */\nexport const DeletedResponseHeaderKey = \"wasDeleted\";\n/**\n * Tombstone error responses will have this header set to true\n * @legacy\n * @alpha\n */\nexport const TombstoneResponseHeaderKey = \"isTombstoned\";\n/**\n * Inactive error responses will have this header set to true\n * @legacy\n * @alpha\n *\n * @deprecated this header is deprecated and will be removed in the future. The functionality corresponding\n * to this was experimental and is no longer supported.\n */\nexport const InactiveResponseHeaderKey = \"isInactive\";\n/** Default values for Runtime Headers */\nexport const defaultRuntimeHeaderData = {\n wait: true,\n viaHandle: false,\n allowTombstone: false,\n};\n/**\n * Available compression algorithms for op compression.\n * @legacy\n * @alpha\n */\nexport var CompressionAlgorithms;\n(function (CompressionAlgorithms) {\n CompressionAlgorithms[\"lz4\"] = \"lz4\";\n})(CompressionAlgorithms || (CompressionAlgorithms = {}));\n/**\n * @legacy\n * @alpha\n */\nexport const disabledCompressionConfig = {\n minimumBatchSizeInBytes: Infinity,\n compressionAlgorithm: CompressionAlgorithms.lz4,\n};\nconst maxConsecutiveReconnectsKey = \"Fluid.ContainerRuntime.MaxConsecutiveReconnects\";\nconst defaultFlushMode = FlushMode.TurnBased;\n// The actual limit is 1Mb (socket.io and Kafka limits)\n// We can't estimate it fully, as we\n// - do not know what properties relay service will add\n// - we do not stringify final op, thus we do not know how much escaping will be added.\nconst defaultMaxBatchSizeInBytes = 700 * 1024;\nconst defaultCompressionConfig = {\n // Batches with content size exceeding this value will be compressed\n minimumBatchSizeInBytes: 614400,\n compressionAlgorithm: CompressionAlgorithms.lz4,\n};\nconst defaultChunkSizeInBytes = 204800;\n/** The default time to wait for pending ops to be processed during summarization */\nexport const defaultPendingOpsWaitTimeoutMs = 1000;\n/** The default time to delay a summarization retry attempt when there are pending ops */\nexport const defaultPendingOpsRetryDelayMs = 1000;\n/**\n * Instead of refreshing from latest because we do not have 100% confidence in the state\n * of the current system, we should close the summarizer and let it recover.\n * This delay's goal is to prevent tight restart loops\n */\nconst defaultCloseSummarizerDelayMs = 5000; // 5 seconds\n/**\n * Checks whether a message.type is one of the values in ContainerMessageType\n * @deprecated please use version in driver-utils\n * @internal\n */\nexport function isRuntimeMessage(message) {\n return Object.values(ContainerMessageType).includes(message.type);\n}\n/**\n * Legacy ID for the built-in AgentScheduler. To minimize disruption while removing it, retaining this as a\n * special-case for document dirty state. Ultimately we should have no special-cases from the\n * ContainerRuntime's perspective.\n * @internal\n */\nexport const agentSchedulerId = \"_scheduler\";\n// safely check navigator and get the hardware spec value\nexport function getDeviceSpec() {\n try {\n if (typeof navigator === \"object\" && navigator !== null) {\n return {\n deviceMemory: navigator.deviceMemory,\n hardwareConcurrency: navigator.hardwareConcurrency,\n };\n }\n }\n catch { }\n return {};\n}\n/**\n * Older loader doesn't have a submitBatchFn member, this is the older way of submitting a batch.\n * Rather than exposing the submitFn (now deprecated) and IDeltaManager (dangerous to hand out) to the Outbox,\n * we can provide a partially-applied function to keep those items private to the ContainerRuntime.\n */\nexport const makeLegacySendBatchFn = (submitFn, deltaManager) => (batch) => {\n // Default to negative one to match Container.submitBatch behavior\n let clientSequenceNumber = -1;\n for (const message of batch.messages) {\n clientSequenceNumber = submitFn(MessageType.Operation, \n // For back-compat (submitFn only works on deserialized content)\n message.contents === undefined ? undefined : JSON.parse(message.contents), true, // batch\n message.metadata);\n }\n deltaManager.flush();\n return clientSequenceNumber;\n};\nconst summarizerRequestUrl = \"_summarizer\";\n/**\n * Create and retrieve the summmarizer\n */\nasync function createSummarizer(loader, url) {\n const request = {\n headers: {\n [LoaderHeader.cache]: false,\n [LoaderHeader.clientDetails]: {\n capabilities: { interactive: false },\n type: summarizerClientType,\n },\n [DriverHeader.summarizingClient]: true,\n [LoaderHeader.reconnect]: false,\n },\n url,\n };\n const resolvedContainer = await loader.resolve(request);\n let fluidObject;\n // Older containers may not have the \"getEntryPoint\" API\n // ! This check will need to stay until LTS of loader moves past 2.0.0-internal.7.0.0\n if (resolvedContainer.getEntryPoint !== undefined) {\n fluidObject = await resolvedContainer.getEntryPoint();\n }\n else {\n const response = await resolvedContainer.request({\n url: `/${summarizerRequestUrl}`,\n });\n if (response.status !== 200 || response.mimeType !== \"fluid/object\") {\n throw responseToException(response, request);\n }\n fluidObject = response.value;\n }\n if (fluidObject?.ISummarizer === undefined) {\n throw new UsageError(\"Fluid object does not implement ISummarizer\");\n }\n return fluidObject.ISummarizer;\n}\n/**\n * Extract last message from the snapshot metadata.\n * Uses legacy property if not using explicit schema control, otherwise uses the new property.\n * This allows new runtime to make documents not openable for old runtimes, one explicit document schema control is enabled.\n * Please see addMetadataToSummary() as well\n */\nfunction lastMessageFromMetadata(metadata) {\n return metadata?.documentSchema?.runtime?.explicitSchemaControl\n ? metadata?.lastMessage\n : metadata?.message;\n}\n/**\n * There is some ancient back-compat code that we'd like to instrument\n * to understand if/when it is hit.\n * We only want to log this once, to avoid spamming telemetry if we are wrong and these cases are hit commonly.\n */\nlet getSingleUseLegacyLogCallback = (logger, type) => {\n // We only want to log this once per ContainerRuntime instance, to avoid spamming telemetry.\n getSingleUseLegacyLogCallback = () => () => { };\n return (codePath) => {\n logger.sendTelemetryEvent({\n eventName: \"LegacyMessageFormat\",\n details: { codePath, type },\n });\n };\n};\n/**\n * Represents the runtime of the container. Contains helper functions/state of the container.\n * It will define the store level mappings.\n * @legacy\n * @alpha\n */\nexport class ContainerRuntime extends TypedEventEmitter {\n /**\n * Load the stores from a snapshot and returns the runtime.\n * @param params - An object housing the runtime properties:\n * - context - Context of the container.\n * - registryEntries - Mapping from data store types to their corresponding factories.\n * - existing - Pass 'true' if loading from an existing snapshot.\n * - requestHandler - (optional) Request handler for the request() method of the container runtime.\n * Only relevant for back-compat while we remove the request() method and move fully to entryPoint as the main pattern.\n * - runtimeOptions - Additional options to be passed to the runtime\n * - containerScope - runtime services provided with context\n * - containerRuntimeCtor - Constructor to use to create the ContainerRuntime instance.\n * This allows mixin classes to leverage this method to define their own async initializer.\n * - provideEntryPoint - Promise that resolves to an object which will act as entryPoint for the Container.\n * This object should provide all the functionality that the Container is expected to provide to the loader layer.\n */\n static async loadRuntime(params) {\n const { context, registryEntries, existing, requestHandler, provideEntryPoint, runtimeOptions = {}, containerScope = {}, containerRuntimeCtor = ContainerRuntime, } = params;\n // If taggedLogger exists, use it. Otherwise, wrap the vanilla logger:\n // back-compat: Remove the TaggedLoggerAdapter fallback once all the host are using loader > 0.45\n const backCompatContext = context;\n const passLogger = backCompatContext.taggedLogger ??\n // eslint-disable-next-line import/no-deprecated\n new TaggedLoggerAdapter(backCompatContext.logger);\n const logger = createChildLogger({\n logger: passLogger,\n properties: {\n all: {\n runtimeVersion: pkgVersion,\n },\n },\n });\n const mc = loggerToMonitoringContext(logger);\n const { summaryOptions = {}, gcOptions = {}, loadSequenceNumberVerification = \"close\", flushMode = defaultFlushMode, compressionOptions = defaultCompressionConfig, maxBatchSizeInBytes = defaultMaxBatchSizeInBytes, enableRuntimeIdCompressor, chunkSizeInBytes = defaultChunkSizeInBytes, enableGroupedBatching = true, explicitSchemaControl = false, } = runtimeOptions;\n const registry = new FluidDataStoreRegistry(registryEntries);\n const tryFetchBlob = async (blobName) => {\n const blobId = context.baseSnapshot?.blobs[blobName];\n if (context.baseSnapshot && blobId) {\n // IContainerContext storage api return type still has undefined in 0.39 package version.\n // So once we release 0.40 container-defn package we can remove this check.\n assert(context.storage !== undefined, 0x1f5 /* \"Attached state should have storage\" */);\n return readAndParse(context.storage, blobId);\n }\n };\n const [chunks, metadata, electedSummarizerData, aliases, serializedIdCompressor] = await Promise.all([\n tryFetchBlob(chunksBlobName),\n tryFetchBlob(metadataBlobName),\n tryFetchBlob(electedSummarizerBlobName),\n tryFetchBlob(aliasBlobName),\n tryFetchBlob(idCompressorBlobName),\n ]);\n // read snapshot blobs needed for BlobManager to load\n const blobManagerSnapshot = await loadBlobManagerLoadInfo(context);\n const messageAtLastSummary = lastMessageFromMetadata(metadata);\n // Verify summary runtime sequence number matches protocol sequence number.\n const runtimeSequenceNumber = messageAtLastSummary?.sequenceNumber;\n const protocolSequenceNumber = context.deltaManager.initialSequenceNumber;\n // When we load with pending state, we reuse an old snapshot so we don't expect these numbers to match\n if (!context.pendingLocalState && runtimeSequenceNumber !== undefined) {\n // Unless bypass is explicitly set, then take action when sequence numbers mismatch.\n if (loadSequenceNumberVerification !== \"bypass\" &&\n runtimeSequenceNumber !== protocolSequenceNumber) {\n // Message to OCEs:\n // You can hit this error with runtimeSequenceNumber === -1 in < 2.0 RC3 builds.\n // This would indicate that explicit schema control is enabled in current (2.0 RC3+) builds and it\n // results in addMetadataToSummary() creating a poison pill for older runtimes in the form of a -1 sequence number.\n // Older runtimes do not understand new schema, and thus could corrupt document if they proceed, thus we are using\n // this poison pill to prevent them from proceeding.\n // \"Load from summary, runtime metadata sequenceNumber !== initialSequenceNumber\"\n const error = new DataCorruptionError(\n // pre-0.58 error message: SummaryMetadataMismatch\n \"Summary metadata mismatch\", { runtimeVersion: pkgVersion, runtimeSequenceNumber, protocolSequenceNumber });\n if (loadSequenceNumberVerification === \"log\") {\n logger.sendErrorEvent({ eventName: \"SequenceNumberMismatch\" }, error);\n }\n else {\n context.closeFn(error);\n }\n }\n }\n let desiredIdCompressorMode;\n switch (mc.config.getBoolean(\"Fluid.ContainerRuntime.IdCompressorEnabled\")) {\n case true:\n desiredIdCompressorMode = \"on\";\n break;\n case false:\n desiredIdCompressorMode = undefined;\n break;\n default:\n desiredIdCompressorMode = enableRuntimeIdCompressor;\n break;\n }\n // Enabling the IdCompressor is a one-way operation and we only want to\n // allow new containers to turn it on.\n let idCompressorMode;\n if (existing) {\n // This setting has to be sticky for correctness:\n // 1) if compressior is OFF, it can't be enabled, as already running clients (in given document session) do not know\n // how to process compressor ops\n // 2) if it's ON, then all sessions should load compressor right away\n // 3) Same logic applies for \"delayed\" mode\n // Maybe in the future we will need to enabled (and figure how to do it safely) \"delayed\" -> \"on\" change.\n // We could do \"off\" -> \"on\" transition too, if all clients start loading compressor (but not using it initially) and\n // do so for a while - this will allow clients to eventually disregard \"off\" setting (when it's safe so) and start\n // using compressor in future sessions.\n // Everyting is possible, but it needs to be designed and executed carefully, when such need arises.\n idCompressorMode = metadata?.documentSchema?.runtime\n ?.idCompressorMode;\n // This is the only exception to the rule above - we have proper plumbing to load ID compressor on schema change\n // event. It is loaded async (relative to op processing), so this conversion is only safe for off -> delayed conversion!\n // Clients do not expect ID compressor ops unless ID compressor is On for them, and that could be achieved only through\n // explicit schema change, i.e. only if explicitSchemaControl is on.\n // Note: it would be better if we throw on combination of options (explicitSchemaControl = off, desiredIdCompressorMode === \"delayed\")\n // that is not supported. But our service tests are oblivious to these problems and throwing here will cause a ton of failures\n // We ignored incompatible ID compressor changes from the start (they were sticky), so that's not a new problem being introduced...\n if (idCompressorMode === undefined &&\n desiredIdCompressorMode === \"delayed\" &&\n explicitSchemaControl) {\n idCompressorMode = desiredIdCompressorMode;\n }\n }\n else {\n idCompressorMode = desiredIdCompressorMode;\n }\n const createIdCompressorFn = async () => {\n const { createIdCompressor, deserializeIdCompressor, createSessionId } = await import(\"@fluidframework/id-compressor/internal\");\n /**\n * Because the IdCompressor emits so much telemetry, this function is used to sample\n * approximately 5% of all clients. Only the given percentage of sessions will emit telemetry.\n */\n const idCompressorEventSampler = (() => {\n const isIdCompressorTelemetryEnabled = Math.random() < 0.05;\n return {\n sample: () => {\n return isIdCompressorTelemetryEnabled;\n },\n };\n })();\n const compressorLogger = createSampledLogger(logger, idCompressorEventSampler);\n const pendingLocalState = context.pendingLocalState;\n if (pendingLocalState?.pendingIdCompressorState !== undefined) {\n return deserializeIdCompressor(pendingLocalState.pendingIdCompressorState, compressorLogger);\n }\n else if (serializedIdCompressor !== undefined) {\n return deserializeIdCompressor(serializedIdCompressor, createSessionId(), compressorLogger);\n }\n else {\n return createIdCompressor(compressorLogger);\n }\n };\n const compressionLz4 = compressionOptions.minimumBatchSizeInBytes !== Infinity &&\n compressionOptions.compressionAlgorithm === \"lz4\";\n const documentSchemaController = new DocumentsSchemaController(existing, protocolSequenceNumber, metadata?.documentSchema, {\n explicitSchemaControl,\n compressionLz4,\n idCompressorMode,\n opGroupingEnabled: enableGroupedBatching,\n disallowedVersions: [],\n }, (schema) => {\n runtime.onSchemaChange(schema);\n });\n const featureGatesForTelemetry = {};\n const runtime = new containerRuntimeCtor(context, registry, metadata, electedSummarizerData, chunks ?? [], aliases ?? [], {\n summaryOptions,\n gcOptions,\n loadSequenceNumberVerification,\n flushMode,\n compressionOptions,\n maxBatchSizeInBytes,\n chunkSizeInBytes,\n // Requires<> drops undefined from IdCompressorType\n enableRuntimeIdCompressor: enableRuntimeIdCompressor,\n enableGroupedBatching,\n explicitSchemaControl,\n }, containerScope, logger, existing, blobManagerSnapshot, context.storage, createIdCompressorFn, documentSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, undefined);\n runtime.blobManager.trackPendingStashedUploads().then(() => {\n // make sure we didn't reconnect before the promise resolved\n if (runtime.delayConnectClientId !== undefined && !runtime.disposed) {\n runtime.delayConnectClientId = undefined;\n runtime.setConnectionStateCore(true, runtime.delayConnectClientId);\n }\n }, (error) => runtime.closeFn(error));\n // Apply stashed ops with a reference sequence number equal to the sequence number of the snapshot,\n // or zero. This must be done before Container replays saved ops.\n await runtime.pendingStateManager.applyStashedOpsAt(runtimeSequenceNumber ?? 0);\n // Initialize the base state of the runtime before it's returned.\n await runtime.initializeBaseState();\n return runtime;\n }\n get clientId() {\n return this._getClientId();\n }\n get storage() {\n return this._storage;\n }\n get containerRuntime() {\n return this;\n }\n get flushMode() {\n return this._flushMode;\n }\n get scope() {\n return this.containerScope;\n }\n get IFluidDataStoreRegistry() {\n return this.registry;\n }\n get attachState() {\n return this._getAttachState();\n }\n /**\n * Current session schema - defines what options are on & off.\n * It's overlap of document schema (controlled by summary & ops) and options controlling this session.\n * For example, document schema might have compression ON, but feature gates / runtime options turn it Off.\n * In such case it will be off in session schema (i.e. this session should not use compression), but this client\n * has to deal with compressed ops as other clients might send them.\n * And in reverse, session schema can have compression Off, but feature gates / runtime options want it On.\n * In such case it will be off in session schema, however this client will propose change to schema, and once / if\n * this op rountrips, compression will be On. Client can't send compressed ops until it's change in schema.\n */\n get sessionSchema() {\n return this.documentsSchemaController.sessionSchema.runtime;\n }\n get idCompressorMode() {\n return this.sessionSchema.idCompressorMode;\n }\n /**\n * See IContainerRuntimeBase.idCompressor() for details.\n */\n get idCompressor() {\n // Expose ID Compressor only if it's On from the start.\n // If container uses delayed mode, then we can only expose generateDocumentUniqueId() and nothing else.\n // That's because any other usage will require immidiate loading of ID Compressor in next sessions in order\n // to reason over such things as session ID space.\n if (this.idCompressorMode === \"on\") {\n assert(this._idCompressor !== undefined, 0x8ea /* compressor should have been loaded */);\n return this._idCompressor;\n }\n }\n /**\n * See IContainerRuntimeBase.generateDocumentUniqueId() for details.\n */\n generateDocumentUniqueId() {\n return this._idCompressor?.generateDocumentUniqueId() ?? uuid();\n }\n get IFluidHandleContext() {\n return this.handleContext;\n }\n /**\n * Invokes the given callback and expects that no ops are submitted\n * until execution finishes. If an op is submitted, an error will be raised.\n *\n * Can be disabled by feature gate `Fluid.ContainerRuntime.DisableOpReentryCheck`\n *\n * @param callback - the callback to be invoked\n */\n ensureNoDataModelChanges(callback) {\n this.ensureNoDataModelChangesCalls++;\n try {\n return callback();\n }\n finally {\n this.ensureNoDataModelChangesCalls--;\n }\n }\n get connected() {\n return this._connected;\n }\n /** clientId of parent (non-summarizing) container that owns summarizer container */\n get summarizerClientId() {\n return this.summarizerClientElection?.electedClientId;\n }\n get disposed() {\n return this._disposed;\n }\n get summarizer() {\n assert(this._summarizer !== undefined, 0x257 /* \"This is not summarizing container\" */);\n return this._summarizer;\n }\n isSummariesDisabled() {\n return this.summaryConfiguration.state === \"disabled\";\n }\n getMaxOpsSinceLastSummary() {\n return this.summaryConfiguration.state !== \"disabled\"\n ? this.summaryConfiguration.maxOpsSinceLastSummary\n : 0;\n }\n getInitialSummarizerDelayMs() {\n // back-compat: initialSummarizerDelayMs was moved from ISummaryRuntimeOptions\n // to ISummaryConfiguration in 0.60.\n if (this.runtimeOptions.summaryOptions.initialSummarizerDelayMs !== undefined) {\n return this.runtimeOptions.summaryOptions.initialSummarizerDelayMs;\n }\n return this.summaryConfiguration.state !== \"disabled\"\n ? this.summaryConfiguration.initialSummarizerDelayMs\n : 0;\n }\n /**\n * If false, loading or using a Tombstoned object should merely log, not fail.\n * @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get gcTombstoneEnforcementAllowed() {\n return false;\n }\n /**\n * If true, throw an error when a tombstone data store is used.\n * @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get gcThrowOnTombstoneUsage() {\n return false;\n }\n /***/\n constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope, \n // Create a custom ITelemetryBaseLogger to output telemetry events.\n baseLogger, existing, blobManagerSnapshot, _storage, createIdCompressor, documentsSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, summaryConfiguration = {\n // the defaults\n ...DefaultSummaryConfiguration,\n // the runtime configuration overrides\n ...runtimeOptions.summaryOptions?.summaryConfigOverrides,\n }) {\n super();\n this.registry = registry;\n this.metadata = metadata;\n this.runtimeOptions = runtimeOptions;\n this.containerScope = containerScope;\n this.baseLogger = baseLogger;\n this._storage = _storage;\n this.createIdCompressor = createIdCompressor;\n this.documentsSchemaController = documentsSchemaController;\n this.requestHandler = requestHandler;\n this.summaryConfiguration = summaryConfiguration;\n this.imminentClosure = false;\n // We accumulate Id compressor Ops while Id compressor is not loaded yet (only for \"delayed\" mode)\n // Once it loads, it will process all such ops and we will stop accumulating further ops - ops will be processes as they come in.\n this.pendingIdCompressorOps = [];\n this.defaultMaxConsecutiveReconnects = 7;\n this._orderSequentiallyCalls = 0;\n this.flushTaskExists = false;\n this.consecutiveReconnects = 0;\n this.ensureNoDataModelChangesCalls = 0;\n this._disposed = false;\n this.emitDirtyDocumentEvent = true;\n this.defaultTelemetrySignalSampleCount = 100;\n this._perfSignalData = {\n signalsLost: 0,\n signalSequenceNumber: 0,\n signalTimestamp: 0,\n trackingSignalSequenceNumber: undefined,\n };\n /**\n * It a cache for holding mapping for loading groupIds with its snapshot from the service. Add expiry policy of 1 minute.\n * Starting with 1 min and based on recorded usage we can tweak it later on.\n */\n this.snapshotCacheForLoadingGroupIds = new PromiseCache({\n expiry: { policy: \"absolute\", durationMs: 60000 },\n });\n const { options, clientDetails, connected, baseSnapshot, submitFn, submitBatchFn, submitSummaryFn, submitSignalFn, disposeFn, closeFn, deltaManager, quorum, audience, loader, pendingLocalState, supportedFeatures, snapshotWithContents, } = context;\n this.logger = createChildLogger({ logger: this.baseLogger });\n this.mc = createChildMonitoringContext({\n logger: this.logger,\n namespace: \"ContainerRuntime\",\n });\n // If we support multiple algorithms in the future, then we would need to manage it here carefully.\n // We can use runtimeOptions.compressionOptions.compressionAlgorithm, but only if it's in the schema list!\n // If it's not in the list, then we will need to either use no compression, or fallback to some other (supported by format)\n // compression.\n const compressionOptions = {\n minimumBatchSizeInBytes: this.sessionSchema.compressionLz4\n ? runtimeOptions.compressionOptions.minimumBatchSizeInBytes\n : Number.POSITIVE_INFINITY,\n compressionAlgorithm: CompressionAlgorithms.lz4,\n };\n this.innerDeltaManager = deltaManager;\n // Here we could wrap/intercept on these functions to block/modify outgoing messages if needed.\n // This makes ContainerRuntime the final gatekeeper for outgoing messages.\n this.submitFn = submitFn;\n this.submitBatchFn = submitBatchFn;\n this.submitSummaryFn = submitSummaryFn;\n this.submitSignalFn = submitSignalFn;\n // TODO: After IContainerContext.options is removed, we'll just create a new blank object {} here.\n // Values are generally expected to be set from the runtime side.\n this.options = options ?? {};\n this.clientDetails = clientDetails;\n this.isSummarizerClient = this.clientDetails.type === summarizerClientType;\n this.loadedFromVersionId = context.getLoadedFromVersion()?.id;\n this._getClientId = () => context.clientId;\n this._getAttachState = () => context.attachState;\n this.getAbsoluteUrl = async (relativeUrl) => {\n if (context.getAbsoluteUrl === undefined) {\n throw new Error(\"Driver does not implement getAbsoluteUrl\");\n }\n if (this.attachState !== AttachState.Attached) {\n return undefined;\n }\n return context.getAbsoluteUrl(relativeUrl);\n };\n // TODO: Consider that the Container could just listen to these events itself, or even more appropriately maybe the\n // customer should observe dirty state on the runtime (the owner of dirty state) directly, rather than on the IContainer.\n this.on(\"dirty\", () => context.updateDirtyContainerState(true));\n this.on(\"saved\", () => context.updateDirtyContainerState(false));\n // In old loaders without dispose functionality, closeFn is equivalent but will also switch container to readonly mode\n this.disposeFn = disposeFn ?? closeFn;\n // In cases of summarizer, we want to dispose instead since consumer doesn't interact with this container\n this.closeFn = this.isSummarizerClient ? this.disposeFn : closeFn;\n let loadSummaryNumber;\n // Get the container creation metadata. For new container, we initialize these. For existing containers,\n // get the values from the metadata blob.\n if (existing) {\n this.createContainerMetadata = {\n createContainerRuntimeVersion: metadata?.createContainerRuntimeVersion,\n createContainerTimestamp: metadata?.createContainerTimestamp,\n };\n // summaryNumber was renamed from summaryCount. For older docs that haven't been opened for a long time,\n // the count is reset to 0.\n loadSummaryNumber = metadata?.summaryNumber ?? 0;\n }\n else {\n this.createContainerMetadata = {\n createContainerRuntimeVersion: pkgVersion,\n createContainerTimestamp: Date.now(),\n };\n loadSummaryNumber = 0;\n }\n this.nextSummaryNumber = loadSummaryNumber + 1;\n this.messageAtLastSummary = lastMessageFromMetadata(metadata);\n // Note that we only need to pull the *initial* connected state from the context.\n // Later updates come through calls to setConnectionState.\n this._connected = connected;\n this.mc.logger.sendTelemetryEvent({\n eventName: \"GCFeatureMatrix\",\n metadataValue: JSON.stringify(metadata?.gcFeatureMatrix),\n inputs: JSON.stringify({\n gcOptions_gcGeneration: this.runtimeOptions.gcOptions[gcGenerationOptionName],\n }),\n });\n this.telemetryDocumentId = metadata?.telemetryDocumentId ?? uuid();\n this.disableAttachReorder = this.mc.config.getBoolean(\"Fluid.ContainerRuntime.disableAttachOpReorder\");\n const opGroupingManager = new OpGroupingManager({\n groupedBatchingEnabled: this.groupedBatchingEnabled,\n opCountThreshold: this.mc.config.getNumber(\"Fluid.ContainerRuntime.GroupedBatchingOpCount\") ?? 2,\n reentrantBatchGroupingEnabled: this.mc.config.getBoolean(\"Fluid.ContainerRuntime.GroupedBatchingReentrancy\") ??\n true,\n }, this.mc.logger);\n const opSplitter = new OpSplitter(chunks, this.submitBatchFn, runtimeOptions.chunkSizeInBytes, runtimeOptions.maxBatchSizeInBytes, this.mc.logger);\n this.remoteMessageProcessor = new RemoteMessageProcessor(opSplitter, new OpDecompressor(this.mc.logger), opGroupingManager);\n const pendingRuntimeState = pendingLocalState;\n this.pendingStateManager = new PendingStateManager({\n applyStashedOp: this.applyStashedOp.bind(this),\n clientId: () => this.clientId,\n connected: () => this.connected,\n reSubmitBatch: this.reSubmitBatch.bind(this),\n isActiveConnection: () => this.innerDeltaManager.active,\n isAttached: () => this.attachState !== AttachState.Detached,\n }, pendingRuntimeState?.pending, this.logger);\n let outerDeltaManager;\n const useDeltaManagerOpsProxy = this.mc.config.getBoolean(\"Fluid.ContainerRuntime.DeltaManagerOpsProxy\") !== false;\n // The summarizerDeltaManager Proxy is used to lie to the summarizer to convince it is in the right state as a summarizer client.\n const summarizerDeltaManagerProxy = new DeltaManagerSummarizerProxy(this.innerDeltaManager);\n outerDeltaManager = summarizerDeltaManagerProxy;\n // The DeltaManagerPendingOpsProxy is used to control the minimum sequence number\n // It allows us to lie to the layers below so that they can maintain enough local state for rebasing ops.\n if (useDeltaManagerOpsProxy) {\n const pendingOpsDeltaManagerProxy = new DeltaManagerPendingOpsProxy(summarizerDeltaManagerProxy, this.pendingStateManager);\n outerDeltaManager = pendingOpsDeltaManagerProxy;\n }\n this.deltaManager = outerDeltaManager;\n this.handleContext = new ContainerFluidHandleContext(\"\", this);\n if (this.summaryConfiguration.state === \"enabled\") {\n this.validateSummaryHeuristicConfiguration(this.summaryConfiguration);\n }\n this.summariesDisabled = this.isSummariesDisabled();\n this.maxOpsSinceLastSummary = this.getMaxOpsSinceLastSummary();\n this.initialSummarizerDelayMs = this.getInitialSummarizerDelayMs();\n this.maxConsecutiveReconnects =\n this.mc.config.getNumber(maxConsecutiveReconnectsKey) ??\n this.defaultMaxConsecutiveReconnects;\n if (runtimeOptions.flushMode === FlushModeExperimental.Async &&\n supportedFeatures?.get(\"referenceSequenceNumbers\") !== true) {\n // The loader does not support reference sequence numbers, falling back on FlushMode.TurnBased\n this.mc.logger.sendErrorEvent({ eventName: \"FlushModeFallback\" });\n this._flushMode = FlushMode.TurnBased;\n }\n else {\n this._flushMode = runtimeOptions.flushMode;\n }\n this.offlineEnabled =\n this.mc.config.getBoolean(\"Fluid.Container.enableOfflineLoad\") ?? false;\n if (this.offlineEnabled && this._flushMode !== FlushMode.TurnBased) {\n const error = new UsageError(\"Offline mode is only supported in turn-based mode\");\n this.closeFn(error);\n throw error;\n }\n if (context.attachState === AttachState.Attached) {\n const maxSnapshotCacheDurationMs = this._storage?.policies?.maximumCacheDurationMs;\n if (maxSnapshotCacheDurationMs !== undefined &&\n maxSnapshotCacheDurationMs > 5 * 24 * 60 * 60 * 1000) {\n // This is a runtime enforcement of what's already explicit in the policy's type itself,\n // which dictates the value is either undefined or exactly 5 days in ms.\n // As long as the actual value is less than 5 days, the assumptions GC makes here are valid.\n throw new UsageError(\"Driver's maximumCacheDurationMs policy cannot exceed 5 days\");\n }\n }\n this.garbageCollector = GarbageCollector.create({\n runtime: this,\n gcOptions: this.runtimeOptions.gcOptions,\n baseSnapshot,\n baseLogger: this.mc.logger,\n existing,\n metadata,\n createContainerMetadata: this.createContainerMetadata,\n isSummarizerClient: this.isSummarizerClient,\n getNodePackagePath: async (nodePath) => this.getGCNodePackagePath(nodePath),\n getLastSummaryTimestampMs: () => this.messageAtLastSummary?.timestamp,\n readAndParseBlob: async (id) => readAndParse(this.storage, id),\n submitMessage: (message) => this.submit(message),\n sessionExpiryTimerStarted: pendingRuntimeState?.sessionExpiryTimerStarted,\n });\n const loadedFromSequenceNumber = this.deltaManager.initialSequenceNumber;\n this.summarizerNode = createRootSummarizerNodeWithGC(createChildLogger({ logger: this.logger, namespace: \"SummarizerNode\" }), \n // Summarize function to call when summarize is called. Summarizer node always tracks summary state.\n async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext), \n // Latest change sequence number, no changes since summary applied yet\n loadedFromSequenceNumber, \n // Summary reference sequence number, undefined if no summary yet\n baseSnapshot !== undefined ? loadedFromSequenceNumber : undefined, {\n // Must set to false to prevent sending summary handle which would be pointing to\n // a summary with an older protocol state.\n canReuseHandle: false,\n // If GC should not run, let the summarizer node know so that it does not track GC state.\n gcDisabled: !this.garbageCollector.shouldRunGC,\n }, \n // Function to get GC data if needed. This will always be called by the root summarizer node to get GC data.\n async (fullGC) => this.getGCDataInternal(fullGC), \n // Function to get the GC details from the base snapshot we loaded from.\n async () => this.garbageCollector.getBaseGCDetails());\n if (baseSnapshot) {\n this.summarizerNode.updateBaseSummaryState(baseSnapshot);\n }\n const parentContext = wrapContext(this);\n if (snapshotWithContents !== undefined) {\n this.isSnapshotInstanceOfISnapshot = true;\n }\n // Due to a mismatch between different layers in terms of\n // what is the interface of passing signals, we need the\n // downstream stores to wrap the signal.\n parentContext.submitSignal = (type, content, targetClientId) => {\n const envelope1 = content;\n const envelope2 = this.createNewSignalEnvelope(envelope1.address, type, envelope1.contents);\n return this.submitSignalFn(envelope2, targetClientId);\n };\n let snapshot = getSummaryForDatastores(baseSnapshot, metadata);\n if (snapshot !== undefined && snapshotWithContents !== undefined) {\n snapshot = {\n ...snapshotWithContents,\n snapshotTree: snapshot,\n };\n }\n this.channelCollection = new ChannelCollection(snapshot, parentContext, this.mc.logger, (props) => this.garbageCollector.nodeUpdated({\n ...props,\n timestampMs: props.timestampMs ?? this.getCurrentReferenceTimestampMs(),\n }), (path) => this.garbageCollector.isNodeDeleted(path), new Map(dataStoreAliasMap), async (runtime) => provideEntryPoint);\n this.blobManager = new BlobManager({\n routeContext: this.handleContext,\n snapshot: blobManagerSnapshot,\n getStorage: () => this.storage,\n sendBlobAttachOp: (localId, blobId) => {\n if (!this.disposed) {\n this.submit({ type: ContainerMessageType.BlobAttach, contents: undefined }, undefined, {\n localId,\n blobId,\n });\n }\n },\n blobRequested: (blobPath) => this.garbageCollector.nodeUpdated({\n node: { type: \"Blob\", path: blobPath },\n reason: \"Loaded\",\n timestampMs: this.getCurrentReferenceTimestampMs(),\n }),\n isBlobDeleted: (blobPath) => this.garbageCollector.isNodeDeleted(blobPath),\n runtime: this,\n stashedBlobs: pendingRuntimeState?.pendingAttachmentBlobs,\n closeContainer: (error) => this.closeFn(error),\n });\n this.scheduleManager = new ScheduleManager(this.innerDeltaManager, this, () => this.clientId, createChildLogger({ logger: this.logger, namespace: \"ScheduleManager\" }));\n const disablePartialFlush = this.mc.config.getBoolean(\"Fluid.ContainerRuntime.DisablePartialFlush\");\n const legacySendBatchFn = makeLegacySendBatchFn(this.submitFn, this.innerDeltaManager);\n this.outbox = new Outbox({\n shouldSend: () => this.canSendOps(),\n pendingStateManager: this.pendingStateManager,\n submitBatchFn: this.submitBatchFn,\n legacySendBatchFn,\n compressor: new OpCompressor(this.mc.logger),\n splitter: opSplitter,\n config: {\n compressionOptions,\n maxBatchSizeInBytes: runtimeOptions.maxBatchSizeInBytes,\n disablePartialFlush: disablePartialFlush === true,\n },\n logger: this.mc.logger,\n groupingManager: opGroupingManager,\n getCurrentSequenceNumbers: () => ({\n referenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n clientSequenceNumber: this._processedClientSequenceNumber,\n }),\n reSubmit: this.reSubmit.bind(this),\n opReentrancy: () => this.ensureNoDataModelChangesCalls > 0,\n closeContainer: this.closeFn,\n });\n this._quorum = quorum;\n this._quorum.on(\"removeMember\", (clientId) => {\n this.remoteMessageProcessor.clearPartialMessagesFor(clientId);\n });\n this._audience = audience;\n if (audience.getSelf === undefined) {\n // back-compat, added in 2.0 RC3.\n // Purpose: deal with cases when we run against old loader that does not have newly added capabilities\n audience.getSelf = () => {\n const clientId = this._getClientId();\n return clientId === undefined\n ? undefined\n : ({\n clientId,\n client: audience.getMember(clientId),\n });\n };\n let oldClientId = this.clientId;\n this.on(\"connected\", () => {\n const clientId = this.clientId;\n assert(clientId !== undefined, 0x975 /* can't be undefined */);\n audience.emit(\"selfChanged\", { clientId: oldClientId }, { clientId, client: audience.getMember(clientId) });\n oldClientId = clientId;\n });\n }\n const closeSummarizerDelayOverride = this.mc.config.getNumber(\"Fluid.ContainerRuntime.Test.CloseSummarizerDelayOverrideMs\");\n this.closeSummarizerDelayMs =\n closeSummarizerDelayOverride ?? defaultCloseSummarizerDelayMs;\n this.summaryCollection = new SummaryCollection(this.deltaManager, this.logger);\n this.dirtyContainer =\n this.attachState !== AttachState.Attached || this.hasPendingMessages();\n context.updateDirtyContainerState(this.dirtyContainer);\n if (this.summariesDisabled) {\n this.mc.logger.sendTelemetryEvent({ eventName: \"SummariesDisabled\" });\n }\n else {\n const orderedClientLogger = createChildLogger({\n logger: this.logger,\n namespace: \"OrderedClientElection\",\n });\n const orderedClientCollection = new OrderedClientCollection(orderedClientLogger, this.innerDeltaManager, this._quorum);\n const orderedClientElectionForSummarizer = new OrderedClientElection(orderedClientLogger, orderedClientCollection, electedSummarizerData ?? this.innerDeltaManager.lastSequenceNumber, SummarizerClientElection.isClientEligible, this.mc.config.getBoolean(\"Fluid.ContainerRuntime.OrderedClientElection.EnablePerformanceEvents\"));\n this.summarizerClientElection = new SummarizerClientElection(orderedClientLogger, this.summaryCollection, orderedClientElectionForSummarizer, this.maxOpsSinceLastSummary);\n if (this.isSummarizerClient) {\n this._summarizer = new Summarizer(this /* ISummarizerRuntime */, () => this.summaryConfiguration, this /* ISummarizerInternalsProvider */, this.handleContext, this.summaryCollection, async (runtime) => RunWhileConnectedCoordinator.create(runtime, \n // Summarization runs in summarizer client and needs access to the real (non-proxy) active\n // information. The proxy delta manager would always return false for summarizer client.\n () => this.innerDeltaManager.active));\n }\n else if (SummarizerClientElection.clientDetailsPermitElection(this.clientDetails)) {\n // Only create a SummaryManager and SummarizerClientElection\n // if summaries are enabled and we are not the summarizer client.\n const defaultAction = () => {\n if (this.summaryCollection.opsSinceLastAck > this.maxOpsSinceLastSummary) {\n this.mc.logger.sendTelemetryEvent({ eventName: \"SummaryStatus:Behind\" });\n // unregister default to no log on every op after falling behind\n // and register summary ack handler to re-register this handler\n // after successful summary\n this.summaryCollection.once(MessageType.SummaryAck, () => {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"SummaryStatus:CaughtUp\",\n });\n // we've caught up, so re-register the default action to monitor for\n // falling behind, and unregister ourself\n this.summaryCollection.on(\"default\", defaultAction);\n });\n this.summaryCollection.off(\"default\", defaultAction);\n }\n };\n this.summaryCollection.on(\"default\", defaultAction);\n // Create the SummaryManager and mark the initial state\n this.summaryManager = new SummaryManager(this.summarizerClientElection, this, // IConnectedState\n this.summaryCollection, this.logger, this.formCreateSummarizerFn(loader), new Throttler(60 * 1000, // 60 sec delay window\n 30 * 1000, // 30 sec max delay\n // throttling function increases exponentially (0ms, 40ms, 80ms, 160ms, etc)\n formExponentialFn({ coefficient: 20, initialDelay: 0 })), {\n initialDelayMs: this.initialSummarizerDelayMs,\n });\n this.summaryManager.on(\"summarize\", (eventProps) => {\n this.emit(\"summarize\", eventProps);\n });\n this.summaryManager.start();\n }\n }\n // logging hardware telemetry\n this.logger.sendTelemetryEvent({\n eventName: \"DeviceSpec\",\n ...getDeviceSpec(),\n });\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ContainerLoadStats\",\n ...this.createContainerMetadata,\n ...this.channelCollection.containerLoadStats,\n summaryNumber: loadSummaryNumber,\n summaryFormatVersion: metadata?.summaryFormatVersion,\n disableIsolatedChannels: metadata?.disableIsolatedChannels,\n gcVersion: metadata?.gcFeature,\n options: JSON.stringify(runtimeOptions),\n idCompressorModeMetadata: metadata?.documentSchema?.runtime?.idCompressorMode,\n idCompressorMode: this.idCompressorMode,\n sessionRuntimeSchema: JSON.stringify(this.sessionSchema),\n featureGates: JSON.stringify({\n ...featureGatesForTelemetry,\n disableAttachReorder: this.disableAttachReorder,\n disablePartialFlush,\n closeSummarizerDelayOverride,\n }),\n telemetryDocumentId: this.telemetryDocumentId,\n groupedBatchingEnabled: this.groupedBatchingEnabled,\n initialSequenceNumber: this.deltaManager.initialSequenceNumber,\n });\n ReportOpPerfTelemetry(this.clientId, this.deltaManager, this, this.logger);\n BindBatchTracker(this, this.logger);\n this.entryPoint = new LazyPromise(async () => {\n if (this.isSummarizerClient) {\n assert(this._summarizer !== undefined, 0x5bf /* Summarizer object is undefined in a summarizer client */);\n return this._summarizer;\n }\n return provideEntryPoint(this);\n });\n // If we loaded from pending state, then we need to skip any ops that are already accounted in such\n // saved state, i.e. all the ops marked by Loader layer sa savedOp === true.\n this.skipSavedCompressorOps = pendingRuntimeState?.pendingIdCompressorState !== undefined;\n }\n onSchemaChange(schema) {\n this.logger.sendTelemetryEvent({\n eventName: \"SchemaChangeAccept\",\n sessionRuntimeSchema: JSON.stringify(schema),\n });\n // Most of the settings will be picked up only by new sessions (i.e. after reload).\n // We can make it better in the future (i.e. start to use op compression right away), but for simplicity\n // this is not done.\n // But ID compressor is special. It's possible, that in future, we will remove \"stickiness\" of ID compressor setting\n // and will allow to start using it. If that were to happen, we want to ensure that we do not break eventual consistency\n // promises. To do so, we need to initialize id compressor right away.\n // As it's implemented right now (with async initialization), this will only work for \"off\" -> \"delayed\" transitions.\n // Anything else is too risky, and requires ability to initialize ID compressor synchronously!\n if (schema.runtime.idCompressorMode !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.loadIdCompressor();\n }\n }\n getCreateChildSummarizerNodeFn(id, createParam) {\n return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam, undefined, getGCDataFn);\n }\n deleteChildSummarizerNode(id) {\n return this.summarizerNode.deleteChild(id);\n }\n /* IFluidParentContext APIs that should not be called on Root */\n makeLocallyVisible() {\n assert(false, 0x8eb /* should not be called */);\n }\n setChannelDirty(address) {\n assert(false, 0x909 /* should not be called */);\n }\n /**\n * Initializes the state from the base snapshot this container runtime loaded from.\n */\n async initializeBaseState() {\n if (this.idCompressorMode === \"on\" ||\n (this.idCompressorMode === \"delayed\" && this.connected)) {\n this._idCompressor = await this.createIdCompressor();\n // This is called from loadRuntime(), long before we process any ops, so there should be no ops accumulated yet.\n assert(this.pendingIdCompressorOps.length === 0, 0x8ec /* no pending ops */);\n }\n await this.garbageCollector.initializeBaseState();\n }\n dispose(error) {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ContainerRuntimeDisposed\",\n isDirty: this.isDirty,\n lastSequenceNumber: this.deltaManager.lastSequenceNumber,\n attachState: this.attachState,\n }, error);\n if (this.summaryManager !== undefined) {\n this.summaryManager.dispose();\n }\n this.garbageCollector.dispose();\n this._summarizer?.dispose();\n this.channelCollection.dispose();\n this.pendingStateManager.dispose();\n this.emit(\"dispose\");\n this.removeAllListeners();\n }\n /**\n * Api to fetch the snapshot from the service for a loadingGroupIds.\n * @param loadingGroupIds - LoadingGroupId for which the snapshot is asked for.\n * @param pathParts - Parts of the path, which we want to extract from the snapshot tree.\n * @returns - snapshotTree and the sequence number of the snapshot.\n */\n async getSnapshotForLoadingGroupId(loadingGroupIds, pathParts) {\n const sortedLoadingGroupIds = loadingGroupIds.sort();\n assert(this.storage.getSnapshot !== undefined, 0x8ed /* getSnapshot api should be defined if used */);\n let loadedFromCache = true;\n // Lookup up in the cache, if not present then make the network call as multiple datastores could\n // be in same loading group. So, once we have fetched the snapshot for that loading group on\n // any request, then cache that as same group could be requested in future too.\n const snapshot = await this.snapshotCacheForLoadingGroupIds.addOrGet(sortedLoadingGroupIds.join(), async () => {\n assert(this.storage.getSnapshot !== undefined, 0x8ee /* getSnapshot api should be defined if used */);\n loadedFromCache = false;\n return this.storage.getSnapshot({\n cacheSnapshot: false,\n scenarioName: \"snapshotForLoadingGroupId\",\n loadingGroupIds: sortedLoadingGroupIds,\n });\n });\n this.logger.sendTelemetryEvent({\n eventName: \"GroupIdSnapshotFetched\",\n details: JSON.stringify({\n fromCache: loadedFromCache,\n loadingGroupIds: loadingGroupIds.join(\",\"),\n }),\n });\n // Find the snapshotTree inside the returned snapshot based on the path as given in the request.\n const hasIsolatedChannels = rootHasIsolatedChannels(this.metadata);\n const snapshotTreeForPath = this.getSnapshotTreeForPath(snapshot.snapshotTree, pathParts, hasIsolatedChannels);\n assert(snapshotTreeForPath !== undefined, 0x8ef /* no snapshotTree for the path */);\n const snapshotSeqNumber = snapshot.sequenceNumber;\n assert(snapshotSeqNumber !== undefined, 0x8f0 /* snapshotSeqNumber should be present */);\n // This assert fires if we get a snapshot older than the snapshot we loaded from. This is a service issue.\n // Snapshots should only move forward. If we observe an older snapshot than the one we loaded from, then likely\n // the file has been overwritten or service lost data.\n if (snapshotSeqNumber < this.deltaManager.initialSequenceNumber) {\n throw DataProcessingError.create(\"Downloaded snapshot older than snapshot we loaded from\", \"getSnapshotForLoadingGroupId\", undefined, {\n loadingGroupIds: sortedLoadingGroupIds.join(\",\"),\n snapshotSeqNumber,\n initialSequenceNumber: this.deltaManager.initialSequenceNumber,\n });\n }\n // If the snapshot is ahead of the last seq number of the delta manager, then catch up before\n // returning the snapshot.\n if (snapshotSeqNumber > this.deltaManager.lastSequenceNumber) {\n // If this is a summarizer client, which is trying to load a group and it finds that there is\n // another snapshot from which the summarizer loaded and it is behind, then just give up as\n // the summarizer state is not up to date.\n // This should be a recoverable scenario and shouldn't happen as we should process the ack first.\n if (this.isSummarizerClient) {\n throw new Error(\"Summarizer client behind, loaded newer snapshot with loadingGroupId\");\n }\n // We want to catchup from sequenceNumber to targetSequenceNumber\n const props = {\n eventName: \"GroupIdSnapshotCatchup\",\n loadingGroupIds: sortedLoadingGroupIds.join(\",\"),\n targetSequenceNumber: snapshotSeqNumber, // This is so we reuse some columns in telemetry\n sequenceNumber: this.deltaManager.lastSequenceNumber, // This is so we reuse some columns in telemetry\n };\n const event = PerformanceEvent.start(this.mc.logger, {\n ...props,\n });\n // If the inbound deltas queue is paused or disconnected, we expect a reconnect and unpause\n // as long as it's not a summarizer client.\n if (this.deltaManager.inbound.paused) {\n props.inboundPaused = this.deltaManager.inbound.paused; // reusing telemetry\n }\n const defP = new Deferred();\n this.deltaManager.on(\"op\", (message) => {\n if (message.sequenceNumber >= snapshotSeqNumber) {\n defP.resolve(true);\n }\n });\n await defP.promise;\n event.end(props);\n }\n return { snapshotTree: snapshotTreeForPath, sequenceNumber: snapshotSeqNumber };\n }\n /**\n * Api to find a snapshot tree inside a bigger snapshot tree based on the path in the pathParts array.\n * @param snapshotTree - snapshot tree to look into.\n * @param pathParts - Part of the path, which we want to extract from the snapshot tree.\n * @param hasIsolatedChannels - whether the channels are present inside \".channels\" subtree. Older\n * snapshots will not have trees inside \".channels\", so check that.\n * @returns - requested snapshot tree based on the path parts.\n */\n getSnapshotTreeForPath(snapshotTree, pathParts, hasIsolatedChannels) {\n let childTree = snapshotTree;\n for (const part of pathParts) {\n if (hasIsolatedChannels) {\n // TODO Why are we non null asserting here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n childTree = childTree.trees[channelsTreeName];\n }\n // TODO Why are we non null asserting here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n childTree = childTree.trees[part];\n }\n return childTree;\n }\n /**\n * Notifies this object about the request made to the container.\n * @param request - Request made to the handler.\n * @deprecated Will be removed in future major release. This method needs to stay private until LTS version of Loader moves to \"2.0.0-internal.7.0.0\".\n */\n // @ts-expect-error expected to be used by LTS Loaders and Containers\n async request(request) {\n try {\n const parser = RequestParser.create(request);\n const id = parser.pathParts[0];\n if (id === summarizerRequestUrl && parser.pathParts.length === 1) {\n if (this._summarizer !== undefined) {\n return {\n status: 200,\n mimeType: \"fluid/object\",\n value: this.summarizer,\n };\n }\n return create404Response(request);\n }\n if (this.requestHandler !== undefined) {\n // eslint-disable-next-line @typescript-eslint/return-await -- Adding an await here causes test failures\n return this.requestHandler(parser, this);\n }\n return create404Response(request);\n }\n catch (error) {\n return exceptionToResponse(error);\n }\n }\n /**\n * Resolves URI representing handle\n * @param request - Request made to the handler.\n */\n async resolveHandle(request) {\n try {\n const requestParser = RequestParser.create(request);\n const id = requestParser.pathParts[0];\n if (id === \"_channels\") {\n // eslint-disable-next-line @typescript-eslint/return-await -- Adding an await here causes test failures\n return this.resolveHandle(requestParser.createSubRequest(1));\n }\n if (id === blobManagerBasePath && requestParser.isLeaf(2)) {\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const blob = await this.blobManager.getBlob(requestParser.pathParts[1]);\n return blob\n ? {\n status: 200,\n mimeType: \"fluid/object\",\n value: blob,\n }\n : create404Response(request);\n }\n else if (requestParser.pathParts.length > 0) {\n return await this.channelCollection.request(request);\n }\n return create404Response(request);\n }\n catch (error) {\n return exceptionToResponse(error);\n }\n }\n /**\n * {@inheritDoc @fluidframework/container-definitions#IRuntime.getEntryPoint}\n */\n async getEntryPoint() {\n return this.entryPoint;\n }\n internalId(maybeAlias) {\n return this.channelCollection.internalId(maybeAlias);\n }\n /** Adds the container's metadata to the given summary tree. */\n addMetadataToSummary(summaryTree) {\n // The last message processed at the time of summary. If there are no new messages, use the message from the\n // last summary.\n const message = extractSummaryMetadataMessage(this.deltaManager.lastMessage) ??\n this.messageAtLastSummary;\n const documentSchema = this.documentsSchemaController.summarizeDocumentSchema(this.deltaManager.lastSequenceNumber);\n // Is document schema explicit control on?\n const explicitSchemaControl = documentSchema?.runtime.explicitSchemaControl;\n const metadata = {\n ...this.createContainerMetadata,\n // Increment the summary number for the next summary that will be generated.\n summaryNumber: this.nextSummaryNumber++,\n summaryFormatVersion: 1,\n ...this.garbageCollector.getMetadata(),\n telemetryDocumentId: this.telemetryDocumentId,\n // If explicit document schema control is not on, use legacy way to supply last message (using 'message' property).\n // Otherwise use new 'lastMessage' property, but also put content into the 'message' property that cases old\n // runtimes (that preceed document schema control capabilities) to close container on load due to mismatch in\n // last message's sequence number.\n // See also lastMessageFromMetadata()\n message: explicitSchemaControl\n ? { sequenceNumber: -1 }\n : message,\n lastMessage: explicitSchemaControl ? message : undefined,\n documentSchema,\n };\n addBlobToSummary(summaryTree, metadataBlobName, JSON.stringify(metadata));\n }\n addContainerStateToSummary(summaryTree, fullTree, trackState, telemetryContext) {\n this.addMetadataToSummary(summaryTree);\n if (this._idCompressor) {\n const idCompressorState = JSON.stringify(this._idCompressor.serialize(false));\n addBlobToSummary(summaryTree, idCompressorBlobName, idCompressorState);\n }\n if (this.remoteMessageProcessor.partialMessages.size > 0) {\n const content = JSON.stringify([...this.remoteMessageProcessor.partialMessages]);\n addBlobToSummary(summaryTree, chunksBlobName, content);\n }\n const dataStoreAliases = this.channelCollection.aliases;\n if (dataStoreAliases.size > 0) {\n addBlobToSummary(summaryTree, aliasBlobName, JSON.stringify([...dataStoreAliases]));\n }\n if (this.summarizerClientElection) {\n const electedSummarizerContent = JSON.stringify(this.summarizerClientElection?.serialize());\n addBlobToSummary(summaryTree, electedSummarizerBlobName, electedSummarizerContent);\n }\n const blobManagerSummary = this.blobManager.summarize();\n // Some storage (like git) doesn't allow empty tree, so we can omit it.\n // and the blob manager can handle the tree not existing when loading\n if (Object.keys(blobManagerSummary.summary.tree).length > 0) {\n addSummarizeResultToSummary(summaryTree, blobsTreeName, blobManagerSummary);\n }\n const gcSummary = this.garbageCollector.summarize(fullTree, trackState, telemetryContext);\n if (gcSummary !== undefined) {\n addSummarizeResultToSummary(summaryTree, gcTreeKey, gcSummary);\n }\n }\n // Track how many times the container tries to reconnect with pending messages.\n // This happens when the connection state is changed and we reset the counter\n // when we are able to process a local op or when there are no pending messages.\n // If this counter reaches a max, it's a good indicator that the container\n // is not making progress and it is stuck in a retry loop.\n shouldContinueReconnecting() {\n if (this.maxConsecutiveReconnects <= 0) {\n // Feature disabled, we never stop reconnecting\n return true;\n }\n if (!this.hasPendingMessages()) {\n // If there are no pending messages, we can always reconnect\n this.resetReconnectCount();\n return true;\n }\n if (this.consecutiveReconnects === Math.floor(this.maxConsecutiveReconnects / 2)) {\n // If we're halfway through the max reconnects, send an event in order\n // to better identify false positives, if any. If the rate of this event\n // matches Container Close count below, we can safely cut down\n // maxConsecutiveReconnects to half.\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ReconnectsWithNoProgress\",\n attempts: this.consecutiveReconnects,\n pendingMessages: this.pendingMessagesCount,\n });\n }\n return this.consecutiveReconnects < this.maxConsecutiveReconnects;\n }\n resetReconnectCount() {\n this.consecutiveReconnects = 0;\n }\n replayPendingStates() {\n // We need to be able to send ops to replay states\n if (!this.canSendOps()) {\n return;\n }\n // We need to temporary clear the dirty flags and disable\n // dirty state change events to detect whether replaying ops\n // has any effect.\n // Save the old state, reset to false, disable event emit\n const oldState = this.dirtyContainer;\n this.dirtyContainer = false;\n assert(this.emitDirtyDocumentEvent, 0x127 /* \"dirty document event not set on replay\" */);\n this.emitDirtyDocumentEvent = false;\n let newState;\n try {\n this.submitIdAllocationOpIfNeeded(true);\n // replay the ops\n this.pendingStateManager.replayPendingStates();\n }\n finally {\n // Save the new start and restore the old state, re-enable event emit\n newState = this.dirtyContainer;\n this.dirtyContainer = oldState;\n this.emitDirtyDocumentEvent = true;\n }\n // Officially transition from the old state to the new state.\n this.updateDocumentDirtyState(newState);\n }\n /**\n * Parse an op's type and actual content from given serialized content\n * ! Note: this format needs to be in-line with what is set in the \"ContainerRuntime.submit(...)\" method\n */\n // TODO: markfields: confirm Local- versus Outbound- ContainerRuntimeMessage typing\n parseLocalOpContent(serializedContents) {\n assert(serializedContents !== undefined, 0x6d5 /* content must be defined */);\n const message = JSON.parse(serializedContents);\n assert(message.type !== undefined, 0x6d6 /* incorrect op content format */);\n return message;\n }\n async applyStashedOp(serializedOpContent) {\n // Need to parse from string for back-compat\n const opContents = this.parseLocalOpContent(serializedOpContent);\n switch (opContents.type) {\n case ContainerMessageType.FluidDataStoreOp:\n case ContainerMessageType.Attach:\n case ContainerMessageType.Alias:\n return this.channelCollection.applyStashedOp(opContents);\n case ContainerMessageType.IdAllocation:\n // IDs allocation ops in stashed state are ignored because the tip state of the compressor\n // is serialized into the pending state. This is done because generation of new IDs during\n // stashed op application (or, later, resubmit) must generate new IDs and if the compressor\n // was loaded from a state serialized at the same time as the summary tree in the stashed state\n // then it would generate IDs that collide with any in later stashed ops.\n // In the future, IdCompressor could be extended to have an \"applyStashedOp\" or similar method\n // and the runtime could filter out all ID allocation ops from the stashed state and apply them\n // before applying the rest of the stashed ops. This would accomplish the same thing but with\n // better performance in future incremental stashed state creation.\n assert(this.idCompressorMode !== undefined, 0x8f1 /* ID compressor should be in use */);\n return;\n case ContainerMessageType.DocumentSchemaChange:\n return;\n case ContainerMessageType.BlobAttach:\n return;\n case ContainerMessageType.Rejoin:\n throw new Error(\"rejoin not expected here\");\n case ContainerMessageType.GC:\n // GC op is only sent in summarizer which should never have stashed ops.\n throw new LoggingError(\"GC op not expected to be stashed in summarizer\");\n default: {\n // This should be extremely rare for stashed ops.\n // It would require a newer runtime stashing ops and then an older one applying them,\n // e.g. if an app rolled back its container version\n const compatBehavior = opContents.compatDetails?.behavior;\n if (!compatBehaviorAllowsMessageType(opContents.type, compatBehavior)) {\n const error = DataProcessingError.create(\"Stashed runtime message of unexpected type\", \"applyStashedOp\", undefined /* sequencedMessage */, {\n messageDetails: JSON.stringify({\n type: opContents.type,\n compatBehavior,\n }),\n });\n this.closeFn(error);\n throw error;\n }\n // Note: Even if its compat behavior allows it, we don't know how to apply this stashed op.\n // All we can do is ignore it (similar to on process).\n }\n }\n }\n async loadIdCompressor() {\n if (this._idCompressor === undefined &&\n this.idCompressorMode !== undefined &&\n this._loadIdCompressor === undefined) {\n this._loadIdCompressor = this.createIdCompressor()\n .then((compressor) => {\n // Finalize any ranges we received while the compressor was turned off.\n const ops = this.pendingIdCompressorOps;\n this.pendingIdCompressorOps = [];\n for (const range of ops) {\n compressor.finalizeCreationRange(range);\n }\n assert(this.pendingIdCompressorOps.length === 0, 0x976 /* No new ops added */);\n this._idCompressor = compressor;\n })\n .catch((error) => {\n this.logger.sendErrorEvent({ eventName: \"IdCompressorDelayedLoad\" }, error);\n throw error;\n });\n }\n return this._loadIdCompressor;\n }\n setConnectionState(connected, clientId) {\n // Validate we have consistent state\n const currentClientId = this._audience.getSelf()?.clientId;\n assert(clientId === currentClientId, 0x977 /* input clientId does not match Audience */);\n assert(this.clientId === currentClientId, 0x978 /* this.clientId does not match Audience */);\n if (connected && this.idCompressorMode === \"delayed\") {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.loadIdCompressor();\n }\n if (connected === false && this.delayConnectClientId !== undefined) {\n this.delayConnectClientId = undefined;\n this.mc.logger.sendTelemetryEvent({\n eventName: \"UnsuccessfulConnectedTransition\",\n });\n // Don't propagate \"disconnected\" event because we didn't propagate the previous \"connected\" event\n return;\n }\n if (!connected) {\n this.documentsSchemaController.onDisconnect();\n }\n // If there are stashed blobs in the pending state, we need to delay\n // propagation of the \"connected\" event until we have uploaded them to\n // ensure we don't submit ops referencing a blob that has not been uploaded\n const connecting = connected && !this._connected;\n if (connecting && this.blobManager.hasPendingStashedUploads()) {\n assert(!this.delayConnectClientId, 0x791 /* Connect event delay must be canceled before subsequent connect event */);\n assert(!!clientId, 0x792 /* Must have clientId when connecting */);\n this.delayConnectClientId = clientId;\n return;\n }\n this.setConnectionStateCore(connected, clientId);\n }\n setConnectionStateCore(connected, clientId) {\n assert(!this.delayConnectClientId, 0x394 /* connect event delay must be cleared before propagating connect event */);\n this.verifyNotClosed();\n // There might be no change of state due to Container calling this API after loading runtime.\n const changeOfState = this._connected !== connected;\n const reconnection = changeOfState && !connected;\n // We need to flush the ops currently collected by Outbox to preserve original order.\n // This flush NEEDS to happen before we set the ContainerRuntime to \"connected\".\n // We want these ops to get to the PendingStateManager without sending to service and have them return to the Outbox upon calling \"replayPendingStates\".\n if (changeOfState && connected) {\n this.flush();\n }\n this._connected = connected;\n if (!connected) {\n this._perfSignalData.signalsLost = 0;\n this._perfSignalData.signalTimestamp = 0;\n this._perfSignalData.trackingSignalSequenceNumber = undefined;\n }\n else {\n assert(this.attachState === AttachState.Attached, 0x3cd /* Connection is possible only if container exists in storage */);\n }\n // Fail while disconnected\n if (reconnection) {\n this.consecutiveReconnects++;\n if (!this.shouldContinueReconnecting()) {\n this.closeFn(DataProcessingError.create(\"Runtime detected too many reconnects with no progress syncing local ops.\", \"setConnectionState\", undefined, {\n dataLoss: 1,\n attempts: this.consecutiveReconnects,\n pendingMessages: this.pendingMessagesCount,\n }));\n return;\n }\n }\n if (changeOfState) {\n this.replayPendingStates();\n }\n this.channelCollection.setConnectionState(connected, clientId);\n this.garbageCollector.setConnectionState(connected, clientId);\n raiseConnectedEvent(this.mc.logger, this, connected, clientId);\n }\n async notifyOpReplay(message) {\n await this.pendingStateManager.applyStashedOpsAt(message.sequenceNumber);\n }\n /**\n * Processes the op.\n * @param messageCopy - Sequenced message for a distributed document.\n * @param local - true if the message was originally generated by the client receiving it.\n */\n process({ ...messageCopy }, local) {\n // spread operator above ensure we make a shallow copy of message, as the processing flow will modify it.\n // There might be multiple container instances receiving the same message.\n this.verifyNotClosed();\n // Whether or not the message appears to be a runtime message from an up-to-date client.\n // It may be a legacy runtime message (ie already unpacked and ContainerMessageType)\n // or something different, like a system message.\n const hasModernRuntimeMessageEnvelope = messageCopy.type === MessageType.Operation;\n const savedOp = messageCopy.metadata?.savedOp;\n const logLegacyCase = getSingleUseLegacyLogCallback(this.logger, messageCopy.type);\n // We expect runtime messages to have JSON contents - deserialize it in place.\n ensureContentsDeserialized(messageCopy, hasModernRuntimeMessageEnvelope, logLegacyCase);\n if (hasModernRuntimeMessageEnvelope) {\n // If the message has the modern message envelope, then process it here.\n // Here we unpack the message (decompress, unchunk, and/or ungroup) into a batch of messages with ContainerMessageType\n const inboundBatch = this.remoteMessageProcessor.process(messageCopy, logLegacyCase);\n if (inboundBatch === undefined) {\n // This means the incoming message is an incomplete part of a message or batch\n // and we need to process more messages before the rest of the system can understand it.\n return;\n }\n // Reach out to PendingStateManager to zip localOpMetadata into the message list if it's a local batch\n const messagesWithPendingState = this.pendingStateManager.processInboundBatch(inboundBatch, local);\n if (messagesWithPendingState.length > 0) {\n messagesWithPendingState.forEach(({ message, localOpMetadata }) => {\n const msg = {\n message,\n local,\n isRuntimeMessage: true,\n savedOp,\n localOpMetadata,\n };\n this.ensureNoDataModelChanges(() => this.processRuntimeMessage(msg));\n });\n }\n else {\n this.ensureNoDataModelChanges(() => this.processEmptyBatch(inboundBatch, local));\n }\n }\n else {\n // Check if message.type is one of values in ContainerMessageType\n // eslint-disable-next-line import/no-deprecated\n if (isRuntimeMessage(messageCopy)) {\n // Legacy op received\n this.ensureNoDataModelChanges(() => this.processRuntimeMessage({\n message: messageCopy,\n local,\n isRuntimeMessage: true,\n savedOp,\n }));\n }\n else {\n // A non container runtime message (like other system ops - join, ack, leave, nack etc.)\n this.ensureNoDataModelChanges(() => this.observeNonRuntimeMessage({\n message: messageCopy,\n local,\n isRuntimeMessage: false,\n savedOp,\n }));\n }\n }\n }\n /**\n * Processes messages that are intended for the runtime layer to process.\n * It redirects the message to the correct subsystem for processing, and implement other side effects\n * @param messageWithContext - message to process with additional context and isRuntimeMessage prop as true\n */\n processRuntimeMessage(messageWithContext) {\n const { message, local, localOpMetadata } = messageWithContext;\n // Intercept to reduce minimum sequence number to the delta manager's minimum sequence number.\n // Sequence numbers are not guaranteed to follow any sort of order. Re-entrancy is one of those situations\n if (this.deltaManager.minimumSequenceNumber <\n messageWithContext.message.minimumSequenceNumber) {\n messageWithContext.message.minimumSequenceNumber =\n this.deltaManager.minimumSequenceNumber;\n }\n // Surround the actual processing of the operation with messages to the schedule manager indicating\n // the beginning and end. This allows it to emit appropriate events and/or pause the processing of new\n // messages once a batch has been fully processed.\n this.scheduleManager.beforeOpProcessing(message);\n this._processedClientSequenceNumber = message.clientSequenceNumber;\n try {\n // RemoteMessageProcessor would have already reconstituted Chunked Ops into the original op type\n assert(message.type !== ContainerMessageType.ChunkedOp, 0x93b /* we should never get here with chunked ops */);\n // If there are no more pending messages after processing a local message,\n // the document is no longer dirty.\n if (!this.hasPendingMessages()) {\n this.updateDocumentDirtyState(false);\n }\n this.validateAndProcessRuntimeMessage(messageWithContext, localOpMetadata);\n this.emit(\"op\", message, messageWithContext.isRuntimeMessage);\n this.scheduleManager.afterOpProcessing(undefined, message);\n if (local) {\n // If we have processed a local op, this means that the container is\n // making progress and we can reset the counter for how many times\n // we have consecutively replayed the pending states\n this.resetReconnectCount();\n }\n }\n catch (e) {\n this.scheduleManager.afterOpProcessing(e, message);\n throw e;\n }\n }\n /**\n * Process an empty batch, which will execute expected actions while processing even if there are no messages.\n * This is a separate function because the processCore function expects at least one message to process.\n * It is expected to happen only when the outbox produces an empty batch due to a resubmit flow.\n */\n processEmptyBatch(emptyBatch, local) {\n const { emptyBatchSequenceNumber: sequenceNumber, batchStartCsn } = emptyBatch;\n assert(sequenceNumber !== undefined, 0x9fa /* emptyBatchSequenceNumber must be defined */);\n this.emit(\"batchBegin\", { sequenceNumber });\n this._processedClientSequenceNumber = batchStartCsn;\n if (!this.hasPendingMessages()) {\n this.updateDocumentDirtyState(false);\n }\n this.emit(\"batchEnd\", undefined, { sequenceNumber });\n if (local) {\n this.resetReconnectCount();\n }\n }\n /**\n * Observes messages that are not intended for the runtime layer, updating/notifying Runtime systems as needed.\n * @param messageWithContext - non-runtime messages to process with additional context and isRuntimeMessage prop as false\n */\n observeNonRuntimeMessage(messageWithContext) {\n const { message, local } = messageWithContext;\n // Intercept to reduce minimum sequence number to the delta manager's minimum sequence number.\n // Sequence numbers are not guaranteed to follow any sort of order. Re-entrancy is one of those situations\n if (this.deltaManager.minimumSequenceNumber <\n messageWithContext.message.minimumSequenceNumber) {\n messageWithContext.message.minimumSequenceNumber =\n this.deltaManager.minimumSequenceNumber;\n }\n // Surround the actual processing of the operation with messages to the schedule manager indicating\n // the beginning and end. This allows it to emit appropriate events and/or pause the processing of new\n // messages once a batch has been fully processed.\n this.scheduleManager.beforeOpProcessing(message);\n this._processedClientSequenceNumber = message.clientSequenceNumber;\n try {\n // If there are no more pending messages after processing a local message,\n // the document is no longer dirty.\n if (!this.hasPendingMessages()) {\n this.updateDocumentDirtyState(false);\n }\n this.emit(\"op\", message, messageWithContext.isRuntimeMessage);\n this.scheduleManager.afterOpProcessing(undefined, message);\n if (local) {\n // If we have processed a local op, this means that the container is\n // making progress and we can reset the counter for how many times\n // we have consecutively replayed the pending states\n this.resetReconnectCount();\n }\n }\n catch (e) {\n this.scheduleManager.afterOpProcessing(e, message);\n throw e;\n }\n }\n /**\n * Assuming the given message is also a TypedContainerRuntimeMessage,\n * checks its type and dispatches the message to the appropriate handler in the runtime.\n * Throws a DataProcessingError if the message looks like but doesn't conform to a known TypedContainerRuntimeMessage type.\n */\n validateAndProcessRuntimeMessage(messageWithContext, localOpMetadata) {\n const { local, message, savedOp } = messageWithContext;\n switch (message.type) {\n case ContainerMessageType.Attach:\n case ContainerMessageType.Alias:\n case ContainerMessageType.FluidDataStoreOp:\n this.channelCollection.process(message, local, localOpMetadata);\n break;\n case ContainerMessageType.BlobAttach:\n this.blobManager.processBlobAttachOp(message, local);\n break;\n case ContainerMessageType.IdAllocation:\n // Don't re-finalize the range if we're processing a \"savedOp\" in\n // stashed ops flow. The compressor is stashed with these ops already processed.\n // That said, in idCompressorMode === \"delayed\", we might not serialize ID compressor, and\n // thus we need to process all the ops.\n if (!(this.skipSavedCompressorOps && savedOp === true)) {\n const range = message.contents;\n // Some other client turned on the id compressor. If we have not turned it on,\n // put it in a pending queue and delay finalization.\n if (this._idCompressor === undefined) {\n assert(this.idCompressorMode !== undefined, 0x93c /* id compressor should be enabled */);\n this.pendingIdCompressorOps.push(range);\n }\n else {\n assert(this.pendingIdCompressorOps.length === 0, 0x979 /* there should be no pending ops! */);\n this._idCompressor.finalizeCreationRange(range);\n }\n }\n break;\n case ContainerMessageType.GC:\n this.garbageCollector.processMessage(message, message.timestamp, local);\n break;\n case ContainerMessageType.ChunkedOp:\n // From observability POV, we should not exppse the rest of the system (including \"op\" events on object) to these messages.\n // Also resetReconnectCount() would be wrong - see comment that was there before this change was made.\n assert(false, 0x93d /* should not even get here */);\n case ContainerMessageType.Rejoin:\n break;\n case ContainerMessageType.DocumentSchemaChange:\n this.documentsSchemaController.processDocumentSchemaOp(message.contents, local, message.sequenceNumber);\n break;\n default: {\n const compatBehavior = message.compatDetails?.behavior;\n if (!compatBehaviorAllowsMessageType(message.type, compatBehavior)) {\n const error = DataProcessingError.create(\n // Former assert 0x3ce\n \"Runtime message of unknown type\", \"OpProcessing\", message, {\n local,\n messageDetails: JSON.stringify({\n type: message.type,\n contentType: typeof message.contents,\n compatBehavior,\n batch: message.metadata?.batch,\n compression: message.compression,\n }),\n });\n this.closeFn(error);\n throw error;\n }\n }\n }\n }\n /**\n * Emits the Signal event and update the perf signal data.\n * @param clientSignalSequenceNumber - is the client signal sequence number to be uploaded.\n */\n sendSignalTelemetryEvent(clientSignalSequenceNumber) {\n const duration = Date.now() - this._perfSignalData.signalTimestamp;\n this.mc.logger.sendPerformanceEvent({\n eventName: \"SignalLatency\",\n duration,\n signalsLost: this._perfSignalData.signalsLost,\n });\n this._perfSignalData.signalsLost = 0;\n this._perfSignalData.signalTimestamp = 0;\n }\n processSignal(message, local) {\n const envelope = message.content;\n const transformed = {\n clientId: message.clientId,\n content: envelope.contents.content,\n type: envelope.contents.type,\n };\n // Only collect signal telemetry for messages sent by the current client.\n if (message.clientId === this.clientId && this.connected) {\n // Check to see if the signal was lost.\n if (this._perfSignalData.trackingSignalSequenceNumber !== undefined &&\n envelope.clientSignalSequenceNumber > this._perfSignalData.trackingSignalSequenceNumber) {\n this._perfSignalData.signalsLost++;\n this._perfSignalData.trackingSignalSequenceNumber = undefined;\n this.mc.logger.sendErrorEvent({\n eventName: \"SignalLost\",\n type: envelope.contents.type,\n signalsLost: this._perfSignalData.signalsLost,\n trackingSequenceNumber: this._perfSignalData.trackingSignalSequenceNumber,\n clientSignalSequenceNumber: envelope.clientSignalSequenceNumber,\n });\n }\n else if (envelope.clientSignalSequenceNumber ===\n this._perfSignalData.trackingSignalSequenceNumber) {\n // only logging for the first connection and the trackingSignalSequenceNUmber.\n if (this.consecutiveReconnects === 0) {\n this.sendSignalTelemetryEvent(envelope.clientSignalSequenceNumber);\n }\n this._perfSignalData.trackingSignalSequenceNumber = undefined;\n }\n }\n if (envelope.address === undefined) {\n // No address indicates a container signal message.\n this.emit(\"signal\", transformed, local);\n return;\n }\n // Due to a mismatch between different layers in terms of\n // what is the interface of passing signals, we need to adjust\n // the signal envelope before sending it to the datastores to be processed\n const envelope2 = {\n address: envelope.address,\n contents: transformed.content,\n };\n transformed.content = envelope2;\n this.channelCollection.processSignal(transformed, local);\n }\n /**\n * Flush the pending ops manually.\n * This method is expected to be called at the end of a batch.\n * @param resubmittingBatchId - If defined, indicates this is a resubmission of a batch\n * with the given Batch ID, which must be preserved\n */\n flush(resubmittingBatchId) {\n assert(this._orderSequentiallyCalls === 0, 0x24c /* \"Cannot call `flush()` from `orderSequentially`'s callback\" */);\n this.outbox.flush(resubmittingBatchId);\n assert(this.outbox.isEmpty, 0x3cf /* reentrancy */);\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IContainerRuntimeBase.orderSequentially}\n */\n orderSequentially(callback) {\n let checkpoint;\n let result;\n if (this.mc.config.getBoolean(\"Fluid.ContainerRuntime.EnableRollback\")) {\n // Note: we are not touching any batches other than mainBatch here, for two reasons:\n // 1. It would not help, as other batches are flushed independently from main batch.\n // 2. There is no way to undo process of data store creation, blob creation, ID compressor ops, or other things tracked by other batches.\n checkpoint = this.outbox.getBatchCheckpoints().mainBatch;\n }\n try {\n this._orderSequentiallyCalls++;\n result = callback();\n }\n catch (error) {\n if (checkpoint) {\n // This will throw and close the container if rollback fails\n try {\n checkpoint.rollback((message) => this.rollback(message.contents, message.localOpMetadata));\n }\n catch (err) {\n const error2 = wrapError(err, (message) => {\n return DataProcessingError.create(`RollbackError: ${message}`, \"checkpointRollback\", undefined);\n });\n this.closeFn(error2);\n throw error2;\n }\n }\n else {\n this.closeFn(wrapError(error, (errorMessage) => new GenericError(`orderSequentially callback exception: ${errorMessage}`, error, {\n orderSequentiallyCalls: this._orderSequentiallyCalls,\n })));\n }\n throw error; // throw the original error for the consumer of the runtime\n }\n finally {\n this._orderSequentiallyCalls--;\n }\n // We don't flush on TurnBased since we expect all messages in the same JS turn to be part of the same batch\n if (this.flushMode !== FlushMode.TurnBased && this._orderSequentiallyCalls === 0) {\n this.flush();\n }\n return result;\n }\n /**\n * Returns the aliased data store's entryPoint, given the alias.\n * @param alias - The alias for the data store.\n * @returns The data store's entry point ({@link @fluidframework/core-interfaces#IFluidHandle}) if it exists and is aliased.\n * Returns undefined if no data store has been assigned the given alias.\n */\n async getAliasedDataStoreEntryPoint(alias) {\n // Back-comapatibility:\n // There are old files that were created without using data store aliasing feature, but\n // used createRoot*DataStore*() (already removed) API. Such data stores will have isRoot = true,\n // and internalID provided by user. The expectation is that such files behave as new files, where\n // same data store instances created using aliasing feature.\n // Please also see note on name collisions in DataStores.createDataStoreId()\n await this.channelCollection.waitIfPendingAlias(alias);\n const internalId = this.internalId(alias);\n const context = await this.channelCollection.getDataStoreIfAvailable(internalId, {\n wait: false,\n });\n // If the data store is not available or not an alias, return undefined.\n if (context === undefined || !(await context.isRoot())) {\n return undefined;\n }\n const channel = await context.realize();\n if (channel.entryPoint === undefined) {\n throw new UsageError(\"entryPoint must be defined on data store runtime for using getAliasedDataStoreEntryPoint\");\n }\n this.garbageCollector.nodeUpdated({\n node: { type: \"DataStore\", path: `/${internalId}` },\n reason: \"Loaded\",\n packagePath: context.packagePath,\n timestampMs: this.getCurrentReferenceTimestampMs(),\n });\n return channel.entryPoint;\n }\n createDetachedDataStore(pkg, loadingGroupId) {\n return this.channelCollection.createDetachedDataStore(pkg, loadingGroupId);\n }\n async createDataStore(pkg, loadingGroupId) {\n const context = this.channelCollection.createDataStoreContext(Array.isArray(pkg) ? pkg : [pkg], undefined, // props\n loadingGroupId);\n return channelToDataStore(await context.realize(), context.id, this.channelCollection, this.mc.logger);\n }\n /**\n * @deprecated 0.16 Issue #1537, #3631\n */\n async _createDataStoreWithProps(pkg, props) {\n const context = this.channelCollection.createDataStoreContext(Array.isArray(pkg) ? pkg : [pkg], props);\n return channelToDataStore(await context.realize(), context.id, this.channelCollection, this.mc.logger);\n }\n canSendOps() {\n // Note that the real (non-proxy) delta manager is needed here to get the readonly info. This is because\n // container runtime's ability to send ops depend on the actual readonly state of the delta manager.\n return (this.connected && !this.innerDeltaManager.readOnlyInfo.readonly && !this.imminentClosure);\n }\n /**\n * Typically ops are batched and later flushed together, but in some cases we want to flush immediately.\n */\n currentlyBatching() {\n return this.flushMode !== FlushMode.Immediate || this._orderSequentiallyCalls !== 0;\n }\n getQuorum() {\n return this._quorum;\n }\n getAudience() {\n return this._audience;\n }\n /**\n * Returns true of container is dirty, i.e. there are some pending local changes that\n * either were not sent out to delta stream or were not yet acknowledged.\n */\n get isDirty() {\n return this.dirtyContainer;\n }\n isContainerMessageDirtyable({ type, contents }) {\n // Certain container runtime messages should not mark the container dirty such as the old built-in\n // AgentScheduler and Garbage collector messages.\n switch (type) {\n case ContainerMessageType.Attach: {\n const attachMessage = contents;\n if (attachMessage.id === agentSchedulerId) {\n return false;\n }\n break;\n }\n case ContainerMessageType.FluidDataStoreOp: {\n const envelope = contents;\n if (envelope.address === agentSchedulerId) {\n return false;\n }\n break;\n }\n case ContainerMessageType.IdAllocation:\n case ContainerMessageType.DocumentSchemaChange:\n case ContainerMessageType.GC: {\n return false;\n }\n default:\n break;\n }\n return true;\n }\n createNewSignalEnvelope(address, type, content) {\n const newSequenceNumber = ++this._perfSignalData.signalSequenceNumber;\n const newEnvelope = {\n address,\n clientSignalSequenceNumber: newSequenceNumber,\n contents: { type, content },\n };\n // We should not track any signals in case we already have a tracking number.\n if (newSequenceNumber % this.defaultTelemetrySignalSampleCount === 1 &&\n this._perfSignalData.trackingSignalSequenceNumber === undefined) {\n this._perfSignalData.signalTimestamp = Date.now();\n this._perfSignalData.trackingSignalSequenceNumber = newSequenceNumber;\n }\n return newEnvelope;\n }\n /**\n * Submits the signal to be sent to other clients.\n * @param type - Type of the signal.\n * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n * @param targetClientId - When specified, the signal is only sent to the provided client id.\n */\n submitSignal(type, content, targetClientId) {\n this.verifyNotClosed();\n const envelope = this.createNewSignalEnvelope(undefined /* address */, type, content);\n return this.submitSignalFn(envelope, targetClientId);\n }\n setAttachState(attachState) {\n if (attachState === AttachState.Attaching) {\n assert(this.attachState === AttachState.Attaching, 0x12d /* \"Container Context should already be in attaching state\" */);\n }\n else {\n assert(this.attachState === AttachState.Attached, 0x12e /* \"Container Context should already be in attached state\" */);\n this.emit(\"attached\");\n }\n if (attachState === AttachState.Attached && !this.hasPendingMessages()) {\n this.updateDocumentDirtyState(false);\n }\n this.channelCollection.setAttachState(attachState);\n }\n /**\n * Create a summary. Used when attaching or serializing a detached container.\n *\n * @param blobRedirectTable - A table passed during the attach process. While detached, blob upload is supported\n * using IDs generated locally. After attach, these IDs cannot be used, so this table maps the old local IDs to the\n * new storage IDs so requests can be redirected.\n * @param telemetryContext - summary data passed through the layers for telemetry purposes\n */\n createSummary(blobRedirectTable, telemetryContext) {\n if (blobRedirectTable) {\n this.blobManager.setRedirectTable(blobRedirectTable);\n }\n // We can finalize any allocated IDs since we're the only client\n const idRange = this._idCompressor?.takeNextCreationRange();\n if (idRange !== undefined) {\n assert(idRange.ids === undefined || idRange.ids.firstGenCount === 1, 0x93e /* No other ranges should be taken while container is detached. */);\n this._idCompressor?.finalizeCreationRange(idRange);\n }\n const summarizeResult = this.channelCollection.getAttachSummary(telemetryContext);\n // Wrap data store summaries in .channels subtree.\n wrapSummaryInChannelsTree(summarizeResult);\n this.addContainerStateToSummary(summarizeResult, true /* fullTree */, false /* trackState */, telemetryContext);\n return summarizeResult.summary;\n }\n async summarizeInternal(fullTree, trackState, telemetryContext) {\n const summarizeResult = await this.channelCollection.summarize(fullTree, trackState, telemetryContext);\n // Wrap data store summaries in .channels subtree.\n wrapSummaryInChannelsTree(summarizeResult);\n const pathPartsForChildren = [channelsTreeName];\n // Ensure that ID compressor had a chance to load, if we are using delayed mode.\n await this.loadIdCompressor();\n this.addContainerStateToSummary(summarizeResult, fullTree, trackState, telemetryContext);\n return {\n ...summarizeResult,\n id: \"\",\n pathPartsForChildren,\n };\n }\n /**\n * Returns a summary of the runtime at the current sequence number.\n */\n async summarize(options) {\n this.verifyNotClosed();\n const { fullTree = false, trackState = true, summaryLogger = this.mc.logger, runGC = this.garbageCollector.shouldRunGC, runSweep, fullGC, } = options;\n const telemetryContext = new TelemetryContext();\n // Add the options that are used to generate this summary to the telemetry context.\n telemetryContext.setMultiple(\"fluid_Summarize\", \"Options\", {\n fullTree,\n trackState,\n runGC,\n fullGC,\n runSweep,\n });\n try {\n if (runGC) {\n await this.collectGarbage({ logger: summaryLogger, runSweep, fullGC }, telemetryContext);\n }\n const { stats, summary } = await this.summarizerNode.summarize(fullTree, trackState, telemetryContext);\n assert(summary.type === SummaryType.Tree, 0x12f /* \"Container Runtime's summarize should always return a tree\" */);\n return { stats, summary };\n }\n finally {\n summaryLogger.sendTelemetryEvent({\n eventName: \"SummarizeTelemetry\",\n details: telemetryContext.serialize(),\n });\n }\n }\n async getGCDataInternal(fullGC) {\n return this.channelCollection.getGCData(fullGC);\n }\n /**\n * Generates and returns the GC data for this container.\n * @param fullGC - true to bypass optimizations and force full generation of GC data.\n * @see IGarbageCollectionRuntime.getGCData\n */\n async getGCData(fullGC) {\n const builder = new GCDataBuilder();\n const dsGCData = await this.summarizerNode.getGCData(fullGC);\n builder.addNodes(dsGCData.gcNodes);\n const blobsGCData = this.blobManager.getGCData(fullGC);\n builder.addNodes(blobsGCData.gcNodes);\n return builder.getGCData();\n }\n /**\n * After GC has run, called to notify this container's nodes of routes that are used in it.\n * @param usedRoutes - The routes that are used in all nodes in this Container.\n * @see IGarbageCollectionRuntime.updateUsedRoutes\n */\n updateUsedRoutes(usedRoutes) {\n // Update our summarizer node's used routes. Updating used routes in summarizer node before\n // summarizing is required and asserted by the the summarizer node. We are the root and are\n // always referenced, so the used routes is only self-route (empty string).\n this.summarizerNode.updateUsedRoutes([\"\"]);\n const { dataStoreRoutes } = this.getDataStoreAndBlobManagerRoutes(usedRoutes);\n this.channelCollection.updateUsedRoutes(dataStoreRoutes);\n }\n /**\n * After GC has run and identified nodes that are sweep ready, this is called to delete the sweep ready nodes.\n * @param sweepReadyRoutes - The routes of nodes that are sweep ready and should be deleted.\n * @returns The routes of nodes that were deleted.\n */\n deleteSweepReadyNodes(sweepReadyRoutes) {\n const { dataStoreRoutes, blobManagerRoutes } = this.getDataStoreAndBlobManagerRoutes(sweepReadyRoutes);\n const deletedRoutes = this.channelCollection.deleteSweepReadyNodes(dataStoreRoutes);\n return deletedRoutes.concat(this.blobManager.deleteSweepReadyNodes(blobManagerRoutes));\n }\n /**\n * This is called to update objects that are tombstones.\n *\n * A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.\n * Tombstoned objects are eventually deleted by GC.\n *\n * @param tombstonedRoutes - Data store and attachment blob routes that are tombstones in this Container.\n */\n updateTombstonedRoutes(tombstonedRoutes) {\n const { dataStoreRoutes } = this.getDataStoreAndBlobManagerRoutes(tombstonedRoutes);\n this.channelCollection.updateTombstonedRoutes(dataStoreRoutes);\n }\n /**\n * Returns a server generated referenced timestamp to be used to track unreferenced nodes by GC.\n */\n getCurrentReferenceTimestampMs() {\n // Use the timestamp of the last message seen by this client as that is server generated. If no messages have\n // been processed, use the timestamp of the message from the last summary.\n return this.deltaManager.lastMessage?.timestamp ?? this.messageAtLastSummary?.timestamp;\n }\n /**\n * Returns the type of the GC node. Currently, there are nodes that belong to the root (\"/\"), data stores or\n * blob manager.\n */\n getNodeType(nodePath) {\n if (isBlobPath(nodePath)) {\n return GCNodeType.Blob;\n }\n return this.channelCollection.getGCNodeType(nodePath) ?? GCNodeType.Other;\n }\n /**\n * Called by GC to retrieve the package path of the node with the given path. The node should belong to a\n * data store or an attachment blob.\n */\n async getGCNodePackagePath(nodePath) {\n // GC uses \"/\" when adding \"root\" references, e.g. for Aliasing or as part of Tombstone Auto-Recovery.\n // These have no package path so return a special value.\n if (nodePath === \"/\") {\n return [\"_gcRoot\"];\n }\n switch (this.getNodeType(nodePath)) {\n case GCNodeType.Blob:\n return [blobManagerBasePath];\n case GCNodeType.DataStore:\n case GCNodeType.SubDataStore:\n return this.channelCollection.getDataStorePackagePath(nodePath);\n default:\n assert(false, 0x2de /* \"Package path requested for unsupported node type.\" */);\n }\n }\n /**\n * From a given list of routes, separate and return routes that belong to blob manager and data stores.\n * @param routes - A list of routes that can belong to data stores or blob manager.\n * @returns Two route lists - One that contains routes for blob manager and another one that contains routes\n * for data stores.\n */\n getDataStoreAndBlobManagerRoutes(routes) {\n const blobManagerRoutes = [];\n const dataStoreRoutes = [];\n for (const route of routes) {\n if (isBlobPath(route)) {\n blobManagerRoutes.push(route);\n }\n else {\n dataStoreRoutes.push(route);\n }\n }\n return { blobManagerRoutes, dataStoreRoutes };\n }\n /**\n * Runs garbage collection and updates the reference / used state of the nodes in the container.\n * @returns the statistics of the garbage collection run; undefined if GC did not run.\n */\n async collectGarbage(options, telemetryContext) {\n return this.garbageCollector.collectGarbage(options, telemetryContext);\n }\n /**\n * Called when a new outbound route is added to another node. This is used by garbage collection to identify\n * all references added in the system.\n * @param fromPath - The absolute path of the node that added the reference.\n * @param toPath - The absolute path of the outbound node that is referenced.\n * @param messageTimestampMs - The timestamp of the message that added the reference.\n */\n addedGCOutboundRoute(fromPath, toPath, messageTimestampMs) {\n // This is always called when processing an op so messageTimestampMs should exist. Due to back-compat\n // across the data store runtime / container runtime boundary, this may be undefined and if so, get\n // the timestamp from the last processed message which should exist.\n // If a timestamp doesn't exist, log so we can learn about these cases and return.\n const timestampMs = messageTimestampMs ?? this.getCurrentReferenceTimestampMs();\n if (timestampMs === undefined) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"NoTimestampInGCOutboundRoute\",\n ...tagCodeArtifacts({\n id: toPath,\n fromId: fromPath,\n }),\n });\n return;\n }\n this.garbageCollector.addedOutboundReference(fromPath, toPath, timestampMs);\n }\n /**\n * Generates the summary tree, uploads it to storage, and then submits the summarize op.\n * This is intended to be called by the summarizer, since it is the implementation of\n * ISummarizerInternalsProvider.submitSummary.\n * It takes care of state management at the container level, including pausing inbound\n * op processing, updating SummarizerNode state tracking, and garbage collection.\n * @param options - options controlling how the summary is generated or submitted\n */\n async submitSummary(options) {\n const { fullTree = false, finalAttempt = false, summaryLogger, latestSummaryRefSeqNum, } = options;\n // The summary number for this summary. This will be updated during the summary process, so get it now and\n // use it for all events logged during this summary.\n const summaryNumber = this.nextSummaryNumber;\n let summaryRefSeqNum;\n const summaryNumberLogger = createChildLogger({\n logger: summaryLogger,\n properties: {\n all: {\n summaryNumber,\n referenceSequenceNumber: () => summaryRefSeqNum,\n },\n },\n });\n assert(this.outbox.isEmpty, 0x3d1 /* Can't trigger summary in the middle of a batch */);\n // If the container is dirty, i.e., there are pending unacked ops, the summary will not be eventual consistent\n // and it may even be incorrect. So, wait for the container to be saved with a timeout. If the container is not\n // saved within the timeout, check if it should be failed or can continue.\n if (this.isDirty) {\n const countBefore = this.pendingMessagesCount;\n // The timeout for waiting for pending ops can be overridden via configurations.\n const pendingOpsTimeout = this.mc.config.getNumber(\"Fluid.Summarizer.waitForPendingOpsTimeoutMs\") ??\n defaultPendingOpsWaitTimeoutMs;\n await new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => resolve(), pendingOpsTimeout);\n this.once(\"saved\", () => {\n clearTimeout(timeoutId);\n resolve();\n });\n this.once(\"dispose\", () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Runtime is disposed while summarizing\"));\n });\n });\n // Log that there are pending ops while summarizing. This will help us gather data on how often this\n // happens, whether we attempted to wait for these ops to be acked and what was the result.\n summaryNumberLogger.sendTelemetryEvent({\n eventName: \"PendingOpsWhileSummarizing\",\n saved: !this.isDirty,\n timeout: pendingOpsTimeout,\n countBefore,\n countAfter: this.pendingMessagesCount,\n });\n // There could still be pending ops. Check if summary should fail or continue.\n const pendingMessagesFailResult = await this.shouldFailSummaryOnPendingOps(summaryNumberLogger, this.deltaManager.lastSequenceNumber, this.deltaManager.minimumSequenceNumber, finalAttempt, true /* beforeSummaryGeneration */);\n if (pendingMessagesFailResult !== undefined) {\n return pendingMessagesFailResult;\n }\n }\n const shouldPauseInboundSignal = this.mc.config.getBoolean(\"Fluid.ContainerRuntime.SubmitSummary.disableInboundSignalPause\") !== true;\n const shouldValidatePreSummaryState = this.mc.config.getBoolean(\"Fluid.ContainerRuntime.SubmitSummary.shouldValidatePreSummaryState\") === true;\n try {\n await this.deltaManager.inbound.pause();\n if (shouldPauseInboundSignal) {\n await this.deltaManager.inboundSignal.pause();\n }\n summaryRefSeqNum = this.deltaManager.lastSequenceNumber;\n const minimumSequenceNumber = this.deltaManager.minimumSequenceNumber;\n const message = `Summary @${summaryRefSeqNum}:${this.deltaManager.minimumSequenceNumber}`;\n const lastAckedContext = this.lastAckedSummaryContext;\n const startSummaryResult = this.summarizerNode.startSummary(summaryRefSeqNum, summaryNumberLogger, latestSummaryRefSeqNum);\n /**\n * This was added to validate that the summarizer node tree has the same reference sequence number from the\n * top running summarizer down to the lowest summarizer node.\n *\n * The order of mismatch numbers goes (validate sequence number)-(node sequence number).\n * Generally the validate sequence number comes from the running summarizer and the node sequence number comes from the\n * summarizer nodes.\n */\n if (startSummaryResult.invalidNodes > 0 || startSummaryResult.mismatchNumbers.size > 0) {\n summaryLogger.sendTelemetryEvent({\n eventName: \"LatestSummaryRefSeqNumMismatch\",\n details: {\n ...startSummaryResult,\n mismatchNumbers: Array.from(startSummaryResult.mismatchNumbers),\n },\n });\n if (shouldValidatePreSummaryState && !finalAttempt) {\n return {\n stage: \"base\",\n referenceSequenceNumber: summaryRefSeqNum,\n minimumSequenceNumber,\n error: new RetriableSummaryError(`Summarizer node state inconsistent with summarizer state.`),\n };\n }\n }\n // Helper function to check whether we should still continue between each async step.\n const checkContinue = () => {\n // Do not check for loss of connectivity directly! Instead leave it up to\n // RunWhileConnectedCoordinator to control policy in a single place.\n // This will allow easier change of design if we chose to. For example, we may chose to allow\n // summarizer to reconnect in the future.\n // Also checking for cancellation is a must as summary process may be abandoned for other reasons,\n // like loss of connectivity for main (interactive) client.\n if (options.cancellationToken.cancelled) {\n return { continue: false, error: \"disconnected\" };\n }\n // That said, we rely on submitSystemMessage() that today only works in connected state.\n // So if we fail here, it either means that RunWhileConnectedCoordinator does not work correctly,\n // OR that design changed and we need to remove this check and fix submitSystemMessage.\n assert(this.connected, 0x258 /* \"connected\" */);\n // Ensure that lastSequenceNumber has not changed after pausing.\n // We need the summary op's reference sequence number to match our summary sequence number,\n // otherwise we'll get the wrong sequence number stamped on the summary's .protocol attributes.\n if (this.deltaManager.lastSequenceNumber !== summaryRefSeqNum) {\n return {\n continue: false,\n error: `lastSequenceNumber changed before uploading to storage. ${this.deltaManager.lastSequenceNumber} !== ${summaryRefSeqNum}`,\n };\n }\n assert(summaryRefSeqNum === this.deltaManager.lastMessage?.sequenceNumber, 0x395 /* it's one and the same thing */);\n if (lastAckedContext !== this.lastAckedSummaryContext) {\n return {\n continue: false,\n error: `Last summary changed while summarizing. ${this.lastAckedSummaryContext} !== ${lastAckedContext}`,\n };\n }\n return { continue: true };\n };\n let continueResult = checkContinue();\n if (!continueResult.continue) {\n return {\n stage: \"base\",\n referenceSequenceNumber: summaryRefSeqNum,\n minimumSequenceNumber,\n error: new RetriableSummaryError(continueResult.error),\n };\n }\n const trace = Trace.start();\n let summarizeResult;\n try {\n summarizeResult = await this.summarize({\n fullTree,\n trackState: true,\n summaryLogger: summaryNumberLogger,\n runGC: this.garbageCollector.shouldRunGC,\n });\n }\n catch (error) {\n return {\n stage: \"base\",\n referenceSequenceNumber: summaryRefSeqNum,\n minimumSequenceNumber,\n error: wrapError(error, (msg) => new RetriableSummaryError(msg)),\n };\n }\n // Validate that the summary generated by summarizer nodes is correct before uploading.\n const validateResult = this.summarizerNode.validateSummary();\n if (!validateResult.success) {\n const { success, ...loggingProps } = validateResult;\n const error = new RetriableSummaryError(validateResult.reason, validateResult.retryAfterSeconds, { ...loggingProps });\n return {\n stage: \"base\",\n referenceSequenceNumber: summaryRefSeqNum,\n minimumSequenceNumber,\n error,\n };\n }\n // If there are pending unacked ops, this summary attempt may fail as the uploaded\n // summary would be eventually inconsistent.\n const pendingMessagesFailResult = await this.shouldFailSummaryOnPendingOps(summaryNumberLogger, summaryRefSeqNum, minimumSequenceNumber, finalAttempt, false /* beforeSummaryGeneration */);\n if (pendingMessagesFailResult !== undefined) {\n return pendingMessagesFailResult;\n }\n const { summary: summaryTree, stats: partialStats } = summarizeResult;\n // Now that we have generated the summary, update the message at last summary to the last message processed.\n this.messageAtLastSummary = this.deltaManager.lastMessage;\n // Counting dataStores and handles\n // Because handles are unchanged dataStores in the current logic,\n // summarized dataStore count is total dataStore count minus handle count\n // TODO why are we non null asserting here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const dataStoreTree = summaryTree.tree[channelsTreeName];\n assert(dataStoreTree.type === SummaryType.Tree, 0x1fc /* \"summary is not a tree\" */);\n const handleCount = Object.values(dataStoreTree.tree).filter((value) => value.type === SummaryType.Handle).length;\n const gcSummaryTreeStats = summaryTree.tree[gcTreeKey]\n ? calculateStats(summaryTree.tree[gcTreeKey])\n : undefined;\n const summaryStats = {\n dataStoreCount: this.channelCollection.size,\n summarizedDataStoreCount: this.channelCollection.size - handleCount,\n gcStateUpdatedDataStoreCount: this.garbageCollector.updatedDSCountSinceLastSummary,\n gcBlobNodeCount: gcSummaryTreeStats?.blobNodeCount,\n gcTotalBlobsSize: gcSummaryTreeStats?.totalBlobSize,\n summaryNumber,\n ...partialStats,\n };\n const generateSummaryData = {\n referenceSequenceNumber: summaryRefSeqNum,\n minimumSequenceNumber,\n summaryTree,\n summaryStats,\n generateDuration: trace.trace().duration,\n };\n continueResult = checkContinue();\n if (!continueResult.continue) {\n return {\n stage: \"generate\",\n ...generateSummaryData,\n error: new RetriableSummaryError(continueResult.error),\n };\n }\n const summaryContext = {\n proposalHandle: this.lastAckedSummaryContext?.proposalHandle ?? undefined,\n ackHandle: this.lastAckedSummaryContext?.ackHandle ?? this.loadedFromVersionId,\n referenceSequenceNumber: summaryRefSeqNum,\n };\n let handle;\n try {\n handle = await this.storage.uploadSummaryWithContext(summarizeResult.summary, summaryContext);\n }\n catch (error) {\n return {\n stage: \"generate\",\n ...generateSummaryData,\n error: wrapError(error, (msg) => new RetriableSummaryError(msg)),\n };\n }\n const parent = summaryContext.ackHandle;\n const summaryMessage = {\n handle,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n head: parent,\n message,\n parents: parent ? [parent] : [],\n };\n const uploadData = {\n ...generateSummaryData,\n handle,\n uploadDuration: trace.trace().duration,\n };\n continueResult = checkContinue();\n if (!continueResult.continue) {\n return {\n stage: \"upload\",\n ...uploadData,\n error: new RetriableSummaryError(continueResult.error),\n };\n }\n let clientSequenceNumber;\n try {\n clientSequenceNumber = this.submitSummaryMessage(summaryMessage, summaryRefSeqNum);\n }\n catch (error) {\n return {\n stage: \"upload\",\n ...uploadData,\n error: wrapError(error, (msg) => new RetriableSummaryError(msg)),\n };\n }\n const submitData = {\n stage: \"submit\",\n ...uploadData,\n clientSequenceNumber,\n submitOpDuration: trace.trace().duration,\n };\n try {\n this.summarizerNode.completeSummary(handle);\n }\n catch (error) {\n return {\n stage: \"upload\",\n ...uploadData,\n error: wrapError(error, (msg) => new RetriableSummaryError(msg)),\n };\n }\n return submitData;\n }\n finally {\n // Cleanup wip summary in case of failure\n this.summarizerNode.clearSummary();\n // ! This needs to happen before we resume inbound queues to ensure heuristics are tracked correctly\n this._summarizer?.recordSummaryAttempt?.(summaryRefSeqNum);\n // Restart the delta manager\n this.deltaManager.inbound.resume();\n if (shouldPauseInboundSignal) {\n this.deltaManager.inboundSignal.resume();\n }\n }\n }\n /**\n * This helper is called during summarization. If the container is dirty, it will return a failed summarize result\n * (IBaseSummarizeResult) unless this is the final summarize attempt and SkipFailingIncorrectSummary option is set.\n * @param logger - The logger to be used for sending telemetry.\n * @param referenceSequenceNumber - The reference sequence number of the summary attempt.\n * @param minimumSequenceNumber - The minimum sequence number of the summary attempt.\n * @param finalAttempt - Whether this is the final summary attempt.\n * @param beforeSummaryGeneration - Whether this is called before summary generation or after.\n * @returns failed summarize result (IBaseSummarizeResult) if summary should be failed, undefined otherwise.\n */\n async shouldFailSummaryOnPendingOps(logger, referenceSequenceNumber, minimumSequenceNumber, finalAttempt, beforeSummaryGeneration) {\n if (!this.isDirty) {\n return;\n }\n // If \"SkipFailingIncorrectSummary\" option is true, don't fail the summary in the last attempt.\n // This is a fallback to make progress in documents where there are consistently pending ops in\n // the summarizer.\n if (finalAttempt &&\n this.mc.config.getBoolean(\"Fluid.Summarizer.SkipFailingIncorrectSummary\")) {\n const error = DataProcessingError.create(\"Pending ops during summarization\", \"submitSummary\", undefined, { pendingMessages: this.pendingMessagesCount });\n logger.sendErrorEvent({\n eventName: \"SkipFailingIncorrectSummary\",\n referenceSequenceNumber,\n minimumSequenceNumber,\n beforeGenerate: beforeSummaryGeneration,\n }, error);\n }\n else {\n // The retry delay when there are pending ops can be overridden via config so that we can adjust it\n // based on telemetry while we decide on a stable number.\n const retryDelayMs = this.mc.config.getNumber(\"Fluid.Summarizer.PendingOpsRetryDelayMs\") ??\n defaultPendingOpsRetryDelayMs;\n const error = new RetriableSummaryError(\"PendingOpsWhileSummarizing\", retryDelayMs / 1000, {\n count: this.pendingMessagesCount,\n beforeGenerate: beforeSummaryGeneration,\n });\n return {\n stage: \"base\",\n referenceSequenceNumber,\n minimumSequenceNumber,\n error,\n };\n }\n }\n get pendingMessagesCount() {\n return this.pendingStateManager.pendingMessagesCount + this.outbox.messageCount;\n }\n hasPendingMessages() {\n return this.pendingMessagesCount !== 0;\n }\n updateDocumentDirtyState(dirty) {\n if (this.attachState !== AttachState.Attached) {\n assert(dirty, 0x3d2 /* Non-attached container is dirty */);\n }\n else {\n // Other way is not true = see this.isContainerMessageDirtyable()\n assert(!dirty || this.hasPendingMessages(), 0x3d3 /* if doc is dirty, there has to be pending ops */);\n }\n if (this.dirtyContainer === dirty) {\n return;\n }\n this.dirtyContainer = dirty;\n if (this.emitDirtyDocumentEvent) {\n this.emit(dirty ? \"dirty\" : \"saved\");\n }\n }\n submitMessage(type, contents, localOpMetadata = undefined) {\n this.submit({ type, contents }, localOpMetadata);\n }\n async uploadBlob(blob, signal) {\n this.verifyNotClosed();\n return this.blobManager.createBlob(blob, signal);\n }\n submitIdAllocationOpIfNeeded(resubmitOutstandingRanges) {\n if (this._idCompressor) {\n const idRange = resubmitOutstandingRanges\n ? this._idCompressor.takeUnfinalizedCreationRange()\n : this._idCompressor.takeNextCreationRange();\n // Don't include the idRange if there weren't any Ids allocated\n if (idRange.ids !== undefined) {\n const idAllocationMessage = {\n type: ContainerMessageType.IdAllocation,\n contents: idRange,\n };\n const idAllocationBatchMessage = {\n contents: JSON.stringify(idAllocationMessage),\n referenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n };\n this.outbox.submitIdAllocation(idAllocationBatchMessage);\n }\n }\n }\n submit(containerRuntimeMessage, localOpMetadata = undefined, metadata) {\n this.verifyNotClosed();\n // There should be no ops in detached container state!\n assert(this.attachState !== AttachState.Detached, 0x132 /* \"sending ops in detached container\" */);\n assert(metadata === undefined ||\n containerRuntimeMessage.type === ContainerMessageType.BlobAttach, 0x93f /* metadata */);\n // Note that the real (non-proxy) delta manager is used here to get the readonly info. This is because\n // container runtime's ability to submit ops depend on the actual readonly state of the delta manager.\n if (this.innerDeltaManager.readOnlyInfo.readonly) {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"SubmitOpInReadonly\",\n connected: this.connected,\n });\n }\n const type = containerRuntimeMessage.type;\n assert(type !== ContainerMessageType.IdAllocation, 0x9a5 /* IdAllocation should be submitted directly to outbox. */);\n try {\n this.submitIdAllocationOpIfNeeded(false);\n // Allow document schema controller to send a message if it needs to propose change in document schema.\n // If it needs to send a message, it will call provided callback with payload of such message and rely\n // on this callback to do actual sending.\n const schemaChangeMessage = this.documentsSchemaController.maybeSendSchemaMessage();\n if (schemaChangeMessage) {\n this.logger.sendTelemetryEvent({\n eventName: \"SchemaChangeProposal\",\n refSeq: schemaChangeMessage.refSeq,\n version: schemaChangeMessage.version,\n newRuntimeSchema: JSON.stringify(schemaChangeMessage.runtime),\n sessionRuntimeSchema: JSON.stringify(this.sessionSchema),\n oldRuntimeSchema: JSON.stringify(this.metadata?.documentSchema?.runtime),\n });\n const msg = {\n type: ContainerMessageType.DocumentSchemaChange,\n contents: schemaChangeMessage,\n };\n this.outbox.submit({\n contents: JSON.stringify(msg),\n referenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n });\n }\n const message = {\n contents: JSON.stringify(containerRuntimeMessage) /* serialized content */,\n metadata,\n localOpMetadata,\n referenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n };\n if (type === ContainerMessageType.BlobAttach) {\n // BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)\n this.outbox.submitBlobAttach(message);\n }\n else {\n this.outbox.submit(message);\n }\n // Note: Technically, the system \"always\" batches - if this case is true we'll just have a single-message batch.\n const flushImmediatelyOnSubmit = !this.currentlyBatching();\n if (flushImmediatelyOnSubmit) {\n this.flush();\n }\n else {\n this.scheduleFlush();\n }\n }\n catch (error) {\n this.closeFn(error);\n throw error;\n }\n if (this.isContainerMessageDirtyable(containerRuntimeMessage)) {\n this.updateDocumentDirtyState(true);\n }\n }\n scheduleFlush() {\n if (this.flushTaskExists) {\n return;\n }\n this.flushTaskExists = true;\n const flush = () => {\n this.flushTaskExists = false;\n try {\n this.flush();\n }\n catch (error) {\n this.closeFn(error);\n }\n };\n switch (this.flushMode) {\n case FlushMode.TurnBased:\n // When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n // batch at the end of the turn\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n Promise.resolve().then(flush);\n break;\n // FlushModeExperimental is experimental and not exposed directly in the runtime APIs\n case FlushModeExperimental.Async:\n // When in Async flush mode, the runtime will accumulate all operations across JS turns and send them as a single\n // batch when all micro-tasks are complete.\n // Compared to TurnBased, this flush mode will capture more ops into the same batch.\n setTimeout(flush, 0);\n break;\n default:\n assert(this._orderSequentiallyCalls > 0, 0x587 /* Unreachable unless running under orderSequentially */);\n break;\n }\n }\n submitSummaryMessage(contents, referenceSequenceNumber) {\n this.verifyNotClosed();\n assert(this.connected, 0x133 /* \"Container disconnected when trying to submit system message\" */);\n // System message should not be sent in the middle of the batch.\n assert(this.outbox.isEmpty, 0x3d4 /* System op in the middle of a batch */);\n // back-compat: ADO #1385: Make this call unconditional in the future\n return this.submitSummaryFn !== undefined\n ? this.submitSummaryFn(contents, referenceSequenceNumber)\n : this.submitFn(MessageType.Summarize, contents, false);\n }\n /**\n * Throw an error if the runtime is closed. Methods that are expected to potentially\n * be called after dispose due to asynchrony should not call this.\n */\n verifyNotClosed() {\n if (this._disposed) {\n throw new Error(\"Runtime is closed\");\n }\n }\n reSubmitBatch(batch, batchId) {\n this.orderSequentially(() => {\n for (const message of batch) {\n this.reSubmit(message);\n }\n });\n // Only include Batch ID if \"Offline Load\" feature is enabled\n // It's only needed to identify batches across container forks arising from misuse of offline load.\n this.flush(this.offlineEnabled ? batchId : undefined);\n }\n reSubmit(message) {\n // Need to parse from string for back-compat\n const containerRuntimeMessage = this.parseLocalOpContent(message.content);\n this.reSubmitCore(containerRuntimeMessage, message.localOpMetadata, message.opMetadata);\n }\n /**\n * Finds the right store and asks it to resubmit the message. This typically happens when we\n * reconnect and there are pending messages.\n * ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)\n * @param message - The original LocalContainerRuntimeMessage.\n * @param localOpMetadata - The local metadata associated with the original message.\n */\n reSubmitCore(message, localOpMetadata, opMetadata) {\n assert(!this.isSummarizerClient, 0x8f2 /* Summarizer never reconnects so should never resubmit */);\n switch (message.type) {\n case ContainerMessageType.FluidDataStoreOp:\n case ContainerMessageType.Attach:\n case ContainerMessageType.Alias:\n // For Operations, call resubmitDataStoreOp which will find the right store\n // and trigger resubmission on it.\n this.channelCollection.reSubmit(message.type, message.contents, localOpMetadata);\n break;\n case ContainerMessageType.IdAllocation: {\n // Allocation ops are never resubmitted/rebased. This is because they require special handling to\n // avoid being submitted out of order. For example, if the pending state manager contained\n // [idOp1, dataOp1, idOp2, dataOp2] and the resubmission of dataOp1 generated idOp3, that would be\n // placed into the outbox in the same batch as idOp1, but before idOp2 is resubmitted.\n // To avoid this, allocation ops are simply never resubmitted. Prior to invoking the pending state\n // manager to replay pending ops, the runtime will always submit a new allocation range that includes\n // all pending IDs. The resubmitted allocation ops are then ignored here.\n break;\n }\n case ContainerMessageType.BlobAttach:\n this.blobManager.reSubmit(opMetadata);\n break;\n case ContainerMessageType.Rejoin:\n this.submit(message);\n break;\n case ContainerMessageType.GC:\n this.submit(message);\n break;\n case ContainerMessageType.DocumentSchemaChange:\n // There is no need to resend this message. Document schema controller will properly resend it again (if needed)\n // on a first occasion (any ops sent after reconnect). There is a good chance, though, that it will not want to\n // send any ops, as some other client already changed schema.\n break;\n default: {\n // This case should be very rare - it would imply an op was stashed from a\n // future version of runtime code and now is being applied on an older version.\n const compatBehavior = message.compatDetails?.behavior;\n if (compatBehaviorAllowsMessageType(message.type, compatBehavior)) {\n // We do not ultimately resubmit it, to be consistent with this version of the code.\n this.logger.sendTelemetryEvent({\n eventName: \"resubmitUnrecognizedMessageTypeAllowed\",\n messageDetails: { type: message.type, compatBehavior },\n });\n }\n else {\n const error = DataProcessingError.create(\"Resubmitting runtime message of unexpected type\", \"reSubmitCore\", undefined /* sequencedMessage */, {\n messageDetails: JSON.stringify({\n type: message.type,\n compatBehavior,\n }),\n });\n this.closeFn(error);\n throw error;\n }\n }\n }\n }\n rollback(content, localOpMetadata) {\n // Need to parse from string for back-compat\n const { type, contents } = this.parseLocalOpContent(content);\n switch (type) {\n case ContainerMessageType.FluidDataStoreOp:\n // For operations, call rollbackDataStoreOp which will find the right store\n // and trigger rollback on it.\n this.channelCollection.rollback(type, contents, localOpMetadata);\n break;\n default:\n // Don't check message.compatDetails because this is for rolling back a local op so the type will be known\n throw new Error(`Can't rollback ${type}`);\n }\n }\n /** Implementation of ISummarizerInternalsProvider.refreshLatestSummaryAck */\n async refreshLatestSummaryAck(options) {\n const { proposalHandle, ackHandle, summaryRefSeq, summaryLogger } = options;\n // proposalHandle is always passed from RunningSummarizer.\n assert(proposalHandle !== undefined, 0x766 /* proposalHandle should be available */);\n const result = await this.summarizerNode.refreshLatestSummary(proposalHandle, summaryRefSeq);\n /* eslint-disable jsdoc/check-indentation */\n /**\n * If the snapshot corresponding to the ack is not tracked by this client, it was submitted by another client.\n * Take action as per the following scenarios:\n * 1. If that snapshot is older than the one tracked by this client, ignore the ack because only the latest\n * snapshot is tracked.\n * 2. If that snapshot is newer, attempt to fetch the latest snapshot and do one of the following:\n * 2.1. If the fetched snapshot is same or newer than the one for which ack was received, close this client.\n * The next summarizer client will likely start from this snapshot and get out of this state. Fetching\n * the snapshot updates the cache for this client so if it's re-elected as summarizer, this will prevent\n * any thrashing.\n * 2.2. If the fetched snapshot is older than the one for which ack was received, ignore the ack. This can\n * happen in scenarios where the snapshot for the ack was lost in storage (in scenarios like DB rollback,\n * etc.) but the summary ack is still there because it's tracked a different service. In such cases,\n * ignoring the ack is the correct thing to do because the latest snapshot in storage is not the one for\n * the ack but is still the one tracked by this client. If we were to close the summarizer like in the\n * previous scenario, it will result in this document stuck in this state in a loop.\n */\n /* eslint-enable jsdoc/check-indentation */\n if (!result.isSummaryTracked) {\n if (result.isSummaryNewer) {\n await this.fetchLatestSnapshotAndMaybeClose(summaryRefSeq, ackHandle, summaryLogger);\n }\n return;\n }\n // Notify the garbage collector so it can update its latest summary state.\n await this.garbageCollector.refreshLatestSummary(result);\n // If we here, the ack was tracked by this client. Update the summary context of the last ack.\n this.lastAckedSummaryContext = {\n proposalHandle,\n ackHandle,\n referenceSequenceNumber: summaryRefSeq,\n };\n }\n /**\n * Fetches the latest snapshot from storage. If the fetched snapshot is same or newer than the one for which ack\n * was received, close this client. Fetching the snapshot will update the cache for this client so if it's\n * re-elected as summarizer, this will prevent any thrashing.\n * If the fetched snapshot is older than the one for which ack was received, ignore the ack and return. This can\n * happen in scenarios where the snapshot for the ack was lost in storage in scenarios like DB rollback, etc.\n */\n async fetchLatestSnapshotAndMaybeClose(targetRefSeq, targetAckHandle, logger) {\n const fetchedSnapshotRefSeq = await PerformanceEvent.timedExecAsync(logger, { eventName: \"RefreshLatestSummaryAckFetch\" }, async (perfEvent) => {\n const props = { targetRefSeq, targetAckHandle };\n const trace = Trace.start();\n let snapshotTree;\n const scenarioName = \"RefreshLatestSummaryAckFetch\";\n // If loader supplied us the ISnapshot when loading, the new getSnapshotApi is supported and feature gate is ON, then use the\n // new API, otherwise it will reduce the service performance because the service will need to recalculate the full snapshot\n // in case previously getSnapshotApi was used and now we use the getVersions API.\n if (this.isSnapshotInstanceOfISnapshot &&\n this.storage.getSnapshot !== undefined &&\n this.mc.config.getBoolean(\"Fluid.Container.UseLoadingGroupIdForSnapshotFetch2\") ===\n true) {\n const snapshot = await this.storage.getSnapshot({\n scenarioName,\n fetchSource: FetchSource.noCache,\n });\n const id = snapshot.snapshotTree.id;\n assert(id !== undefined, 0x9d0 /* id of the fetched snapshot should be defined */);\n props.snapshotVersion = id;\n snapshotTree = snapshot.snapshotTree;\n }\n else {\n const versions = await this.storage.getVersions(null, 1, scenarioName, FetchSource.noCache);\n assert(!!versions && !!versions[0], 0x137 /* \"Failed to get version from storage\" */);\n snapshotTree = await this.storage.getSnapshotTree(versions[0]);\n assert(!!snapshotTree, 0x138 /* \"Failed to get snapshot from storage\" */);\n props.snapshotVersion = versions[0].id;\n }\n props.getSnapshotDuration = trace.trace().duration;\n const readAndParseBlob = async (id) => readAndParse(this.storage, id);\n const snapshotRefSeq = await seqFromTree(snapshotTree, readAndParseBlob);\n props.snapshotRefSeq = snapshotRefSeq;\n props.newerSnapshotPresent = snapshotRefSeq >= targetRefSeq;\n perfEvent.end({ details: props });\n return snapshotRefSeq;\n });\n // If the snapshot that was fetched is older than the target snapshot, return. The summarizer will not be closed\n // because the snapshot is likely deleted from storage and it so, closing the summarizer will result in the\n // document being stuck in this state.\n if (fetchedSnapshotRefSeq < targetRefSeq) {\n return;\n }\n await delay(this.closeSummarizerDelayMs);\n this._summarizer?.stop(\"latestSummaryStateStale\");\n this.disposeFn();\n }\n getPendingLocalState(props) {\n this.verifyNotClosed();\n if (this._orderSequentiallyCalls !== 0) {\n throw new UsageError(\"can't get state during orderSequentially\");\n }\n this.imminentClosure || (this.imminentClosure = props?.notifyImminentClosure ?? false);\n const getSyncState = (pendingAttachmentBlobs) => {\n const pending = this.pendingStateManager.getLocalState(props?.snapshotSequenceNumber);\n const sessionExpiryTimerStarted = props?.sessionExpiryTimerStarted ?? this.garbageCollector.sessionExpiryTimerStarted;\n const pendingIdCompressorState = this._idCompressor?.serialize(true);\n return {\n pending,\n pendingIdCompressorState,\n pendingAttachmentBlobs,\n sessionExpiryTimerStarted,\n };\n };\n const perfEvent = {\n eventName: \"getPendingLocalState\",\n notifyImminentClosure: props?.notifyImminentClosure,\n };\n const logAndReturnPendingState = (event, pendingState) => {\n event.end({\n attachmentBlobsSize: Object.keys(pendingState?.pendingAttachmentBlobs ?? {}).length,\n pendingOpsSize: pendingState?.pending?.pendingStates.length,\n });\n return pendingState;\n };\n // Flush pending batch.\n // getPendingLocalState() is only exposed through Container.closeAndGetPendingLocalState(), so it's safe\n // to close current batch.\n this.flush();\n return props?.notifyImminentClosure === true\n ? PerformanceEvent.timedExecAsync(this.mc.logger, perfEvent, async (event) => logAndReturnPendingState(event, getSyncState(await this.blobManager.attachAndGetPendingBlobs(props?.stopBlobAttachingSignal))))\n : PerformanceEvent.timedExec(this.mc.logger, perfEvent, (event) => logAndReturnPendingState(event, getSyncState()));\n }\n summarizeOnDemand(options) {\n if (this.isSummarizerClient) {\n return this.summarizer.summarizeOnDemand(options);\n }\n else if (this.summaryManager !== undefined) {\n return this.summaryManager.summarizeOnDemand(options);\n }\n else {\n // If we're not the summarizer, and we don't have a summaryManager, we expect that\n // disableSummaries is turned on. We are throwing instead of returning a failure here,\n // because it is a misuse of the API rather than an expected failure.\n throw new UsageError(`Can't summarize, disableSummaries: ${this.summariesDisabled}`);\n }\n }\n enqueueSummarize(options) {\n if (this.isSummarizerClient) {\n return this.summarizer.enqueueSummarize(options);\n }\n else if (this.summaryManager !== undefined) {\n return this.summaryManager.enqueueSummarize(options);\n }\n else {\n // If we're not the summarizer, and we don't have a summaryManager, we expect that\n // generateSummaries is turned off. We are throwing instead of returning a failure here,\n // because it is a misuse of the API rather than an expected failure.\n throw new UsageError(`Can't summarize, disableSummaries: ${this.summariesDisabled}`);\n }\n }\n /**\n * Forms a function that will create and retrieve a Summarizer.\n */\n formCreateSummarizerFn(loader) {\n return async () => {\n return createSummarizer(loader, `/${summarizerRequestUrl}`);\n };\n }\n validateSummaryHeuristicConfiguration(configuration) {\n // eslint-disable-next-line no-restricted-syntax\n for (const prop in configuration) {\n if (typeof configuration[prop] === \"number\" && configuration[prop] < 0) {\n throw new UsageError(`Summary heuristic configuration property \"${prop}\" cannot be less than 0`);\n }\n }\n if (configuration.minIdleTime > configuration.maxIdleTime) {\n throw new UsageError(`\"minIdleTime\" [${configuration.minIdleTime}] cannot be greater than \"maxIdleTime\" [${configuration.maxIdleTime}]`);\n }\n }\n get groupedBatchingEnabled() {\n return this.sessionSchema.opGroupingEnabled === true;\n }\n}\n//# sourceMappingURL=containerRuntime.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { TelemetryDataTag, UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { ContainerMessageType } from \"./messageTypes.js\";\n/**\n * Type guard that returns true if the given alias message is actually an instance of\n * a class which implements {@link IDataStoreAliasMessage}\n * @param maybeDataStoreAliasMessage - message object to be validated\n * @returns True if the {@link IDataStoreAliasMessage} is fully implemented, false otherwise\n */\nexport const isDataStoreAliasMessage = (maybeDataStoreAliasMessage) => {\n return (typeof maybeDataStoreAliasMessage?.internalId === \"string\" &&\n typeof maybeDataStoreAliasMessage?.alias === \"string\");\n};\nexport const channelToDataStore = (fluidDataStoreChannel, internalId, channelCollection, logger) => new DataStore(fluidDataStoreChannel, internalId, channelCollection, logger);\nvar AliasState;\n(function (AliasState) {\n AliasState[\"Aliased\"] = \"Aliased\";\n AliasState[\"Aliasing\"] = \"Aliasing\";\n AliasState[\"None\"] = \"None\";\n})(AliasState || (AliasState = {}));\nclass DataStore {\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}\n */\n async trySetAlias(alias) {\n if (alias.includes(\"/\")) {\n throw new UsageError(`The alias cannot contain slashes: '${alias}'`);\n }\n switch (this.aliasState) {\n // If we're already aliasing, check if it's for the same value and return\n // the stored promise, otherwise return 'AlreadyAliased'\n case AliasState.Aliasing:\n assert(this.aliasResult !== undefined, 0x316 /* There should be a cached promise of in-progress aliasing */);\n await this.aliasResult;\n return this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n // If this datastore is already aliased, return true only if this\n // is a repeated call for the same alias\n case AliasState.Aliased:\n return this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n case AliasState.None: {\n const existingAlias = this.pendingAliases.get(alias);\n if (existingAlias !== undefined) {\n // There is already another datastore which will be aliased\n // to the same name\n return \"Conflict\";\n }\n // There is no current or past alias operation for this datastore,\n // or for this alias, so it is safe to continue execution\n break;\n }\n default:\n unreachableCase(this.aliasState);\n }\n this.aliasState = AliasState.Aliasing;\n this.aliasResult = this.trySetAliasInternal(alias);\n this.pendingAliases.set(alias, this.aliasResult);\n return this.aliasResult;\n }\n async trySetAliasInternal(alias) {\n const message = {\n internalId: this.internalId,\n alias,\n };\n this.fluidDataStoreChannel.makeVisibleAndAttachGraph();\n if (this.parentContext.attachState === AttachState.Detached) {\n const localResult = this.channelCollection.processAliasMessageCore(this.internalId, alias);\n // Explicitly lock-out future attempts of aliasing,\n // regardless of result\n this.aliasState = AliasState.Aliased;\n return localResult ? \"Success\" : \"Conflict\";\n }\n const aliased = await this.ackBasedPromise((resolve) => {\n this.parentContext.submitMessage(ContainerMessageType.Alias, message, resolve);\n })\n .catch((error) => {\n this.logger.sendErrorEvent({\n eventName: \"AliasingException\",\n alias: {\n value: alias,\n tag: TelemetryDataTag.UserData,\n },\n internalId: {\n value: this.internalId,\n tag: TelemetryDataTag.CodeArtifact,\n },\n }, error);\n return false;\n })\n .finally(() => {\n this.pendingAliases.delete(alias);\n });\n if (!aliased) {\n this.aliasState = AliasState.None;\n this.aliasResult = undefined;\n return \"Conflict\";\n }\n this.alias = alias;\n this.aliasState = AliasState.Aliased;\n return \"Success\";\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.entryPoint}\n */\n get entryPoint() {\n return this.fluidDataStoreChannel.entryPoint;\n }\n constructor(fluidDataStoreChannel, internalId, channelCollection, logger, parentContext = channelCollection.parentContext) {\n this.fluidDataStoreChannel = fluidDataStoreChannel;\n this.internalId = internalId;\n this.channelCollection = channelCollection;\n this.logger = logger;\n this.parentContext = parentContext;\n this.aliasState = AliasState.None;\n this.pendingAliases = channelCollection.pendingAliases;\n }\n async ackBasedPromise(executor) {\n let rejectBecauseDispose;\n return new Promise((resolve, reject) => {\n rejectBecauseDispose = () => reject(new Error(\"ContainerRuntime disposed while this ack-based Promise was pending\"));\n if (this.parentContext.containerRuntime.disposed) {\n rejectBecauseDispose();\n return;\n }\n this.parentContext.containerRuntime.on(\"dispose\", rejectBecauseDispose);\n executor(resolve, reject);\n }).finally(() => {\n this.parentContext.containerRuntime.off(\"dispose\", rejectBecauseDispose);\n });\n }\n}\n//# sourceMappingURL=dataStore.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * @internal\n */\nexport class FluidDataStoreRegistry {\n get IFluidDataStoreRegistry() {\n return this;\n }\n constructor(namedEntries) {\n this.map = new Map();\n for (const entry of namedEntries) {\n if (this.map.has(entry[0])) {\n throw new UsageError(\"Duplicate entry names exist\");\n }\n this.map.set(entry[0], entry[1]);\n }\n }\n async get(name) {\n if (this.map.has(name)) {\n return this.map.get(name);\n }\n return undefined;\n }\n}\n//# sourceMappingURL=dataStoreRegistry.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/** The stable/default version of GC Data */\nexport const stableGCVersion = 3;\n/** The next version of GC Data, to bump to in case we need to regenerate all GC Data across all files. */\nexport const nextGCVersion = 4;\n/**\n * This undocumented GC Option (on ContainerRuntime Options) allows configuring which documents can have Sweep enabled.\n * This provides a way to disable both Tombstone Enforcement and Sweep.\n *\n * If unset, Tombstone Enforcement + Sweep will operate as otherwise configured.\n * Otherwise, the Sweep Phase will be disabled for documents where persisted value doesn't match what is passed into this session.\n * This provides a way to disallow Sweep for old documents that may be too difficult for an app to repair,\n * in case a bug is found that violates GC's assumptions.\n *\n * @see GCFeatureMatrix (gcGeneration)\n */\nexport const gcGenerationOptionName = \"gcGeneration\";\n/** Config key to turn GC test mode on / off. */\nexport const gcTestModeKey = \"Fluid.GarbageCollection.GCTestMode\";\n/** Config key to expire a session after a set period of time. Defaults to true. */\nexport const runSessionExpiryKey = \"Fluid.GarbageCollection.RunSessionExpiry\";\n/** Config key to disable throwing an error when tombstone object is loaded (requested). */\nexport const disableThrowOnTombstoneLoadKey = \"Fluid.GarbageCollection.DisableThrowOnTombstoneLoad\";\n/** Config key to enable GC version upgrade. */\nexport const gcVersionUpgradeToV4Key = \"Fluid.GarbageCollection.GCVersionUpgradeToV4\";\n// One day in milliseconds.\nexport const oneDayMs = 1 * 24 * 60 * 60 * 1000;\n/**\n * The maximum snapshot cache expiry in the driver. This is used to calculate the tombstone timeout.\n * Tombstone timeout = session expiry timeout + snapshot cache expiry timeout + a buffer.\n * The snapshot cache expiry timeout cannot be known precisely but the upper bound is 5 days, i.e., any snapshot\n * in cache will be invalidated before 5 days.\n */\nexport const maxSnapshotCacheExpiryMs = 5 * oneDayMs;\nexport const defaultInactiveTimeoutMs = 7 * oneDayMs; // 7 days\nexport const defaultSessionExpiryDurationMs = 30 * oneDayMs; // 30 days\nexport const defaultSweepGracePeriodMs = 1 * oneDayMs; // 1 day\n/**\n * The types of GC nodes in the GC reference graph.\n * @legacy\n * @alpha\n */\nexport const GCNodeType = {\n // Nodes that are for data stores.\n DataStore: \"DataStore\",\n // Nodes that are within a data store. For example, DDS nodes.\n SubDataStore: \"SubDataStore\",\n // Nodes that are for attachment blobs, i.e., blobs uploaded via BlobManager.\n Blob: \"Blob\",\n // Nodes that are neither of the above. For example, root node.\n Other: \"Other\",\n};\n/**\n * The type of a garbage collection message.\n * @internal\n */\nexport const GarbageCollectionMessageType = {\n /** Message sent directing GC to delete the given nodes */\n Sweep: \"Sweep\",\n /** Message sent notifying GC that a Tombstoned object was Loaded */\n TombstoneLoaded: \"TombstoneLoaded\",\n};\n/** The state of node that is unreferenced. */\nexport const UnreferencedState = {\n /** The node is active, i.e., it can become referenced again. */\n Active: \"Active\",\n /** The node is inactive, i.e., it should not become referenced. */\n Inactive: \"Inactive\",\n /** The node is ready to be tombstoned */\n TombstoneReady: \"TombstoneReady\",\n /** The node is ready to be deleted by the sweep phase. */\n SweepReady: \"SweepReady\",\n};\n//# sourceMappingURL=gcDefinitions.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { gcBlobPrefix, gcDeletedBlobKey, gcTombstoneBlobKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { gcVersionUpgradeToV4Key, nextGCVersion, stableGCVersion, } from \"./gcDefinitions.js\";\nexport function getGCVersion(metadata) {\n if (!metadata) {\n // Force to 0/disallowed in prior versions\n return 0;\n }\n return metadata.gcFeature ?? 0;\n}\n/** Indicates what GC version is in effect for new GC data being written in this session */\nexport function getGCVersionInEffect(configProvider) {\n // If version upgrade is not enabled, fall back to the stable GC version.\n return configProvider.getBoolean(gcVersionUpgradeToV4Key) === true\n ? nextGCVersion\n : stableGCVersion;\n}\n/**\n * Indicates whether Sweep is allowed for this document based on the persisted GC Feature Matrix and current gcGeneration.\n * This applies to the entire Sweep Phase the same - both Tombstone Enforcement (i.e. should loading a Tombstone fail?) and Deletion.\n *\n * In order to protect old documents that were created at a time when known bugs exist that violate GC's invariants\n * such that enforcing GC Sweep would cause legitimate data loss, the container author may increment the generation value for Sweep\n * such that containers created with a different value will not be subjected to GC Sweep.\n *\n * If no generation is provided, Sweep will be enabled for all documents.\n *\n * For backwards compatibility, the current generation value is also compared against the persisted gcTombstoneGeneration if present.\n *\n * @param featureMatrix - The GC Feature Matrix, containing the persisted generation value\n * @param currentGeneration - The current app-provided gcGeneration value\n * @returns true if GC Sweep should be allowed for this document\n */\nexport function shouldAllowGcSweep(featureMatrix, currentGeneration) {\n // If no Generation value is provided for this session, default to true\n if (currentGeneration === undefined) {\n return true;\n }\n // tombstoneGeneration is the predecessor and needs to be supported for back-compat reasons\n const targetGeneration = featureMatrix.tombstoneGeneration ?? featureMatrix.gcGeneration;\n return currentGeneration === targetGeneration;\n}\n/**\n * Sorts the given GC state as per the id of the GC nodes. It also sorts the outbound routes array of each node.\n */\nexport function generateSortedGCState(gcState) {\n const sortableArray = Object.entries(gcState.gcNodes);\n sortableArray.sort(([a], [b]) => a.localeCompare(b));\n const sortedGCState = { gcNodes: {} };\n for (const [nodeId, nodeData] of sortableArray) {\n nodeData.outboundRoutes.sort();\n sortedGCState.gcNodes[nodeId] = nodeData;\n }\n return sortedGCState;\n}\n/**\n * Concatenates the given GC states and returns the concatenated GC state.\n */\nexport function concatGarbageCollectionStates(gcState1, gcState2) {\n const combinedGCNodes = {};\n for (const [nodeId, nodeData] of Object.entries(gcState1.gcNodes)) {\n combinedGCNodes[nodeId] = {\n outboundRoutes: Array.from(nodeData.outboundRoutes),\n unreferencedTimestampMs: nodeData.unreferencedTimestampMs,\n };\n }\n for (const [nodeId, nodeData] of Object.entries(gcState2.gcNodes)) {\n let combineNodeData = combinedGCNodes[nodeId];\n if (combineNodeData === undefined) {\n combineNodeData = {\n outboundRoutes: Array.from(nodeData.outboundRoutes),\n unreferencedTimestampMs: nodeData.unreferencedTimestampMs,\n };\n }\n else {\n // Validate that same node doesn't have different unreferenced timestamp.\n if (nodeData.unreferencedTimestampMs !== undefined &&\n combineNodeData.unreferencedTimestampMs !== undefined) {\n assert(nodeData.unreferencedTimestampMs === combineNodeData.unreferencedTimestampMs, 0x5d7 /* Two entries for the same GC node with different unreferenced timestamp */);\n }\n combineNodeData = {\n outboundRoutes: [\n ...new Set([...nodeData.outboundRoutes, ...combineNodeData.outboundRoutes]),\n ],\n unreferencedTimestampMs: nodeData.unreferencedTimestampMs ?? combineNodeData.unreferencedTimestampMs,\n };\n }\n combinedGCNodes[nodeId] = combineNodeData;\n }\n return { gcNodes: combinedGCNodes };\n}\n/**\n * Helper function that clones the GC data.\n * @param gcData - The GC data to clone.\n * @returns a clone of the given GC data.\n */\nexport function cloneGCData(gcData) {\n const clonedGCNodes = {};\n for (const [id, outboundRoutes] of Object.entries(gcData.gcNodes)) {\n clonedGCNodes[id] = Array.from(outboundRoutes);\n }\n return {\n gcNodes: clonedGCNodes,\n };\n}\n/**\n * Concatenates the given GC data and returns the concatenated GC data.\n */\nexport function concatGarbageCollectionData(gcData1, gcData2) {\n const combinedGCData = cloneGCData(gcData1);\n for (const [id, routes] of Object.entries(gcData2.gcNodes)) {\n if (combinedGCData.gcNodes[id] === undefined) {\n combinedGCData.gcNodes[id] = Array.from(routes);\n }\n else {\n // Non null asserting here since we are checking if combinedGCData.gcNodes[id] is not undefined above.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const combinedRoutes = [...routes, ...combinedGCData.gcNodes[id]];\n combinedGCData.gcNodes[id] = [...new Set(combinedRoutes)];\n }\n }\n return combinedGCData;\n}\n/**\n * Gets the base garbage collection state from the given snapshot tree. It contains GC state, deleted nodes and\n * tombstones. The GC state may be written into multiple blobs. Merge the GC state from all such blobs into one.\n */\nexport async function getGCDataFromSnapshot(gcSnapshotTree, readAndParseBlob) {\n let rootGCState = { gcNodes: {} };\n let tombstones;\n let deletedNodes;\n for (const key of Object.keys(gcSnapshotTree.blobs)) {\n // Update deleted nodes blob.\n if (key === gcDeletedBlobKey) {\n // Non null asserting here, we can change this to Object.entries later\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deletedNodes = await readAndParseBlob(gcSnapshotTree.blobs[key]);\n continue;\n }\n // Update tombstone blob.\n if (key === gcTombstoneBlobKey) {\n // Non null asserting here, we can change this to Object.entries later\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tombstones = await readAndParseBlob(gcSnapshotTree.blobs[key]);\n continue;\n }\n // Skip blobs that do not start with the GC prefix.\n if (!key.startsWith(gcBlobPrefix)) {\n continue;\n }\n const blobId = gcSnapshotTree.blobs[key];\n if (blobId === undefined) {\n continue;\n }\n const gcState = await readAndParseBlob(blobId);\n assert(gcState !== undefined, 0x5d8 /* GC blob missing from snapshot */);\n // Merge the GC state of this blob into the root GC state.\n rootGCState = concatGarbageCollectionStates(rootGCState, gcState);\n }\n return { gcState: rootGCState, tombstones, deletedNodes };\n}\n/**\n * Helper function that unpacks the GC details of the children from a given node's GC details.\n * @param gcDetails - The GC details of a node.\n * @returns A map of GC details of each children of the the given node.\n */\nexport function unpackChildNodesGCDetails(gcDetails) {\n const childGCDetailsMap = new Map();\n // If GC data is not available, bail out.\n if (gcDetails.gcData === undefined) {\n return childGCDetailsMap;\n }\n const gcNodes = gcDetails.gcData.gcNodes;\n for (const [id, outboundRoutes] of Object.entries(gcNodes)) {\n // Skip self-node since only children GC data is to be generated.\n if (id === \"/\") {\n continue;\n }\n const childId = id.split(\"/\")[1];\n assert(childId !== undefined, 0x9fe /* node id should be an absolute route with child id part */);\n let childGCNodeId = id.slice(childId.length + 1);\n // GC node id always begins with \"/\". Handle the special case where a child's id in the parent's GC nodes is\n // of format `/root`. In this case, the childId is root and childGCNodeId is \"\". Make childGCNodeId = \"/\".\n if (childGCNodeId === \"\") {\n childGCNodeId = \"/\";\n }\n let childGCDetails = childGCDetailsMap.get(childId);\n if (childGCDetails === undefined) {\n childGCDetails = { gcData: { gcNodes: {} }, usedRoutes: [] };\n }\n // gcData should not undefined as its always at least initialized as empty above.\n assert(childGCDetails.gcData !== undefined, 0x5da /* Child GC data should have been initialized */);\n childGCDetails.gcData.gcNodes[childGCNodeId] = [...new Set(outboundRoutes)];\n childGCDetailsMap.set(childId, childGCDetails);\n }\n if (gcDetails.usedRoutes === undefined) {\n return childGCDetailsMap;\n }\n // Remove the node's self used route, if any, and generate the children used routes.\n const usedRoutes = gcDetails.usedRoutes.filter((route) => route !== \"\" && route !== \"/\");\n for (const route of usedRoutes) {\n const childId = route.split(\"/\")[1];\n assert(childId !== undefined, 0x9ff /* used route should be an absolute route with child id part */);\n const childUsedRoute = route.slice(childId.length + 1);\n const childGCDetails = childGCDetailsMap.get(childId);\n assert(childGCDetails?.usedRoutes !== undefined, 0x5dc /* This should have be initialized when generate GC nodes above */);\n childGCDetails.usedRoutes.push(childUsedRoute);\n childGCDetailsMap.set(childId, childGCDetails);\n }\n return childGCDetailsMap;\n}\n/**\n * Trims the leading and trailing slashes from the given string.\n * @param str - A string that may contain leading and / or trailing slashes.\n * @returns A new string without leading and trailing slashes.\n */\nfunction trimLeadingAndTrailingSlashes(str) {\n return str.replace(/^\\/+|\\/+$/g, \"\");\n}\n/** Reformats a request URL to match expected format for a GC node path */\nexport function urlToGCNodePath(url) {\n // TODO Why are we non null asserting here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return `/${trimLeadingAndTrailingSlashes(url.split(\"?\")[0])}`;\n}\n/**\n * Pulls out the first path segment and formats it as a GC Node path\n * e.g. \"/dataStoreId/ddsId\" yields \"/dataStoreId\"\n */\nexport function dataStoreNodePathOnly(subDataStorePath) {\n return `/${subDataStorePath.split(\"/\")[1]}`;\n}\n/**\n * Utility to implement compat behaviors given an unknown message type\n * The parameters are typed to support compile-time enforcement of handling all known types/behaviors\n *\n * @param _unknownGCMessageType - Typed as never to ensure all known types have been\n * handled before calling this function (e.g. in a switch statement).\n * @param compatBehavior - Typed redundantly with CompatModeBehavior to ensure handling is added when updating that type\n */\nexport function compatBehaviorAllowsGCMessageType(_unknownGCMessageType, compatBehavior) {\n // undefined defaults to same behavior as \"FailToProcess\"\n return compatBehavior === \"Ignore\";\n}\n//# sourceMappingURL=gcHelpers.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport var ContainerMessageType;\n(function (ContainerMessageType) {\n // An op to be delivered to store\n ContainerMessageType[\"FluidDataStoreOp\"] = \"component\";\n // Creates a new store\n ContainerMessageType[\"Attach\"] = \"attach\";\n // Chunked operation.\n ContainerMessageType[\"ChunkedOp\"] = \"chunkedOp\";\n // Signifies that a blob has been attached and should not be garbage collected by storage\n ContainerMessageType[\"BlobAttach\"] = \"blobAttach\";\n // Ties our new clientId to our old one on reconnect\n ContainerMessageType[\"Rejoin\"] = \"rejoin\";\n // Sets the alias of a root data store\n ContainerMessageType[\"Alias\"] = \"alias\";\n /**\n * An op containing an IdRange of Ids allocated using the runtime's IdCompressor since\n * the last allocation op was sent.\n * See the [IdCompressor README](./id-compressor/README.md) for more details.\n */\n ContainerMessageType[\"IdAllocation\"] = \"idAllocation\";\n /**\n * An op that changes document schema\n */\n ContainerMessageType[\"DocumentSchemaChange\"] = \"schema\";\n /**\n * Garbage collection specific op. This is sent by the summarizer client when GC runs. It's used to synchronize GC\n * state across all clients.\n */\n ContainerMessageType[\"GC\"] = \"GC\";\n})(ContainerMessageType || (ContainerMessageType = {}));\n//# sourceMappingURL=messageTypes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { MessageType } from \"@fluidframework/driver-definitions/internal\";\nexport const summarizerClientType = \"summarizer\";\n/**\n * This class encapsulates logic around tracking the elected summarizer client.\n * It will handle updating the elected client when a summary ack hasn't been seen\n * for some configured number of ops.\n */\nexport class SummarizerClientElection extends TypedEventEmitter {\n get electedClientId() {\n return this.clientElection.electedClient?.clientId;\n }\n get electedParentId() {\n return this.clientElection.electedParent?.clientId;\n }\n constructor(logger, summaryCollection, clientElection, maxOpsSinceLastSummary) {\n super();\n this.logger = logger;\n this.summaryCollection = summaryCollection;\n this.clientElection = clientElection;\n this.maxOpsSinceLastSummary = maxOpsSinceLastSummary;\n /**\n * Used to prevent excess logging by recording the sequence number that we last reported at,\n * and making sure we don't report another event to telemetry. If things work as intended,\n * this is not needed, otherwise it could report an event on every op in worst case scenario.\n */\n this.lastReportedSeq = 0;\n // On every inbound op, if enough ops pass without seeing a summary ack (per elected client),\n // elect a new client and log to telemetry.\n this.summaryCollection.on(\"default\", ({ sequenceNumber }) => {\n const electedClientId = this.electedClientId;\n if (electedClientId === undefined) {\n // Reset election if no elected client, but eligible clients are connected.\n // This should be uncommon, but is possible if the initial state of the\n // ordered client election contains an undefined client id or one not found\n // in the quorum (the latter would already log an error).\n if (this.clientElection.eligibleCount > 0) {\n this.clientElection.resetElectedClient(sequenceNumber);\n }\n return;\n }\n const electionSequenceNumber = this.clientElection.electionSequenceNumber;\n const opsWithoutSummary = sequenceNumber - (this.lastSummaryAckSeqForClient ?? electionSequenceNumber);\n if (opsWithoutSummary > this.maxOpsSinceLastSummary) {\n // Log and elect a new summarizer client.\n const opsSinceLastReport = sequenceNumber - this.lastReportedSeq;\n if (opsSinceLastReport > this.maxOpsSinceLastSummary) {\n this.logger.sendTelemetryEvent({\n eventName: \"ElectedClientNotSummarizing\",\n electedClientId,\n lastSummaryAckSeqForClient: this.lastSummaryAckSeqForClient,\n electionSequenceNumber,\n nextElectedClientId: this.clientElection.peekNextElectedClient()?.clientId,\n });\n this.lastReportedSeq = sequenceNumber;\n }\n }\n });\n // When a summary ack comes in, reset our op seq counter.\n this.summaryCollection.on(MessageType.SummaryAck, (op) => {\n this.lastSummaryAckSeqForClient = op.sequenceNumber;\n });\n // Use oldest client election for unanimously and deterministically deciding\n // which client should summarize.\n this.clientElection.on(\"election\", (client, sequenceNumber) => {\n this.lastSummaryAckSeqForClient = undefined;\n if (client === undefined && this.clientElection.eligibleCount > 0) {\n // If no client is valid for election, reset to the oldest again.\n // Also make extra sure not to get stuck in an infinite loop here:\n // If there are no eligible clients, just wait until a client joins\n // and will be auto-elected.\n this.clientElection.resetElectedClient(sequenceNumber);\n }\n // Election can trigger a change in SummaryManager state.\n this.emit(\"electedSummarizerChanged\");\n });\n }\n serialize() {\n const { electedClientId, electedParentId, electionSequenceNumber } = this.clientElection.serialize();\n return {\n electedClientId,\n electedParentId,\n electionSequenceNumber: this.lastSummaryAckSeqForClient ?? electionSequenceNumber,\n };\n }\n static isClientEligible(client) {\n const details = client.client.details;\n if (details === undefined) {\n // Very old clients back-compat\n return true;\n }\n return SummarizerClientElection.clientDetailsPermitElection(details);\n }\n}\nSummarizerClientElection.clientDetailsPermitElection = (details) => details.capabilities.interactive || details.type === summarizerClientType;\n//# sourceMappingURL=summarizerClientElection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { blobHeadersBlobName as blobNameForBlobHeaders, readAndParse, } from \"@fluidframework/driver-utils/internal\";\nimport { channelsTreeName, gcTreeKey, } from \"@fluidframework/runtime-definitions/internal\";\nimport { blobsTreeName } from \"../blobManager/index.js\";\nexport function getAttributesFormatVersion(attributes) {\n if (attributes.summaryFormatVersion) {\n /**\n * Version 2+: Introduces .channels trees for isolation of\n * channel trees from data store objects.\n */\n return attributes.summaryFormatVersion;\n }\n else if (attributes.snapshotFormatVersion === \"0.1\") {\n /**\n * Version 1: from this version the pkg within the data store\n * attributes blob is a JSON array rather than a string.\n */\n return 1;\n }\n /**\n * Version 0: format version is missing from summary.\n * This indicates it is an older version.\n */\n return 0;\n}\nexport function hasIsolatedChannels(attributes) {\n return !!attributes.summaryFormatVersion && !attributes.disableIsolatedChannels;\n}\n/**\n * Extracts the properties from an ISequencedDocumentMessage as defined by ISummaryMetadataMessage. This message is\n * added to the metadata blob in summary.\n */\nexport const extractSummaryMetadataMessage = (message) => message === undefined\n ? undefined\n : {\n clientId: message.clientId,\n clientSequenceNumber: message.clientSequenceNumber,\n minimumSequenceNumber: message.minimumSequenceNumber,\n referenceSequenceNumber: message.referenceSequenceNumber,\n sequenceNumber: message.sequenceNumber,\n timestamp: message.timestamp,\n type: message.type,\n };\nexport function getMetadataFormatVersion(metadata) {\n /**\n * Version 2+: Introduces runtime sequence number for data verification.\n *\n * Version 1+: Introduces .metadata blob and .channels trees for isolation of\n * data store trees from container-level objects.\n * Also introduces enableGC option stored in the summary.\n *\n * Version 0: metadata blob missing; format version is missing from summary.\n * This indicates it is an older version.\n */\n return metadata?.summaryFormatVersion ?? 0;\n}\nexport const aliasBlobName = \".aliases\";\nexport const metadataBlobName = \".metadata\";\nexport const chunksBlobName = \".chunks\";\nexport const electedSummarizerBlobName = \".electedSummarizer\";\nexport const idCompressorBlobName = \".idCompressor\";\nexport const blobHeadersBlobName = blobNameForBlobHeaders;\nexport function rootHasIsolatedChannels(metadata) {\n return !!metadata && !metadata.disableIsolatedChannels;\n}\nexport const protocolTreeName = \".protocol\";\n/**\n * List of tree IDs at the container level which are reserved.\n * This is for older versions of summaries that do not yet have an\n * isolated data stores namespace. Without the namespace, this must\n * be used to prevent name collisions with data store IDs.\n */\nexport const nonDataStorePaths = [\n protocolTreeName,\n \".logTail\",\n \".serviceProtocol\",\n blobsTreeName,\n gcTreeKey,\n idCompressorBlobName,\n];\nexport const dataStoreAttributesBlobName = \".component\";\n/**\n * Modifies summary tree and stats to put tree under .channels tree.\n *\n * @param summarizeResult - Summary tree and stats to modify\n *\n * @example\n *\n * Converts from:\n *\n * ```typescript\n * {\n * type: SummaryType.Tree,\n * tree: { a: {...}, b: {...}, c: {...} },\n * }\n * ```\n *\n * to:\n *\n * ```typescript\n * {\n * type: SummaryType.Tree,\n * tree: {\n * \".channels\": {\n * type: SummaryType.Tree,\n * tree: { a: {...}, b: {...}, c: {...} }\n * },\n * },\n * }\n * ```\n *\n * And adds +1 to treeNodeCount in stats.\n */\nexport function wrapSummaryInChannelsTree(summarizeResult) {\n summarizeResult.summary = {\n type: SummaryType.Tree,\n tree: { [channelsTreeName]: summarizeResult.summary },\n };\n summarizeResult.stats.treeNodeCount++;\n}\nexport async function getFluidDataStoreAttributes(storage, snapshot) {\n const attributes = await readAndParse(storage, \n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n snapshot.blobs[dataStoreAttributesBlobName]);\n // Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.\n // For snapshotFormatVersion = \"0.1\" (1) or above, pkg is jsonified, otherwise it is just a string.\n // However the feature of loading a detached container from snapshot, is added when the\n // snapshotFormatVersion is at least \"0.1\" (1), so we don't expect it to be anything else.\n const formatVersion = getAttributesFormatVersion(attributes);\n assert(formatVersion > 0, 0x1d5 /* Invalid snapshot format version */);\n return attributes;\n}\n//# sourceMappingURL=summaryFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Error types the Fluid Framework may report.\n * @legacy\n * @alpha\n */\nexport const FluidErrorTypes = {\n /**\n * Some error, most likely an exception caught by runtime and propagated to container as critical error\n */\n genericError: \"genericError\",\n /**\n * Throttling error from server. Server is busy and is asking not to reconnect for some time\n */\n throttlingError: \"throttlingError\",\n /**\n * Data loss error detected by Container / DeltaManager. Likely points to storage issue.\n */\n dataCorruptionError: \"dataCorruptionError\",\n /**\n * Error encountered when processing an operation. May correlate with data corruption.\n */\n dataProcessingError: \"dataProcessingError\",\n /**\n * Error indicating an API is being used improperly resulting in an invalid operation.\n */\n usageError: \"usageError\",\n};\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Specify levels of the logs.\n * @public\n */\nexport const LogLevel = {\n verbose: 10, // To log any verbose event for example when you are debugging something.\n default: 20, // Default log level\n error: 30, // To log errors.\n};\n//# sourceMappingURL=logger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A browser friendly assert library.\n * Use this instead of the 'assert' package, which has a big impact on bundle sizes.\n * @param condition - The condition that should be true, if the condition is false an error will be thrown.\n * Only use this API when `false` indicates a logic error in the problem and thus a bug that should be fixed.\n * @param message - The message to include in the error when the condition does not hold.\n * A number should not be specified manually: use a string.\n * Before a release, policy-check should be run, which will convert any asserts still using strings to\n * use numbered error codes instead.\n * @legacy\n * @alpha\n */\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(typeof message === \"number\" ? `0x${message.toString(16).padStart(3, \"0\")}` : message);\n }\n}\n//# sourceMappingURL=assert.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Compare two arrays. Returns true if their elements are equivalent and in the same order.\n *\n * @legacy\n * @alpha\n *\n * @param left - The first array to compare\n * @param right - The second array to compare\n * @param comparator - The function used to check if two `T`s are equivalent.\n * Defaults to `Object.is()` equality (a shallow compare where NaN = NaN and -0 ≠ 0)\n */\nexport const compareArrays = (left, right, comparator = (leftItem, rightItem) => Object.is(leftItem, rightItem)) => {\n // PERF: 'for-loop' and 'Array.every()' tied.\n // '===' and 'Object.is()' tied.\n // Trivial acceptance adds no measurable overhead.\n // 30% penalty vs. baseline for exported function [node 14 x64].\n return (left === right || // Trivial acceptance: 'left' and 'right' are the same instance\n (left.length === right.length && // Trivial rejection: 'left' and 'right' are different lengths\n // non null asserting the right array because we know the lengths are the same\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n left.every((leftItem, index) => comparator(leftItem, right[index], index))));\n};\n//# sourceMappingURL=compare.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Returns a promise that resolves after `timeMs`.\n * @param timeMs - Time in milliseconds to wait.\n * @internal\n */\nexport const delay = async (timeMs) => new Promise((resolve) => setTimeout(() => resolve(), timeMs));\n//# sourceMappingURL=delay.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Helper class for lazy initialized values. Ensures the value is only generated once, and remain immutable.\n * @internal\n */\nexport class Lazy {\n /**\n * Instantiates an instance of Lazy.\n * @param valueGenerator - The function that will generate the value when value is accessed the first time.\n */\n constructor(valueGenerator) {\n this.valueGenerator = valueGenerator;\n this._evaluated = false;\n }\n /**\n * Return true if the value as been generated, otherwise false.\n */\n get evaluated() {\n return this._evaluated;\n }\n /**\n * Get the value. If this is the first call the value will be generated.\n */\n get value() {\n if (!this._evaluated) {\n this._evaluated = true;\n this._value = this.valueGenerator();\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._value;\n }\n}\n/**\n * A lazy evaluated promise. The execute function is delayed until\n * the promise is used, e.g. await, then, catch ...\n * The execute function is only called once.\n * All calls are then proxied to the promise returned by the execute method.\n * @legacy\n * @alpha\n */\nexport class LazyPromise {\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get [Symbol.toStringTag]() {\n return \"[object LazyPromise]\";\n }\n constructor(execute) {\n this.execute = execute;\n }\n // eslint-disable-next-line unicorn/no-thenable\n async then(\n // eslint-disable-next-line @rushstack/no-new-null\n onfulfilled, \n // TODO: Use `unknown` instead (API breaking)\n // eslint-disable-next-line @rushstack/no-new-null, @typescript-eslint/no-explicit-any\n onrejected) {\n // eslint-disable-next-line prefer-rest-params\n return this.getPromise().then(...arguments);\n }\n async catch(\n // TODO: Use `unknown` instead (API breaking)\n // eslint-disable-next-line @rushstack/no-new-null, @typescript-eslint/no-explicit-any\n onrejected) {\n // eslint-disable-next-line prefer-rest-params\n return this.getPromise().catch(...arguments);\n }\n // eslint-disable-next-line @rushstack/no-new-null\n async finally(onfinally) {\n // eslint-disable-next-line prefer-rest-params\n return this.getPromise().finally(...arguments);\n }\n async getPromise() {\n if (this.result === undefined) {\n this.result = this.execute();\n }\n return this.result;\n }\n}\n//# sourceMappingURL=lazy.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A deferred creates a promise and the ability to resolve or reject it\n * @legacy\n * @alpha\n */\nexport class Deferred {\n constructor() {\n this.completed = false;\n this.p = new Promise((resolve, reject) => {\n this.res = resolve;\n this.rej = reject;\n });\n }\n /**\n * Returns whether the underlying promise has been completed\n */\n get isCompleted() {\n return this.completed;\n }\n /**\n * Retrieves the underlying promise for the deferred\n *\n * @returns the underlying promise\n */\n get promise() {\n return this.p;\n }\n /**\n * Resolves the promise\n *\n * @param value - the value to resolve the promise with\n */\n resolve(value) {\n if (this.res !== undefined) {\n this.completed = true;\n this.res(value);\n }\n }\n /**\n * Rejects the promise\n *\n * @param value - the value to reject the promise with\n */\n // TODO: Use `unknown` instead (API breaking)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n reject(error) {\n if (this.rej !== undefined) {\n this.completed = true;\n this.rej(error);\n }\n }\n}\n//# sourceMappingURL=promises.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"./assert.js\";\nimport { Deferred } from \"./promises.js\";\nconst maxSetTimeoutMs = 0x7fffffff; // setTimeout limit is MAX_INT32=(2^31-1).\n/**\n * Sets timeouts like the setTimeout function allowing timeouts to exceed the setTimeout's max timeout limit.\n * Timeouts may not be exactly accurate due to browser implementations and the OS.\n * https://stackoverflow.com/questions/21097421/what-is-the-reason-javascript-settimeout-is-so-inaccurate\n * @param timeoutFn - Executed when the timeout expires\n * @param timeoutMs - Duration of the timeout in milliseconds\n * @param setTimeoutIdFn - Executed to update the timeout if multiple timeouts are required when\n * timeoutMs greater than maxTimeout\n * @returns The initial timeout\n * @internal\n */\nexport function setLongTimeout(timeoutFn, timeoutMs, setTimeoutIdFn) {\n // The setTimeout max is 24.8 days before looping occurs.\n let timeoutId;\n if (timeoutMs > maxSetTimeoutMs) {\n const newTimeoutMs = timeoutMs - maxSetTimeoutMs;\n timeoutId = setTimeout(() => setLongTimeout(timeoutFn, newTimeoutMs, setTimeoutIdFn), maxSetTimeoutMs);\n }\n else {\n timeoutId = setTimeout(() => timeoutFn(), Math.max(timeoutMs, 0));\n }\n setTimeoutIdFn?.(timeoutId);\n return timeoutId;\n}\n/**\n * This class is a thin wrapper over setTimeout and clearTimeout which\n * makes it simpler to keep track of recurring timeouts with the same\n * or similar handlers and timeouts. This class supports long timeouts\n * or timeouts exceeding (2^31)-1 ms or approximately 24.8 days.\n * @internal\n */\nexport class Timer {\n /**\n * Returns true if the timer is running.\n */\n get hasTimer() {\n return !!this.runningState;\n }\n constructor(defaultTimeout, defaultHandler, exceptionHandler) {\n this.defaultTimeout = defaultTimeout;\n this.defaultHandler = defaultHandler;\n this.exceptionHandler = exceptionHandler;\n this.getCurrentTick = () => Date.now();\n }\n /**\n * Calls setTimeout and tracks the resulting timeout.\n * @param ms - overrides default timeout in ms\n * @param handler - overrides default handler\n */\n start(ms = this.defaultTimeout, handler = this.defaultHandler) {\n this.startCore(ms, handler, ms);\n }\n /**\n * Calls clearTimeout on the underlying timeout if running.\n */\n clear() {\n if (!this.runningState) {\n return;\n }\n clearTimeout(this.runningState.timeout);\n this.runningState = undefined;\n }\n /**\n * Restarts the timer with the new handler and duration.\n * If a new handler is passed, the original handler may\n * never execute.\n * This is a potentially more efficient way to clear and start\n * a new timer.\n * @param ms - overrides previous or default timeout in ms\n * @param handler - overrides previous or default handler\n */\n restart(ms, handler) {\n if (this.runningState) {\n const duration = ms ?? this.runningState.intendedDuration;\n const handlerToUse = handler ?? this.runningState.restart?.handler ?? this.runningState.handler;\n const remainingTime = this.calculateRemainingTime(this.runningState);\n if (duration < remainingTime) {\n // If remaining time exceeds restart duration, do a hard restart.\n // The existing timeout time is too long.\n this.start(duration, handlerToUse);\n }\n else if (duration === remainingTime) {\n // The existing timeout time is perfect, just update handler and data.\n this.runningState.handler = handlerToUse;\n this.runningState.restart = undefined;\n this.runningState.intendedDuration = duration;\n }\n else {\n // If restart duration exceeds remaining time, set restart info.\n // Existing timeout will start a new timeout for remaining time.\n this.runningState.restart = {\n startTick: this.getCurrentTick(),\n duration,\n handler: handlerToUse,\n };\n }\n }\n else {\n // If restart is called first, it behaves as a call to start\n this.start(ms, handler);\n }\n }\n startCore(duration, handler, intendedDuration) {\n this.clear();\n this.runningState = {\n startTick: this.getCurrentTick(),\n duration,\n intendedDuration,\n handler,\n timeout: setLongTimeout(() => this.handler(), duration, (timer) => {\n if (this.runningState !== undefined) {\n this.runningState.timeout = timer;\n }\n }),\n };\n }\n handler() {\n assert(!!this.runningState, 0x764 /* Running timer missing handler */);\n const restart = this.runningState.restart;\n if (restart === undefined) {\n // Run clear first, in case the handler decides to start again\n const handler = this.runningState.handler;\n this.clear();\n try {\n handler();\n }\n catch (error) {\n if (this.exceptionHandler) {\n this.exceptionHandler(error);\n }\n else {\n // This will be unhandled exception, but it's better to have unhandled exception than swallow it.\n // Applications might have telemetry to report unhandled exceptions, letting us know where we are missing\n // exception handlers.\n throw error;\n }\n }\n }\n else {\n // Restart with remaining time\n const remainingTime = this.calculateRemainingTime(restart);\n this.startCore(remainingTime, () => restart.handler(), restart.duration);\n }\n }\n calculateRemainingTime(runningTimeout) {\n const elapsedTime = this.getCurrentTick() - runningTimeout.startTick;\n return runningTimeout.duration - elapsedTime;\n }\n}\n/**\n * This class is a wrapper over setTimeout and clearTimeout which\n * makes it simpler to keep track of recurring timeouts with the\n * same handlers and timeouts, while also providing a promise that\n * resolves when it times out.\n * @internal\n */\nexport class PromiseTimer {\n /**\n * {@inheritDoc Timer.hasTimer}\n */\n get hasTimer() {\n return this.timer.hasTimer;\n }\n constructor(defaultTimeout, defaultHandler) {\n this.timer = new Timer(defaultTimeout, () => this.wrapHandler(defaultHandler));\n }\n /**\n * {@inheritDoc IPromiseTimer.start}\n */\n async start(ms, handler) {\n this.clear();\n this.deferred = new Deferred();\n this.timer.start(ms, handler ? () => this.wrapHandler(handler) : undefined);\n return this.deferred.promise;\n }\n clear() {\n this.timer.clear();\n if (this.deferred) {\n this.deferred.resolve({ timerResult: \"cancel\" });\n this.deferred = undefined;\n }\n }\n wrapHandler(handler) {\n handler();\n assert(!!this.deferred, 0x765 /* Handler executed without deferred */);\n this.deferred.resolve({ timerResult: \"timeout\" });\n this.deferred = undefined;\n }\n}\n//# sourceMappingURL=timer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This function can be used to assert at compile time that a given value has type never.\n * One common usage is in the default case of a switch block,\n * to ensure that all cases are explicitly handled.\n *\n * Example:\n * ```typescript\n * const bool: true | false = ...;\n * switch(bool) {\n * case true: {...}\n * case false: {...}\n * default: unreachableCase(bool);\n * }\n * ```\n * @internal\n */\nexport function unreachableCase(_, message = \"Unreachable Case\") {\n throw new Error(message);\n}\n//# sourceMappingURL=unreachable.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { generateHandleContextPath, FluidHandleBase, } from \"@fluidframework/runtime-utils/internal\";\n/**\n * Handle for a shared {@link @fluidframework/core-interfaces#FluidObject}.\n * @legacy\n * @alpha\n */\nexport class FluidObjectHandle extends FluidHandleBase {\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IFluidHandle.isAttached}\n */\n get isAttached() {\n return this.routeContext.isAttached;\n }\n /**\n * Tells whether the object of this handle is visible in the container locally or globally.\n */\n get visible() {\n /**\n * If the object of this handle is attached, it is visible in the container. Ideally, checking local visibility\n * should be enough for a handle. However, there are scenarios where the object becomes locally visible but the\n * handle does not know this - This will happen is attachGraph is never called on the handle. Couple of examples\n * where this can happen:\n *\n * 1. Handles to DDS other than the default handle won't know if the DDS becomes visible after the handle was\n * created.\n *\n * 2. Handles to root data stores will never know that it was visible because the handle will not be stores in\n * another DDS and so, attachGraph will never be called on it.\n */\n return this.isAttached || this.locallyVisible;\n }\n /**\n * Creates a new `FluidObjectHandle`.\n *\n * @param value - The {@link @fluidframework/core-interfaces#FluidObject} object this handle is for.\n * @param path - The path to this handle relative to the `routeContext`.\n * @param routeContext - The parent {@link @fluidframework/core-interfaces#IFluidHandleContext} that has a route\n * to this handle.\n */\n constructor(value, path, routeContext) {\n super();\n this.value = value;\n this.path = path;\n this.routeContext = routeContext;\n this.pendingHandlesToMakeVisible = new Set();\n /**\n * Tracks whether this handle is locally visible in the container.\n */\n this.locallyVisible = false;\n this.absolutePath = generateHandleContextPath(path, this.routeContext);\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IFluidHandle.get}\n */\n async get() {\n // Note that this return works whether we received a T or a Promise for this.value in the constructor.\n return this.value;\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IFluidHandle.attachGraph }\n */\n attachGraph() {\n if (this.visible) {\n return;\n }\n this.locallyVisible = true;\n this.pendingHandlesToMakeVisible.forEach((handle) => {\n handle.attachGraph();\n });\n this.pendingHandlesToMakeVisible.clear();\n this.routeContext.attachGraph();\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IFluidHandle.bind}\n */\n bind(handle) {\n // If this handle is visible, attach the graph of the incoming handle as well.\n if (this.visible) {\n handle.attachGraph();\n return;\n }\n this.pendingHandlesToMakeVisible.add(handle);\n }\n}\n//# sourceMappingURL=fluidHandle.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidErrorTypes } from \"@fluidframework/core-interfaces/internal\";\n// Omit `dataCorruptionError` and `dataProcessingError` from the list of values inherited from FluidErrorTypes\nconst { dataCorruptionError, dataProcessingError, ...FluidErrorTypesExceptDataTypes } = FluidErrorTypes;\n/**\n * Different error types the Driver may report out to the Host.\n * @legacy\n * @alpha\n */\nexport const DriverErrorTypes = {\n // Inherit base error types\n ...FluidErrorTypesExceptDataTypes,\n /**\n * Some non-categorized (below) networking error\n * Include errors like fatal server error (usually 500).\n */\n genericNetworkError: \"genericNetworkError\",\n /**\n * Access denied - user does not have enough privileges to open a file, or continue to operate on a file\n */\n authorizationError: \"authorizationError\",\n /**\n * File not found, or file deleted during session\n */\n fileNotFoundOrAccessDeniedError: \"fileNotFoundOrAccessDeniedError\",\n /**\n * We can not reach server due to computer being offline.\n */\n offlineError: \"offlineError\",\n /*\n * Unsupported client protocol\n */\n unsupportedClientProtocolVersion: \"unsupportedClientProtocolVersion\",\n /**\n * User does not have write permissions to a file, but is changing content of a file.\n * That might be indication of some data store error - data stores should not generate ops in readonly mode.\n */\n writeError: \"writeError\",\n /**\n * A generic fetch failure that indicates we were not able to get a response from the server.\n * This may be due to the client being offline (though, if we are able to detect offline state it will be\n * logged as an offlineError instead). Other possibilities could be DNS errors, malformed fetch request,\n * CSP violation, etc.\n */\n fetchFailure: \"fetchFailure\",\n /**\n * This error occurs when token provider fails to fetch orderer token\n */\n fetchTokenError: \"fetchTokenError\",\n /**\n * Unexpected response from server. Either JSON is malformed, or some required properties are missing\n */\n incorrectServerResponse: \"incorrectServerResponse\",\n /**\n * This error occurs when the file is modified externally (not through Fluid protocol) in storage.\n * It will occur in cases where client has some state or cache that is based on old content (identity) of a file,\n * and storage / driver / loader detects such mismatch.\n * When it's hit, client needs to forget all the knowledge about this file and start over.\n */\n fileOverwrittenInStorage: \"fileOverwrittenInStorage\",\n /**\n * The document is read-only and delta stream connection is forbidden.\n */\n deltaStreamConnectionForbidden: \"deltaStreamConnectionForbidden\",\n /**\n * The location of file/container can change on server. So if the file location moves and we try to access the old\n * location, then this error is thrown to let the client know about the new location info.\n */\n locationRedirection: \"locationRedirection\",\n /**\n * When a file is not a Fluid file, but has Fluid extension such as \".note\",\n * server won't be able to open it and will return this error. The innerMostErrorCode will be\n * \"fluidInvalidSchema\"\n */\n fluidInvalidSchema: \"fluidInvalidSchema\",\n /**\n * File is locked for read/write by storage, e.g. whole collection is locked and access denied.\n */\n fileIsLocked: \"fileIsLocked\",\n /**\n * Storage is out of space\n */\n outOfStorageError: \"outOfStorageError\",\n};\n//# sourceMappingURL=driverError.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport var MessageType;\n(function (MessageType) {\n /**\n * Empty operation message. Used to send an updated reference sequence number.\n * Relay service is free to coalesce these messages or fully drop them, if\n * another message was used to update MSN to a number equal or higher than referenced\n * sequence number in Noop.\n */\n MessageType[\"NoOp\"] = \"noop\";\n /**\n * System message sent to indicate a new client has joined the collaboration.\n */\n MessageType[\"ClientJoin\"] = \"join\";\n /**\n * System message sent to indicate a client has left the collaboration.\n */\n MessageType[\"ClientLeave\"] = \"leave\";\n /**\n * Proposes a new consensus value.\n */\n MessageType[\"Propose\"] = \"propose\";\n /**\n * Message used to reject a pending proposal.\n */\n MessageType[\"Reject\"] = \"reject\";\n /**\n * Message sent by client accepting proposal\n */\n MessageType[\"Accept\"] = \"accept\";\n /**\n * Summary operation (message).\n */\n MessageType[\"Summarize\"] = \"summarize\";\n /**\n * Summary operation (message) written.\n */\n MessageType[\"SummaryAck\"] = \"summaryAck\";\n /**\n * Summary operation (message) write failure.\n */\n MessageType[\"SummaryNack\"] = \"summaryNack\";\n /**\n * Operation (message) produced by container runtime.\n */\n MessageType[\"Operation\"] = \"op\";\n /**\n * Message to indicate that no active clients are present.\n */\n MessageType[\"NoClient\"] = \"noClient\";\n /**\n * Message to indicate successful round trip.\n */\n MessageType[\"RoundTrip\"] = \"tripComplete\";\n /**\n * Service specific control messages that are never sequenced.\n */\n MessageType[\"Control\"] = \"control\";\n})(MessageType || (MessageType = {}));\n/**\n * @internal\n */\nexport var SignalType;\n(function (SignalType) {\n /**\n * System signal sent to indicate a new client has joined the collaboration.\n */\n SignalType[\"ClientJoin\"] = \"join\";\n /**\n * System signal sent to indicate a client has left the collaboration.\n */\n SignalType[\"ClientLeave\"] = \"leave\";\n})(SignalType || (SignalType = {}));\n/**\n * Type of the nack.\n * @legacy\n * @alpha\n */\nexport var NackErrorType;\n(function (NackErrorType) {\n /**\n * Retriable after {@link ISummaryNack.retryAfter} seconds.\n */\n NackErrorType[\"ThrottlingError\"] = \"ThrottlingError\";\n /**\n * Client's token is not valid for the intended message.\n */\n NackErrorType[\"InvalidScopeError\"] = \"InvalidScopeError\";\n /**\n * Clients message is invalid and should retry immediately with a valid message.\n */\n NackErrorType[\"BadRequestError\"] = \"BadRequestError\";\n /**\n * Service is having issues. Client should not retry.\n */\n NackErrorType[\"LimitExceededError\"] = \"LimitExceededError\";\n})(NackErrorType || (NackErrorType = {}));\n//# sourceMappingURL=protocol.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport var FileMode;\n(function (FileMode) {\n FileMode[\"File\"] = \"100644\";\n FileMode[\"Executable\"] = \"100755\";\n FileMode[\"Directory\"] = \"040000\";\n FileMode[\"Symlink\"] = \"120000\";\n})(FileMode || (FileMode = {}));\n/**\n * Type of entries that can be stored in a tree.\n * @legacy\n * @alpha\n */\nexport var TreeEntry;\n(function (TreeEntry) {\n TreeEntry[\"Blob\"] = \"Blob\";\n TreeEntry[\"Tree\"] = \"Tree\";\n TreeEntry[\"Attachment\"] = \"Attachment\";\n})(TreeEntry || (TreeEntry = {}));\n//# sourceMappingURL=storage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Type tag used to distinguish different types of nodes in a {@link ISummaryTree}.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var SummaryType;\n(function (SummaryType) {\n /**\n * Represents a sub-tree in the summary.\n * @public\n */\n SummaryType.Tree = 1;\n /**\n * Represents a blob of data that is added to the summary.\n * Such as the user data that is added to the DDS or metadata added by runtime\n * such as data store / channel attributes.\n * @public\n */\n SummaryType.Blob = 2;\n /**\n * Path to a summary tree object from the last successful summary.\n * @public\n */\n SummaryType.Handle = 3;\n /**\n * Unique identifier to larger blobs uploaded outside of the summary.\n * Ex. DDS has large images or video that will be uploaded by the BlobManager and\n * receive an Id that can be used in the summary.\n * @public\n */\n SummaryType.Attachment = 4;\n})(SummaryType || (SummaryType = {}));\n//# sourceMappingURL=summary.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport var LoaderCachingPolicy;\n(function (LoaderCachingPolicy) {\n /**\n * The loader should not implement any prefetching or caching policy.\n */\n LoaderCachingPolicy[LoaderCachingPolicy[\"NoCaching\"] = 0] = \"NoCaching\";\n /**\n * The loader should implement prefetching policy, i.e. it should prefetch resources from the latest snapshot.\n */\n LoaderCachingPolicy[LoaderCachingPolicy[\"Prefetch\"] = 1] = \"Prefetch\";\n})(LoaderCachingPolicy || (LoaderCachingPolicy = {}));\n/**\n * @legacy\n * @alpha\n */\nexport var FetchSource;\n(function (FetchSource) {\n FetchSource[\"default\"] = \"default\";\n FetchSource[\"noCache\"] = \"noCache\";\n})(FetchSource || (FetchSource = {}));\n//# sourceMappingURL=storage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Additional key in the loader request header\n * @legacy\n * @alpha\n */\nexport var DriverHeader;\n(function (DriverHeader) {\n // Key to indicate whether the request for summarizer\n DriverHeader[\"summarizingClient\"] = \"fluid-client-summarizer\";\n // createNew information, specific to each driver\n DriverHeader[\"createNew\"] = \"createNew\";\n})(DriverHeader || (DriverHeader = {}));\n//# sourceMappingURL=urlResolver.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FileMode, TreeEntry, } from \"@fluidframework/driver-definitions/internal\";\n/**\n * Basic implementation of a blob ITreeEntry\n * @internal\n */\nexport class BlobTreeEntry {\n /**\n * Creates a blob ITreeEntry\n * @param path - path of entry\n * @param contents - blob contents\n * @param encoding - encoding of contents; defaults to utf-8\n */\n constructor(path, contents, encoding = \"utf-8\") {\n this.path = path;\n this.mode = FileMode.File;\n this.type = TreeEntry.Blob;\n this.value = { contents, encoding };\n }\n}\n/**\n * Basic implementation of a tree ITreeEntry\n * @internal\n */\nexport class TreeTreeEntry {\n /**\n * Creates a tree ITreeEntry\n * @param path - path of entry\n * @param value - subtree\n */\n constructor(path, value) {\n this.path = path;\n this.value = value;\n this.mode = FileMode.Directory;\n this.type = TreeEntry.Tree;\n }\n}\n/**\n * Basic implementation of an attachment ITreeEntry\n * @internal\n */\nexport class AttachmentTreeEntry {\n /**\n * Creates an attachment ITreeEntry\n * @param path - path of entry\n * @param id - id of external blob attachment\n */\n constructor(path, id) {\n this.path = path;\n this.id = id;\n this.mode = FileMode.File;\n this.type = TreeEntry.Attachment;\n this.value = { id };\n }\n}\n//# sourceMappingURL=blob.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { FileMode, TreeEntry, } from \"@fluidframework/driver-definitions/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { buildGitTreeHierarchy } from \"./protocol/index.js\";\nfunction flattenCore(path, treeEntries, blobMap) {\n const entries = [];\n for (const treeEntry of treeEntries) {\n const subPath = `${path}${treeEntry.path}`;\n if (treeEntry.type === TreeEntry.Blob) {\n const blob = treeEntry.value;\n const buffer = stringToBuffer(blob.contents, blob.encoding);\n const id = uuid();\n blobMap.set(id, buffer);\n const entry = {\n mode: FileMode[treeEntry.mode],\n path: subPath,\n sha: id,\n size: 0,\n type: \"blob\",\n url: \"\",\n };\n entries.push(entry);\n }\n else if (treeEntry.type === TreeEntry.Tree) {\n assert(treeEntry.type === TreeEntry.Tree, 0x101 /* \"Unexpected tree entry type on flatten!\" */);\n const t = treeEntry.value;\n const entry = {\n mode: FileMode[treeEntry.mode],\n path: subPath,\n sha: \"\",\n size: -1,\n type: \"tree\",\n url: \"\",\n };\n entries.push(entry);\n const subTreeEntries = flattenCore(`${subPath}/`, t.entries, blobMap);\n entries.push(...subTreeEntries);\n }\n }\n return entries;\n}\n/**\n * Create a flatten view of an array of ITreeEntry\n *\n * @param tree - an array of ITreeEntry to flatten\n * @param blobMap - a map of blob's sha1 to content\n * @returns A flatten with of the ITreeEntry\n */\nfunction flatten(tree, blobMap) {\n const entries = flattenCore(\"\", tree, blobMap);\n return {\n sha: \"\",\n tree: entries,\n url: \"\",\n };\n}\n/**\n * Build a tree hierarchy base on an array of ITreeEntry\n *\n * @param entries - an array of ITreeEntry to flatten\n * @param blobMap - a map of blob's sha1 to content that gets filled with content from entries\n * NOTE: blobMap's validity is contingent on the returned promise's resolution\n * @returns the hierarchical tree\n * @internal\n */\nexport function buildSnapshotTree(entries, blobMap) {\n const flattened = flatten(entries, blobMap);\n return buildGitTreeHierarchy(flattened);\n}\n//# sourceMappingURL=buildSnapshotTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * @internal\n */\nexport class DocumentStorageServiceProxy {\n set policies(policies) {\n this._policies = policies;\n }\n get policies() {\n return this._policies ?? this.internalStorageService.policies;\n }\n constructor(internalStorageService) {\n this.internalStorageService = internalStorageService;\n }\n async getSnapshotTree(version, scenarioName) {\n return this.internalStorageService.getSnapshotTree(version, scenarioName);\n }\n async getSnapshot(snapshotFetchOptions) {\n if (this.internalStorageService.getSnapshot !== undefined) {\n return this.internalStorageService.getSnapshot(snapshotFetchOptions);\n }\n throw new UsageError(\"getSnapshot api should exist on internal storage in documentStorageServiceProxy class\");\n }\n async getVersions(versionId, count, scenarioName, fetchSource) {\n return this.internalStorageService.getVersions(versionId, count, scenarioName, fetchSource);\n }\n async uploadSummaryWithContext(summary, context) {\n return this.internalStorageService.uploadSummaryWithContext(summary, context);\n }\n async downloadSummary(handle) {\n return this.internalStorageService.downloadSummary(handle);\n }\n async createBlob(file) {\n return this.internalStorageService.createBlob(file);\n }\n async readBlob(blobId) {\n return this.internalStorageService.readBlob(blobId);\n }\n}\n//# sourceMappingURL=documentStorageServiceProxy.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\n/**\n * Tells if message was sent by container runtime\n * @privateRemarks ADO #1385: To be moved to container-definitions\n * @returns whether the message is a runtime message\n * @internal\n */\nexport function isRuntimeMessage(message) {\n return message.type === MessageType.Operation;\n}\n/**\n * @privateRemarks ADO #1385: staging code changes across layers.\n * Eventually to be replaced by MessageType.accept\n * @internal\n */\nexport var MessageType2;\n(function (MessageType2) {\n MessageType2[\"Accept\"] = \"accept\";\n})(MessageType2 || (MessageType2 = {}));\n/**\n * @privateRemarks ADO #1385: To be moved to packages/protocol-base/src/protocol.ts\n * @internal\n */\nexport function canBeCoalescedByService(message) {\n // This assumes that in the future relay service may implement coalescing of accept messages,\n // same way it was doing coalescing of immediate noops in the past.\n return message.type === MessageType.NoOp || message.type === MessageType2.Accept;\n}\n//# sourceMappingURL=messageRecognition.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { LoggingError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * @internal\n */\nexport var OnlineStatus;\n(function (OnlineStatus) {\n OnlineStatus[OnlineStatus[\"Offline\"] = 0] = \"Offline\";\n OnlineStatus[OnlineStatus[\"Online\"] = 1] = \"Online\";\n OnlineStatus[OnlineStatus[\"Unknown\"] = 2] = \"Unknown\";\n})(OnlineStatus || (OnlineStatus = {}));\n/**\n * It tells if we have local connection only - we might not have connection to web.\n * No solution for node.js (other than resolve dns names / ping specific sites)\n * Can also use window.addEventListener(\"online\" / \"offline\")\n * @internal\n */\nexport function isOnline() {\n if (typeof navigator === \"object\" &&\n navigator !== null &&\n typeof navigator.onLine === \"boolean\") {\n return navigator.onLine ? OnlineStatus.Online : OnlineStatus.Offline;\n }\n return OnlineStatus.Unknown;\n}\n/**\n * Generic network error class.\n * @internal\n */\nexport class GenericNetworkError extends LoggingError {\n constructor(message, canRetry, props) {\n super(message, props);\n this.canRetry = canRetry;\n /**\n * {@inheritDoc @fluidframework/telemetry-utils#IFluidErrorBase.errorType}\n */\n this.errorType = DriverErrorTypes.genericNetworkError;\n }\n}\n/**\n * FluidInvalidSchema error class.\n * @internal\n */\nexport class FluidInvalidSchemaError extends LoggingError {\n constructor(message, props) {\n super(message, props);\n this.errorType = DriverErrorTypes.fluidInvalidSchema;\n this.canRetry = false;\n }\n}\n/**\n * @internal\n */\nexport class DeltaStreamConnectionForbiddenError extends LoggingError {\n constructor(message, props, storageOnlyReason) {\n super(message, { ...props, statusCode: 400 });\n this.errorType = DeltaStreamConnectionForbiddenError.errorType;\n this.canRetry = false;\n this.storageOnlyReason = storageOnlyReason;\n }\n}\nDeltaStreamConnectionForbiddenError.errorType = DriverErrorTypes.deltaStreamConnectionForbidden;\n/**\n * @internal\n */\nexport class AuthorizationError extends LoggingError {\n constructor(message, claims, tenantId, props) {\n // don't log claims or tenantId\n super(message, props, new Set([\"claims\", \"tenantId\"]));\n this.claims = claims;\n this.tenantId = tenantId;\n this.errorType = DriverErrorTypes.authorizationError;\n this.canRetry = false;\n }\n}\n/**\n * @internal\n */\nexport class LocationRedirectionError extends LoggingError {\n constructor(message, redirectUrl, props) {\n // do not log redirectURL\n super(message, props, new Set([\"redirectUrl\"]));\n this.redirectUrl = redirectUrl;\n this.errorType = DriverErrorTypes.locationRedirection;\n this.canRetry = false;\n }\n}\n/**\n * @internal\n */\nexport class NetworkErrorBasic extends LoggingError {\n constructor(message, errorType, canRetry, props) {\n super(message, props);\n this.errorType = errorType;\n this.canRetry = canRetry;\n }\n}\n/**\n * @internal\n */\nexport class NonRetryableError extends NetworkErrorBasic {\n constructor(message, errorType, props) {\n super(message, errorType, false, props);\n this.errorType = errorType;\n }\n}\n/**\n * @internal\n */\nexport class RetryableError extends NetworkErrorBasic {\n constructor(message, errorType, props) {\n super(message, errorType, true, props);\n this.errorType = errorType;\n }\n}\n/**\n * Throttling error class - used to communicate all throttling errors\n * @internal\n */\nexport class ThrottlingError extends LoggingError {\n constructor(message, retryAfterSeconds, props) {\n super(message, props);\n this.retryAfterSeconds = retryAfterSeconds;\n this.errorType = DriverErrorTypes.throttlingError;\n this.canRetry = true;\n }\n}\n/**\n * @internal\n */\nexport const createWriteError = (message, props) => new NonRetryableError(message, DriverErrorTypes.writeError, props);\n/**\n * @internal\n */\nexport function createGenericNetworkError(message, retryInfo, props) {\n if (retryInfo.retryAfterMs !== undefined && retryInfo.canRetry) {\n return new ThrottlingError(message, retryInfo.retryAfterMs / 1000, props);\n }\n return new GenericNetworkError(message, retryInfo.canRetry, props);\n}\n/**\n * Check if a connection error can be retried. Unless explicitly allowed, retry is disallowed.\n * I.e. asserts or unexpected exceptions in our code result in container failure.\n * @param error - The error to inspect for ability to retry\n * @internal\n */\nexport const canRetryOnError = (error) => error?.canRetry === true;\n/**\n * Check retryAfterSeconds property on error\n * @internal\n */\nexport const getRetryDelaySecondsFromError = (error) => error?.retryAfterSeconds;\n/**\n * Check retryAfterSeconds property on error and convert to ms\n * @internal\n */\nexport const getRetryDelayFromError = (error) => error?.retryAfterSeconds !== undefined ? error.retryAfterSeconds * 1000 : undefined;\n//# sourceMappingURL=network.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/driver-utils\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { FileMode, SummaryType, } from \"@fluidframework/driver-definitions/internal\";\n/**\n * Take a summary object and returns its git mode.\n *\n * @param value - summary object\n * @returns the git mode of summary object\n * @internal\n */\nexport function getGitMode(value) {\n const type = value.type === SummaryType.Handle ? value.handleType : value.type;\n switch (type) {\n case SummaryType.Blob:\n case SummaryType.Attachment:\n return FileMode.File;\n case SummaryType.Tree:\n return FileMode.Directory;\n default:\n unreachableCase(type, `Unknown type: ${type}`);\n }\n}\n/**\n * Take a summary object and returns its type.\n *\n * @param value - summary object\n * @returns the type of summary object\n * @internal\n */\nexport function getGitType(value) {\n const type = value.type === SummaryType.Handle ? value.handleType : value.type;\n switch (type) {\n case SummaryType.Blob:\n case SummaryType.Attachment:\n return \"blob\";\n case SummaryType.Tree:\n return \"tree\";\n default:\n unreachableCase(type, `Unknown type: ${type}`);\n }\n}\n/**\n * NOTE: Renamed from `buildHierarchy` to `buildGitTreeHierarchy`. There is usage of this function in loader and driver layer.\n * Build a tree hierarchy base on a flat tree\n *\n * @param flatTree - a flat tree\n * @param blobsShaToPathCache - Map with blobs sha as keys and values as path of the blob.\n * @param removeAppTreePrefix - Remove `.app/` from beginning of paths when present\n * @returns the hierarchical tree\n * @internal\n */\nexport function buildGitTreeHierarchy(flatTree, blobsShaToPathCache = new Map(), removeAppTreePrefix = false) {\n const lookup = {};\n const root = { id: flatTree.sha, blobs: {}, trees: {} };\n lookup[\"\"] = root;\n for (const entry of flatTree.tree) {\n const entryPath = removeAppTreePrefix ? entry.path.replace(/^\\.app\\//, \"\") : entry.path;\n const lastIndex = entryPath.lastIndexOf(\"/\");\n const entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));\n const entryPathBase = entryPath.slice(lastIndex + 1);\n // The flat output is breadth-first so we can assume we see tree nodes prior to their contents\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const node = lookup[entryPathDir];\n // Add in either the blob or tree\n if (entry.type === \"tree\") {\n const newTree = { id: entry.sha, blobs: {}, commits: {}, trees: {} };\n node.trees[decodeURIComponent(entryPathBase)] = newTree;\n lookup[entryPath] = newTree;\n }\n else if (entry.type === \"blob\") {\n node.blobs[decodeURIComponent(entryPathBase)] = entry.sha;\n blobsShaToPathCache.set(entry.sha, `/${entryPath}`);\n }\n else {\n throw new Error(\"Unknown entry type!!\");\n }\n }\n return root;\n}\n//# sourceMappingURL=gitHelper.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString } from \"@fluid-internal/client-utils\";\n/**\n * Read a blob from {@link @fluidframework/driver-definitions#IDocumentStorageService} and\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse | JSON.parse}\n * it into object of type `T`.\n *\n * @param storage - The `DocumentStorageService` to read from.\n * @param id - The ID of the blob to read and parse.\n *\n * @typeParam T - Output type matching JSON format of inpyt blob data.\n *\n * @returns The object that we decoded and parsed via `JSON.parse`.\n * @internal\n */\nexport async function readAndParse(storage, id) {\n const blob = await storage.readBlob(id);\n const decoded = bufferToString(blob, \"utf8\");\n return JSON.parse(decoded);\n}\n//# sourceMappingURL=readAndParse.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { delay } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport { isFluidError } from \"@fluidframework/telemetry-utils/internal\";\nimport { NonRetryableError, canRetryOnError, getRetryDelayFromError } from \"./network.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\n/**\n * @internal\n */\nexport async function runWithRetry(api, fetchCallName, logger, progress) {\n let result;\n let success = false;\n // We double this value in first try in when we calculate time to wait for in \"calculateMaxWaitTime\" function.\n let retryAfterMs = 500; // has to be positive!\n let numRetries = 0;\n const startTime = performance.now();\n let lastError;\n do {\n try {\n result = await api(progress.cancel);\n success = true;\n }\n catch (err) {\n // If it is not retriable, then just throw the error.\n if (!canRetryOnError(err)) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_cancel`,\n retry: numRetries,\n duration: performance.now() - startTime,\n fetchCallName,\n }, err);\n throw err;\n }\n if (progress.cancel?.aborted === true) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_runWithRetryAborted`,\n retry: numRetries,\n duration: performance.now() - startTime,\n fetchCallName,\n reason: progress.cancel.reason,\n }, err);\n throw new NonRetryableError(\"runWithRetry was Aborted\", DriverErrorTypes.genericError, {\n driverVersion: pkgVersion,\n fetchCallName,\n reason: progress.cancel.reason,\n });\n }\n // logging the first failed retry instead of every attempt. We want to avoid filling telemetry\n // when we have tight loop of retrying in offline mode, but we also want to know what caused\n // the failure in the first place\n if (numRetries === 0) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_firstFailed`,\n duration: performance.now() - startTime,\n fetchCallName,\n }, err);\n }\n numRetries++;\n lastError = err;\n // Wait for the calculated time before retrying.\n retryAfterMs = calculateMaxWaitTime(retryAfterMs, err);\n if (progress.onRetry) {\n progress.onRetry(retryAfterMs, err);\n }\n await delay(retryAfterMs);\n }\n } while (!success);\n if (numRetries > 0) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_lastError`,\n retry: numRetries,\n duration: performance.now() - startTime,\n fetchCallName,\n }, lastError);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return result;\n}\nconst MaxReconnectDelayInMsWhenEndpointIsReachable = 60000;\nconst MaxReconnectDelayInMsWhenEndpointIsNotReachable = 8000;\n/**\n * Calculates time to wait for after an error based on the error and wait time for previous iteration.\n * In case endpoint(service or socket) is not reachable, then we maybe offline or may have got some\n * transient error not related to endpoint, in that case we want to try at faster pace and hence the\n * max wait is lesser 8s as compared to when endpoint is reachable in which case it is 60s.\n * @param delayMs - wait time for previous iteration\n * @param error - error based on which we decide wait time.\n * @returns Wait time to wait for.\n * @internal\n */\nexport function calculateMaxWaitTime(delayMs, error) {\n const retryDelayFromError = getRetryDelayFromError(error);\n let newDelayMs = Math.max(retryDelayFromError ?? 0, delayMs * 2);\n newDelayMs = Math.min(newDelayMs, isFluidError(error) && error.getTelemetryProperties().endpointReached === true\n ? MaxReconnectDelayInMsWhenEndpointIsReachable\n : MaxReconnectDelayInMsWhenEndpointIsNotReachable);\n return newDelayMs;\n}\n//# sourceMappingURL=runWithRetry.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Utility API to check if the type of snapshot contents is `ISnapshot`.\n * @internal\n * @param obj - obj whose type needs to be identified.\n */\nexport function isInstanceOfISnapshot(obj) {\n return obj !== undefined && \"snapshotFormatV\" in obj && obj.snapshotFormatV === 1;\n}\n/**\n * Utility API to return ISnapshotTree either from ISnapshot or ISnapshotTree itself.\n * @internal\n */\nexport function getSnapshotTree(tree) {\n return isInstanceOfISnapshot(tree) ? tree.snapshotTree : tree;\n}\n//# sourceMappingURL=storageUtils.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable no-bitwise */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { v4 } from \"uuid\";\nconst hexadecimalCharCodes = Array.from(\"09afAF\").map((c) => c.charCodeAt(0));\nfunction isHexadecimalCharacter(charCode) {\n return ((charCode >= hexadecimalCharCodes[0] && charCode <= hexadecimalCharCodes[1]) ||\n (charCode >= hexadecimalCharCodes[2] && charCode <= hexadecimalCharCodes[3]) ||\n (charCode >= hexadecimalCharCodes[4] && charCode <= hexadecimalCharCodes[5]));\n}\n/**\n * Generate a random session ID\n * @legacy\n * @alpha\n */\nexport function createSessionId() {\n return assertIsStableId(v4());\n}\n/**\n * Asserts that the given string is a stable ID.\n * @internal\n */\nexport function assertIsStableId(stableId) {\n assert(isStableId(stableId), 0x4a3 /* Expected a StableId */);\n return stableId;\n}\n/**\n * Asserts that the given string is a stable ID.\n */\nexport function assertIsSessionId(stableId) {\n assertIsStableId(stableId);\n return stableId;\n}\n/**\n * Generate a random stable ID\n * @internal\n */\nexport function generateStableId() {\n return assertIsStableId(v4());\n}\n/**\n * Returns true iff the given string is a valid Version 4, variant 2 UUID\n * 'xxxxxxxx-xxxx-4xxx-vxxx-xxxxxxxxxxxx'\n * @internal\n */\nexport function isStableId(str) {\n if (str.length !== 36) {\n return false;\n }\n for (let i = 0; i < str.length; i++) {\n switch (i) {\n case 8:\n case 13:\n case 18:\n case 23:\n if (str.charAt(i) !== \"-\") {\n return false;\n }\n break;\n case 14:\n if (str.charAt(i) !== \"4\") {\n return false;\n }\n break;\n case 19: {\n const char = str.charAt(i);\n if (char !== \"8\" && char !== \"9\" && char !== \"a\" && char !== \"b\") {\n return false;\n }\n break;\n }\n default:\n if (!isHexadecimalCharacter(str.charCodeAt(i))) {\n return false;\n }\n break;\n }\n }\n return true;\n}\n/**\n * A numeric comparator used for sorting in ascending order.\n *\n * Handles +/-0 like Map: -0 is equal to +0.\n */\nexport function compareFiniteNumbers(a, b) {\n return a - b;\n}\n/**\n * Compares strings lexically to form a strict partial ordering.\n */\nexport function compareStrings(a, b) {\n return a > b ? 1 : a === b ? 0 : -1;\n}\n/**\n * Compares bigints to form a strict partial ordering.\n */\nexport function compareBigints(a, b) {\n return a > b ? 1 : a === b ? 0 : -1;\n}\nexport function genCountFromLocalId(localId) {\n return -localId;\n}\nexport function localIdFromGenCount(genCount) {\n return -genCount;\n}\n// xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx\nconst versionMask = 0x4n << (19n * 4n); // Version 4\nconst variantMask = 0x8n << (15n * 4n); // Variant RFC4122 (1 0 x x)\nconst upperMask = 0xffffffffffffn << (20n * 4n);\n// Upper mask when version/variant bits are removed\nconst strippedUpperMask = upperMask >> 6n;\nconst middieBittiesMask = 0xfffn << (16n * 4n);\n// Middie mask when version/variant bits are removed\nconst strippedMiddieBittiesMask = middieBittiesMask >> 2n;\n// Note: leading character should be 3 to mask at 0011\n// The more-significant half of the N nibble is used to denote the variant (10xx)\nconst lowerMask = 0x3fffffffffffffffn;\nexport function numericUuidFromStableId(stableId) {\n const uuidU128 = BigInt(`0x${stableId.replace(/-/g, \"\")}`);\n const upperMasked = uuidU128 & upperMask;\n const middieBittiesMasked = uuidU128 & middieBittiesMask;\n const lowerMasked = uuidU128 & lowerMask;\n const upperMaskedPlaced = upperMasked >> 6n;\n const middieBittiesMaskedPlaced = middieBittiesMasked >> 2n;\n const id = upperMaskedPlaced | middieBittiesMaskedPlaced | lowerMasked;\n return id;\n}\nexport function stableIdFromNumericUuid(numericUuid) {\n // bitwise reverse transform\n const upperMasked = (numericUuid & strippedUpperMask) << 6n;\n const middieBittiesMasked = (numericUuid & strippedMiddieBittiesMask) << 2n;\n const lowerMasked = numericUuid & lowerMask;\n const uuidU128 = upperMasked | versionMask | middieBittiesMasked | variantMask | lowerMasked;\n // Pad to 32 characters, inserting leading zeroes if needed\n const uuidString = uuidU128.toString(16).padStart(32, \"0\");\n return `${uuidString.substring(0, 8)}-${uuidString.substring(8, 12)}-${uuidString.substring(12, 16)}-${uuidString.substring(16, 20)}-${uuidString.substring(20, 32)}`;\n}\nexport function offsetNumericUuid(numericUuid, offset) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return (numericUuid + BigInt(offset));\n}\nexport function subtractNumericUuids(a, b) {\n return (a - b);\n}\nexport function addNumericUuids(a, b) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return (a + b);\n}\n//# sourceMappingURL=utilities.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ValueType, parseHandles, serializeHandles, } from \"@fluidframework/shared-object-base/internal\";\n/**\n * Converts the provided `localValue` to its serialized form.\n *\n * @param localValue - The value to serialize.\n * @param serializer - Data store runtime's serializer.\n * @param bind - Container type's handle.\n *\n * @see {@link ILocalValue.makeSerialized}\n */\nexport function makeSerializable(localValue, serializer, bind) {\n const value = localValue.makeSerialized(serializer, bind);\n return {\n type: value.type,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value: value.value && JSON.parse(value.value),\n };\n}\n/**\n * Manages a contained plain value. May also contain shared object handles.\n */\nexport class PlainLocalValue {\n /**\n * Create a new PlainLocalValue.\n * @param value - The value to store, which may contain shared object handles\n */\n constructor(value) {\n this.value = value;\n }\n /**\n * {@inheritDoc ILocalValue.\"type\"}\n */\n get type() {\n return ValueType[ValueType.Plain];\n }\n /**\n * {@inheritDoc ILocalValue.makeSerialized}\n */\n makeSerialized(serializer, bind) {\n // Stringify to convert to the serialized handle values - and then parse in order to create\n // a POJO for the op\n const value = serializeHandles(this.value, serializer, bind);\n return {\n type: this.type,\n value,\n };\n }\n}\n/**\n * Enables a container type {@link https://fluidframework.com/docs/build/dds/ | DDS} to produce and store local\n * values with minimal awareness of how those objects are stored, serialized, and deserialized.\n * @legacy\n * @alpha\n */\nexport class LocalValueMaker {\n /**\n * Create a new LocalValueMaker.\n */\n constructor() { }\n /**\n * Create a new local value from an incoming serialized value.\n * @param serializable - The serializable value to make local\n */\n fromSerializable(\n // eslint-disable-next-line import/no-deprecated\n serializable, serializer, bind) {\n // Migrate from old shared value to handles\n if (serializable.type === ValueType[ValueType.Shared]) {\n serializable.type = ValueType[ValueType.Plain];\n const handle = {\n type: \"__fluid_handle__\",\n url: serializable.value,\n };\n // NOTE: here we require the use of `parseHandles` because the roundtrip\n // through a string is necessary to resolve the absolute path of\n // legacy handles (`ValueType.Shared`)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n serializable.value = serializer.encode(parseHandles(handle, serializer), bind);\n }\n return new PlainLocalValue(serializable.value);\n }\n /**\n * Create a new local value containing a given plain object.\n * @param value - The value to store\n * @returns An ILocalValue containing the value\n */\n fromInMemory(value) {\n return new PlainLocalValue(value);\n }\n}\n//# sourceMappingURL=localValues.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _a;\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { readAndParse } from \"@fluidframework/driver-utils/internal\";\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\nimport { SharedObject } from \"@fluidframework/shared-object-base/internal\";\nimport { MapKernel, } from \"./mapKernel.js\";\nconst snapshotFileName = \"header\";\n/**\n * {@inheritDoc ISharedMap}\n */\nexport class SharedMap extends SharedObject {\n /**\n * Do not call the constructor. Instead, you should use the {@link SharedMap.create | create method}.\n *\n * @param id - String identifier.\n * @param runtime - Data store runtime.\n * @param attributes - The attributes for the map.\n */\n constructor(id, runtime, attributes) {\n super(id, runtime, attributes, \"fluid_map_\");\n /**\n * String representation for the class.\n */\n this[_a] = \"SharedMap\";\n this.kernel = new MapKernel(this.serializer, this.handle, (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata), () => this.isAttached(), this);\n }\n /**\n * Get an iterator over the keys in this map.\n * @returns The iterator\n */\n keys() {\n return this.kernel.keys();\n }\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entries() {\n return this.kernel.entries();\n }\n /**\n * Get an iterator over the values in this map.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values() {\n return this.kernel.values();\n }\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.kernel.entries();\n }\n /**\n * The number of key/value pairs stored in the map.\n */\n get size() {\n return this.kernel.size;\n }\n /**\n * Executes the given callback on each entry in the map.\n * @param callbackFn - Callback function\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n forEach(callbackFn) {\n // eslint-disable-next-line unicorn/no-array-for-each, unicorn/no-array-callback-reference\n this.kernel.forEach(callbackFn);\n }\n /**\n * {@inheritDoc ISharedMap.get}\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key) {\n return this.kernel.get(key);\n }\n /**\n * Check if a key exists in the map.\n * @param key - The key to check\n * @returns True if the key exists, false otherwise\n */\n has(key) {\n return this.kernel.has(key);\n }\n /**\n * {@inheritDoc ISharedMap.set}\n */\n set(key, value) {\n this.kernel.set(key, value);\n return this;\n }\n /**\n * Delete a key from the map.\n * @param key - Key to delete\n * @returns True if the key existed and was deleted, false if it did not exist\n */\n delete(key) {\n return this.kernel.delete(key);\n }\n /**\n * Clear all data from the map.\n */\n clear() {\n this.kernel.clear();\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}\n */\n summarizeCore(serializer, telemetryContext) {\n let currentSize = 0;\n let counter = 0;\n let headerBlob = {};\n const blobs = [];\n const builder = new SummaryTreeBuilder();\n const data = this.kernel.getSerializedStorage(serializer);\n // If single property exceeds this size, it goes into its own blob\n const MinValueSizeSeparateSnapshotBlob = 8 * 1024;\n // Maximum blob size for multiple map properties\n // Should be bigger than MinValueSizeSeparateSnapshotBlob\n const MaxSnapshotBlobSize = 16 * 1024;\n // Partitioning algorithm:\n // 1) Split large (over MinValueSizeSeparateSnapshotBlob = 8K) properties into their own blobs.\n // Naming (across snapshots) of such blob does not have to be stable across snapshots,\n // As de-duping process (in driver) should not care about paths, only content.\n // 2) Split remaining properties into blobs of MaxSnapshotBlobSize (16K) size.\n // This process does not produce stable partitioning. This means\n // modification (including addition / deletion) of property can shift properties across blobs\n // and result in non-incremental snapshot.\n // This can be improved in the future, without being format breaking change, as loading sequence\n // loads all blobs at once and partitioning schema has no impact on that process.\n for (const [key, { value, type }] of Object.entries(data)) {\n if (value && value.length >= MinValueSizeSeparateSnapshotBlob) {\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n const content = {\n [key]: {\n type,\n value: JSON.parse(value),\n },\n };\n builder.addBlob(blobName, JSON.stringify(content));\n }\n else {\n currentSize += type.length + 21; // Approximation cost of property header\n if (value) {\n currentSize += value.length;\n }\n if (currentSize > MaxSnapshotBlobSize) {\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n builder.addBlob(blobName, JSON.stringify(headerBlob));\n headerBlob = {};\n currentSize = 0;\n }\n headerBlob[key] = {\n type,\n value: value === undefined ? undefined : JSON.parse(value),\n };\n }\n }\n const header = {\n blobs,\n content: headerBlob,\n };\n builder.addBlob(snapshotFileName, JSON.stringify(header));\n return builder.getSummaryTree();\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}\n */\n async loadCore(storage) {\n const json = await readAndParse(storage, snapshotFileName);\n const newFormat = json;\n if (Array.isArray(newFormat.blobs)) {\n this.kernel.populateFromSerializable(newFormat.content);\n await Promise.all(newFormat.blobs.map(async (value) => {\n const content = await readAndParse(storage, value);\n this.kernel.populateFromSerializable(content);\n }));\n }\n else {\n this.kernel.populateFromSerializable(json);\n }\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}\n */\n onDisconnect() { }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}\n */\n reSubmitCore(content, localOpMetadata) {\n this.kernel.trySubmitMessage(content, localOpMetadata);\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}\n */\n applyStashedOp(content) {\n this.kernel.tryApplyStashedOp(content);\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}\n */\n processCore(message, local, localOpMetadata) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (message.type === MessageType.Operation) {\n this.kernel.tryProcessMessage(message.contents, local, localOpMetadata);\n }\n }\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.rollback}\n */\n rollback(content, localOpMetadata) {\n this.kernel.rollback(content, localOpMetadata);\n }\n}\n//# sourceMappingURL=map.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { ValueType } from \"@fluidframework/shared-object-base/internal\";\nimport { LocalValueMaker, makeSerializable } from \"./localValues.js\";\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nfunction isMapKeyLocalOpMetadata(metadata) {\n return (metadata !== undefined &&\n typeof metadata.pendingMessageId === \"number\" &&\n (metadata.type === \"add\" || metadata.type === \"edit\"));\n}\nfunction isClearLocalOpMetadata(metadata) {\n return (metadata !== undefined &&\n metadata.type === \"clear\" &&\n typeof metadata.pendingMessageId === \"number\");\n}\nfunction isMapLocalOpMetadata(metadata) {\n return (metadata !== undefined &&\n typeof metadata.pendingMessageId === \"number\" &&\n (metadata.type === \"add\" || metadata.type === \"edit\" || metadata.type === \"clear\"));\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nfunction createClearLocalOpMetadata(op, pendingClearMessageId, previousMap) {\n const localMetadata = {\n type: \"clear\",\n pendingMessageId: pendingClearMessageId,\n previousMap,\n };\n return localMetadata;\n}\nfunction createKeyLocalOpMetadata(op, pendingMessageId, previousValue) {\n const localMetadata = previousValue\n ? { type: \"edit\", pendingMessageId, previousValue }\n : { type: \"add\", pendingMessageId };\n return localMetadata;\n}\n/**\n * A SharedMap is a map-like distributed data structure.\n */\nexport class MapKernel {\n /**\n * The number of key/value pairs stored in the map.\n */\n get size() {\n return this.data.size;\n }\n /**\n * Create a new shared map kernel.\n * @param serializer - The serializer to serialize / parse handles\n * @param handle - The handle of the shared object using the kernel\n * @param submitMessage - A callback to submit a message through the shared object\n * @param isAttached - To query whether the shared object should generate ops\n * @param valueTypes - The value types to register\n * @param eventEmitter - The object that will emit map events\n */\n constructor(serializer, handle, submitMessage, isAttached, eventEmitter) {\n this.serializer = serializer;\n this.handle = handle;\n this.submitMessage = submitMessage;\n this.isAttached = isAttached;\n this.eventEmitter = eventEmitter;\n /**\n * Mapping of op types to message handlers.\n */\n this.messageHandlers = new Map();\n /**\n * The in-memory data the map is storing.\n */\n this.data = new Map();\n /**\n * Keys that have been modified locally but not yet ack'd from the server.\n */\n this.pendingKeys = new Map();\n /**\n * This is used to assign a unique id to every outgoing operation and helps in tracking unack'd ops.\n */\n this.pendingMessageId = -1;\n /**\n * The pending ids of any clears that have been performed locally but not yet ack'd from the server\n */\n this.pendingClearMessageIds = [];\n this.localValueMaker = new LocalValueMaker();\n this.messageHandlers = this.getMessageHandlers();\n }\n /**\n * Get an iterator over the keys in this map.\n * @returns The iterator\n */\n keys() {\n return this.data.keys();\n }\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entries() {\n const localEntriesIterator = this.data.entries();\n const iterator = {\n next() {\n const nextVal = localEntriesIterator.next();\n return nextVal.done\n ? { value: undefined, done: true }\n : // Unpack the stored value\n { value: [nextVal.value[0], nextVal.value[1].value], done: false };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return iterator;\n }\n /**\n * Get an iterator over the values in this map.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values() {\n const localValuesIterator = this.data.values();\n const iterator = {\n next() {\n const nextVal = localValuesIterator.next();\n return nextVal.done\n ? { value: undefined, done: true }\n : // Unpack the stored value\n { value: nextVal.value.value, done: false };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return iterator;\n }\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * Executes the given callback on each entry in the map.\n * @param callbackFn - Callback function\n */\n forEach(callbackFn) {\n // eslint-disable-next-line unicorn/no-array-for-each\n this.data.forEach((localValue, key, m) => {\n callbackFn(localValue.value, key, m);\n });\n }\n /**\n * {@inheritDoc ISharedMap.get}\n */\n // TODO: Use `unknown` instead (breaking change).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key) {\n const localValue = this.data.get(key);\n return localValue === undefined ? undefined : localValue.value;\n }\n /**\n * Check if a key exists in the map.\n * @param key - The key to check\n * @returns True if the key exists, false otherwise\n */\n has(key) {\n return this.data.has(key);\n }\n /**\n * {@inheritDoc ISharedMap.set}\n */\n set(key, value) {\n // Undefined/null keys can't be serialized to JSON in the manner we currently snapshot.\n if (key === undefined || key === null) {\n throw new Error(\"Undefined and null keys are not supported\");\n }\n // Create a local value and serialize it.\n const localValue = this.localValueMaker.fromInMemory(value);\n // Set the value locally.\n const previousValue = this.setCore(key, localValue, true);\n // If we are not attached, don't submit the op.\n if (!this.isAttached()) {\n return;\n }\n const op = {\n key,\n type: \"set\",\n value: { type: localValue.type, value: localValue.value },\n };\n this.submitMapKeyMessage(op, previousValue);\n }\n /**\n * Delete a key from the map.\n * @param key - Key to delete\n * @returns True if the key existed and was deleted, false if it did not exist\n */\n delete(key) {\n // Delete the key locally first.\n const previousValue = this.deleteCore(key, true);\n // If we are not attached, don't submit the op.\n if (!this.isAttached()) {\n return previousValue !== undefined;\n }\n const op = {\n key,\n type: \"delete\",\n };\n this.submitMapKeyMessage(op, previousValue);\n return previousValue !== undefined;\n }\n /**\n * Clear all data from the map.\n */\n clear() {\n const copy = this.isAttached() ? new Map(this.data) : undefined;\n // Clear the data locally first.\n this.clearCore(true);\n // Clear the pendingKeys immediately, the local unack'd operations are aborted\n this.pendingKeys.clear();\n // If we are not attached, don't submit the op.\n if (!this.isAttached()) {\n return;\n }\n const op = {\n type: \"clear\",\n };\n this.submitMapClearMessage(op, copy);\n }\n /**\n * Serializes the data stored in the shared map to a JSON string\n * @param serializer - The serializer to use to serialize handles in its values.\n * @returns A JSON string containing serialized map data\n */\n getSerializedStorage(serializer) {\n const serializableMapData = {};\n for (const [key, localValue] of this.data.entries()) {\n serializableMapData[key] = localValue.makeSerialized(serializer, this.handle);\n }\n return serializableMapData;\n }\n getSerializableStorage(serializer) {\n const serializableMapData = {};\n for (const [key, localValue] of this.data.entries()) {\n serializableMapData[key] = makeSerializable(localValue, serializer, this.handle);\n }\n return serializableMapData;\n }\n serialize(serializer) {\n return JSON.stringify(this.getSerializableStorage(serializer));\n }\n /**\n * Populate the kernel with the given map data.\n * @param data - A JSON string containing serialized map data\n */\n populateFromSerializable(json) {\n for (const [key, serializable] of Object.entries(this.serializer.decode(json))) {\n const localValue = {\n key,\n value: this.makeLocal(key, serializable),\n };\n this.data.set(localValue.key, localValue.value);\n }\n }\n /**\n * Submit the given op if a handler is registered.\n * @param op - The operation to attempt to submit\n * @param localOpMetadata - The local metadata associated with the op. This is kept locally by the runtime\n * and not sent to the server. This will be sent back when this message is received back from the server. This is\n * also sent if we are asked to resubmit the message.\n * @returns True if the operation was submitted, false otherwise.\n */\n trySubmitMessage(op, localOpMetadata) {\n const handler = this.messageHandlers.get(op.type);\n if (handler === undefined) {\n return false;\n }\n handler.submit(op, localOpMetadata);\n return true;\n }\n tryApplyStashedOp(op) {\n switch (op.type) {\n case \"clear\": {\n this.clear();\n break;\n }\n case \"delete\": {\n this.delete(op.key);\n break;\n }\n case \"set\": {\n this.set(op.key, this.makeLocal(op.key, op.value).value);\n break;\n }\n default: {\n unreachableCase(op);\n }\n }\n }\n /**\n * Process the given op if a handler is registered.\n * @param op - The message to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n * @returns True if the operation was processed, false otherwise.\n */\n tryProcessMessage(op, local, localOpMetadata) {\n const handler = this.messageHandlers.get(op.type);\n if (handler === undefined) {\n return false;\n }\n handler.process(op, local, localOpMetadata);\n return true;\n }\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n /**\n * Rollback a local op\n * @param op - The operation to rollback\n * @param localOpMetadata - The local metadata associated with the op.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n rollback(op, localOpMetadata) {\n if (!isMapLocalOpMetadata(localOpMetadata)) {\n throw new Error(\"Invalid localOpMetadata\");\n }\n if (op.type === \"clear\" && localOpMetadata.type === \"clear\") {\n if (localOpMetadata.previousMap === undefined) {\n throw new Error(\"Cannot rollback without previous map\");\n }\n for (const [key, localValue] of localOpMetadata.previousMap.entries()) {\n this.setCore(key, localValue, true);\n }\n const lastPendingClearId = this.pendingClearMessageIds.pop();\n if (lastPendingClearId === undefined ||\n lastPendingClearId !== localOpMetadata.pendingMessageId) {\n throw new Error(\"Rollback op does match last clear\");\n }\n }\n else if (op.type === \"delete\" || op.type === \"set\") {\n if (localOpMetadata.type === \"add\") {\n this.deleteCore(op.key, true);\n }\n else if (localOpMetadata.type === \"edit\" &&\n localOpMetadata.previousValue !== undefined) {\n this.setCore(op.key, localOpMetadata.previousValue, true);\n }\n else {\n throw new Error(\"Cannot rollback without previous value\");\n }\n const pendingMessageIds = this.pendingKeys.get(op.key);\n const lastPendingMessageId = pendingMessageIds?.pop();\n if (!pendingMessageIds || lastPendingMessageId !== localOpMetadata.pendingMessageId) {\n throw new Error(\"Rollback op does not match last pending\");\n }\n if (pendingMessageIds.length === 0) {\n this.pendingKeys.delete(op.key);\n }\n }\n else {\n throw new Error(\"Unsupported op for rollback\");\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n /**\n * Set implementation used for both locally sourced sets as well as incoming remote sets.\n * @param key - The key being set\n * @param value - The value being set\n * @param local - Whether the message originated from the local client\n * @returns Previous local value of the key, if any\n */\n setCore(key, value, local) {\n const previousLocalValue = this.data.get(key);\n const previousValue = previousLocalValue?.value;\n this.data.set(key, value);\n this.eventEmitter.emit(\"valueChanged\", { key, previousValue }, local, this.eventEmitter);\n return previousLocalValue;\n }\n /**\n * Clear implementation used for both locally sourced clears as well as incoming remote clears.\n * @param local - Whether the message originated from the local client\n */\n clearCore(local) {\n this.data.clear();\n this.eventEmitter.emit(\"clear\", local, this.eventEmitter);\n }\n /**\n * Delete implementation used for both locally sourced deletes as well as incoming remote deletes.\n * @param key - The key being deleted\n * @param local - Whether the message originated from the local client\n * @returns Previous local value of the key if it existed, undefined if it did not exist\n */\n deleteCore(key, local) {\n const previousLocalValue = this.data.get(key);\n const previousValue = previousLocalValue?.value;\n const successfullyRemoved = this.data.delete(key);\n if (successfullyRemoved) {\n this.eventEmitter.emit(\"valueChanged\", { key, previousValue }, local, this.eventEmitter);\n }\n return previousLocalValue;\n }\n /**\n * Clear all keys in memory in response to a remote clear, but retain keys we have modified but not yet been ack'd.\n */\n clearExceptPendingKeys() {\n // Assuming the pendingKeys is small and the map is large\n // we will get the value for the pendingKeys and clear the map\n const temp = new Map();\n for (const key of this.pendingKeys.keys()) {\n // Verify if the most recent pending operation is a delete op, no need to retain it if so.\n // This ensures the map size remains consistent.\n if (this.data.has(key)) {\n temp.set(key, this.data.get(key));\n }\n }\n this.clearCore(false);\n for (const [key, value] of temp.entries()) {\n this.setCore(key, value, true);\n }\n }\n /**\n * The remote ISerializableValue we're receiving (either as a result of a load or an incoming set op) will\n * have the information we need to create a real object, but will not be the real object yet. For example,\n * we might know it's a map and the map's ID but not have the actual map or its data yet. makeLocal's\n * job is to convert that information into a real object for local usage.\n * @param key - The key that the caller intends to store the local value into (used for ops later). But\n * doesn't actually store the local value into that key. So better not lie!\n * @param serializable - The remote information that we can convert into a real object\n * @returns The local value that was produced\n */\n // eslint-disable-next-line import/no-deprecated\n makeLocal(key, serializable) {\n if (serializable.type === ValueType[ValueType.Plain] ||\n serializable.type === ValueType[ValueType.Shared]) {\n return this.localValueMaker.fromSerializable(serializable, this.serializer, this.handle);\n }\n else {\n throw new Error(\"Unknown local value type\");\n }\n }\n /**\n * If our local operations that have not yet been ack'd will eventually overwrite an incoming operation, we should\n * not process the incoming operation.\n * @param op - Operation to check\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n * @returns True if the operation should be processed, false otherwise\n */\n needProcessKeyOperation(op, local, localOpMetadata) {\n if (this.pendingClearMessageIds.length > 0) {\n if (local) {\n assert(localOpMetadata !== undefined &&\n isMapKeyLocalOpMetadata(localOpMetadata) &&\n // Non null asserting, above we checked that the length is greater than 0.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n localOpMetadata.pendingMessageId < this.pendingClearMessageIds[0], 0x013 /* \"Received out of order op when there is an unackd clear message\" */);\n }\n // If we have an unack'd clear, we can ignore all ops.\n return false;\n }\n const pendingKeyMessageIds = this.pendingKeys.get(op.key);\n if (pendingKeyMessageIds !== undefined) {\n // Found an unack'd op. Clear it from the map if the pendingMessageId in the map matches this message's\n // and don't process the op.\n if (local) {\n assert(localOpMetadata !== undefined && isMapKeyLocalOpMetadata(localOpMetadata), 0x014 /* pendingMessageId is missing from the local client's operation */);\n assert(pendingKeyMessageIds[0] === localOpMetadata.pendingMessageId, 0x2fa /* Unexpected pending message received */);\n pendingKeyMessageIds.shift();\n if (pendingKeyMessageIds.length === 0) {\n this.pendingKeys.delete(op.key);\n }\n }\n return false;\n }\n // If we don't have a NACK op on the key, we need to process the remote ops.\n return !local;\n }\n /**\n * Get the message handlers for the map.\n * @returns A map of string op names to IMapMessageHandlers for those ops\n */\n getMessageHandlers() {\n const messageHandlers = new Map();\n messageHandlers.set(\"clear\", {\n process: (op, local, localOpMetadata) => {\n if (local) {\n assert(isClearLocalOpMetadata(localOpMetadata), 0x015 /* \"pendingMessageId is missing from the local client's clear operation\" */);\n const pendingClearMessageId = this.pendingClearMessageIds.shift();\n assert(pendingClearMessageId === localOpMetadata.pendingMessageId, 0x2fb /* pendingMessageId does not match */);\n return;\n }\n if (this.pendingKeys.size > 0) {\n this.clearExceptPendingKeys();\n return;\n }\n this.clearCore(local);\n },\n submit: (op, localOpMetadata) => {\n assert(isClearLocalOpMetadata(localOpMetadata), 0x2fc /* Invalid localOpMetadata for clear */);\n // We don't reuse the metadata pendingMessageId but send a new one on each submit.\n const pendingClearMessageId = this.pendingClearMessageIds.shift();\n assert(pendingClearMessageId === localOpMetadata.pendingMessageId, 0x2fd /* pendingMessageId does not match */);\n this.submitMapClearMessage(op, localOpMetadata.previousMap);\n },\n });\n messageHandlers.set(\"delete\", {\n process: (op, local, localOpMetadata) => {\n if (!this.needProcessKeyOperation(op, local, localOpMetadata)) {\n return;\n }\n this.deleteCore(op.key, local);\n },\n submit: (op, localOpMetadata) => {\n this.resubmitMapKeyMessage(op, localOpMetadata);\n },\n });\n messageHandlers.set(\"set\", {\n process: (op, local, localOpMetadata) => {\n if (!this.needProcessKeyOperation(op, local, localOpMetadata)) {\n return;\n }\n // needProcessKeyOperation should have returned false if local is true\n const context = this.makeLocal(op.key, op.value);\n this.setCore(op.key, context, local);\n },\n submit: (op, localOpMetadata) => {\n this.resubmitMapKeyMessage(op, localOpMetadata);\n },\n });\n return messageHandlers;\n }\n getMapClearMessageId() {\n const pendingMessageId = ++this.pendingMessageId;\n this.pendingClearMessageIds.push(pendingMessageId);\n return pendingMessageId;\n }\n /**\n * Submit a clear message to remote clients.\n * @param op - The clear message\n */\n submitMapClearMessage(op, previousMap) {\n const metadata = createClearLocalOpMetadata(op, this.getMapClearMessageId(), previousMap);\n this.submitMessage(op, metadata);\n }\n getMapKeyMessageId(op) {\n const pendingMessageId = ++this.pendingMessageId;\n const pendingMessageIds = this.pendingKeys.get(op.key);\n if (pendingMessageIds === undefined) {\n this.pendingKeys.set(op.key, [pendingMessageId]);\n }\n else {\n pendingMessageIds.push(pendingMessageId);\n }\n return pendingMessageId;\n }\n /**\n * Submit a map key message to remote clients.\n * @param op - The map key message\n * @param previousValue - The value of the key before this op\n */\n submitMapKeyMessage(op, previousValue) {\n const localMetadata = createKeyLocalOpMetadata(op, this.getMapKeyMessageId(op), previousValue);\n this.submitMessage(op, localMetadata);\n }\n /**\n * Submit a map key message to remote clients based on a previous submit.\n * @param op - The map key message\n * @param localOpMetadata - Metadata from the previous submit\n */\n resubmitMapKeyMessage(op, localOpMetadata) {\n assert(isMapKeyLocalOpMetadata(localOpMetadata), 0x2fe /* Invalid localOpMetadata in submit */);\n // no need to submit messages for op's that have been aborted\n const pendingMessageIds = this.pendingKeys.get(op.key);\n if (pendingMessageIds === undefined) {\n return;\n }\n const index = pendingMessageIds.indexOf(localOpMetadata.pendingMessageId);\n if (index === -1) {\n return;\n }\n pendingMessageIds.splice(index, 1);\n if (pendingMessageIds.length === 0) {\n this.pendingKeys.delete(op.key);\n }\n // We don't reuse the metadata pendingMessageId but send a new one on each submit.\n const pendingMessageId = this.getMapKeyMessageId(op);\n const localMetadata = localOpMetadata.type === \"edit\"\n ? { type: \"edit\", pendingMessageId, previousValue: localOpMetadata.previousValue }\n : { type: \"add\", pendingMessageId };\n this.submitMessage(op, localMetadata);\n }\n}\n//# sourceMappingURL=mapKernel.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { createSharedObjectKind } from \"@fluidframework/shared-object-base/internal\";\nimport { SharedMap as SharedMapInternal } from \"./map.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\n/**\n * {@link @fluidframework/datastore-definitions#IChannelFactory} for {@link ISharedMap}.\n *\n * @sealed\n * @legacy\n * @alpha\n */\nexport class MapFactory {\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\n get type() {\n return MapFactory.Type;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\n get attributes() {\n return MapFactory.Attributes;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n async load(runtime, id, services, attributes) {\n const map = new SharedMapInternal(id, runtime, attributes);\n await map.load(services);\n return map;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}\n */\n create(runtime, id) {\n const map = new SharedMapInternal(id, runtime, MapFactory.Attributes);\n map.initializeLocal();\n return map;\n }\n}\n/**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\nMapFactory.Type = \"https://graph.microsoft.com/types/map\";\n/**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\nMapFactory.Attributes = {\n type: MapFactory.Type,\n snapshotFormatVersion: \"0.2\",\n packageVersion: pkgVersion,\n};\n/**\n * Entrypoint for {@link ISharedMap} creation.\n * @legacy\n * @alpha\n */\nexport const SharedMap = createSharedObjectKind(MapFactory);\n//# sourceMappingURL=mapFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/map\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Runtime flush mode handling\n * @legacy\n * @alpha\n */\nexport var FlushMode;\n(function (FlushMode) {\n /**\n * In Immediate flush mode the runtime will immediately send all operations to the driver layer.\n *\n * @deprecated This option will be removed in the next major version and should not be used. Use {@link FlushMode.TurnBased} instead, which is the default.\n * See https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works\n */\n FlushMode[FlushMode[\"Immediate\"] = 0] = \"Immediate\";\n /**\n * When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n * batch at the end of the turn. The flush call on the runtime can be used to force send the current batch.\n */\n FlushMode[FlushMode[\"TurnBased\"] = 1] = \"TurnBased\";\n})(FlushMode || (FlushMode = {}));\n/**\n * @internal\n */\nexport var FlushModeExperimental;\n(function (FlushModeExperimental) {\n /**\n * When in Async flush mode, the runtime will accumulate all operations across JS turns and send them as a single\n * batch when all micro-tasks are complete.\n *\n * This feature requires a version of the loader which supports reference sequence numbers. If an older version of\n * the loader is used, the runtime will fall back on FlushMode.TurnBased.\n *\n * @experimental - Not ready for use\n */\n FlushModeExperimental[FlushModeExperimental[\"Async\"] = 2] = \"Async\";\n})(FlushModeExperimental || (FlushModeExperimental = {}));\n/**\n * This tells the visibility state of a Fluid object. It basically tracks whether the object is not visible, visible\n * locally within the container only or visible globally to all clients.\n * @legacy\n * @alpha\n */\nexport const VisibilityState = {\n /**\n * Indicates that the object is not visible. This is the state when an object is first created.\n */\n NotVisible: \"NotVisible\",\n /**\n * Indicates that the object is visible locally within the container. This is the state when an object is attached\n * to the container's graph but the container itself isn't globally visible. The object's state goes from not\n * visible to locally visible.\n */\n LocallyVisible: \"LocallyVisible\",\n /**\n * Indicates that the object is visible globally to all clients. This is the state of an object in 2 scenarios:\n *\n * 1. It is attached to the container's graph when the container is globally visible. The object's state goes from\n * not visible to globally visible.\n *\n * 2. When a container becomes globally visible, all locally visible objects go from locally visible to globally\n * visible.\n */\n GloballyVisible: \"GloballyVisible\",\n};\n//# sourceMappingURL=dataStoreContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The key for the GC tree in summary.\n *\n * @internal\n */\nexport const gcTreeKey = \"gc\";\n/**\n * The prefix for GC blobs in the GC tree in summary.\n *\n * @internal\n */\nexport const gcBlobPrefix = \"__gc\";\n/**\n * The key for tombstone blob in the GC tree in summary.\n *\n * @internal\n */\nexport const gcTombstoneBlobKey = \"__tombstones\";\n/**\n * The key for deleted nodes blob in the GC tree in summary.\n *\n * @internal\n */\nexport const gcDeletedBlobKey = \"__deletedNodes\";\n/**\n * The key for the GC Data blob in attach summaries.\n *\n * @internal\n */\nexport const gcDataBlobKey = \".gcdata\";\n//# sourceMappingURL=garbageCollectionDefinitions.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport var CreateSummarizerNodeSource;\n(function (CreateSummarizerNodeSource) {\n CreateSummarizerNodeSource[CreateSummarizerNodeSource[\"FromSummary\"] = 0] = \"FromSummary\";\n CreateSummarizerNodeSource[CreateSummarizerNodeSource[\"FromAttach\"] = 1] = \"FromAttach\";\n CreateSummarizerNodeSource[CreateSummarizerNodeSource[\"Local\"] = 2] = \"Local\";\n})(CreateSummarizerNodeSource || (CreateSummarizerNodeSource = {}));\n/**\n * @internal\n */\nexport const channelsTreeName = \".channels\";\n/**\n * @internal\n */\nexport const blobCountPropertyName = \"BlobCount\";\n/**\n * @internal\n */\nexport const totalBlobSizePropertyName = \"TotalBlobSize\";\n//# sourceMappingURL=summary.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Generates the absolute path for a Fluid object given its path and its parent routeContext.\n * @param path - The path to the Fluid object relative to the route context.\n * @param routeContext - The route context that contains the Fluid object.\n * @returns The absolute path to the Fluid object from the root of the Container.\n * @internal\n */\nexport function generateHandleContextPath(path, routeContext) {\n if (path === \"\") {\n // The `path` is empty.\n // If the routeContext does not exist, this is the root.\n // If the routeContext exists, the absolute path is the same as that of the routeContext.\n return routeContext === undefined ? \"\" : routeContext.absolutePath;\n }\n else {\n // Remove beginning and trailing slashes, if any, from the path.\n let normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n normalizedPath = normalizedPath.endsWith(\"/\")\n ? normalizedPath.slice(0, -1)\n : normalizedPath;\n // If the routeContext does not exist, path is the absolute path.\n // If the routeContext exists, absolute path is routeContext's absolute path plus the path.\n return routeContext === undefined\n ? `/${normalizedPath}`\n : `${routeContext.absolutePath === \"/\" ? \"\" : routeContext.absolutePath}/${normalizedPath}`;\n }\n}\n//# sourceMappingURL=dataStoreHandleContextUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { generateErrorWithStack } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * @internal\n */\nexport function exceptionToResponse(err) {\n const status = 500;\n if (err !== null && typeof err === \"object\" && err.errorFromRequestFluidObject === true) {\n const responseErr = err;\n return {\n mimeType: \"text/plain\",\n status: responseErr.code,\n value: responseErr.message,\n get stack() {\n return responseErr.stack;\n },\n headers: responseErr.underlyingResponseHeaders,\n };\n }\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n return {\n mimeType: \"text/plain\",\n status,\n value: `${err}`,\n get stack() {\n return err?.stack ?? errWithStack.stack;\n },\n };\n}\n/**\n * @internal\n */\nexport function responseToException(response, request) {\n const message = response.value;\n const errWithStack = generateErrorWithStack();\n const responseErr = {\n errorFromRequestFluidObject: true,\n message,\n name: \"Error\",\n code: response.status,\n get stack() {\n return response.stack ?? errWithStack.stack;\n },\n underlyingResponseHeaders: response.headers,\n };\n return responseErr;\n}\n/**\n * @legacy\n * @alpha\n */\nexport const create404Response = (request) => createResponseError(404, \"not found\", request);\n/**\n * @internal\n */\nexport function createResponseError(status, value, request, headers) {\n assert(status !== 200, 0x19b /* \"Cannot not create response error on 200 status\" */);\n // Omit query string which could contain personal data unfit for logging\n const urlNoQuery = request.url?.split(\"?\")[0];\n // Capture error objects, not stack itself, as stack retrieval is very expensive operation, so we delay it\n const errWithStack = generateErrorWithStack();\n return {\n mimeType: \"text/plain\",\n status,\n value: urlNoQuery === undefined ? value : `${value}: ${urlNoQuery}`,\n get stack() {\n return errWithStack.stack;\n },\n headers,\n };\n}\n/**\n * @internal\n */\nexport function createDataStoreFactory(type, factory) {\n return {\n type,\n get IFluidDataStoreFactory() {\n return this;\n },\n get IFluidDataStoreRegistry() {\n return this;\n },\n instantiateDataStore: async (context, existing) => (await factory).instantiateDataStore(context, existing),\n get: async (name) => (await factory).IFluidDataStoreRegistry?.get(name),\n };\n}\n//# sourceMappingURL=dataStoreHelpers.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Casts the public API for delta manager into the internal one,\n * exposing access to APIs needed by the implementation of Fluid Framework but not its users.\n * @legacy\n * @alpha\n */\nexport function toDeltaManagerInternal(deltaManager) {\n return deltaManager;\n}\n/**\n * Casts the the internal API for delta manager into the public type erased API for returning from public APIs that should not have access to any of its members.\n * @internal\n */\nexport function toDeltaManagerErased(deltaManager) {\n return deltaManager;\n}\n//# sourceMappingURL=deltaManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport const IFluidHandleContext = \"IFluidHandleContext\";\n/**\n * @public\n * @privateRemarks\n * This really should be deprecated and alpha, but since its a merged export with the public interface,\n * it can't have its own docs or different tags.\n */\nexport const IFluidHandle = \"IFluidHandle\";\n/**\n * Symbol which must only be used on an {@link (IFluidHandle:interface)}, and is used to identify such objects.\n *\n * @remarks\n * To narrow arbitrary objects to handles do not simply check for this symbol:\n * instead use {@link @fluidframework/runtime-utils#isFluidHandle} which has improved compatibility\n * with older implementations of handles that may exist due to dynamic code loading of older packages.\n *\n * @privateRemarks\n * Normally `Symbol` would be used here instead of `Symbol.for` since just using Symbol (and avoiding the global symbol registry) removes the risk of collision, which is the main point of using a symbol for this in the first place.\n * In this case however, some users of this library do dynamic code loading, and can end up with multiple versions of packages, and mix data from one version with another.\n * Using the global symbol registry allows duplicate copies of this library to share a single symbol, though reintroduces the risk of collision, which is mitigated via the use of a UUIDv4 randomly generated when this code was authored:\n * @public\n */\nexport const fluidHandleSymbol = Symbol.for(\"FluidHandle-3978c7cf-4675-49ba-a20c-bf35efbf43da\");\n//# sourceMappingURL=handles.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IFluidHandle, fluidHandleSymbol } from \"@fluidframework/core-interfaces\";\n/**\n * Is the input object a @see ISerializedHandle?\n * @internal\n */\nexport const isSerializedHandle = (value) => value?.type === \"__fluid_handle__\";\n/**\n * Setting to opt into compatibility with handles from before {@link fluidHandleSymbol} existed (Fluid Framework client 2.0.0-rc.3.0.0 and earlier).\n *\n * Some code which uses this library might dynamically load multiple versions of it,\n * as well as old or duplicated versions of packages which produce or implement handles.\n * To correctly interoperate with this old packages and object produced by them, the old in-memory format for handles, without the symbol, are explicitly supported.\n *\n * This setting mostly exists as a way to easily find any code that only exists to provide this compatibility and clarify how to remove that compatibility.\n * At some point this might be removed or turned into an actual configuration option, but for now its really just documentation.\n */\nconst enableBackwardsCompatibility = true;\n/**\n * Check if a value is an {@link @fluidframework/core-interfaces#IFluidHandle}.\n * @remarks\n * Objects which have a field named `IFluidHandle` can in some cases produce a false positive.\n * @public\n */\nexport function isFluidHandle(value) {\n // `in` gives a type error on non-objects and null, so filter them out\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (fluidHandleSymbol in value) {\n return true;\n }\n // If enableBackwardsCompatibility, run check for FluidHandles predating use of fluidHandleSymbol.\n if (enableBackwardsCompatibility && IFluidHandle in value) {\n // Since this check can have false positives, make it a bit more robust by checking value[IFluidHandle][IFluidHandle]\n const inner = value[IFluidHandle];\n if (typeof inner !== \"object\" || inner === null) {\n return false;\n }\n return IFluidHandle in inner;\n }\n return false;\n}\n/**\n * Downcast an IFluidHandle to an IFluidHandleInternal.\n * @legacy\n * @alpha\n */\nexport function toFluidHandleInternal(handle) {\n if (!(fluidHandleSymbol in handle) || !(fluidHandleSymbol in handle[fluidHandleSymbol])) {\n if (enableBackwardsCompatibility && IFluidHandle in handle) {\n return handle[IFluidHandle];\n }\n throw new TypeError(\"Invalid IFluidHandle\");\n }\n // This casts the IFluidHandleErased from the symbol instead of `handle` to ensure that if someone\n // implements their own IFluidHandle in terms of an existing handle, it won't break anything.\n return handle[fluidHandleSymbol];\n}\n/**\n * Type erase IFluidHandleInternal for use with {@link @fluidframework/core-interfaces#fluidHandleSymbol}.\n * @legacy\n * @alpha\n */\nexport function toFluidHandleErased(handle) {\n return handle;\n}\n/**\n * Base class which can be uses to assist implementing IFluidHandleInternal.\n * @legacy\n * @alpha\n */\nexport class FluidHandleBase {\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IProvideFluidHandle.IFluidHandle}\n */\n get IFluidHandle() {\n return this;\n }\n get [fluidHandleSymbol]() {\n return toFluidHandleErased(this);\n }\n}\n//# sourceMappingURL=handles.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The Request Parser takes an IRequest provides parsing and sub request creation\n * @legacy\n * @alpha\n */\nexport class RequestParser {\n /**\n * Splits the path of the url and decodes each path part\n * @param url - the url to get path parts of\n */\n static getPathParts(url) {\n const queryStartIndex = url.indexOf(\"?\");\n return url\n .substring(0, queryStartIndex < 0 ? url.length : queryStartIndex)\n .split(\"/\")\n .reduce((pv, cv) => {\n if (cv !== undefined && cv.length > 0) {\n pv.push(decodeURIComponent(cv));\n }\n return pv;\n }, []);\n }\n static create(request) {\n // Perf optimizations.\n if (request instanceof RequestParser) {\n return request;\n }\n return new RequestParser(request);\n }\n constructor(request) {\n this.request = request;\n const queryStartIndex = this.request.url.indexOf(\"?\");\n this.query = queryStartIndex >= 0 ? this.request.url.substring(queryStartIndex) : \"\";\n }\n get url() {\n return this.request.url;\n }\n get headers() {\n return this.request.headers;\n }\n /**\n * Returns the decoded path parts of the request's url\n */\n get pathParts() {\n if (this.requestPathParts === undefined) {\n this.requestPathParts = RequestParser.getPathParts(this.url);\n }\n return this.requestPathParts;\n }\n /**\n * Returns true if it's a terminating path, i.e. no more elements after `elements` entries and empty query.\n * @param elements - number of elements in path\n */\n isLeaf(elements) {\n return this.query === \"\" && this.pathParts.length === elements;\n }\n /**\n * Creates a sub request starting at a specific path part of this request's url\n * The sub request url always has a leading slash, and always include query params if original url has any\n * e.g. original url is /a/b/?queryParams, createSubRequest(0) is /a/b/?queryParams\n * createSubRequest(1) is /b/?queryParams\n * createSubRequest(2) is /?queryParams\n * createSubRequest(n) where n is bigger than parts length, e.g. 2, or n is less than 0 will throw an exception\n *\n * note: query params are not counted towards path parts.\n *\n * @param startingPathIndex - The index of the first path part of the sub request\n */\n createSubRequest(startingPathIndex) {\n const pathLen = this.pathParts.length;\n if (startingPathIndex < 0 || startingPathIndex > pathLen) {\n throw new Error(\"incorrect sub-request\");\n }\n if (startingPathIndex === pathLen && this.url.includes(\"?\")) {\n return {\n url: `/${this.query}`,\n headers: this.headers,\n };\n }\n const path = `/${this.pathParts.slice(startingPathIndex).join(\"/\")}`;\n return {\n url: this.query === \"\" ? path : `${path}/${this.query}`,\n headers: this.headers,\n };\n }\n}\n//# sourceMappingURL=requestParser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer, Uint8ArrayToString, bufferToString, fromBase64ToUtf8, } from \"@fluid-internal/client-utils\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType, } from \"@fluidframework/driver-definitions\";\nimport { TreeEntry } from \"@fluidframework/driver-definitions/internal\";\nimport { AttachmentTreeEntry, BlobTreeEntry, TreeTreeEntry, } from \"@fluidframework/driver-utils/internal\";\nimport { gcDataBlobKey, } from \"@fluidframework/runtime-definitions/internal\";\n/**\n * Combines summary stats by adding their totals together.\n * Returns empty stats if called without args.\n * @param stats - stats to merge\n * @internal\n */\nexport function mergeStats(...stats) {\n const results = {\n treeNodeCount: 0,\n blobNodeCount: 0,\n handleNodeCount: 0,\n totalBlobSize: 0,\n unreferencedBlobSize: 0,\n };\n for (const stat of stats) {\n results.treeNodeCount += stat.treeNodeCount;\n results.blobNodeCount += stat.blobNodeCount;\n results.handleNodeCount += stat.handleNodeCount;\n results.totalBlobSize += stat.totalBlobSize;\n results.unreferencedBlobSize += stat.unreferencedBlobSize;\n }\n return results;\n}\n/**\n * @internal\n */\nexport function utf8ByteLength(str) {\n // returns the byte length of an utf8 string\n let s = str.length;\n for (let i = str.length - 1; i >= 0; i--) {\n const code = str.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff) {\n s++;\n }\n else if (code > 0x7ff && code <= 0xffff) {\n s += 2;\n }\n if (code >= 0xdc00 && code <= 0xdfff) {\n i--; // trail surrogate\n }\n }\n return s;\n}\n/**\n * @internal\n */\nexport function getBlobSize(content) {\n return typeof content === \"string\" ? utf8ByteLength(content) : content.byteLength;\n}\nfunction calculateStatsCore(summaryObject, stats) {\n switch (summaryObject.type) {\n case SummaryType.Tree: {\n stats.treeNodeCount++;\n for (const value of Object.values(summaryObject.tree)) {\n calculateStatsCore(value, stats);\n }\n return;\n }\n case SummaryType.Handle: {\n stats.handleNodeCount++;\n return;\n }\n case SummaryType.Blob: {\n stats.blobNodeCount++;\n stats.totalBlobSize += getBlobSize(summaryObject.content);\n return;\n }\n default:\n return;\n }\n}\n/**\n * @internal\n */\nexport function calculateStats(summary) {\n const stats = mergeStats();\n calculateStatsCore(summary, stats);\n return stats;\n}\n/**\n * @internal\n */\nexport function addBlobToSummary(summary, key, content) {\n const blob = {\n type: SummaryType.Blob,\n content,\n };\n summary.summary.tree[key] = blob;\n summary.stats.blobNodeCount++;\n summary.stats.totalBlobSize += getBlobSize(content);\n}\n/**\n * @internal\n */\nexport function addSummarizeResultToSummary(summary, key, summarizeResult) {\n summary.summary.tree[key] = summarizeResult.summary;\n summary.stats = mergeStats(summary.stats, summarizeResult.stats);\n}\n/**\n * @legacy\n * @alpha\n */\nexport class SummaryTreeBuilder {\n get summary() {\n return {\n type: SummaryType.Tree,\n tree: { ...this.summaryTree },\n };\n }\n get stats() {\n return { ...this.summaryStats };\n }\n constructor() {\n this.attachmentCounter = 0;\n this.summaryTree = {};\n this.summaryStats = mergeStats();\n this.summaryStats.treeNodeCount++;\n }\n addBlob(key, content) {\n // Prevent cloning by directly referencing underlying private properties\n addBlobToSummary({\n summary: {\n type: SummaryType.Tree,\n tree: this.summaryTree,\n },\n stats: this.summaryStats,\n }, key, content);\n }\n addHandle(key, handleType, handle) {\n this.summaryTree[key] = {\n type: SummaryType.Handle,\n handleType,\n handle,\n };\n this.summaryStats.handleNodeCount++;\n }\n addWithStats(key, summarizeResult) {\n this.summaryTree[key] = summarizeResult.summary;\n this.summaryStats = mergeStats(this.summaryStats, summarizeResult.stats);\n }\n addAttachment(id) {\n this.summaryTree[this.attachmentCounter++] = { id, type: SummaryType.Attachment };\n }\n getSummaryTree() {\n return { summary: this.summary, stats: this.stats };\n }\n}\n/**\n * Converts snapshot ITree to ISummaryTree format and tracks stats.\n * @param snapshot - snapshot in ITree format\n * @param fullTree - true to never use handles, even if id is specified\n * @legacy\n * @alpha\n */\nexport function convertToSummaryTreeWithStats(snapshot, fullTree = false) {\n const builder = new SummaryTreeBuilder();\n for (const entry of snapshot.entries) {\n switch (entry.type) {\n case TreeEntry.Blob: {\n const blob = entry.value;\n const content = blob.encoding === \"base64\" ? IsoBuffer.from(blob.contents, \"base64\") : blob.contents;\n builder.addBlob(entry.path, content);\n break;\n }\n case TreeEntry.Tree: {\n const subtree = convertToSummaryTree(entry.value, fullTree);\n builder.addWithStats(entry.path, subtree);\n break;\n }\n case TreeEntry.Attachment: {\n const id = entry.value.id;\n builder.addAttachment(id);\n break;\n }\n default:\n throw new Error(\"Unexpected TreeEntry type\");\n }\n }\n const summaryTree = builder.getSummaryTree();\n summaryTree.summary.unreferenced = snapshot.unreferenced;\n summaryTree.summary.groupId = snapshot.groupId;\n return summaryTree;\n}\n/**\n * Converts snapshot ITree to ISummaryTree format and tracks stats.\n * @param snapshot - snapshot in ITree format\n * @param fullTree - true to never use handles, even if id is specified\n * @internal\n */\nexport function convertToSummaryTree(snapshot, fullTree = false) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (snapshot.id && !fullTree) {\n const stats = mergeStats();\n stats.handleNodeCount++;\n return {\n summary: {\n handle: snapshot.id,\n handleType: SummaryType.Tree,\n type: SummaryType.Handle,\n },\n stats,\n };\n }\n else {\n return convertToSummaryTreeWithStats(snapshot, fullTree);\n }\n}\n/**\n * Converts ISnapshotTree to ISummaryTree format and tracks stats. This snapshot tree was\n * was taken by serialize api in detached container.\n * @param snapshot - snapshot in ISnapshotTree format\n * @internal\n */\nexport function convertSnapshotTreeToSummaryTree(snapshot) {\n const builder = new SummaryTreeBuilder();\n for (const [path, id] of Object.entries(snapshot.blobs)) {\n let decoded;\n if (snapshot.blobsContents !== undefined) {\n // TODO Why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const content = snapshot.blobsContents[id];\n if (content !== undefined) {\n decoded = bufferToString(content, \"utf-8\");\n }\n // 0.44 back-compat We still put contents in same blob for back-compat so need to add blob\n // only for blobPath -> blobId mapping and not for blobId -> blob value contents.\n }\n else if (snapshot.blobs[id] !== undefined) {\n // Non null asserting here because of the undefined check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n decoded = fromBase64ToUtf8(snapshot.blobs[id]);\n }\n if (decoded !== undefined) {\n builder.addBlob(path, decoded);\n }\n }\n for (const [key, tree] of Object.entries(snapshot.trees)) {\n const subtree = convertSnapshotTreeToSummaryTree(tree);\n builder.addWithStats(key, subtree);\n }\n const summaryTree = builder.getSummaryTree();\n summaryTree.summary.unreferenced = snapshot.unreferenced;\n summaryTree.summary.groupId = snapshot.groupId;\n return summaryTree;\n}\n/**\n * Converts ISummaryTree to ITree format. This is needed for back-compat while we get rid of snapshot.\n * @param summaryTree - summary tree in ISummaryTree format\n * @internal\n */\nexport function convertSummaryTreeToITree(summaryTree) {\n const entries = [];\n for (const [key, value] of Object.entries(summaryTree.tree)) {\n switch (value.type) {\n case SummaryType.Blob: {\n let parsedContent;\n let encoding = \"utf-8\";\n if (typeof value.content === \"string\") {\n parsedContent = value.content;\n }\n else {\n parsedContent = Uint8ArrayToString(value.content, \"base64\");\n encoding = \"base64\";\n }\n entries.push(new BlobTreeEntry(key, parsedContent, encoding));\n break;\n }\n case SummaryType.Tree: {\n entries.push(new TreeTreeEntry(key, convertSummaryTreeToITree(value)));\n break;\n }\n case SummaryType.Attachment: {\n entries.push(new AttachmentTreeEntry(key, value.id));\n break;\n }\n case SummaryType.Handle: {\n throw new Error(\"Should not have Handle type in summary tree\");\n }\n default:\n unreachableCase(value, \"Unexpected summary tree type\");\n }\n }\n return {\n entries,\n unreferenced: summaryTree.unreferenced,\n groupId: summaryTree.groupId,\n };\n}\n/**\n * Looks in the given attach message snapshot for the .gcdata blob, which would\n * contain the initial GC Data for the node being attached.\n * If it finds it, it notifies GC of all the new outbound routes being added by the attach.\n *\n * @param snapshot - The snapshot from the attach message\n * @param addedGCOutboundRoute - Callback to notify GC of a new outbound route.\n * IMPORTANT: addedGCOutboundRoute's param nodeId is \"/\" for the attaching node itself, or \"/\" for its children.\n *\n * @returns true if it found/processed GC Data, false otherwise\n *\n * @internal\n */\nexport function processAttachMessageGCData(snapshot, addedGCOutboundRoute) {\n const gcDataEntry = snapshot?.entries.find((e) => e.path === gcDataBlobKey);\n // Old attach messages won't have GC Data\n // (And REALLY old DataStore Attach messages won't even have a snapshot!)\n if (gcDataEntry === undefined) {\n return false;\n }\n assert(gcDataEntry.type === TreeEntry.Blob && gcDataEntry.value.encoding === \"utf-8\", 0x8ff /* GC data should be a utf-8-encoded blob */);\n const gcData = JSON.parse(gcDataEntry.value.contents);\n for (const [nodeId, outboundRoutes] of Object.entries(gcData.gcNodes)) {\n outboundRoutes.forEach((toPath) => {\n addedGCOutboundRoute(nodeId, toPath);\n });\n }\n return true;\n}\n/**\n * @internal\n */\nexport class TelemetryContext {\n constructor() {\n this.telemetry = new Map();\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.set}\n */\n set(prefix, property, value) {\n this.telemetry.set(`${prefix}${property}`, value);\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.setMultiple}\n */\n setMultiple(prefix, property, values) {\n // Set the values individually so that they are logged as a flat list along with other properties.\n for (const key of Object.keys(values)) {\n this.set(prefix, `${property}_${key}`, values[key]);\n }\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.get}\n */\n get(prefix, property) {\n return this.telemetry.get(`${prefix}${property}`);\n }\n /**\n * {@inheritDoc @fluidframework/runtime-definitions#ITelemetryContext.serialize}\n */\n serialize() {\n const jsonObject = {};\n this.telemetry.forEach((value, key) => {\n jsonObject[key] = value;\n });\n return JSON.stringify(jsonObject);\n }\n}\n/**\n * Trims the leading slashes from the given string.\n * @param str - A string that may contain leading slashes.\n * @returns A new string without leading slashes.\n */\nfunction trimLeadingSlashes(str) {\n return str.replace(/^\\/+/g, \"\");\n}\n/**\n * Trims the trailing slashes from the given string.\n * @param str - A string that may contain trailing slashes.\n * @returns A new string without trailing slashes.\n */\nfunction trimTrailingSlashes(str) {\n return str.replace(/\\/+$/g, \"\");\n}\n/**\n * Helper class to build the garbage collection data of a node by combining the data from multiple nodes.\n * @internal\n */\nexport class GCDataBuilder {\n constructor() {\n this.gcNodesSet = {};\n }\n get gcNodes() {\n const gcNodes = {};\n for (const [nodeId, outboundRoutes] of Object.entries(this.gcNodesSet)) {\n gcNodes[nodeId] = [...outboundRoutes];\n }\n return gcNodes;\n }\n addNode(id, outboundRoutes) {\n this.gcNodesSet[id] = new Set(outboundRoutes);\n }\n /**\n * Adds the given GC nodes. It does the following:\n * - Normalizes the ids of the given nodes.\n * - Prefixes the given `prefixId` to the given nodes' ids.\n * - Adds the outbound routes of the nodes against the normalized and prefixed id.\n */\n prefixAndAddNodes(prefixId, gcNodes) {\n for (const [id, outboundRoutes] of Object.entries(gcNodes)) {\n // Remove any leading slashes from the id.\n let normalizedId = trimLeadingSlashes(id);\n // Prefix the given id to the normalized id.\n normalizedId = `/${prefixId}/${normalizedId}`;\n // Remove any trailing slashes from the normalized id. Note that the trailing slashes are removed after\n // adding the prefix for handling the special case where id is \"/\".\n normalizedId = trimTrailingSlashes(normalizedId);\n // Add the outbound routes against the normalized and prefixed id without duplicates.\n this.gcNodesSet[normalizedId] = new Set(outboundRoutes);\n }\n }\n addNodes(gcNodes) {\n for (const [id, outboundRoutes] of Object.entries(gcNodes)) {\n this.gcNodesSet[id] = new Set(outboundRoutes);\n }\n }\n /**\n * Adds the given outbound route to the outbound routes of all GC nodes.\n */\n addRouteToAllNodes(outboundRoute) {\n for (const outboundRoutes of Object.values(this.gcNodesSet)) {\n outboundRoutes.add(outboundRoute);\n }\n }\n getGCData() {\n return {\n gcNodes: this.gcNodes,\n };\n }\n}\n//# sourceMappingURL=summaryUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Helper function that unpacks the used routes of children from a given node's used routes.\n * @param usedRoutes - The used routes of a node.\n * @returns A map of used routes of each children of the the given node.\n * @internal\n */\nexport function unpackChildNodesUsedRoutes(usedRoutes) {\n // Remove the node's self used route, if any, and generate the children used routes.\n const filteredUsedRoutes = usedRoutes.filter((route) => route !== \"\" && route !== \"/\");\n const childUsedRoutesMap = new Map();\n for (const route of filteredUsedRoutes) {\n assert(route.startsWith(\"/\"), 0x5e0 /* Used route should always be an absolute route */);\n const childId = route.split(\"/\")[1];\n assert(childId !== undefined, 0x9ab /* childId is undefined in unpackChildNodesUsedRoutes */);\n const childUsedRoute = route.slice(childId.length + 1);\n const childUsedRoutes = childUsedRoutesMap.get(childId);\n if (childUsedRoutes !== undefined) {\n childUsedRoutes.push(childUsedRoute);\n }\n else {\n childUsedRoutesMap.set(childId, [childUsedRoute]);\n }\n }\n return childUsedRoutesMap;\n}\n//# sourceMappingURL=unpackUsedRoutes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Fetches the sequence number of the snapshot tree by examining the protocol.\n * @param tree - snapshot tree to examine\n * @param readAndParseBlob - function to read blob contents from storage\n * and parse the result from JSON.\n * @internal\n */\nexport async function seqFromTree(tree, readAndParseBlob) {\n // TODO why are we non null asserting here?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const attributesHash = tree.trees[\".protocol\"].blobs.attributes;\n const attrib = await readAndParseBlob(attributesHash);\n return attrib.sequenceNumber;\n}\n/**\n * Encode compact ID (returned by IContainerRuntime.generateDocumentUniqueId()) to a compact string representation.\n * While this is the main usage pattern, it works with any non-negative integer or a string.\n * Strings are retured as is, and assumed to be UUIDs, i.e. unique enough to never overlap with\n * numbers encoded as strings by this function. Any other strings are likely to run into collisions and should not be used!\n * This function is useful in places where we serialize resulting ID as string and use them as strings, thus we are not\n * gaining any efficiency from having a number type.\n * We do not provide a decode function, so this API is only useful only result is stored and there is no need to go back to origianl form.\n * @param idArg - input - either a non-negative integer or a string. Strings are returned as is, while numbers are encoded in compat form\n * @param prefix - optinal string prefix\n * @returns A string - representation of an input\n * @internal\n */\nexport function encodeCompactIdToString(idArg, prefix = \"\") {\n if (typeof idArg === \"string\") {\n return idArg;\n }\n // WARNING: result of this function are stored in storage!\n // If you ever need to change this function, you will need to ensure that\n // for any inputs N1 & N2, old(N1) !== new(N2), where old() - is the old implementation,\n // and new() - is new implementation of encodeCompactIdToString()\n // This likely means - this function can't be changed, unless it uses some prefix that ensures\n // new values have zero overlap with old values.\n // Also resulting string can't contain \"/\", as that's disallowed by some users\n // (data store and DDS IDs can't have \"/\" in their IDs).\n assert(Number.isInteger(idArg) && idArg >= 0, 0x900 /* invalid input */);\n let id = \"\";\n let num = idArg;\n do {\n // 48-57 -> 0-9\n // 65-91 > A-Z[\n // 97-123 -> a-z}\n // Here are some examples of the input & output:\n // 0 -> 'A'\n // 1 -> 'B'\n // 64 -> \"AA\"\n // 100 -> 'Aj'\n // 10000 -> 'BaQ'\n // 100000 -> 'XZf'\n const encode = num % 64;\n const base = encode < 27 ? 65 : encode < 54 ? 97 - 27 : 48 - 54;\n id = String.fromCharCode(base + encode) + id;\n num = Math.floor(num / 64) - 1;\n } while (num !== -1);\n return prefix + id;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { roundToDecimalPlaces } from \"./mathTools.js\";\n/**\n * Helper class that executes a specified code block and writes an\n * {@link @fluidframework/core-interfaces#ITelemetryPerformanceEvent} to a specified logger every time a specified\n * number of executions is reached (or when the class is disposed).\n *\n * @remarks\n * The `duration` field in the telemetry event this class generates is the duration of the latest execution (sample)\n * of the specified code block.\n * See the documentation of the `includeAggregateMetrics` parameter for additional details that can be included.\n *\n * @typeParam TMeasurementReturn - The return type (in a vacuum) of the code block that will be measured, ignoring\n * any custom metric data that might be required by this class. E.g., the code might just return a boolean.\n * @typeParam TCustomMetrics - A type that contains the custom properties that will be used by an instance of this class\n * for custom metrics. Each property in this type should be a number.\n *\n * @internal\n */\nexport class SampledTelemetryHelper {\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}\n */\n get disposed() {\n return this._disposed;\n }\n /**\n * @param eventBase -\n * Custom properties to include in the telemetry performance event when it is written.\n * @param logger -\n * The logger to use to write the telemetry performance event.\n * @param sampleThreshold -\n * Telemetry performance events will be generated every time we hit this many executions of the code block.\n * @param includeAggregateMetrics -\n * If set to `true`, the telemetry performance event will include aggregated metrics (total duration, min duration,\n * max duration) for all the executions in between generated events.\n * @param perBucketProperties -\n * Map of strings that represent different buckets (which can be specified when calling the 'measure' method), to\n * properties which should be added to the telemetry event for that bucket. If a bucket being measured does not\n * have an entry in this map, no additional properties will be added to its telemetry events. The following keys are\n * reserved for use by this class: \"duration\", \"count\", \"totalDuration\", \"minDuration\", \"maxDuration\". If any of\n * them is specified as a key in one of the ITelemetryBaseProperties objects in this map, that key-value pair will be\n * ignored.\n */\n constructor(eventBase, logger, sampleThreshold, includeAggregateMetrics = false, perBucketProperties = new Map()) {\n this.eventBase = eventBase;\n this.logger = logger;\n this.sampleThreshold = sampleThreshold;\n this.includeAggregateMetrics = includeAggregateMetrics;\n this.perBucketProperties = perBucketProperties;\n this._disposed = false;\n this.measurementsMap = new Map();\n }\n /**\n * Executes the specified code and keeps track of execution time statistics.\n * When it's been called enough times (the sampleThreshold for the class) then it generates a log message with the\n * necessary information.\n *\n * @remarks It's the responsibility of the caller to ensure that the same same set of custom metric properties is\n * provided each time this method is called on a given instance of {@link SampledTelemetryHelper}.\n * Otherwise the final measurements in the telemetry event may not be accurate.\n *\n * @param codeToMeasure - The code to be executed and measured.\n * @param bucket - A key to track executions of the code block separately.\n * Each different value of this parameter has a separate set of executions and metrics tracked by the class.\n * If no such distinction needs to be made, do not provide a value.\n * @returns Whatever the passed-in code block returns.\n */\n measure(codeToMeasure, bucket = \"\") {\n const start = performance.now();\n const returnValue = codeToMeasure();\n const duration = performance.now() - start;\n let loggerData = this.measurementsMap.get(bucket);\n if (loggerData === undefined) {\n loggerData = {\n measurements: { count: 0, duration: -1 },\n dataSums: {},\n dataMaxes: {},\n };\n this.measurementsMap.set(bucket, loggerData);\n }\n const m = loggerData.measurements;\n m.count++;\n m.duration = duration;\n if (this.includeAggregateMetrics) {\n m.totalDuration = (m.totalDuration ?? 0) + duration;\n m.minDuration = Math.min(m.minDuration ?? duration, duration);\n m.maxDuration = Math.max(m.maxDuration ?? 0, duration);\n }\n if (this.isCustomData(returnValue)) {\n loggerData = this.accumulateCustomData(returnValue.customData, loggerData);\n }\n if (m.count >= this.sampleThreshold) {\n // Computed separately to avoid multiple division operations.\n if (this.includeAggregateMetrics) {\n m.averageDuration = (m.totalDuration ?? 0) / m.count;\n }\n this.flushBucket(bucket);\n }\n return returnValue;\n }\n isCustomData(data) {\n return (typeof data === \"object\" &&\n data !== null &&\n \"customData\" in data &&\n typeof data.customData === \"object\");\n }\n accumulateCustomData(customData, loggerData) {\n for (const [key, val] of Object.entries(customData)) {\n assert(typeof key === \"string\", 0x9df /* Key should be a string */);\n assert(typeof val === \"number\", 0x9e0 /* Value should be a number */);\n loggerData.dataSums[key] = (loggerData.dataSums[key] ?? 0) + val;\n loggerData.dataMaxes[key] = Math.max(loggerData.dataMaxes[key] ?? Number.NEGATIVE_INFINITY, val);\n }\n return loggerData;\n }\n processCustomData(loggerData, count) {\n const processedCustomData = {};\n if (loggerData.dataSums === undefined || loggerData.dataMaxes === undefined) {\n return processedCustomData;\n }\n const dataSums = loggerData.dataSums;\n const dataMaxes = loggerData.dataMaxes;\n for (const [key, val] of Object.entries(dataSums)) {\n // implementation of class guarantees the keys between dataMaxes and dataSums align.\n processedCustomData[`avg_${key}`] = roundToDecimalPlaces(val / count, 6);\n processedCustomData[`max_${key}`] = dataMaxes[key] ?? 0;\n }\n return processedCustomData;\n }\n flushBucket(bucket) {\n const loggerData = this.measurementsMap.get(bucket);\n if (loggerData === undefined) {\n return;\n }\n const measurements = loggerData.measurements;\n const processedCustomData = this.processCustomData(loggerData, measurements.count);\n if (measurements.count !== 0) {\n const bucketProperties = this.perBucketProperties.get(bucket);\n const telemetryEvent = {\n ...this.eventBase,\n ...bucketProperties, // If the bucket doesn't exist and this is undefined, things work as expected\n ...measurements,\n ...processedCustomData,\n };\n this.logger.sendPerformanceEvent(telemetryEvent);\n this.measurementsMap.delete(bucket);\n }\n }\n dispose(error) {\n for (const [k] of this.measurementsMap.entries()) {\n this.flushBucket(k);\n }\n this._disposed = true;\n }\n}\n//# sourceMappingURL=sampledTelemetryHelper.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidObjectHandle } from \"@fluidframework/datastore/internal\";\n/**\n * Handle for a shared object.\n *\n * @remarks\n *\n * This object is used for already loaded (in-memory) shared objects and is used only for serialization purposes.\n *\n * De-serialization process goes through {@link @fluidframework/datastore#FluidObjectHandle}, and request flow:\n * {@link @fluidframework/datastore#FluidDataStoreRuntime.request} recognizes requests in the form of\n * '/\\' and loads shared object.\n */\nexport class SharedObjectHandle extends FluidObjectHandle {\n /**\n * Whether services have been attached for the associated shared object.\n */\n get isAttached() {\n return this.value.isAttached();\n }\n /**\n * Creates a new SharedObjectHandle.\n * @param value - The shared object this handle is for.\n * @param path - The id of the shared object. It is also the path to this object relative to the routeContext.\n * @param routeContext - The parent {@link @fluidframework/core-interfaces#IFluidHandleContext} that has a route\n * to this handle.\n */\n constructor(value, path, routeContext) {\n super(value, path, routeContext);\n this.value = value;\n }\n /**\n * Attaches all bound handles first (which may in turn attach further handles), then attaches this handle.\n * When attaching the handle, it registers the associated shared object.\n */\n attachGraph() {\n this.value.bindToContext();\n super.attachGraph();\n }\n}\n//# sourceMappingURL=handle.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { RuntimeHeaders } from \"@fluidframework/container-runtime/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { FluidHandleBase, responseToException } from \"@fluidframework/runtime-utils/internal\";\n/**\n * This handle is used to dynamically load a Fluid object on a remote client and is created on parsing a serialized\n * FluidObjectHandle.\n * This class is used to generate an IFluidHandle when de-serializing any all handles (including handles to DDSes,\n * custom objects) that are stored in SharedObjects. The Data Store or SharedObject corresponding to the\n * IFluidHandle can be retrieved by calling `get` on it.\n */\nexport class RemoteFluidObjectHandle extends FluidHandleBase {\n get IFluidHandleContext() {\n return this;\n }\n /**\n * Creates a new RemoteFluidObjectHandle when parsing an IFluidHandle.\n * @param absolutePath - The absolute path to the handle from the container runtime.\n * @param routeContext - The root IFluidHandleContext that has a route to this handle.\n */\n constructor(absolutePath, routeContext) {\n super();\n this.absolutePath = absolutePath;\n this.routeContext = routeContext;\n this.isAttached = true;\n assert(absolutePath.startsWith(\"/\"), 0x19d /* \"Handles should always have absolute paths\" */);\n }\n async get() {\n if (this.objectP === undefined) {\n // Add `viaHandle` header to distinguish from requests from non-handle paths.\n const request = {\n url: this.absolutePath,\n headers: { [RuntimeHeaders.viaHandle]: true },\n };\n this.objectP = this.routeContext.resolveHandle(request).then((response) => {\n if (response.mimeType === \"fluid/object\") {\n const fluidObject = response.value;\n return fluidObject;\n }\n throw responseToException(response, request);\n });\n }\n return this.objectP;\n }\n attachGraph() {\n return;\n }\n bind(handle) {\n handle.attachGraph();\n }\n}\n//# sourceMappingURL=remoteObjectHandle.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { generateHandleContextPath, isSerializedHandle, isFluidHandle, toFluidHandleInternal, } from \"@fluidframework/runtime-utils/internal\";\nimport { RemoteFluidObjectHandle } from \"./remoteObjectHandle.js\";\n/**\n * Data Store serializer implementation\n * @internal\n */\nexport class FluidSerializer {\n constructor(context) {\n this.context = context;\n // If the given 'value' is an IFluidHandle, returns the encoded IFluidHandle.\n // Otherwise returns the original 'value'. Used by 'encode()' and 'stringify()'.\n this.encodeValue = (value, bind) => {\n // If 'value' is an IFluidHandle return its encoded form.\n return isFluidHandle(value)\n ? this.serializeHandle(toFluidHandleInternal(value), bind)\n : value;\n };\n // If the given 'value' is an encoded IFluidHandle, returns the decoded IFluidHandle.\n // Otherwise returns the original 'value'. Used by 'decode()' and 'parse()'.\n this.decodeValue = (value) => {\n // If 'value' is a serialized IFluidHandle return the deserialized result.\n if (isSerializedHandle(value)) {\n // Old documents may have handles with relative path in their summaries. Convert these to absolute\n // paths. This will ensure that future summaries will have absolute paths for these handles.\n const absolutePath = value.url.startsWith(\"/\")\n ? value.url\n : generateHandleContextPath(value.url, this.context);\n return new RemoteFluidObjectHandle(absolutePath, this.root);\n }\n else {\n return value;\n }\n };\n this.root = this.context;\n while (this.root.routeContext !== undefined) {\n this.root = this.root.routeContext;\n }\n }\n get IFluidSerializer() {\n return this;\n }\n /**\n * Given a mostly-jsonable object tree that may have handle objects embedded within, will return a\n * fully-jsonable object tree where any embedded IFluidHandles have been replaced with a serializable form.\n *\n * The original `input` object is not mutated. This method will shallowly clone all objects in the path from\n * the root to any replaced handles. (If no handles are found, returns the original object.)\n *\n * Any unbound handles encountered are bound to the provided IFluidHandle.\n */\n encode(input, bind) {\n // If the given 'input' cannot contain handles, return it immediately. Otherwise,\n // return the result of 'recursivelyReplace()'.\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n return !!input && typeof input === \"object\"\n ? this.recursivelyReplace(input, this.encodeValue, bind)\n : input;\n }\n /**\n * Given a fully-jsonable object tree that may have encoded handle objects embedded within, will return an\n * equivalent object tree where any encoded IFluidHandles have been replaced with their decoded form.\n *\n * The original `input` object is not mutated. This method will shallowly clone all objects in the path from\n * the root to any replaced handles. (If no handles are found, returns the original object.)\n *\n * The decoded handles are implicitly bound to the handle context of this serializer.\n */\n decode(input) {\n // If the given 'input' cannot contain handles, return it immediately. Otherwise,\n // return the result of 'recursivelyReplace()'.\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n return !!input && typeof input === \"object\"\n ? this.recursivelyReplace(input, this.decodeValue)\n : input;\n }\n stringify(input, bind) {\n const bindInternal = toFluidHandleInternal(bind);\n return JSON.stringify(input, (key, value) => this.encodeValue(value, bindInternal));\n }\n // Parses the serialized data - context must match the context with which the JSON was stringified\n parse(input) {\n return JSON.parse(input, (key, value) => this.decodeValue(value));\n }\n // Invoked for non-null objects to recursively replace references to IFluidHandles.\n // Clones as-needed to avoid mutating the `input` object. If no IFluidHandes are present,\n // returns the original `input`.\n recursivelyReplace(input, replacer, context) {\n // Note: Caller is responsible for ensuring that `input` is defined / non-null.\n // (Required for Object.keys() below.)\n // Execute the `replace` on the current input. Note that Caller is responsible for ensuring that `input`\n // is a non-null object.\n const maybeReplaced = replacer(input, context);\n // If either input or the replaced result is a Fluid Handle, there is no need to descend further.\n // IFluidHandles are always leaves in the object graph, and the code below cannot deal with IFluidHandle's structure.\n if (isFluidHandle(input) || isFluidHandle(maybeReplaced)) {\n return maybeReplaced;\n }\n // Otherwise descend into the object graph looking for IFluidHandle instances.\n let clone;\n for (const key of Object.keys(input)) {\n const value = input[key];\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!!value && typeof value === \"object\") {\n // Note: Except for IFluidHandle, `input` must not contain circular references (as object must\n // be JSON serializable.) Therefore, guarding against infinite recursion here would only\n // lead to a later error when attempting to stringify().\n const replaced = this.recursivelyReplace(value, replacer, context);\n // If the `replaced` object is different than the original `value` then the subgraph contained one\n // or more handles. If this happens, we need to return a clone of the `input` object where the\n // current property is replaced by the `replaced` value.\n if (replaced !== value) {\n // Lazily create a shallow clone of the `input` object if we haven't done so already.\n clone = clone ?? (Array.isArray(input) ? [...input] : { ...input });\n // Overwrite the current property `key` in the clone with the `replaced` value.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n clone[key] = replaced;\n }\n }\n }\n return clone ?? input;\n }\n serializeHandle(handle, bind) {\n bind.bind(handle);\n return {\n type: \"__fluid_handle__\",\n url: handle.absolutePath,\n };\n }\n}\n//# sourceMappingURL=serializer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidSerializer } from \"./serializer.js\";\n/**\n * Serializer implementation for serializing handles during summary.\n * @internal\n */\nexport class SummarySerializer extends FluidSerializer {\n constructor() {\n super(...arguments);\n this.serializedRoutes = new Set();\n }\n getSerializedRoutes() {\n return Array.from(this.serializedRoutes);\n }\n serializeHandle(handle, bind) {\n this.serializedRoutes.add(handle.absolutePath);\n return super.serializeHandle(handle, bind);\n }\n}\n//# sourceMappingURL=summarySerializer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { blobCountPropertyName, totalBlobSizePropertyName, } from \"@fluidframework/runtime-definitions/internal\";\nimport { toDeltaManagerInternal, } from \"@fluidframework/runtime-utils/internal\";\nimport { DataProcessingError, EventEmitterWithErrorHandling, SampledTelemetryHelper, createChildLogger, loggerToMonitoringContext, tagCodeArtifacts, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { SharedObjectHandle } from \"./handle.js\";\nimport { FluidSerializer } from \"./serializer.js\";\nimport { SummarySerializer } from \"./summarySerializer.js\";\nimport { makeHandlesSerializable, parseHandles } from \"./utils.js\";\n/**\n * Base class from which all shared objects derive.\n * @legacy\n * @alpha\n */\nexport class SharedObjectCore extends EventEmitterWithErrorHandling {\n get IFluidLoadable() {\n return this;\n }\n /**\n * Gets the connection state\n * @returns The state of the connection\n */\n get connected() {\n return this._connected;\n }\n /**\n * @param id - The id of the shared object\n * @param runtime - The IFluidDataStoreRuntime which contains the shared object\n * @param attributes - Attributes of the shared object\n */\n constructor(id, runtime, attributes) {\n super((event, e) => this.eventListenerErrorHandler(event, e));\n this.id = id;\n this.runtime = runtime;\n this.attributes = attributes;\n /**\n * Connection state\n */\n this._connected = false;\n /**\n * True if the dds is bound to its parent.\n */\n this._isBoundToContext = false;\n assert(!id.includes(\"/\"), 0x304 /* Id cannot contain slashes */);\n this.handle = new SharedObjectHandle(this, id, runtime.IFluidHandleContext);\n this.logger = createChildLogger({\n logger: runtime.logger,\n properties: {\n all: {\n sharedObjectId: uuid(),\n ...tagCodeArtifacts({\n ddsType: this.attributes.type,\n }),\n },\n },\n });\n this.mc = loggerToMonitoringContext(this.logger);\n const { opProcessingHelper, callbacksHelper } = this.setUpSampledTelemetryHelpers();\n this.opProcessingHelper = opProcessingHelper;\n this.callbacksHelper = callbacksHelper;\n }\n /**\n * Accessor for `this.runtime`'s {@link @fluidframework/datastore-definitions#IFluidDataStoreRuntime.deltaManager} as a {@link @fluidframework/container-definitions/internal#IDeltaManager}\n */\n get deltaManager() {\n return toDeltaManagerInternal(this.runtime.deltaManager);\n }\n /**\n * This function is only supposed to be called from SharedObjectCore's constructor and\n * depends on a few things being set already. assert() calls make sure of it.\n * @returns The telemetry sampling helpers, so the constructor can be the one to assign them\n * to variables to avoid complaints from TypeScript.\n */\n setUpSampledTelemetryHelpers() {\n assert(this.mc !== undefined && this.logger !== undefined, 0x349 /* this.mc and/or this.logger has not been set */);\n const opProcessingHelper = new SampledTelemetryHelper({\n eventName: \"ddsOpProcessing\",\n category: \"performance\",\n }, this.logger, this.mc.config.getNumber(\"Fluid.SharedObject.OpProcessingTelemetrySampling\") ?? 1000, true, new Map([\n [\"local\", { localOp: true }],\n [\"remote\", { localOp: false }],\n ]));\n const callbacksHelper = new SampledTelemetryHelper({\n eventName: \"ddsEventCallbacks\",\n category: \"performance\",\n }, this.logger, this.mc.config.getNumber(\"Fluid.SharedObject.DdsCallbacksTelemetrySampling\") ?? 1000, true);\n this.runtime.once(\"dispose\", () => {\n this.callbacksHelper.dispose();\n this.opProcessingHelper.dispose();\n });\n return { opProcessingHelper, callbacksHelper };\n }\n /**\n * Marks this objects as closed. Any attempt to change it (local changes or processing remote ops)\n * would result in same error thrown. If called multiple times, only first error is remembered.\n * @param error - error object that is thrown whenever an attempt is made to modify this object\n */\n closeWithError(error) {\n if (this.closeError === undefined) {\n this.closeError = error;\n }\n }\n /**\n * Verifies that this object is not closed via closeWithError(). If it is, throws an error used to close it.\n */\n verifyNotClosed() {\n if (this.closeError !== undefined) {\n throw this.closeError;\n }\n }\n /**\n * Event listener handler helper that can be used to react to exceptions thrown from event listeners\n * It wraps error with DataProcessingError, closes this object and throws resulting error.\n * See closeWithError() for more details\n * Ideally such situation never happens, as consumers of DDS should never throw exceptions\n * in event listeners (i.e. catch any of the issues and make determination on how to handle it).\n * When such exceptions propagate through, most likely data model is no longer consistent, i.e.\n * DDS state does not match what user sees. Because of it DDS moves to \"corrupted state\" and does not\n * allow processing of ops or local changes, which very quickly results in container closure.\n */\n eventListenerErrorHandler(event, e) {\n const error = DataProcessingError.wrapIfUnrecognized(e, \"SharedObjectEventListenerException\");\n error.addTelemetryProperties({ emittedEventName: String(event) });\n this.closeWithError(error);\n throw error;\n }\n setBoundAndHandleAttach() {\n // Ensure didAttach is only called once, and we only register a single event\n // but we still call setConnectionState as our existing mocks don't\n // always propagate connection state\n this.setBoundAndHandleAttach = () => this.setConnectionState(this.runtime.connected);\n this._isBoundToContext = true;\n const runDidAttach = () => {\n // Allows objects to do any custom processing if it is attached.\n this.didAttach();\n this.setConnectionState(this.runtime.connected);\n };\n if (this.isAttached()) {\n runDidAttach();\n }\n else {\n this.runtime.once(\"attaching\", runDidAttach);\n }\n }\n /**\n * A shared object, after construction, can either be loaded in the case that it is already part of\n * a shared document. Or later attached if it is being newly added.\n * @param services - Services used by the shared object\n */\n async load(services) {\n this.services = services;\n // set this before load so that isAttached is true\n // for attached runtimes when load core is running\n this._isBoundToContext = true;\n await this.loadCore(services.objectStorage);\n this.attachDeltaHandler();\n this.setBoundAndHandleAttach();\n }\n /**\n * Initializes the object as a local, non-shared object. This object can become shared after\n * it is attached to the document.\n */\n initializeLocal() {\n this.initializeLocalCore();\n }\n /**\n * {@inheritDoc (ISharedObject:interface).bindToContext}\n */\n bindToContext() {\n // ensure the method only runs once by removing the implementation\n // without this the method suffers from re-entrancy issues\n this.bindToContext = () => { };\n if (!this._isBoundToContext) {\n this.runtime.bindChannel(this);\n // must set after bind channel so isAttached doesn't report true\n // before binding is complete\n this.setBoundAndHandleAttach();\n }\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#(IChannel:interface).connect}\n */\n connect(services) {\n // handle the case where load is called\n // before connect; loading detached data stores\n if (this.services === undefined) {\n this.services = services;\n this.attachDeltaHandler();\n }\n this.setBoundAndHandleAttach();\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#(IChannel:interface).isAttached}\n */\n isAttached() {\n return this._isBoundToContext && this.runtime.attachState !== AttachState.Detached;\n }\n /**\n * Allows the distributed data type to perform custom local loading.\n */\n initializeLocalCore() {\n return;\n }\n /**\n * Allows the distributive data type the ability to perform custom processing once an attach has happened.\n * Also called after non-local data type get loaded.\n */\n didAttach() {\n return;\n }\n /**\n * Submits a message by the local client to the runtime.\n * @param content - Content of the message. Note: handles contained in the\n * message object should not be encoded in any way\n * @param localOpMetadata - The local metadata associated with the message. This is kept locally by the runtime\n * and not sent to the server. This will be sent back when this message is received back from the server. This is\n * also sent if we are asked to resubmit the message.\n */\n submitLocalMessage(content, localOpMetadata = undefined) {\n this.verifyNotClosed();\n if (this.isAttached()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.services.deltaConnection.submit(makeHandlesSerializable(content, this.serializer, this.handle), localOpMetadata);\n }\n }\n /**\n * Marks this object as dirty so that it is part of the next summary. It is called by a SharedSummaryBlock\n * that want to be part of summary but does not generate ops.\n */\n dirty() {\n if (!this.isAttached()) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.services.deltaConnection.dirty();\n }\n /**\n * Called when the object has fully connected to the delta stream\n * Default implementation for DDS, override if different behavior is required.\n */\n onConnect() { }\n /**\n * Called when a message has to be resubmitted. This typically happens after a reconnection for unacked messages.\n * The default implementation here is to resubmit the same message. The client can override if different behavior\n * is required. It can choose to resubmit the same message, submit different / multiple messages or not submit\n * anything at all.\n * @param content - The content of the original message.\n * @param localOpMetadata - The local metadata associated with the original message.\n */\n reSubmitCore(content, localOpMetadata) {\n this.submitLocalMessage(content, localOpMetadata);\n }\n /**\n * Promises that are waiting for an ack from the server before resolving should use this instead of new Promise.\n * It ensures that if something changes that will interrupt that ack (e.g. the FluidDataStoreRuntime disposes),\n * the Promise will reject.\n * If runtime is disposed when this call is made, executor is not run and promise is rejected right away.\n */\n async newAckBasedPromise(executor) {\n let rejectBecauseDispose;\n return new Promise((resolve, reject) => {\n rejectBecauseDispose = () => reject(new Error(\"FluidDataStoreRuntime disposed while this ack-based Promise was pending\"));\n if (this.runtime.disposed) {\n rejectBecauseDispose();\n return;\n }\n this.runtime.on(\"dispose\", rejectBecauseDispose);\n executor(resolve, reject);\n }).finally(() => {\n // Note: rejectBecauseDispose will never be undefined here\n this.runtime.off(\"dispose\", rejectBecauseDispose);\n });\n }\n attachDeltaHandler() {\n // Services should already be there in case we are attaching delta handler.\n assert(this.services !== undefined, 0x07a /* \"Services should be there to attach delta handler\" */);\n // attachDeltaHandler is only called after services is assigned\n this.services.deltaConnection.attach({\n process: (message, local, localOpMetadata) => {\n this.process({ ...message, contents: parseHandles(message.contents, this.serializer) }, local, localOpMetadata);\n },\n setConnectionState: (connected) => {\n this.setConnectionState(connected);\n },\n reSubmit: (content, localOpMetadata) => {\n this.reSubmit(content, localOpMetadata);\n },\n applyStashedOp: (content) => {\n this.applyStashedOp(parseHandles(content, this.serializer));\n },\n rollback: (content, localOpMetadata) => {\n this.rollback(content, localOpMetadata);\n },\n });\n }\n /**\n * Set the state of connection to services.\n * @param connected - true if connected, false otherwise.\n */\n setConnectionState(connected) {\n // only an attached shared object can transition its\n // connected state. This is defensive, as some\n // of our test harnesses don't handle this correctly\n if (!this.isAttached() || this._connected === connected) {\n // Not changing state, nothing the same.\n return;\n }\n // Should I change the state at the end? So that we *can't* send new stuff before we send old?\n this._connected = connected;\n if (!connected) {\n // Things that are true now...\n // - if we had a connection we can no longer send messages over it\n // - if we had outbound messages some may or may not be ACK'd. Won't know until next message\n //\n // - nack could get a new msn - but might as well do it in the join?\n this.onDisconnect();\n }\n else {\n // Call this for now so that DDSes like ConsensusOrderedCollection that maintain their own pending\n // messages will work.\n this.onConnect();\n }\n }\n /**\n * Handles a message being received from the remote delta server.\n * @param message - The message to process\n * @param local - Whether the message originated from the local client\n * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n * For messages from a remote client, this will be undefined.\n */\n process(message, local, localOpMetadata) {\n this.verifyNotClosed(); // This will result in container closure.\n this.emitInternal(\"pre-op\", message, local, this);\n this.opProcessingHelper.measure(() => {\n this.processCore(message, local, localOpMetadata);\n const telemetryProperties = {\n sequenceDifference: message.sequenceNumber - message.referenceSequenceNumber,\n };\n return {\n customData: telemetryProperties,\n };\n }, local ? \"local\" : \"remote\");\n this.emitInternal(\"op\", message, local, this);\n }\n /**\n * Called when a message has to be resubmitted. This typically happens for unacked messages after a\n * reconnection.\n * @param content - The content of the original message.\n * @param localOpMetadata - The local metadata associated with the original message.\n */\n reSubmit(content, localOpMetadata) {\n this.reSubmitCore(content, localOpMetadata);\n }\n /**\n * Revert an op\n */\n rollback(content, localOpMetadata) {\n throw new Error(\"rollback not supported\");\n }\n /**\n * Emit an event. This function is only intended for use by DDS classes that extend SharedObject/SharedObjectCore,\n * specifically to emit events that are part of the public interface of the DDS (i.e. those that can have listeners\n * attached to them by the consumers of the DDS). It should not be called from outside the class or to emit events\n * which are only internal to the DDS. Support for calling it from outside the DDS instance might be removed in the\n * future.\n * @param event - The event to emit.\n * @param args - Arguments to pass to the event listeners.\n * @returns `true` if the event had listeners, `false` otherwise.\n */\n emit(event, ...args) {\n return this.callbacksHelper.measure(() => {\n return super.emit(event, ...args);\n });\n }\n /**\n * Use to emit events inside {@link SharedObjectCore}, with no telemetry measurement\n * done on the duration of the callbacks. Simply calls `super.emit()`.\n * @param event - Event to emit\n * @param args - Arguments for the event\n * @returns Whatever `super.emit()` returns.\n */\n emitInternal(event, ...args) {\n return super.emit(event, ...args);\n }\n}\n/**\n * SharedObject with simplified, synchronous summarization and GC.\n * DDS implementations with async and incremental summarization should extend SharedObjectCore directly instead.\n * @legacy\n * @alpha\n */\nexport class SharedObject extends SharedObjectCore {\n get serializer() {\n /**\n * During garbage collection, the SummarySerializer keeps track of IFluidHandles that are serialized. These\n * handles represent references to other Fluid objects.\n *\n * This is fine for now. However, if we implement delay loading in DDss, they may load and de-serialize content\n * in summarize. When that happens, they may incorrectly hit this assert and we will have to change this.\n */\n assert(!this._isGCing, 0x075 /* \"SummarySerializer should be used for serializing data during summary.\" */);\n return this._serializer;\n }\n /**\n * @param id - The id of the shared object\n * @param runtime - The IFluidDataStoreRuntime which contains the shared object\n * @param attributes - Attributes of the shared object\n */\n constructor(id, runtime, attributes, telemetryContextPrefix) {\n super(id, runtime, attributes);\n this.telemetryContextPrefix = telemetryContextPrefix;\n /**\n * True while we are garbage collecting this object's data.\n */\n this._isGCing = false;\n this._serializer = new FluidSerializer(this.runtime.channelsRoutingContext);\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#(IChannel:interface).getAttachSummary}\n */\n getAttachSummary(fullTree = false, trackState = false, telemetryContext) {\n const result = this.summarizeCore(this.serializer, telemetryContext);\n this.incrementTelemetryMetric(blobCountPropertyName, result.stats.blobNodeCount, telemetryContext);\n this.incrementTelemetryMetric(totalBlobSizePropertyName, result.stats.totalBlobSize, telemetryContext);\n return result;\n }\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#(IChannel:interface).summarize}\n */\n async summarize(fullTree = false, trackState = false, telemetryContext, incrementalSummaryContext) {\n const result = this.summarizeCore(this.serializer, telemetryContext, incrementalSummaryContext);\n this.incrementTelemetryMetric(blobCountPropertyName, result.stats.blobNodeCount, telemetryContext);\n this.incrementTelemetryMetric(totalBlobSizePropertyName, result.stats.totalBlobSize, telemetryContext);\n return result;\n }\n /**\n * {@inheritDoc (ISharedObject:interface).getGCData}\n */\n getGCData(fullGC = false) {\n // Set _isGCing to true. This flag is used to ensure that we only use SummarySerializer to serialize handles\n // in this object's data.\n assert(!this._isGCing, 0x078 /* \"Possible re-entrancy! Summary should not already be in progress.\" */);\n this._isGCing = true;\n let gcData;\n try {\n const serializer = new SummarySerializer(this.runtime.channelsRoutingContext);\n this.processGCDataCore(serializer);\n // The GC data for this shared object contains a single GC node. The outbound routes of this node are the\n // routes of handles serialized during summarization.\n gcData = { gcNodes: { \"/\": serializer.getSerializedRoutes() } };\n assert(this._isGCing, 0x079 /* \"Possible re-entrancy! Summary should have been in progress.\" */);\n }\n finally {\n this._isGCing = false;\n }\n return gcData;\n }\n /**\n * Calls the serializer over all data in this object that reference other GC nodes.\n * Derived classes must override this to provide custom list of references to other GC nodes.\n */\n processGCDataCore(serializer) {\n // We run the full summarize logic to get the list of outbound routes from this object. This is a little\n // expensive but its okay for now. It will be updated to not use full summarize and make it more efficient.\n // See: https://github.com/microsoft/FluidFramework/issues/4547\n this.summarizeCore(serializer);\n }\n incrementTelemetryMetric(propertyName, incrementBy, telemetryContext) {\n if (telemetryContext !== undefined) {\n // TelemetryContext needs to implment a get function\n assert(\"get\" in telemetryContext && typeof telemetryContext.get === \"function\", 0x97e /* received context must have a get function */);\n const prevTotal = (telemetryContext.get(this.telemetryContextPrefix, propertyName) ?? 0);\n telemetryContext.set(this.telemetryContextPrefix, propertyName, prevTotal + incrementBy);\n }\n }\n}\n/**\n * Utility for creating ISharedObjectKind instances.\n * @remarks\n * This takes in a class which implements IChannelFactory,\n * and uses it to return a a single value which is intended to be used as the APi entry point for the corresponding shared object type.\n * The returned value implements {@link ISharedObjectKind} for use in the encapsulated API, as well as the type erased {@link SharedObjectKind} used by the declarative API.\n * See {@link @fluidframework/fluid-static#ContainerSchema} for how this is used in the declarative API.\n * @internal\n */\nexport function createSharedObjectKind(factory) {\n const result = {\n getFactory() {\n return new factory();\n },\n create(runtime, id) {\n return runtime.createChannel(id, factory.Type);\n },\n is(value) {\n return isChannel(value) && value.attributes.type === factory.Type;\n },\n };\n return result;\n}\nfunction isChannel(loadable) {\n // This assumes no other IFluidLoadable has an `attributes` field, and thus may not be fully robust.\n return loadable.attributes !== undefined;\n}\n//# sourceMappingURL=sharedObject.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\n/**\n * Given a mostly-plain object that may have handle objects embedded within, return a string representation of an object\n * where the handle objects have been replaced with a serializable form.\n * @param value - The mostly-plain object\n * @param serializer - The serializer that knows how to convert handles into serializable format\n * @param context - The handle context for the container\n * @param bind - Bind any other handles we find in the object against this given handle.\n * @returns Result of strigifying an object\n * @internal\n */\nexport function serializeHandles(value, serializer, bind) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value !== undefined ? serializer.stringify(value, bind) : value;\n}\n/**\n * Given a mostly-plain object that may have handle objects embedded within, will return a fully-plain object\n * where any embedded IFluidHandles have been replaced with a serializable form.\n *\n * The original `input` object is not mutated. This method will shallowly clones all objects in the path from\n * the root to any replaced handles. (If no handles are found, returns the original object.)\n *\n * @param input - The mostly-plain object\n * @param context - The handle context for the container\n * @param bind - Bind any other handles we find in the object against this given handle.\n * @returns The fully-plain object\n * @legacy\n * @alpha\n */\nexport function makeHandlesSerializable(value, serializer, bind) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return serializer.encode(value, bind);\n}\n/**\n * Given a fully-plain object that may have serializable-form handles within, will return the mostly-plain object\n * with handle objects created instead.\n * @remarks Idempotent when called multiple times.\n * @param value - The fully-plain object\n * @param serializer - The serializer that knows how to convert serializable-form handles into handle objects\n * @param context - The handle context for the container\n * @returns The mostly-plain object with handle objects within\n * @legacy\n * @alpha\n */\nexport function parseHandles(value, serializer) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return serializer.decode(value);\n}\n/**\n * Create a new summary containing one blob\n * @param key - the key for the blob in the summary\n * @param content - blob content\n * @returns The summary containing the blob\n * @internal\n */\nexport function createSingleBlobSummary(key, content) {\n const builder = new SummaryTreeBuilder();\n builder.addBlob(key, content);\n return builder.getSummaryTree();\n}\n/**\n * Binds all handles found in `value` to `bind`. Does not modify original input.\n *\n * @internal\n */\nexport function bindHandles(value, serializer, bind) {\n // N.B. AB#7316 this could be made more efficient by writing an ad hoc\n // implementation that doesn't clone at all. Today the distinction between\n // this function and `encode` is purely semantic -- encoding both serializes\n // handles and binds them, but sometimes we only wish to do the latter\n serializer.encode(value, bind);\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * enum representing the possible types of a shared object\n * @internal\n */\nexport var ValueType;\n(function (ValueType) {\n /**\n * The value is a shared object\n * @deprecated Instead store the handle of the shared object, rather than the shared object itself.\n */\n ValueType[ValueType[\"Shared\"] = 0] = \"Shared\";\n /**\n * The value is a plain JavaScript object or handle. If a plain object, it may contain handles deeper within.\n */\n ValueType[ValueType[\"Plain\"] = 1] = \"Plain\";\n})(ValueType || (ValueType = {}));\n//# sourceMappingURL=valueType.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Lazy } from \"@fluidframework/core-utils/internal\";\nimport { createChildLogger, tagCodeArtifacts } from \"./logger.js\";\n/**\n * Creates a base configuration provider based on `sessionStorage`\n *\n * @returns A lazy initialized base configuration provider with `sessionStorage` as the underlying config store\n *\n * @internal\n */\nexport const sessionStorageConfigProvider = new Lazy(() => inMemoryConfigProvider(safeSessionStorage()));\nconst NullConfigProvider = {\n getRawConfig: () => undefined,\n};\n/**\n * Creates a base configuration provider based on the supplied `Storage` instance\n *\n * @param storage - instance of `Storage` to be used as storage media for the config\n * @returns A base configuration provider with\n * the supplied `Storage` instance as the underlying config store\n */\nexport const inMemoryConfigProvider = (storage) => {\n if (storage !== undefined && storage !== null) {\n return new CachedConfigProvider(undefined, {\n getRawConfig: (name) => {\n try {\n return stronglyTypedParse(storage.getItem(name) ?? undefined)?.raw;\n }\n catch {\n return undefined;\n }\n },\n });\n }\n return NullConfigProvider;\n};\nfunction isPrimitiveType(type) {\n switch (type) {\n case \"boolean\":\n case \"number\":\n case \"string\": {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n/**\n * Takes any supported config type, and returns the value with a strong type. If the type of\n * the config is not a supported type undefined will be returned.\n * The user of this function should cache the result to avoid duplicated work.\n *\n * Strings will be attempted to be parsed and coerced into a strong config type.\n * if it is not possible to parsed and coerce a string to a strong config type the original string\n * will be return with a string type for the consumer to handle further if necessary.\n */\nfunction stronglyTypedParse(input) {\n let output = input;\n let defaultReturn;\n // we do special handling for strings to try and coerce\n // them into a config type if we can. This makes it easy\n // for config sources like sessionStorage which only\n // holds strings\n if (typeof input === \"string\") {\n try {\n output = JSON.parse(input);\n // we succeeded in parsing, but we don't support parsing\n // for any object as we can't do it type safely\n // so in this case, the default return will be string\n // rather than undefined, and the consumer\n // can parse, as we don't want to provide\n // a false sense of security by just\n // casting.\n defaultReturn = { raw: input, string: input };\n }\n catch {\n // No-op\n }\n }\n if (output === undefined) {\n return defaultReturn;\n }\n const outputType = typeof output;\n if (isPrimitiveType(outputType)) {\n return { ...defaultReturn, raw: input, [outputType]: output };\n }\n if (Array.isArray(output)) {\n const firstType = typeof output[0];\n // ensure the first elements is a primitive type\n if (!isPrimitiveType(firstType)) {\n return defaultReturn;\n }\n // ensue all the elements types are homogeneous\n // aka they all have the same type as the first\n for (const v of output) {\n if (typeof v !== firstType) {\n return defaultReturn;\n }\n }\n return { ...defaultReturn, raw: input, [`${firstType}[]`]: output };\n }\n return defaultReturn;\n}\n/**\n * `sessionStorage` is undefined in some environments such as Node and web pages with session storage disabled.\n */\nconst safeSessionStorage = () => {\n // For some configurations accessing \"globalThis.sessionStorage\" throws\n // \"'sessionStorage' property from 'Window': Access is denied for this document\" rather than returning undefined.\n // Therefor check for it before accessing.\n try {\n // Using globalThis and checking for undefined is preferred over just accessing global sessionStorage\n // since it avoids an exception when running in node.\n // In some cases this has returned null when disabled in the browser, so ensure its undefined in that case:\n return globalThis.sessionStorage ?? undefined;\n }\n catch {\n // For browsers which error on the above when session storage is disabled:\n return undefined;\n }\n};\n/**\n * Creates a wrapper on top of an existing config provider which allows for\n * specifying feature gates if not present in the original provider.\n *\n * @param original - the original config provider\n * @param defaults - default feature gate configs to be used if not specified by the original provider\n * @returns A config provider that looks for any requested feature gates in the original provider and falls\n * back to the values specified in the `defaults` feature gates if they're not present in the original.\n *\n * @internal\n */\nexport const wrapConfigProviderWithDefaults = (original, defaults) => ({\n getRawConfig: (name) => original?.getRawConfig(name) ?? defaults[name],\n});\n/**\n * Implementation of {@link IConfigProvider} which contains nested {@link IConfigProviderBase} instances\n */\nexport class CachedConfigProvider {\n constructor(logger, ...orderedBaseProviders) {\n this.logger = logger;\n this.configCache = new Map();\n this.orderedBaseProviders = [];\n const knownProviders = new Set();\n const candidateProviders = [...orderedBaseProviders];\n while (candidateProviders.length > 0) {\n const baseProvider = candidateProviders.shift();\n if (baseProvider !== undefined &&\n isConfigProviderBase(baseProvider) &&\n !knownProviders.has(baseProvider)) {\n knownProviders.add(baseProvider);\n if (baseProvider instanceof CachedConfigProvider) {\n candidateProviders.push(...baseProvider.orderedBaseProviders);\n }\n else {\n this.orderedBaseProviders.push(baseProvider);\n }\n }\n }\n }\n getBoolean(name) {\n return this.getCacheEntry(name)?.boolean;\n }\n getNumber(name) {\n return this.getCacheEntry(name)?.number;\n }\n getString(name) {\n return this.getCacheEntry(name)?.string;\n }\n getBooleanArray(name) {\n return this.getCacheEntry(name)?.[\"boolean[]\"];\n }\n getNumberArray(name) {\n return this.getCacheEntry(name)?.[\"number[]\"];\n }\n getStringArray(name) {\n return this.getCacheEntry(name)?.[\"string[]\"];\n }\n getRawConfig(name) {\n return this.getCacheEntry(name)?.raw;\n }\n getCacheEntry(name) {\n if (!this.configCache.has(name)) {\n for (const provider of this.orderedBaseProviders) {\n const parsed = stronglyTypedParse(provider?.getRawConfig(name));\n if (parsed !== undefined) {\n this.configCache.set(name, parsed);\n this.logger?.send({\n category: \"generic\",\n eventName: \"ConfigRead\",\n ...tagCodeArtifacts({\n configName: name,\n configValue: JSON.stringify(parsed),\n }),\n });\n return parsed;\n }\n }\n // configs are immutable, if the first lookup returned no results, all lookups should\n this.configCache.set(name, { raw: undefined });\n }\n return this.configCache.get(name);\n }\n}\n/**\n * Determines whether or not the provided object is a {@link MonitoringContext}.\n * @remarks Can be used for type-narrowing.\n *\n * @internal\n */\nexport function loggerIsMonitoringContext(obj) {\n const maybeConfig = obj;\n return isConfigProviderBase(maybeConfig?.config) && maybeConfig?.logger !== undefined;\n}\n/**\n * Creates a {@link MonitoringContext} from the provided logger, if it isn't already one.\n *\n * @internal\n */\nexport function loggerToMonitoringContext(logger) {\n if (loggerIsMonitoringContext(logger)) {\n return logger;\n }\n return mixinMonitoringContext(logger, sessionStorageConfigProvider.value);\n}\n/**\n * Creates a {@link MonitoringContext} from the provided logger.\n *\n * @remarks\n * Assumes that the provided logger is not itself already a {@link MonitoringContext}, and will throw an error if it is.\n * If you are unsure, use {@link loggerToMonitoringContext} instead.\n *\n * @throws If the provided logger is already a {@link MonitoringContext}.\n *\n * @internal\n */\nexport function mixinMonitoringContext(logger, ...configs) {\n if (loggerIsMonitoringContext(logger)) {\n throw new Error(\"Logger is already a monitoring context\");\n }\n /**\n * this is the tricky bit we use for now to smuggle monitoring context around.\n * To the logger we mixin both config and itself, so mc.logger === logger as it is self-referential.\n * We then expose it as a Monitoring context, so via types we hide the outer logger methods.\n * To layers that expect just a logger we can pass mc.logger, but this is still a MonitoringContext\n * so if a deeper layer then converts that logger to a monitoring context it can find the smuggled properties\n * of the MonitoringContext and get the config provider.\n */\n const mc = logger;\n mc.config = new CachedConfigProvider(logger, ...configs);\n mc.logger = logger;\n return mc;\n}\nfunction isConfigProviderBase(obj) {\n const maybeConfig = obj;\n return typeof maybeConfig?.getRawConfig === \"function\";\n}\n/**\n * Creates a child logger with a {@link MonitoringContext}.\n *\n * @see {@link loggerToMonitoringContext}\n * @internal\n */\nexport function createChildMonitoringContext(props) {\n return loggerToMonitoringContext(createChildLogger(props));\n}\n/**\n * Creates a proxy object that allows for reading configuration values from a IConfigProviderBase,\n * and default to the provided options if the configuration value is not present.\n *\n * @param config - the configuration provider to read values from.\n * @param namespace - the namespace to use when reading configuration values.\n * @param configReaders - a mapping of option keys to configuration value readers.\n * @param defaultOptions - the default options to use if the configuration value is not present.\n *\n * @internal\n * */\nexport function createConfigBasedOptionsProxy(config, namespace, configReaders, defaultOptions) {\n const realConfig = config instanceof CachedConfigProvider\n ? config\n : new CachedConfigProvider(undefined, config);\n const keys = new Set([\n ...Object.keys(defaultOptions ?? {}),\n ...Object.keys(configReaders),\n ]);\n return new Proxy(Object.freeze({}), {\n get: (_, prop) => {\n const reader = configReaders[prop];\n const value = reader?.(realConfig, `${namespace}.${prop}`);\n if (value !== undefined) {\n return value;\n }\n return defaultOptions?.[prop];\n },\n has: (_, prop) => keys.has(prop),\n // we don't want the keys of this object to be enumerable\n // as accessing them will trigger a config read, which\n // should only happen when the value is accessed via\n // a previously known key.\n ownKeys: () => {\n throw new TypeError(\"OptionsProxy keys are not enumerable\");\n },\n });\n}\n//# sourceMappingURL=config.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidErrorTypes, } from \"@fluidframework/core-interfaces/internal\";\nimport { LoggingError, NORMALIZED_ERROR_TYPE, isExternalError, normalizeError, wrapError, } from \"./errorLogging.js\";\n/**\n * Throws a UsageError with the given message if the condition is not met.\n * Use this API when `false` indicates a precondition is not met on a public API (for any FF layer).\n *\n * @param condition - The condition that should be true, if the condition is false a UsageError will be thrown.\n * @param message - The message to include in the error when the condition does not hold.\n * @param props - Telemetry props to include on the error when the condition does not hold.\n * @internal\n */\nexport function validatePrecondition(condition, message, props) {\n if (!condition) {\n throw new UsageError(message, props);\n }\n}\n/**\n * Generic wrapper for an unrecognized/uncategorized error object\n *\n * @internal\n */\nexport class GenericError extends LoggingError {\n /**\n * Create a new GenericError\n * @param message - Error message\n * @param error - inner error object\n * @param props - Telemetry props to include when the error is logged\n */\n constructor(message, \n // TODO: Use `unknown` instead (API breaking change because error is not just an input parameter, but a public member of the class)\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n error, props) {\n // Don't try to log the inner error\n super(message, props, new Set([\"error\"]));\n this.error = error;\n this.errorType = FluidErrorTypes.genericError;\n }\n}\n/**\n * Error indicating an API is being used improperly resulting in an invalid operation.\n *\n * @internal\n */\nexport class UsageError extends LoggingError {\n constructor(message, props) {\n super(message, { ...props, usageError: true });\n this.errorType = FluidErrorTypes.usageError;\n }\n}\n/**\n * DataCorruptionError indicates that we encountered definitive evidence that the data at rest\n * backing this container is corrupted, and this container would never be expected to load properly again\n *\n * @internal\n */\nexport class DataCorruptionError extends LoggingError {\n constructor(message, props) {\n super(message, { ...props, dataProcessingError: 1 });\n this.errorType = FluidErrorTypes.dataCorruptionError;\n this.canRetry = false;\n }\n}\n/**\n * Indicates we hit a fatal error while processing incoming data from the Fluid Service.\n *\n * @remarks\n *\n * The error will often originate in the dataStore or DDS implementation that is responding to incoming changes.\n * This differs from {@link DataCorruptionError} in that this may be a transient error that will not repro in another\n * client or session.\n *\n * @internal\n */\nexport class DataProcessingError extends LoggingError {\n constructor(errorMessage, props) {\n super(errorMessage, props);\n /**\n * {@inheritDoc IFluidErrorBase.errorType}\n */\n this.errorType = FluidErrorTypes.dataProcessingError;\n this.canRetry = false;\n }\n /**\n * Create a new `DataProcessingError` detected and raised within the Fluid Framework.\n */\n static create(errorMessage, dataProcessingCodepath, sequencedMessage, props = {}) {\n const dataProcessingError = DataProcessingError.wrapIfUnrecognized(errorMessage, dataProcessingCodepath, sequencedMessage);\n dataProcessingError.addTelemetryProperties(props);\n return dataProcessingError;\n }\n /**\n * Wrap the given error in a `DataProcessingError`, unless the error is already of a known type\n * with the exception of a normalized {@link LoggingError}, which will still be wrapped.\n *\n * In either case, the error will have some relevant properties added for telemetry.\n *\n * @remarks\n *\n * We wrap conditionally since known error types represent well-understood failure modes, and ideally\n * one day we will move away from throwing these errors but rather we'll return them.\n * But an unrecognized error needs to be classified as `DataProcessingError`.\n *\n * @param originalError - The error to be converted.\n * @param dataProcessingCodepath - Which code-path failed while processing data.\n * @param messageLike - Message to include info about via telemetry props.\n *\n * @returns Either a new `DataProcessingError`, or (if wrapping is deemed unnecessary) the given error.\n */\n static wrapIfUnrecognized(originalError, dataProcessingCodepath, messageLike) {\n const props = {\n dataProcessingError: 1,\n dataProcessingCodepath,\n ...(messageLike === undefined\n ? undefined\n : extractSafePropertiesFromMessage(messageLike)),\n };\n const normalizedError = normalizeError(originalError, { props });\n // Note that other errors may have the NORMALIZED_ERROR_TYPE errorType,\n // but if so they are still suitable to be wrapped as DataProcessingError.\n if (isExternalError(normalizedError) ||\n normalizedError.errorType === NORMALIZED_ERROR_TYPE) {\n // Create a new DataProcessingError to wrap this external error\n const dataProcessingError = wrapError(normalizedError, (message) => new DataProcessingError(message));\n // Copy over the props above and any others added to this error since first being normalized\n dataProcessingError.addTelemetryProperties(normalizedError.getTelemetryProperties());\n return dataProcessingError;\n }\n return normalizedError;\n }\n}\n/**\n * Extracts specific properties from the provided message that we know are safe to log.\n *\n * @param messageLike - Message to include info about via telemetry props.\n *\n * @internal\n */\nexport const extractSafePropertiesFromMessage = (messageLike) => ({\n messageClientId: messageLike.clientId === null ? \"null\" : messageLike.clientId,\n messageSequenceNumber: messageLike.sequenceNumber,\n messageClientSequenceNumber: messageLike.clientSequenceNumber,\n messageReferenceSequenceNumber: messageLike.referenceSequenceNumber,\n messageMinimumSequenceNumber: messageLike.minimumSequenceNumber,\n messageTimestamp: messageLike.timestamp,\n});\n//# sourceMappingURL=error.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { v4 as uuid } from \"uuid\";\nimport { hasErrorInstanceId, isFluidError } from \"./fluidErrorBase.js\";\nimport { convertToBasePropertyType } from \"./logger.js\";\n/**\n * Determines if the provided value is an object but neither null nor an array.\n */\nconst isRegularObject = (value) => {\n return value !== null && !Array.isArray(value) && typeof value === \"object\";\n};\n/**\n * Inspect the given error for common \"safe\" props and return them.\n *\n * @internal\n */\nexport function extractLogSafeErrorProperties(error, sanitizeStack) {\n const removeMessageFromStack = (stack, errorName) => {\n if (!sanitizeStack) {\n return stack;\n }\n const stackFrames = stack.split(\"\\n\");\n stackFrames.shift(); // Remove \"[ErrorName]: [ErrorMessage]\"\n if (errorName !== undefined) {\n stackFrames.unshift(errorName); // Add \"[ErrorName]\"\n }\n return stackFrames.join(\"\\n\");\n };\n const message = typeof error?.message === \"string\"\n ? error.message\n : String(error);\n const safeProps = {\n message,\n };\n if (isRegularObject(error)) {\n const { errorType, stack, name } = error;\n if (typeof errorType === \"string\") {\n safeProps.errorType = errorType;\n }\n if (typeof stack === \"string\") {\n const errorName = typeof name === \"string\" ? name : undefined;\n safeProps.stack = removeMessageFromStack(stack, errorName);\n }\n }\n return safeProps;\n}\n/**\n * Type-guard for {@link @fluidframework/core-interfaces#ILoggingError}.\n *\n * @internal\n */\nexport const isILoggingError = (x) => typeof x?.getTelemetryProperties === \"function\";\n/**\n * Copy props from source onto target, but do not overwrite an existing prop that matches\n */\nfunction copyProps(target, source) {\n for (const key of Object.keys(source)) {\n if (target[key] === undefined) {\n target[key] = source[key];\n }\n }\n}\n/**\n * Normalize the given error yielding a valid Fluid Error\n * @returns A valid Fluid Error with any provided annotations applied\n * @param error - The error to normalize\n * @param annotations - Annotations to apply to the normalized error\n *\n * @internal\n */\nexport function normalizeError(error, annotations = {}) {\n if (isFluidError(error)) {\n // We can simply add the telemetry props to the error and return it\n error.addTelemetryProperties(annotations.props ?? {});\n return error;\n }\n // We have to construct a new Fluid Error, copying safe properties over\n const { message, stack } = extractLogSafeErrorProperties(error, false /* sanitizeStack */);\n const fluidError = new NormalizedLoggingError({\n message,\n stack,\n });\n // We need to preserve these properties which are used in a non-typesafe way throughout driver code (see #8743)\n // Anywhere they are set should be on a valid Fluid Error that would have been returned above,\n // but we can't prove it with the types, so adding this defensive measure.\n if (typeof error === \"object\" && error !== null) {\n const maybeHasRetry = error;\n let retryProps;\n if (\"canRetry\" in error) {\n retryProps ?? (retryProps = {});\n retryProps.canRetry = maybeHasRetry.canRetry;\n }\n if (\"retryAfterSeconds\" in error) {\n retryProps ?? (retryProps = {});\n retryProps.retryAfterSeconds = maybeHasRetry.retryAfterSeconds;\n }\n if (retryProps !== undefined) {\n Object.assign(fluidError, retryProps);\n }\n }\n if (typeof error !== \"object\") {\n // This is only interesting for non-objects\n fluidError.addTelemetryProperties({ typeofError: typeof error });\n }\n const errorTelemetryProps = LoggingError.typeCheck(error)\n ? error.getTelemetryProperties()\n : {\n untrustedOrigin: 1, // This will let us filter errors that did not originate from our own codebase\n // FUTURE: Once 2.0 becomes LTS, switch to this more explicit property name\n // Consider using a string to distinguish cases like \"dependency\" v. \"callback\"\n // errorRunningExternalCode: 1,\n };\n fluidError.addTelemetryProperties({\n ...errorTelemetryProps,\n ...annotations.props,\n });\n return fluidError;\n}\nlet stackPopulatedOnCreation;\n/**\n * The purpose of this function is to provide ability to capture stack context quickly.\n * Accessing new Error().stack is slow, and the slowest part is accessing stack property itself.\n * There are scenarios where we generate error with stack, but error is handled in most cases and\n * stack property is not accessed.\n * For such cases it's better to not read stack property right away, but rather delay it until / if it's needed\n * Some browsers will populate stack right away, others require throwing Error, so we do auto-detection on the fly.\n * @param stackTraceLimit - stack trace limit for an error\n * @returns Error object that has stack populated.\n *\n * @internal\n */\nexport function generateErrorWithStack(stackTraceLimit) {\n const ErrorConfig = Error;\n const originalStackTraceLimit = ErrorConfig.stackTraceLimit;\n if (stackTraceLimit !== undefined) {\n ErrorConfig.stackTraceLimit = stackTraceLimit;\n }\n const err = new Error(\"<>\");\n if (stackPopulatedOnCreation === undefined) {\n stackPopulatedOnCreation = err.stack !== undefined;\n }\n if (stackPopulatedOnCreation) {\n ErrorConfig.stackTraceLimit = originalStackTraceLimit;\n return err;\n }\n try {\n throw err;\n }\n catch (error) {\n ErrorConfig.stackTraceLimit = originalStackTraceLimit;\n return error;\n }\n}\n/**\n * Generate a stack at this callsite as if an error were thrown from here.\n * @param stackTraceLimit - stack trace limit for an error\n * @returns the callstack (does not throw)\n *\n * @internal\n */\nexport function generateStack(stackTraceLimit) {\n return generateErrorWithStack(stackTraceLimit).stack;\n}\n/**\n * Create a new error using newErrorFn, wrapping and caused by the given unknown error.\n * Copies the inner error's stack, errorInstanceId and telemetry props over to the new error if present\n * @param innerError - An error from untrusted/unknown origins\n * @param newErrorFn - callback that will create a new error given the original error's message\n * @returns A new error object \"wrapping\" the given error\n *\n * @internal\n */\nexport function wrapError(innerError, newErrorFn) {\n const { message, stack } = extractLogSafeErrorProperties(innerError, false /* sanitizeStack */);\n const newError = newErrorFn(message);\n if (stack !== undefined) {\n overwriteStack(newError, stack);\n }\n // Mark external errors with untrustedOrigin flag\n if (isExternalError(innerError)) {\n newError.addTelemetryProperties({\n untrustedOrigin: 1,\n // FUTURE: Once 2.0 becomes LTS, switch to this more explicit property name\n // Consider using a string to distinguish cases like \"dependency\" v. \"callback\"\n // errorRunningExternalCode: 1,\n });\n }\n // Reuse errorInstanceId\n if (hasErrorInstanceId(innerError)) {\n newError.overwriteErrorInstanceId(innerError.errorInstanceId);\n // For \"back-compat\" in the logs\n newError.addTelemetryProperties({ innerErrorInstanceId: innerError.errorInstanceId });\n }\n // Lastly, copy over all other telemetry properties. Note these will not overwrite existing properties\n // This will include the untrustedOrigin/errorRunningExternalCode info if the inner error itself was created from an external error\n if (isILoggingError(innerError)) {\n newError.addTelemetryProperties(innerError.getTelemetryProperties());\n }\n return newError;\n}\n/**\n * The same as wrapError, but also logs the innerError, including the wrapping error's instance ID.\n *\n * @typeParam T - The kind of wrapper error to create.\n *\n * @internal\n */\nexport function wrapErrorAndLog(innerError, newErrorFn, logger) {\n const newError = wrapError(innerError, newErrorFn);\n // This will match innerError.errorInstanceId if present (see wrapError)\n const errorInstanceId = newError.errorInstanceId;\n // For \"back-compat\" in the logs\n const wrappedByErrorInstanceId = errorInstanceId;\n logger.sendTelemetryEvent({\n eventName: \"WrapError\",\n errorInstanceId,\n wrappedByErrorInstanceId,\n }, innerError);\n return newError;\n}\n/**\n * Attempts to overwrite the error's stack\n *\n * There have been reports of certain JS environments where overwriting stack will throw.\n * If that happens, this adds the given stack as the telemetry property \"stack2\"\n *\n * @internal\n */\nexport function overwriteStack(error, stack) {\n try {\n Object.assign(error, { stack });\n }\n catch {\n error.addTelemetryProperties({ stack2: stack });\n }\n}\n/**\n * True for any error object that is an (optionally normalized) external error\n * False for any error we created and raised within the FF codebase via LoggingError base class,\n * or wrapped in a well-known error type\n *\n * @internal\n */\nexport function isExternalError(error) {\n // LoggingErrors are an internal FF error type. However, an external error can be converted\n // into a LoggingError if it is normalized. In this case we must use the untrustedOrigin/errorRunningExternalCode flag to\n // determine whether the original error was in fact external.\n if (LoggingError.typeCheck(error)) {\n if (error.errorType === NORMALIZED_ERROR_TYPE) {\n const props = error.getTelemetryProperties();\n // NOTE: errorRunningExternalCode is not currently used - once this \"read\" code reaches LTS,\n // we can switch to writing this more explicit property\n return props.untrustedOrigin === 1 || !!props.errorRunningExternalCode;\n }\n return false;\n }\n return true;\n}\n/**\n * Type guard to identify if a particular telemetry property appears to be a\n * {@link @fluidframework/core-interfaces#Tagged} telemetry property.\n *\n * @internal\n */\nexport function isTaggedTelemetryPropertyValue(x) {\n return typeof x?.tag === \"string\";\n}\n// TODO: Use `unknown` instead (API breaking change)\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Borrowed from\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#examples}\n * Avoids runtime errors with circular references.\n * Not ideal, as will cut values that are not necessarily circular references.\n * Could be improved by implementing Node's util.inspect() for browser (minus all the coloring code)\n *\n * @internal\n */\nexport const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return \"\";\n }\n seen.add(value);\n }\n return value;\n };\n};\n/* eslint-enable @typescript-eslint/no-explicit-any */\n/**\n * Base class for \"trusted\" errors we create, whose properties can generally be logged to telemetry safely.\n * All properties set on the object, or passed in (via the constructor or addTelemetryProperties),\n * will be logged in accordance with their tag, if present.\n *\n * PLEASE take care to avoid setting sensitive data on this object without proper tagging!\n *\n * @internal\n */\nexport class LoggingError extends Error {\n get errorInstanceId() {\n return this._errorInstanceId;\n }\n overwriteErrorInstanceId(id) {\n this._errorInstanceId = id;\n }\n /**\n * Create a new LoggingError\n * @param message - Error message to use for Error base class\n * @param props - telemetry props to include on the error for when it's logged\n * @param omitPropsFromLogging - properties by name to omit from telemetry props\n */\n constructor(message, props, omitPropsFromLogging = new Set()) {\n super(message);\n this.omitPropsFromLogging = omitPropsFromLogging;\n this._errorInstanceId = uuid();\n // Don't log this list itself, or the private _errorInstanceId\n omitPropsFromLogging.add(\"omitPropsFromLogging\");\n omitPropsFromLogging.add(\"_errorInstanceId\");\n if (props) {\n this.addTelemetryProperties(props);\n }\n }\n /**\n * Determines if a given object is an instance of a LoggingError\n * @param object - any object\n * @returns true if the object is an instance of a LoggingError, false if not.\n */\n static typeCheck(object) {\n if (typeof object === \"object\" && object !== null) {\n return (typeof object.addTelemetryProperties === \"function\" &&\n typeof object.getTelemetryProperties === \"function\" &&\n typeof object.errorInstanceId === \"string\");\n }\n return false;\n }\n /**\n * Add additional properties to be logged\n */\n addTelemetryProperties(props) {\n copyProps(this, props);\n }\n /**\n * Get all properties fit to be logged to telemetry for this error\n */\n getTelemetryProperties() {\n // Only pick properties fit for telemetry out of all of this object's enumerable properties.\n const telemetryProps = {};\n for (const key of Object.keys(this)) {\n if (this.omitPropsFromLogging.has(key)) {\n continue;\n }\n const val = this[key];\n // Ensure only valid props get logged, since props of logging error could be in any shape\n telemetryProps[key] = convertToBasePropertyType(val);\n }\n // Ensure a few extra props always exist\n return {\n ...telemetryProps,\n stack: this.stack,\n message: this.message,\n errorInstanceId: this._errorInstanceId,\n };\n }\n}\n/**\n * The Error class used when normalizing an external error\n *\n * @internal\n */\nexport const NORMALIZED_ERROR_TYPE = \"genericError\";\n/**\n * Subclass of LoggingError returned by normalizeError\n *\n * @internal\n */\nclass NormalizedLoggingError extends LoggingError {\n constructor(errorProps) {\n super(errorProps.message);\n // errorType \"genericError\" is used as a default value throughout the code.\n // Note that this matches ContainerErrorTypes/DriverErrorTypes' genericError\n this.errorType = NORMALIZED_ERROR_TYPE;\n if (errorProps.stack !== undefined) {\n overwriteStack(this, errorProps.stack);\n }\n }\n}\n//# sourceMappingURL=errorLogging.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\n/**\n * Event Emitter helper class\n *\n * @remarks\n * Any exceptions thrown by listeners will be caught and raised through \"error\" event.\n * Any exception thrown by \"error\" listeners will propagate to the caller.\n * @privateRemarks\n * This probably doesn't belong in this package, as it is not telemetry-specific, and is really only intended for internal fluid-framework use.\n * We should consider moving it to the `core-utils` package.\n * @legacy\n * @alpha\n */\nexport class EventEmitterWithErrorHandling extends TypedEventEmitter {\n constructor(\n // TODO: use `unknown` instead (breaking API change)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n errorHandler) {\n super();\n this.errorHandler = errorHandler;\n }\n emit(event, ...args) {\n try {\n return super.emit(event, ...args);\n }\n catch (error) {\n this.errorHandler(event, error);\n return true;\n }\n }\n}\n//# sourceMappingURL=eventEmitterWithErrorHandling.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Note: The contents of this file really don't belong in this package, as they are only intended for internal use.\n * They should be moved into the `core-utils` package in the future.\n */\n/**\n * @internal\n */\nexport const connectedEventName = \"connected\";\n/**\n * @internal\n */\nexport const disconnectedEventName = \"disconnected\";\n// eslint-disable-next-line jsdoc/require-description\n/**\n * @internal\n */\nexport function safeRaiseEvent(emitter, logger, event, ...args) {\n try {\n emitter.emit(event, ...args);\n }\n catch (error) {\n logger.sendErrorEvent({ eventName: \"RaiseEventError\", event }, error);\n }\n}\n/**\n * Raises events pertaining to the connection\n * @param logger - The logger to log telemetry\n * @param emitter - The event emitter instance\n * @param connected - A boolean tracking whether the connection was in a connected state or not\n * @param clientId - The connected/disconnected clientId\n * @param disconnectedReason - The reason for the connection to be disconnected (Used for telemetry purposes only)\n *\n * @internal\n */\nexport function raiseConnectedEvent(logger, emitter, connected, clientId, disconnectedReason) {\n try {\n if (connected) {\n emitter.emit(connectedEventName, clientId);\n }\n else {\n emitter.emit(disconnectedEventName, disconnectedReason);\n }\n }\n catch (error) {\n logger.sendErrorEvent({ eventName: \"RaiseConnectedEventError\" }, error);\n }\n}\n//# sourceMappingURL=events.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nconst hasTelemetryPropFunctions = (x) => typeof x?.getTelemetryProperties === \"function\" &&\n typeof x?.addTelemetryProperties === \"function\";\n/**\n * Type guard for error data containing the {@link IFluidErrorBase.errorInstanceId} property.\n *\n * @internal\n */\nexport const hasErrorInstanceId = (x) => typeof x?.errorInstanceId === \"string\";\n/**\n * Type guard for {@link IFluidErrorBase}.\n *\n * @internal\n */\nexport function isFluidError(error) {\n return (typeof error?.errorType === \"string\" &&\n typeof error?.message === \"string\" &&\n hasErrorInstanceId(error) &&\n hasTelemetryPropFunctions(error));\n}\n//# sourceMappingURL=fluidErrorBase.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { LogLevel, } from \"@fluidframework/core-interfaces\";\nimport { CachedConfigProvider, loggerIsMonitoringContext, mixinMonitoringContext, } from \"./config.js\";\nimport { extractLogSafeErrorProperties, generateStack, isILoggingError, isTaggedTelemetryPropertyValue, } from \"./errorLogging.js\";\n/**\n * Broad classifications to be applied to individual properties as they're prepared to be logged to telemetry.\n *\n * @privateRemarks Please do not modify existing entries, to maintain backwards compatibility.\n *\n * @internal\n */\nexport var TelemetryDataTag;\n(function (TelemetryDataTag) {\n /**\n * Data containing terms or IDs from code packages that may have been dynamically loaded\n */\n TelemetryDataTag[\"CodeArtifact\"] = \"CodeArtifact\";\n /**\n * Personal data of a variety of classifications that pertains to the user\n */\n TelemetryDataTag[\"UserData\"] = \"UserData\";\n})(TelemetryDataTag || (TelemetryDataTag = {}));\n/**\n * Attempts to parse number from string.\n * If it fails, it will return the original string.\n *\n * @remarks\n * Used to make telemetry data typed (and support math operations, like comparison),\n * in places where we do expect numbers (like contentsize/duration property in http header).\n *\n * @internal\n */\n// eslint-disable-next-line @rushstack/no-new-null\nexport function numberFromString(str) {\n if (str === undefined || str === null) {\n return undefined;\n }\n const num = Number(str);\n return Number.isNaN(num) ? str : num;\n}\n// TODO: add docs\n// eslint-disable-next-line jsdoc/require-description\n/**\n * @internal\n */\nexport function formatTick(tick) {\n return Math.floor(tick);\n}\n/**\n * String used to concatenate the namespace of parent loggers and their child loggers.\n * @internal\n */\nexport const eventNamespaceSeparator = \":\";\n/**\n * TelemetryLogger class contains various helper telemetry methods,\n * encoding in one place schemas for various types of Fluid telemetry events.\n * Creates sub-logger that appends properties to all events\n */\nexport class TelemetryLogger {\n static sanitizePkgName(name) {\n return name.replace(\"@\", \"\").replace(\"/\", \"-\");\n }\n /**\n * Take an unknown error object and add the appropriate info from it to the event. Message and stack will be copied\n * over from the error object, along with other telemetry properties if it's an ILoggingError.\n * @param event - Event being logged\n * @param error - Error to extract info from\n * @param fetchStack - Whether to fetch the current callstack if error.stack is undefined\n */\n static prepareErrorObject(event, error, fetchStack) {\n const { message, errorType, stack } = extractLogSafeErrorProperties(error, true /* sanitizeStack */);\n // First, copy over error message, stack, and errorType directly (overwrite if present on event)\n event.stack = stack;\n event.error = message; // Note that the error message goes on the 'error' field\n event.errorType = errorType;\n if (isILoggingError(error)) {\n // Add any other telemetry properties from the LoggingError\n const telemetryProp = error.getTelemetryProperties();\n for (const key of Object.keys(telemetryProp)) {\n if (event[key] !== undefined) {\n // Don't overwrite existing properties on the event\n continue;\n }\n event[key] = telemetryProp[key];\n }\n }\n // Collect stack if we were not able to extract it from error\n if (event.stack === undefined && fetchStack) {\n event.stack = generateStack();\n }\n }\n constructor(namespace, properties) {\n this.namespace = namespace;\n this.properties = properties;\n }\n /**\n * Send a telemetry event with the logger\n *\n * @param event - the event to send\n * @param error - optional error object to log\n * @param logLevel - optional level of the log. It category of event is set as error,\n * then the logLevel will be upgraded to be an error.\n */\n sendTelemetryEvent(event, error, logLevel = LogLevel.default) {\n this.sendTelemetryEventCore({ ...event, category: event.category ?? \"generic\" }, error, event.category === \"error\" ? LogLevel.error : logLevel);\n }\n /**\n * Send a telemetry event with the logger\n *\n * @param event - the event to send\n * @param error - optional error object to log\n * @param logLevel - optional level of the log.\n */\n sendTelemetryEventCore(event, error, logLevel) {\n const newEvent = convertToBaseEvent(event);\n if (error !== undefined) {\n TelemetryLogger.prepareErrorObject(newEvent, error, false);\n }\n // Will include Nan & Infinity, but probably we do not care\n if (typeof newEvent.duration === \"number\") {\n newEvent.duration = formatTick(newEvent.duration);\n }\n this.send(newEvent, logLevel);\n }\n /**\n * Send an error telemetry event with the logger\n *\n * @param event - the event to send\n * @param error - optional error object to log\n */\n sendErrorEvent(event, error) {\n this.sendTelemetryEventCore({\n // ensure the error field has some value,\n // this can and will be overridden by event, or error\n error: event.eventName,\n ...event,\n category: \"error\",\n }, error, LogLevel.error);\n }\n /**\n * Send a performance telemetry event with the logger\n *\n * @param event - Event to send\n * @param error - optional error object to log\n * @param logLevel - optional level of the log. It category of event is set as error,\n * then the logLevel will be upgraded to be an error.\n */\n sendPerformanceEvent(event, error, logLevel = LogLevel.default) {\n const perfEvent = {\n ...event,\n category: event.category ?? \"performance\",\n };\n this.sendTelemetryEventCore(perfEvent, error, perfEvent.category === \"error\" ? LogLevel.error : logLevel);\n }\n prepareEvent(event) {\n const includeErrorProps = event.category === \"error\" || event.error !== undefined;\n const newEvent = {\n ...event,\n };\n if (this.namespace !== undefined) {\n newEvent.eventName = `${this.namespace}${TelemetryLogger.eventNamespaceSeparator}${newEvent.eventName}`;\n }\n return this.extendProperties(newEvent, includeErrorProps);\n }\n extendProperties(toExtend, includeErrorProps) {\n const eventLike = toExtend;\n if (this.properties) {\n const properties = [];\n properties.push(this.properties.all);\n if (includeErrorProps) {\n properties.push(this.properties.error);\n }\n for (const props of properties) {\n if (props !== undefined) {\n for (const key of Object.keys(props)) {\n if (eventLike[key] !== undefined) {\n continue;\n }\n const getterOrValue = props[key];\n // If this throws, hopefully it is handled elsewhere\n const value = typeof getterOrValue === \"function\" ? getterOrValue() : getterOrValue;\n if (value !== undefined) {\n eventLike[key] = value;\n }\n }\n }\n }\n }\n return toExtend;\n }\n}\n/**\n * {@inheritDoc eventNamespaceSeparator}\n */\nTelemetryLogger.eventNamespaceSeparator = eventNamespaceSeparator;\n/**\n * @deprecated 0.56, remove TaggedLoggerAdapter once its usage is removed from\n * container-runtime. Issue: #8191\n * TaggedLoggerAdapter class can add tag handling to your logger.\n *\n * @internal\n */\nexport class TaggedLoggerAdapter {\n constructor(logger) {\n this.logger = logger;\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseLogger.send}\n */\n send(eventWithTagsMaybe) {\n const newEvent = {\n category: eventWithTagsMaybe.category,\n eventName: eventWithTagsMaybe.eventName,\n };\n for (const key of Object.keys(eventWithTagsMaybe)) {\n const taggableProp = eventWithTagsMaybe[key];\n const { value, tag } = typeof taggableProp === \"object\"\n ? taggableProp\n : { value: taggableProp, tag: undefined };\n switch (tag) {\n case undefined: {\n // No tag means we can log plainly\n newEvent[key] = value;\n break;\n }\n case \"PackageData\": // For back-compat\n case TelemetryDataTag.CodeArtifact: {\n // For Microsoft applications, CodeArtifact is safe for now\n // (we don't load 3P code in 1P apps)\n newEvent[key] = value;\n break;\n }\n case TelemetryDataTag.UserData: {\n // Strip out anything tagged explicitly as UserData.\n // Alternate strategy would be to hash these props\n newEvent[key] = \"REDACTED (UserData)\";\n break;\n }\n default: {\n // If we encounter a tag we don't recognize\n // then we must assume we should scrub.\n newEvent[key] = \"REDACTED (unknown tag)\";\n break;\n }\n }\n }\n this.logger.send(newEvent);\n }\n}\n/**\n * Create a child logger based on the provided props object.\n *\n * @remarks\n * Passing in no props object (i.e. undefined) will return a logger that is effectively a no-op.\n *\n * @param props - logger is the base logger the child will log to after it's processing, namespace will be prefixed to all event names, properties are default properties that will be applied events.\n *\n * @legacy\n * @alpha\n */\nexport function createChildLogger(props) {\n return ChildLogger.create(props?.logger, props?.namespace, props?.properties);\n}\n/**\n * ChildLogger class contains various helper telemetry methods,\n * encoding in one place schemas for various types of Fluid telemetry events.\n * Creates sub-logger that appends properties to all events.\n */\nexport class ChildLogger extends TelemetryLogger {\n /**\n * Create child logger\n * @param baseLogger - Base logger to use to output events. If undefined, proper child logger\n * is created, but it does not send telemetry events anywhere.\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n */\n static create(baseLogger, namespace, properties) {\n // if we are creating a child of a child, rather than nest, which will increase\n // the callstack overhead, just generate a new logger that includes everything from the previous\n if (baseLogger instanceof ChildLogger) {\n const combinedProperties = {};\n for (const extendedProps of [baseLogger.properties, properties]) {\n if (extendedProps !== undefined) {\n if (extendedProps.all !== undefined) {\n combinedProperties.all = {\n ...combinedProperties.all,\n ...extendedProps.all,\n };\n }\n if (extendedProps.error !== undefined) {\n combinedProperties.error = {\n ...combinedProperties.error,\n ...extendedProps.error,\n };\n }\n }\n }\n const combinedNamespace = baseLogger.namespace === undefined\n ? namespace\n : namespace === undefined\n ? baseLogger.namespace\n : `${baseLogger.namespace}${TelemetryLogger.eventNamespaceSeparator}${namespace}`;\n const child = new ChildLogger(baseLogger.baseLogger, combinedNamespace, combinedProperties);\n if (!loggerIsMonitoringContext(child) && loggerIsMonitoringContext(baseLogger)) {\n mixinMonitoringContext(child, baseLogger.config);\n }\n return child;\n }\n return new ChildLogger(baseLogger ?? { send() { } }, namespace, properties);\n }\n constructor(baseLogger, namespace, properties) {\n super(namespace, properties);\n this.baseLogger = baseLogger;\n // propagate the monitoring context\n if (loggerIsMonitoringContext(baseLogger)) {\n mixinMonitoringContext(this, new CachedConfigProvider(this, baseLogger.config));\n }\n }\n get minLogLevel() {\n return this.baseLogger.minLogLevel;\n }\n shouldFilterOutEvent(event, logLevel) {\n const eventLogLevel = logLevel ?? LogLevel.default;\n const configLogLevel = this.baseLogger.minLogLevel ?? LogLevel.default;\n // Filter out in case event log level is below what is wanted in config.\n return eventLogLevel < configLogLevel;\n }\n /**\n * Send an event with the logger\n *\n * @param event - the event to send\n */\n send(event, logLevel) {\n if (this.shouldFilterOutEvent(event, logLevel)) {\n return;\n }\n this.baseLogger.send(this.prepareEvent(event), logLevel);\n }\n}\n/**\n * Create a logger which logs to multiple other loggers based on the provided props object.\n *\n * @internal\n */\nexport function createMultiSinkLogger(props) {\n return new MultiSinkLogger(props.namespace, props.properties, props.loggers?.filter((l) => l !== undefined), props.tryInheritProperties);\n}\n/**\n * Multi-sink logger\n * Takes multiple ITelemetryBaseLogger objects (sinks) and logs all events into each sink\n */\nexport class MultiSinkLogger extends TelemetryLogger {\n /**\n * Create multiple sink logger (i.e. logger that sends events to multiple sinks)\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param loggers - The list of loggers to use as sinks\n * @param tryInheritProperties - Will attempted to copy those loggers properties to this loggers if they are of a known type e.g. one from this package\n */\n constructor(namespace, properties, loggers = [], tryInheritProperties) {\n let realProperties = properties === undefined ? undefined : { ...properties };\n if (tryInheritProperties === true) {\n const merge = (realProperties ?? (realProperties = {}));\n loggers\n .filter((l) => l instanceof TelemetryLogger)\n .map((l) => l.properties ?? {})\n // eslint-disable-next-line unicorn/no-array-for-each\n .forEach((cv) => {\n // eslint-disable-next-line unicorn/no-array-for-each\n Object.keys(cv).forEach((k) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n merge[k] = { ...cv[k], ...merge?.[k] };\n });\n });\n }\n super(namespace, realProperties);\n this.loggers = loggers;\n this._minLogLevelOfAllLoggers = LogLevel.default;\n this.calculateMinLogLevel();\n }\n get minLogLevel() {\n return this._minLogLevelOfAllLoggers;\n }\n calculateMinLogLevel() {\n if (this.loggers.length > 0) {\n const logLevels = [];\n for (const logger of this.loggers) {\n logLevels.push(logger.minLogLevel ?? LogLevel.default);\n }\n this._minLogLevelOfAllLoggers = Math.min(...logLevels);\n }\n }\n /**\n * Add logger to send all events to\n * @param logger - Logger to add\n */\n addLogger(logger) {\n if (logger !== undefined && logger !== null) {\n this.loggers.push(logger);\n // Update in case the logLevel of added logger is less than the current.\n this.calculateMinLogLevel();\n }\n }\n /**\n * Send an event to the loggers\n *\n * @param event - the event to send to all the registered logger\n */\n send(event) {\n const newEvent = this.prepareEvent(event);\n for (const logger of this.loggers) {\n logger.send(newEvent);\n }\n }\n}\n/**\n * Helper class to log performance events.\n *\n * @internal\n */\nexport class PerformanceEvent {\n /**\n * Creates an instance of {@link PerformanceEvent} and starts measurements\n * @param logger - the logger to be used for publishing events\n * @param event - the logging event details which will be published with the performance measurements\n * @param markers - See {@link IPerformanceEventMarkers}\n * @param recordHeapSize - whether or not to also record memory performance\n * @param emitLogs - should this instance emit logs. If set to false, logs will not be emitted to the logger,\n * but measurements will still be performed and any specified markers will be generated.\n * @returns An instance of {@link PerformanceEvent}\n */\n static start(logger, event, markers, emitLogs = true) {\n return new PerformanceEvent(logger, event, markers, emitLogs);\n }\n /**\n * Measure a synchronous task\n * @param logger - the logger to be used for publishing events\n * @param event - the logging event details which will be published with the performance measurements\n * @param callback - the task to be executed and measured\n * @param markers - See {@link IPerformanceEventMarkers}\n * @param sampleThreshold - events with the same name and category will be sent to the logger\n * only when we hit this many executions of the task. If unspecified, all events will be sent.\n * @returns The results of the executed task\n *\n * @remarks Note that if the \"same\" event (category + eventName) would be emitted by different\n * tasks (`callback`), `sampleThreshold` is still applied only based on the event's category + eventName,\n * so executing either of the tasks will increase the internal counter and they\n * effectively \"share\" the sampling rate for the event.\n */\n static timedExec(logger, event, callback, markers, sampleThreshold = 1) {\n const perfEvent = PerformanceEvent.start(logger, event, markers, PerformanceEvent.shouldReport(event, sampleThreshold));\n try {\n const ret = callback(perfEvent);\n perfEvent.autoEnd();\n return ret;\n }\n catch (error) {\n perfEvent.cancel(undefined, error);\n throw error;\n }\n }\n /**\n * Measure an asynchronous task\n * @param logger - the logger to be used for publishing events\n * @param event - the logging event details which will be published with the performance measurements\n * @param callback - the task to be executed and measured\n * @param markers - See {@link IPerformanceEventMarkers}\n * @param recordHeapSize - whether or not to also record memory performance\n * @param sampleThreshold - events with the same name and category will be sent to the logger\n * only when we hit this many executions of the task. If unspecified, all events will be sent.\n * @returns The results of the executed task\n *\n * @remarks Note that if the \"same\" event (category + eventName) would be emitted by different\n * tasks (`callback`), `sampleThreshold` is still applied only based on the event's category + eventName,\n * so executing either of the tasks will increase the internal counter and they\n * effectively \"share\" the sampling rate for the event.\n */\n static async timedExecAsync(logger, event, callback, markers, sampleThreshold = 1) {\n const perfEvent = PerformanceEvent.start(logger, event, markers, PerformanceEvent.shouldReport(event, sampleThreshold));\n try {\n const ret = await callback(perfEvent);\n perfEvent.autoEnd();\n return ret;\n }\n catch (error) {\n perfEvent.cancel(undefined, error);\n throw error;\n }\n }\n get duration() {\n return performance.now() - this.startTime;\n }\n constructor(logger, event, markers = { end: true, cancel: \"generic\" }, emitLogs = true) {\n this.logger = logger;\n this.markers = markers;\n this.emitLogs = emitLogs;\n this.startTime = performance.now();\n this.event = { ...event };\n if (this.markers.start) {\n this.reportEvent(\"start\");\n }\n if (typeof window === \"object\" && window?.performance?.mark) {\n this.startMark = `${event.eventName}-start`;\n window.performance.mark(this.startMark);\n }\n }\n reportProgress(props, eventNameSuffix = \"update\") {\n this.reportEvent(eventNameSuffix, props);\n }\n autoEnd() {\n // Event might have been cancelled or ended in the callback\n if (this.event && this.markers.end) {\n this.reportEvent(\"end\");\n }\n this.performanceEndMark();\n this.event = undefined;\n }\n end(props) {\n this.reportEvent(\"end\", props);\n this.performanceEndMark();\n this.event = undefined;\n }\n performanceEndMark() {\n if (this.startMark && this.event) {\n const endMark = `${this.event.eventName}-end`;\n window.performance.mark(endMark);\n window.performance.measure(`${this.event.eventName}`, this.startMark, endMark);\n this.startMark = undefined;\n }\n }\n cancel(props, error) {\n if (this.markers.cancel !== undefined) {\n this.reportEvent(\"cancel\", { category: this.markers.cancel, ...props }, error);\n }\n this.event = undefined;\n }\n /**\n * Report the event, if it hasn't already been reported.\n */\n reportEvent(eventNameSuffix, props, error) {\n // There are strange sequences involving multiple Promise chains\n // where the event can be cancelled and then later a callback is invoked\n // and the caller attempts to end directly, e.g. issue #3936. Just return.\n if (!this.event) {\n return;\n }\n if (!this.emitLogs) {\n return;\n }\n const event = { ...this.event, ...props };\n event.eventName = `${event.eventName}_${eventNameSuffix}`;\n if (eventNameSuffix !== \"start\") {\n event.duration = this.duration;\n }\n this.logger.sendPerformanceEvent(event, error);\n }\n static shouldReport(event, sampleThreshold) {\n const eventKey = `.${event.category}.${event.eventName}`;\n const hitCount = PerformanceEvent.eventHits.get(eventKey) ?? 0;\n PerformanceEvent.eventHits.set(eventKey, hitCount >= sampleThreshold ? 1 : hitCount + 1);\n return hitCount % sampleThreshold === 0;\n }\n}\nPerformanceEvent.eventHits = new Map();\n/**\n * Takes in an event object, and converts all of its values to a basePropertyType.\n * In the case of an invalid property type, the value will be converted to an error string.\n * @param event - Event with fields you want to stringify.\n */\nfunction convertToBaseEvent({ category, eventName, ...props }) {\n const newEvent = { category, eventName };\n for (const key of Object.keys(props)) {\n newEvent[key] = convertToBasePropertyType(props[key]);\n }\n return newEvent;\n}\n/**\n * Takes in value, and does one of 4 things.\n * if value is of primitive type - returns the original value.\n * If the value is a flat array or object - returns a stringified version of the array/object.\n * If the value is an object of type Tagged - returns the object\n * with its values recursively converted to base property Type.\n * If none of these cases are reached - returns an error string\n * @param x - value passed in to convert to a base property type\n */\nexport function convertToBasePropertyType(x) {\n return isTaggedTelemetryPropertyValue(x)\n ? {\n value: convertToBasePropertyTypeUntagged(x.value),\n tag: x.tag,\n }\n : convertToBasePropertyTypeUntagged(x);\n}\nfunction convertToBasePropertyTypeUntagged(x) {\n switch (typeof x) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n case \"undefined\": {\n return x;\n }\n case \"object\": {\n // We assume this is an array or flat object based on the input types\n return JSON.stringify(x);\n }\n default: {\n // should never reach this case based on the input types\n console.error(`convertToBasePropertyTypeUntagged: INVALID PROPERTY (typed as ${typeof x})`);\n return `INVALID PROPERTY (typed as ${typeof x})`;\n }\n }\n}\n/**\n * Tags all given `values` with the same `tag`.\n *\n * @param tag - The tag with which all `values` will be annotated.\n * @param values - The values to be tagged.\n *\n * @remarks\n * It supports properties of type {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType},\n * as well as callbacks that return that type.\n *\n * @example Sample usage\n * ```typescript\n * {\n * \t// ...Other properties being added to a telemetry event\n * \t...tagData(\"someTag\", {foo: 1, bar: 2}),\n * \t// ...\n * }\n * ```\n * This will result in `foo` and `bar` added to the event with their values tagged.\n *\n * @internal\n */\nexport const tagData = (tag, values) => \n// eslint-disable-next-line @typescript-eslint/no-unsafe-return\nObject.entries(values)\n .filter((e) => e[1] !== undefined)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((pv, cv) => {\n const [key, value] = cv;\n // The ternary form is less legible in this case.\n // eslint-disable-next-line unicorn/prefer-ternary\n if (typeof value === \"function\") {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n pv[key] = () => {\n return { tag, value: value() };\n };\n }\n else {\n pv[key] = { tag, value };\n }\n return pv;\n}, {});\n/**\n * Tags all provided `values` as {@link TelemetryDataTag.CodeArtifact}.\n *\n * @param values - The values to be tagged.\n *\n * @remarks\n * It supports properties of type {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType},\n * as well as callbacks that return that type.\n *\n * @example Sample usage\n * ```typescript\n * {\n * \t// ...Other properties being added to a telemetry event\n * \t...tagCodeArtifacts(\"someTag\", {foo: 1, bar: 2}),\n * \t// ...\n * }\n * ```\n * This will result in `foo` and `bar` added to the event with their values tagged as {@link TelemetryDataTag.CodeArtifact}.\n *\n * @see {@link tagData}\n *\n * @internal\n */\nexport const tagCodeArtifacts = (values) => tagData(TelemetryDataTag.CodeArtifact, values);\n//# sourceMappingURL=logger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Function to round a number to a specified number of decimal places.\n *\n * @param number - The number to round.\n * @param decimalPlaces - The number of decimal places to round to.\n * @returns The rounded number.\n */\nexport function roundToDecimalPlaces(number, decimalPlaces) {\n const factor = Math.pow(10, decimalPlaces);\n return Math.round(number * factor) / factor;\n}\n//# sourceMappingURL=mathTools.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Utility counter which will send event only if the provided value is above a configured threshold.\n *\n * @internal\n */\nexport class ThresholdCounter {\n constructor(threshold, logger, thresholdMultiple = threshold) {\n this.threshold = threshold;\n this.logger = logger;\n this.thresholdMultiple = thresholdMultiple;\n }\n /**\n * Sends the value if it's above the treshold.\n */\n send(eventName, value) {\n if (value < this.threshold) {\n return;\n }\n this.logger.sendPerformanceEvent({\n eventName,\n value,\n });\n }\n /**\n * Sends the value if it's above the threshold\n * and a multiple of the threshold.\n *\n * To be used in scenarios where we'd like to record a\n * threshold violation while reducing telemetry noise.\n */\n sendIfMultiple(eventName, value) {\n if (value === this.thresholdMultiple) {\n this.logger.sendPerformanceEvent({\n eventName,\n value,\n });\n // reduce number of \"multiple\" events.\n this.thresholdMultiple = this.thresholdMultiple * 2;\n }\n }\n}\n//# sourceMappingURL=thresholdCounter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { loggerToMonitoringContext } from \"./config.js\";\n/**\n * Wraps around an existing logger matching the {@link ITelemetryLoggerExt} interface and provides the ability to only log a subset of events using a sampling strategy provided by an ${@link IEventSampler}.\n * You can chose to not provide an event sampler which is effectively a no-op, meaning that it will be treated as if the sampler always returns true.\n *\n * @remarks\n * The sampling functionality uses the Fluid telemetry logging configuration along with the optionally provided event sampling callback to determine whether an event should\n * be logged or not.\n *\n * Configuration object parameters:\n * 'Fluid.Telemetry.DisableSampling': if this config value is set to true, all events will be unsampled and therefore logged.\n * Otherwise only a sample will be logged according to the provided event sampler callback.\n *\n * Note that the same sampler is used for all APIs of the returned logger. If you want separate events flowing through the returned logger to be sampled separately, the {@link IEventSampler} you provide should track them separately.\n *\n * @internal\n */\nexport function createSampledLogger(logger, eventSampler, skipLoggingWhenSamplingIsDisabled) {\n const monitoringContext = loggerToMonitoringContext(logger);\n const isSamplingDisabled = monitoringContext.config.getBoolean(\"Fluid.Telemetry.DisableSampling\") ?? false;\n const sampledLogger = {\n send: (event) => {\n // The sampler uses the following logic for sending events:\n // 1. If isSamplingDisabled is true, then this means events should be unsampled. Therefore we send the event without any checks.\n // 2. If isSamplingDisabled is false, then event should be sampled using the event sampler, if the sampler is not defined just send all events, other use the eventSampler.sample() method.\n // 3. If skipLoggingWhenSamplingIsDisabled is true, then no event is sent.\n if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {\n if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {\n return;\n }\n logger.send(event);\n }\n },\n sendTelemetryEvent: (event) => {\n if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {\n if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {\n return;\n }\n logger.sendTelemetryEvent(event);\n }\n },\n sendErrorEvent: (event) => {\n if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {\n if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {\n return;\n }\n logger.sendErrorEvent(event);\n }\n },\n sendPerformanceEvent: (event) => {\n if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {\n if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {\n return;\n }\n logger.sendPerformanceEvent(event);\n }\n },\n isSamplingDisabled,\n };\n return sampledLogger;\n}\n/**\n * Runs the specified function and returns an object with the time it took to run as well as any output from it.\n * @remarks Useful in conjunction with {@link TelemetryEventBatcher}.\n *\n * @param codeToMeasure - The code to be executed and measured.\n * @returns The total duration of the code execution and whatever the passed-in code block returns.\n * @internal\n */\nexport function measure(codeToMeasure) {\n const start = performance.now();\n const output = codeToMeasure();\n const duration = performance.now() - start;\n return { duration, output };\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Helper for {@link Brand}.\n *\n * See `MakeNominal` for some more details.\n *\n * Do not use this class with `instanceof`: this will always be false at runtime,\n * but the compiler may think it's true in some cases.\n *\n * @remarks\n * This is covariant over ValueType.\n * This is suitable for when ValueType is immutable (like string or number),\n * which is the common use-case for branding.\n *\n * @privateRemarks\n * This is split out into its own type as that's the only way to:\n *\n * - make the member protected (so you can't accidentally try and access it).\n * - get nominal typing (so types produced without using this class can never be assignable to it).\n *\n * @sealed\n * @internal\n */\nexport class BrandedType {\n /**\n * This class should never exist at runtime, so make it un-constructable.\n */\n constructor() { }\n /**\n * Since this class is a compile time only type brand, `instanceof` will never work with it.\n * This `Symbol.hasInstance` implementation ensures that `instanceof` will error if used,\n * and in TypeScript 5.3 and newer will produce a compile time error if used.\n */\n static [Symbol.hasInstance](value) {\n throw new UsageError(\"BrandedType is a compile time type brand not a real class that can be used with `instanceof` at runtime.\");\n }\n}\n/**\n * Adds a type {@link Brand} to a value.\n *\n * Only do this when specifically allowed by the requirements of the type being converted to.\n * @privateRemarks\n * Leaving `T` unconstrained here allows for better type inference when branding unions.\n * For example when assigning `brand(number)` a number to an optional branded number field,\n * constraining T to `BrandedType` causes the inference to fail and requires explicitly providing the type parameter.\n * For example leaving T unconstrained instead allows the union of `BrandedType | undefined` to distribute over the conditional allowing the branding only the the union members which should be branded.\n * This does not permit branding an optional value into an optional field since non branded union members are still excluded from input to this function:\n * this is an intended restriction as it causes compile errors for misuse of this function (like using brand when the relevant type is not a branded type).\n */\nexport function brand(value) {\n return value;\n}\n//# sourceMappingURL=brand.js.map","/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\n","/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n","/** Symbol key applied to transform types */\nexport const TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexport const ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexport const OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexport const Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexport const Kind = Symbol.for('TypeBox.Kind');\n","import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nexport function IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nexport function IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nexport function IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nexport function IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nexport function IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nexport function IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nexport function IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nexport function IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nexport function IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nexport function IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n","import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nexport class TypeGuardUnknownTypeError extends TypeBoxError {\n}\nconst KnownTypes = [\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nexport function IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArray */\nexport function IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nexport function IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nexport function IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nexport function IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nexport function IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nexport function IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nexport function IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nexport function IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nexport function IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion[]> */\nexport function IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]) && !KnownTypes.includes(value[Kind]);\n}\n/** Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n","/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nexport function Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nexport function Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nexport function Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nexport function Get(format) {\n return map.get(format);\n}\n","/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nexport function Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nexport function Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nexport function Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nexport function Get(kind) {\n return map.get(kind);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options = {}) {\n return { ...options, [Kind]: 'Any' };\n}\n","import * as ValueGuard from '../guard/value.mjs';\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nexport function Clone(value) {\n return Visit(value);\n}\n","import { Clone } from './value.mjs';\n/** Clones a Rest */\nexport function CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nexport function CloneType(schema, options = {}) {\n return { ...Clone(schema), ...options };\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(schema, options = {}) {\n return {\n ...options,\n [Kind]: 'Array',\n type: 'array',\n items: CloneType(schema),\n };\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options = {}) {\n return {\n ...options,\n [Kind]: 'AsyncIterator',\n type: 'AsyncIterator',\n items: CloneType(items),\n };\n}\n","function DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\nexport function Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options = {}) {\n return {\n ...options,\n [Kind]: 'Never',\n not: {},\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n return {\n [Kind]: 'MappedResult',\n properties\n };\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n return {\n ...options,\n [Kind]: 'Constructor',\n type: 'Constructor',\n parameters: CloneRest(parameters),\n returns: CloneType(returns),\n };\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n return {\n ...options,\n [Kind]: 'Function',\n type: 'Function',\n parameters: CloneRest(parameters),\n returns: CloneType(returns),\n };\n}\n","import { CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n return { ...options, [Kind]: 'Union', anyOf: CloneRest(T) };\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { UnionCreate } from './union-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsUnionOptional(T) {\n return T.some(L => IsOptional(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(T, options) {\n return (IsUnionOptional(T)\n ? Optional(UnionCreate(RemoveOptionalFromRest(T), options))\n : UnionCreate(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nexport function UnionEvaluated(T, options = {}) {\n // prettier-ignore\n return (T.length === 0 ? Never(options) :\n T.length === 1 ? CloneType(T[0], options) :\n ResolveUnion(T, options));\n}\n","import { Never } from '../never/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { UnionCreate } from './union-create.mjs';\n/** `[Json]` Creates a Union type */\nexport function Union(T, options = {}) {\n // prettier-ignore\n return (T.length === 0 ? Never(options) :\n T.length === 1 ? CloneType(T[0], options) :\n UnionCreate(T, options));\n}\n","import { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nexport class TemplateLiteralParserError extends TypeBoxError {\n}\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nexport function TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nexport function TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n","import { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nexport class TemplateLiteralFiniteError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nexport function IsTemplateLiteralFinite(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n","import { IsTemplateLiteralExpressionFinite } from './finite.mjs';\nimport { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nexport class TemplateLiteralGenerateError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nexport function* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nexport function TemplateLiteralGenerate(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n // prettier-ignore\n return (IsTemplateLiteralExpressionFinite(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options = {}) {\n return {\n ...options,\n [Kind]: 'Literal',\n const: value,\n type: typeof value,\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options = {}) {\n return {\n ...options,\n [Kind]: 'Boolean',\n type: 'boolean',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options = {}) {\n return {\n ...options,\n [Kind]: 'BigInt',\n type: 'bigint',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options = {}) {\n return {\n ...options,\n [Kind]: 'Number',\n type: 'number',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options = {}) {\n return { ...options, [Kind]: 'String', type: 'string' };\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Boolean } from '../boolean/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield Boolean() :\n trim === 'number' ? yield Number() :\n trim === 'bigint' ? yield BigInt() :\n trim === 'string' ? yield String() :\n yield (() => {\n const literals = trim.split('|').map((literal) => Literal(literal.trim()));\n return (literals.length === 0 ? Never() :\n literals.length === 1 ? literals[0] :\n UnionEvaluated(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = Literal('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield Literal(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = Literal(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield Literal(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nexport function TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n","export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternNever = '(?!.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\nexport const PatternNeverExact = `^${PatternNever}$`;\n","import { PatternNumber, PatternString, PatternBoolean } from '../patterns/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsNumber, IsInteger, IsBigInt, IsString, IsLiteral, IsBoolean } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nexport class TemplateLiteralPatternError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return (IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n IsUnion(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n IsNumber(schema) ? `${acc}${PatternNumber}` :\n IsInteger(schema) ? `${acc}${PatternNumber}` :\n IsBigInt(schema) ? `${acc}${PatternNumber}` :\n IsString(schema) ? `${acc}${PatternString}` :\n IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` :\n IsBoolean(schema) ? `${acc}${PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); })());\n}\nexport function TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n","import { UnionEvaluated } from '../union/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { TemplateLiteralGenerate } from './generate.mjs';\n/** Returns a Union from the given TemplateLiteral */\nexport function TemplateLiteralToUnion(schema) {\n const R = TemplateLiteralGenerate(schema);\n const L = R.map((S) => Literal(S));\n return UnionEvaluated(L);\n}\n","import { TemplateLiteralSyntax } from './syntax.mjs';\nimport { TemplateLiteralPattern } from './pattern.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nexport function TemplateLiteral(unresolved, options = {}) {\n const pattern = IsString(unresolved)\n ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved))\n : TemplateLiteralPattern(unresolved);\n return { ...options, [Kind]: 'TemplateLiteral', type: 'string', pattern };\n}\n","import { TemplateLiteralGenerate } from '../template-literal/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsLiteral, IsNumber, IsInteger } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromTemplateLiteral(T) {\n const R = TemplateLiteralGenerate(T);\n return R.map(S => S.toString());\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromLiteral(T) {\n return ([T.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nexport function IndexPropertyKeys(T) {\n return [...new Set((IsTemplateLiteral(T) ? FromTemplateLiteral(T) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsLiteral(T) ? FromLiteral(T.const) :\n IsNumber(T) ? ['[number]'] :\n IsInteger(T) ? ['[number]'] :\n []))];\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { Index } from './index.mjs';\n// prettier-ignore\nfunction FromProperties(T, P, options) {\n const Acc = {};\n for (const K2 of Object.getOwnPropertyNames(P)) {\n Acc[K2] = Index(T, IndexPropertyKeys(P[K2]), options);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(T, R, options) {\n return FromProperties(T, R.properties, options);\n}\n// prettier-ignore\nexport function IndexFromMappedResult(T, R, options) {\n const P = FromMappedResult(T, R, options);\n return MappedResult(P);\n}\n","import { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';\nimport { IndexFromMappedResult } from './indexed-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsIntersect, IsObject, IsMappedKey, IsMappedResult, IsNever, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T, K) {\n return T.map(L => IndexFromPropertyKey(L, K));\n}\n// prettier-ignore\nfunction FromIntersectRest(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return (IntersectEvaluated(FromIntersectRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromUnionRest(T) {\n return (T.some(L => IsNever(L))\n ? []\n : T);\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return (UnionEvaluated(FromUnionRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromTuple(T, K) {\n return (K in T ? T[K] :\n K === '[number]' ? UnionEvaluated(T) :\n Never());\n}\n// prettier-ignore\nfunction FromArray(T, K) {\n return (K === '[number]'\n ? T\n : Never());\n}\n// prettier-ignore\nfunction FromProperty(T, K) {\n return (K in T ? T[K] : Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKey(T, K) {\n return (IsIntersect(T) ? FromIntersect(T.allOf, K) :\n IsUnion(T) ? FromUnion(T.anyOf, K) :\n IsTuple(T) ? FromTuple(T.items ?? [], K) :\n IsArray(T) ? FromArray(T.items, K) :\n IsObject(T) ? FromProperty(T.properties, K) :\n Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKeys(T, K) {\n return K.map(L => IndexFromPropertyKey(T, L));\n}\n// prettier-ignore\nfunction FromSchema(T, K) {\n return (UnionEvaluated(IndexFromPropertyKeys(T, K)));\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nexport function Index(T, K, options = {}) {\n // prettier-ignore\n return (IsMappedResult(K) ? CloneType(IndexFromMappedResult(T, K, options)) :\n IsMappedKey(K) ? CloneType(IndexFromMappedKey(T, K, options)) :\n IsSchema(K) ? CloneType(FromSchema(T, IndexPropertyKeys(K)), options) :\n CloneType(FromSchema(T, K), options));\n}\n","import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(T, K, options) {\n return { [K]: Index(T, [K], options) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(T, K, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIndexPropertyKey(T, L, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(T, K, options) {\n return MappedIndexPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function IndexFromMappedKey(T, K, options) {\n const P = MappedIndexProperties(T, K, options);\n return MappedResult(P);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options = {}) {\n return {\n ...options,\n [Kind]: 'Iterator',\n type: 'Iterator',\n items: CloneType(items),\n };\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsSchema } from '../guard/kind.mjs';\n/** `[Json]` Creates an Object type */\nfunction _Object(properties, options = {}) {\n const propertyKeys = globalThis.Object.getOwnPropertyNames(properties);\n const optionalKeys = propertyKeys.filter((key) => IsOptional(properties[key]));\n const requiredKeys = propertyKeys.filter((name) => !optionalKeys.includes(name));\n const clonedAdditionalProperties = IsSchema(options.additionalProperties) ? { additionalProperties: CloneType(options.additionalProperties) } : {};\n const clonedProperties = {};\n for (const key of propertyKeys)\n clonedProperties[key] = CloneType(properties[key]);\n return (requiredKeys.length > 0\n ? { ...options, ...clonedAdditionalProperties, [Kind]: 'Object', type: 'object', properties: clonedProperties, required: requiredKeys }\n : { ...options, ...clonedAdditionalProperties, [Kind]: 'Object', type: 'object', properties: clonedProperties });\n}\n/** `[Json]` Creates an Object type */\nexport const Object = _Object;\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options = {}) {\n return {\n ...options,\n [Kind]: 'Promise',\n type: 'Promise',\n item: CloneType(item),\n };\n}\n","import { ReadonlyKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { ReadonlyFromMappedResult } from './readonly-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveReadonly(schema) {\n return Discard(CloneType(schema), [ReadonlyKind]);\n}\nfunction AddReadonly(schema) {\n return { ...CloneType(schema), [ReadonlyKind]: 'Readonly' };\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nexport function Readonly(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Readonly } from './readonly.mjs';\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Readonly(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n","import { CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(items, options = {}) {\n // return TupleResolver.Resolve(T)\n const [additionalItems, minItems, maxItems] = [false, items.length, items.length];\n // prettier-ignore\n return (items.length > 0 ?\n { ...options, [Kind]: 'Tuple', type: 'array', items: CloneRest(items), additionalItems, minItems, maxItems } :\n { ...options, [Kind]: 'Tuple', type: 'array', minItems, maxItems });\n}\n","/** Returns true if element right is in the set of left */\n// prettier-ignore\nexport function SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nexport function SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nexport function SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nexport function SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nexport function SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nexport function SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nexport function SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nexport function SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n","import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\n// evaluation types\nimport { Array } from '../array/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Promise } from '../promise/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// operator\nimport { SetIncludes } from '../sets/index.mjs';\n// mapping types\nimport { MappedResult } from './mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsAsyncIterator, IsConstructor, IsFunction, IsIntersect, IsIterator, IsReadonly, IsMappedResult, IsMappedKey, IsObject, IsOptional, IsPromise, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : MappedResult(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: Literal(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = Literal(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return (SetIncludes(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n return (\n // unevaluated modifier types\n IsOptional(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :\n IsReadonly(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :\n // unevaluated mapped types\n IsMappedResult(T) ? FromMappedResult(K, T.properties) :\n IsMappedKey(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n IsConstructor(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :\n IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :\n IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items)) :\n IsIterator(T) ? Iterator(FromSchemaType(K, T.items)) :\n IsIntersect(T) ? Intersect(FromRest(K, T.allOf)) :\n IsUnion(T) ? Union(FromRest(K, T.anyOf)) :\n IsTuple(T) ? Tuple(FromRest(K, T.items ?? [])) :\n IsObject(T) ? Object(FromProperties(K, T.properties)) :\n IsArray(T) ? Array(FromSchemaType(K, T.items)) :\n IsPromise(T) ? Promise(FromSchemaType(K, T.item)) :\n T);\n}\n// prettier-ignore\nexport function MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nexport function Mapped(key, map, options = {}) {\n const K = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const RT = map({ [Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return CloneType(Object(R), options);\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveOptional(schema) {\n return Discard(CloneType(schema), [OptionalKind]);\n}\nfunction AddOptional(schema) {\n return { ...CloneType(schema), [OptionalKind]: 'Optional' };\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nexport function Optional(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Optional } from './optional.mjs';\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Optional(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CloneType, CloneRest } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsObject, IsSchema } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IntersectCreate(T, options) {\n const allObjects = T.every((schema) => IsObject(schema));\n const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties)\n ? { unevaluatedProperties: CloneType(options.unevaluatedProperties) }\n : {};\n return ((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n ? { ...options, ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: CloneRest(T) }\n : { ...options, ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: CloneRest(T) }));\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsTransform } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsIntersectOptional(T) {\n return T.every(L => IsOptional(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction ResolveIntersect(T, options) {\n return (IsIntersectOptional(T)\n ? Optional(IntersectCreate(RemoveOptionalFromRest(T), options))\n : IntersectCreate(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nexport function IntersectEvaluated(T, options = {}) {\n if (T.length === 0)\n return Never(options);\n if (T.length === 1)\n return CloneType(T[0], options);\n if (T.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(T, options);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n/** `[Json]` Creates an evaluated Intersect type */\nexport function Intersect(T, options = {}) {\n if (T.length === 0)\n return Never(options);\n if (T.length === 1)\n return CloneType(T[0], options);\n if (T.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return IntersectCreate(T, options);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsPromise } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => AwaitedResolve(L));\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n return Intersect(FromRest(T));\n}\n// prettier-ignore\nfunction FromUnion(T) {\n return Union(FromRest(T));\n}\n// prettier-ignore\nfunction FromPromise(T) {\n return AwaitedResolve(T);\n}\n// ----------------------------------------------------------------\n// AwaitedResolve\n// ----------------------------------------------------------------\n// prettier-ignore\nfunction AwaitedResolve(T) {\n return (IsIntersect(T) ? FromIntersect(T.allOf) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsPromise(T) ? FromPromise(T.item) :\n T);\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nexport function Awaited(T, options = {}) {\n return CloneType(AwaitedResolve(T), options);\n}\n","import { SetUnionMany, SetIntersectMany } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsRecord } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(KeyOfPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n const C = FromRest(T);\n const R = SetUnionMany(C);\n return R;\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const C = FromRest(T);\n const R = SetIntersectMany(C);\n return R;\n}\n// prettier-ignore\nfunction FromTuple(T) {\n return T.map((_, I) => I.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nexport function KeyOfPropertyKeys(T) {\n return (IsIntersect(T) ? FromIntersect(T.allOf) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsTuple(T) ? FromTuple(T.items ?? []) :\n IsArray(T) ? FromArray(T.items) :\n IsObject(T) ? FromProperties(T.properties) :\n IsRecord(T) ? FromPatternProperties(T.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nexport function KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nexport function KeyOfPropertyKeysToRest(T) {\n return T.map(L => L === '[number]' ? Number() : Literal(L));\n}\n/** `[Json]` Creates a KeyOf type */\nexport function KeyOf(T, options = {}) {\n if (IsMappedResult(T)) {\n return KeyOfFromMappedResult(T, options);\n }\n else {\n const K = KeyOfPropertyKeys(T);\n const S = KeyOfPropertyKeysToRest(K);\n const U = UnionEvaluated(S);\n return CloneType(U, options);\n }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = KeyOf(K[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function KeyOfFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { IndexFromPropertyKeys } from '../indexed/indexed.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\n/**\n * `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster\n * than obtaining the keys and resolving each individually via indexing. This method was written\n * accellerate Intersect and Union encoding.\n */\nexport function KeyOfPropertyEntries(schema) {\n const keys = KeyOfPropertyKeys(schema);\n const schemas = IndexFromPropertyKeys(schema, keys);\n return keys.map((_, index) => [keys[index], schemas[index]]);\n}\n","import { IntersectEvaluated } from '../intersect/index.mjs';\nimport { IndexFromPropertyKeys } from '../indexed/index.mjs';\nimport { KeyOfPropertyKeys } from '../keyof/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { SetDistinct } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsNever } from '../guard/kind.mjs';\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...KeyOfPropertyKeys(L));\n return SetDistinct(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexFromPropertyKeys(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = IntersectEvaluated(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nexport function Composite(T, options = {}) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = Object(P, options);\n return R;\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options = {}) {\n return {\n ...options,\n [Kind]: 'Date',\n type: 'Date',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options = {}) {\n return {\n ...options,\n [Kind]: 'Null',\n type: 'null',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n return { ...options, [Kind]: 'Symbol', type: 'symbol' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options = {}) {\n return { ...options, [Kind]: 'Undefined', type: 'undefined' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options = {}) {\n return { ...options, [Kind]: 'Uint8Array', type: 'Uint8Array' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options = {}) {\n return {\n ...options,\n [Kind]: 'Unknown',\n };\n}\n","import { Any } from '../any/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Date } from '../date/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Null } from '../null/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Symbol } from '../symbol/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Undefined } from '../undefined/index.mjs';\nimport { Uint8Array } from '../uint8array/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { CloneType } from '../clone/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = Readonly(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : Readonly(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :\n IsIterator(value) ? ConditionalReadonly(Any(), root) :\n IsArray(value) ? Readonly(Tuple(FromArray(value))) :\n IsUint8Array(value) ? Uint8Array() :\n IsDate(value) ? Date() :\n IsObject(value) ? ConditionalReadonly(Object(FromProperties(value)), root) :\n IsFunction(value) ? ConditionalReadonly(FunctionType([], Unknown()), root) :\n IsUndefined(value) ? Undefined() :\n IsNull(value) ? Null() :\n IsSymbol(value) ? Symbol() :\n IsBigInt(value) ? BigInt() :\n IsNumber(value) ? Literal(value) :\n IsBoolean(value) ? Literal(value) :\n IsString(value) ? Literal(value) :\n Object({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nexport function Const(T, options = {}) {\n return CloneType(FromValue(T, true), options);\n}\n","import { Tuple } from '../tuple/index.mjs';\nimport { CloneRest } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options = {}) {\n return Tuple(CloneRest(schema.parameters), { ...options });\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsConstructor, IsFunction, IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsPromise, IsAsyncIterator, IsIterator, IsRef } from '../guard/kind.mjs';\nfunction FromRest(schema, references) {\n return schema.map((schema) => Deref(schema, references));\n}\n// prettier-ignore\nfunction FromProperties(properties, references) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties)) {\n Acc[K] = Deref(properties[K], references);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n schema.allOf = FromRest(schema.allOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n schema.anyOf = FromRest(schema.anyOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n if (IsUndefined(schema.items))\n return schema;\n schema.items = FromRest(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromArray(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n schema.properties = FromProperties(schema.properties, references);\n return schema;\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n schema.item = Deref(schema.item, references);\n return schema;\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n const target = references.find(remote => remote.$id === schema.$ref);\n if (target === undefined)\n throw Error(`Unable to dereference schema with $id ${schema.$ref}`);\n const discard = Discard(target, ['$id']);\n return Deref(discard, references);\n}\n// prettier-ignore\nfunction DerefResolve(schema, references) {\n return (IsConstructor(schema) ? FromConstructor(schema, references) :\n IsFunction(schema) ? FromFunction(schema, references) :\n IsIntersect(schema) ? FromIntersect(schema, references) :\n IsUnion(schema) ? FromUnion(schema, references) :\n IsTuple(schema) ? FromTuple(schema, references) :\n IsArray(schema) ? FromArray(schema, references) :\n IsObject(schema) ? FromObject(schema, references) :\n IsPromise(schema) ? FromPromise(schema, references) :\n IsAsyncIterator(schema) ? FromAsyncIterator(schema, references) :\n IsIterator(schema) ? FromIterator(schema, references) :\n IsRef(schema) ? FromRef(schema, references) :\n schema);\n}\n// ------------------------------------------------------------------\n// TDeref\n// ------------------------------------------------------------------\n/** `[Json]` Creates a dereferenced type */\nexport function Deref(schema, references) {\n return DerefResolve(CloneType(schema), CloneRest(references));\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Enum type */\nexport function Enum(item, options = {}) {\n if (IsUndefined(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => Literal(value));\n return Union(anyOf, { ...options, [Hint]: 'Enum' });\n}\n","import { Any } from '../any/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nimport { PatternNumberExact, PatternStringExact } from '../patterns/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { TypeGuard, ValueGuard } from '../guard/index.mjs';\nexport class ExtendsResolverError extends TypeBoxError {\n}\nexport var ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (TypeGuard.IsNever(right) ||\n TypeGuard.IsIntersect(right) ||\n TypeGuard.IsUnion(right) ||\n TypeGuard.IsUnknown(right) ||\n TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (TypeGuard.IsUnion(right) && right.anyOf.some((schema) => TypeGuard.IsAny(schema) || TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : Unknown();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = FunctionType([Any()], Any());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n TypeGuard.IsOptional(left) && !TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union : (TypeGuard.IsNever(left) ||\n (TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (TypeGuard.IsRecord(left) && TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (TypeGuard.IsRecord(left) && TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (PatternNumberExact in schema.patternProperties ? Number() :\n PatternStringExact in schema.patternProperties ? String() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :\n PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((TypeGuard.IsLiteralString(left) && TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n TypeGuard.IsUint8Array(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsString(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsArray(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = TypeGuard.IsRegExp(left) ? String() : left;\n const R = TypeGuard.IsRegExp(right) ? String() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :\n TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (TypeGuard.IsTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :\n TypeGuard.IsTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (TypeGuard.IsNever(left) ? ExtendsResult.True :\n TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) || (!ValueGuard.IsUndefined(left.items) && ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (TypeGuard.IsTemplateLiteral(left) || TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (TypeGuard.IsRegExp(left) || TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (TypeGuard.IsNot(left) || TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n TypeGuard.IsAny(left) ? FromAny(left, right) :\n TypeGuard.IsArray(left) ? FromArray(left, right) :\n TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n TypeGuard.IsDate(left) ? FromDate(left, right) :\n TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n TypeGuard.IsNever(left) ? FromNever(left, right) :\n TypeGuard.IsNull(left) ? FromNull(left, right) :\n TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n TypeGuard.IsObject(left) ? FromObject(left, right) :\n TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n TypeGuard.IsString(left) ? FromString(left, right) :\n TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[Kind]}'`));\n}\nexport function ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Extends } from './extends.mjs';\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extends(P[K2], Right, True, False, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return MappedResult(P);\n}\n","import { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExtendsFromMappedKey } from './extends-from-mapped-key.mjs';\nimport { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = ExtendsCheck(left, right);\n return (R === ExtendsResult.Union ? Union([trueType, falseType]) :\n R === ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nexport function Extends(L, R, T, F, options = {}) {\n // prettier-ignore\n return (IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) :\n IsMappedKey(L) ? CloneType(ExtendsFromMappedKey(L, R, T, F, options)) :\n CloneType(ExtendsResolve(L, R, T, F), options));\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Extends } from './extends.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: Extends(Literal(K), U, L, R, options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return MappedResult(P);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** Fast undefined check used for properties of type undefined */\nfunction Intersect(schema) {\n return schema.allOf.every((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Union(schema) {\n return schema.anyOf.some((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Not(schema) {\n return !ExtendsUndefinedCheck(schema.not);\n}\n/** Fast undefined check used for properties of type undefined */\n// prettier-ignore\nexport function ExtendsUndefinedCheck(schema) {\n return (schema[Kind] === 'Intersect' ? Intersect(schema) :\n schema[Kind] === 'Union' ? Union(schema) :\n schema[Kind] === 'Not' ? Not(schema) :\n schema[Kind] === 'Undefined' ? true :\n false);\n}\n","import { Exclude } from './exclude.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExcludeFromTemplateLiteral(L, R) {\n return Exclude(TemplateLiteralToUnion(L), R);\n}\n","import { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';\nimport { ExcludeFromTemplateLiteral } from './exclude-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : Union(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nexport function Exclude(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CloneType(ExcludeFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CloneType(ExcludeFromMappedResult(L, R), options);\n // prettier-ignore\n return CloneType(IsUnion(L) ? ExcludeRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Exclude } from './exclude.mjs';\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Exclude(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n","import { Extract } from './extract.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExtractFromTemplateLiteral(L, R) {\n return Extract(TemplateLiteralToUnion(L), R);\n}\n","import { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';\nimport { ExtractFromTemplateLiteral } from './extract-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : Union(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nexport function Extract(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CloneType(ExtractFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CloneType(ExtractFromMappedResult(L, R), options);\n // prettier-ignore\n return CloneType(IsUnion(L) ? ExtractRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Extract } from './extract.mjs';\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extract(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options = {}) {\n return {\n ...options,\n [Kind]: 'Integer',\n type: 'integer',\n };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: Intrinsic(Literal(K), M, options)\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nexport function IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return MappedResult(P);\n}\n","import { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralExpressionFinite, TemplateLiteralExpressionGenerate } from '../template-literal/index.mjs';\nimport { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsTemplateLiteral, IsUnion, IsLiteral } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = TemplateLiteralParseExact(schema.pattern);\n const finite = IsTemplateLiteralExpressionFinite(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...TemplateLiteralExpressionGenerate(expression)];\n const literals = strings.map((value) => Literal(value));\n const mapped = FromRest(literals, mode);\n const union = Union(mapped);\n return TemplateLiteral([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nexport function Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) :\n // Standard-Inference\n IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, schema) :\n IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n schema);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nexport function Capitalize(T, options = {}) {\n return Intrinsic(T, 'Capitalize', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nexport function Lowercase(T, options = {}) {\n return Intrinsic(T, 'Lowercase', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nexport function Uncapitalize(T, options = {}) {\n return Intrinsic(T, 'Uncapitalize', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nexport function Uppercase(T, options = {}) {\n return Intrinsic(T, 'Uppercase', options);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(schema, options) {\n return {\n ...options,\n [Kind]: 'Not',\n not: CloneType(schema),\n };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Omit(P[K2], K, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nexport function OmitFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return MappedResult(P);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(T, K) {\n const { [K]: _, ...R } = T;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n return K.reduce((T, K2) => FromProperty(T, K2), T);\n}\n// ------------------------------------------------------------------\n// OmitResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction OmitResolve(T, K) {\n return (IsIntersect(T) ? Intersect(FromIntersect(T.allOf, K)) :\n IsUnion(T) ? Union(FromUnion(T.anyOf, K)) :\n IsObject(T) ? Object(FromProperties(T.properties, K)) :\n Object({}));\n}\nexport function Omit(T, K, options = {}) {\n // mapped\n if (IsMappedKey(K))\n return OmitFromMappedKey(T, K, options);\n if (IsMappedResult(T))\n return OmitFromMappedResult(T, K, options);\n // non-mapped\n const I = IsSchema(K) ? IndexPropertyKeys(K) : K;\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(OmitResolve(T, I), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: Omit(T, [K], options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return MappedResult(P);\n}\n","import { Tuple } from '../tuple/index.mjs';\nimport { CloneRest } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options = {}) {\n return Tuple(CloneRest(schema.parameters), { ...options });\n}\n","import { Optional } from '../optional/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { PartialFromMappedResult } from './partial-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => PartialResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = Optional(T[K]);\n return Acc;\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(T) {\n return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :\n IsUnion(T) ? Union(FromRest(T.anyOf)) :\n IsObject(T) ? Object(FromProperties(T.properties)) :\n Object({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nexport function Partial(T, options = {}) {\n if (IsMappedResult(T))\n return PartialFromMappedResult(T, options);\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(PartialResolve(T), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Partial(K[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Pick(P[K2], K, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nexport function PickFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return MappedResult(P);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema } from '../guard/kind.mjs';\nfunction FromIntersect(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n const Acc = {};\n for (const K2 of K)\n if (K2 in T)\n Acc[K2] = T[K2];\n return Acc;\n}\n// ------------------------------------------------------------------\n// PickResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PickResolve(T, K) {\n return (IsIntersect(T) ? Intersect(FromIntersect(T.allOf, K)) :\n IsUnion(T) ? Union(FromUnion(T.anyOf, K)) :\n IsObject(T) ? Object(FromProperties(T.properties, K)) :\n Object({}));\n}\nexport function Pick(T, K, options = {}) {\n // mapped\n if (IsMappedKey(K))\n return PickFromMappedKey(T, K, options);\n if (IsMappedResult(T))\n return PickFromMappedResult(T, K, options);\n // non-mapped\n const I = IsSchema(K) ? IndexPropertyKeys(K) : K;\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(PickResolve(T, I), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: Pick(T, [K], options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function PickFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return MappedResult(P);\n}\n","import { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\n/** `[Json]` Creates a Readonly and Optional property */\nexport function ReadonlyOptional(schema) {\n return Readonly(Optional(schema));\n}\n","import { Object } from '../object/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IsTemplateLiteralFinite } from '../template-literal/index.mjs';\nimport { PatternStringExact, PatternNumberExact, PatternNeverExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsAny, IsNever, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return {\n ...options,\n [Kind]: 'Record',\n type: 'object',\n patternProperties: { [pattern]: CloneType(T) }\n };\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const Acc = {};\n for (const K2 of K)\n Acc[K2] = CloneType(T);\n return Object(Acc, { ...options, [Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return (IsTemplateLiteralFinite(K)\n ? RecordCreateFromKeys(IndexPropertyKeys(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(K, T, options) {\n return RecordCreateFromKeys(IndexPropertyKeys(Union(K)), T, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(K, T, options) {\n return RecordCreateFromKeys([K.toString()], T, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(K, T, options) {\n return RecordCreateFromPattern(K.source, T, options);\n}\n// prettier-ignore\nfunction FromStringKey(K, T, options) {\n const pattern = IsUndefined(K.pattern) ? PatternStringExact : K.pattern;\n return RecordCreateFromPattern(pattern, T, options);\n}\n// prettier-ignore\nfunction FromAnyKey(K, T, options) {\n return RecordCreateFromPattern(PatternStringExact, T, options);\n}\n// prettier-ignore\nfunction FromNeverKey(K, T, options) {\n return RecordCreateFromPattern(PatternNeverExact, T, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_, T, options) {\n return RecordCreateFromPattern(PatternNumberExact, T, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, T, options) {\n return RecordCreateFromPattern(PatternNumberExact, T, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nexport function Record(K, T, options = {}) {\n // prettier-ignore\n return (IsUnion(K) ? FromUnionKey(K.anyOf, T, options) :\n IsTemplateLiteral(K) ? FromTemplateLiteralKey(K, T, options) :\n IsLiteral(K) ? FromLiteralKey(K.const, T, options) :\n IsInteger(K) ? FromIntegerKey(K, T, options) :\n IsNumber(K) ? FromNumberKey(K, T, options) :\n IsRegExp(K) ? FromRegExpKey(K, T, options) :\n IsString(K) ? FromStringKey(K, T, options) :\n IsAny(K) ? FromAnyKey(K, T, options) :\n IsNever(K) ? FromNeverKey(K, T, options) :\n Never(options));\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nexport function Recursive(callback, options = {}) {\n if (IsUndefined(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = callback({ [Kind]: 'This', $ref: `${options.$id}` });\n thisType.$id = options.$id;\n // prettier-ignore\n return CloneType({ ...options, [Hint]: 'Recursive', ...thisType });\n}\n","import { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsString, IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Ref type. */\nexport function Ref(unresolved, options = {}) {\n if (IsString(unresolved))\n return { ...options, [Kind]: 'Ref', $ref: unresolved };\n if (IsUndefined(unresolved.$id))\n throw new Error('Reference target type must specify an $id');\n return {\n ...options,\n [Kind]: 'Ref',\n $ref: unresolved.$id,\n };\n}\n","import { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a RegExp type */\nexport function RegExp(unresolved, options = {}) {\n const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return { ...options, [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags };\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { OptionalKind, TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { RequiredFromMappedResult } from './required-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => RequiredResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = Discard(T[K], [OptionalKind]);\n return Acc;\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(T) {\n return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :\n IsUnion(T) ? Union(FromRest(T.anyOf)) :\n IsObject(T) ? Object(FromProperties(T.properties)) :\n Object({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nexport function Required(T, options = {}) {\n if (IsMappedResult(T)) {\n return RequiredFromMappedResult(T, options);\n }\n else {\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(RequiredResolve(T), options);\n return { ...D, ...R };\n }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Required } from './required.mjs';\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Required(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { CloneRest } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n return (IsIntersect(T) ? CloneRest(T.allOf) :\n IsUnion(T) ? CloneRest(T.anyOf) :\n IsTuple(T) ? CloneRest(T.items ?? []) :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n return CloneRest(RestResolve(T));\n}\n","import { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\n// prettier-ignore\nexport class TransformEncodeBuilder {\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [TransformKind]: Codec };\n }\n Encode(encode) {\n const schema = CloneType(this.schema);\n return (IsTransform(schema) ? this.EncodeTransform(encode, schema) : this.EncodeSchema(encode, schema));\n }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nexport function Unsafe(options = {}) {\n return {\n ...options,\n [Kind]: options[Kind] ?? 'Unsafe',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options = {}) {\n return {\n ...options,\n [Kind]: 'Void',\n type: 'void',\n };\n}\n","import { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options = {}) {\n return CloneType(schema.returns, options);\n}\n","import { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options = {}) {\n return CloneType(schema.returns, options);\n}\n","/** `[Json]` Omits compositing symbols from this schema. */\nexport function Strict(schema) {\n return JSON.parse(JSON.stringify(schema));\n}\n","// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nexport { JsonTypeBuilder } from './json.mjs';\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nimport * as TypeBuilder from './type.mjs';\nimport { JavaScriptTypeBuilder } from './javascript.mjs';\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexport { JavaScriptTypeBuilder };\nexport { Type };\n","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\n/**\n * Create a TypeBox string schema for a branded string type.\n * This only validates that the value is a string,\n * and not that it came from the correct branded type (that information is lost when serialized).\n */\nexport function brandedStringType() {\n // This could use:\n // return TypeSystem.CreateType(name, (options, value) => typeof value === \"string\")();\n // Since there isn't any useful custom validation to do and\n // TUnsafe is documented as unsupported in `typebox/compiler`,\n // opt for the compile time behavior like the above, but the runtime behavior of the built in string type.\n return Type.String();\n}\n/**\n * Create a TypeBox number schema for a branded number type.\n * {@link brandedStringType} but for numbers.\n */\nexport function brandedNumberType(options) {\n // See comments on `brandedStringType`.\n return Type.Number(options);\n}\n//# sourceMappingURL=typeboxBrand.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Converts a {@link Opaque} handle to the underlying branded type.\n *\n * It is assumed that only code that produces these \"opaque\" handles does this conversion,\n * allowing these handles to be considered opaque.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function extractFromOpaque(value) {\n return value;\n}\n/**\n * Adds a type {@link Brand} to a value, returning it as a {@link Opaque} handle.\n *\n * Only do this when specifically allowed by the requirements of the type being converted to.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function brandOpaque(value) {\n return value;\n}\n//# sourceMappingURL=opaque.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Use this function to assert that an array index is not out-of-bounds.\n * @example\n * ```ts\n * // We know that `numberArray` has four elements in it, so this is safe.\n * const n: number = numberArray[3] ?? oob();\n * ```\n * @internal\n */\nexport function oob() {\n throw new Error(\"Array index is out of bounds\");\n}\n//# sourceMappingURL=oob.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { oob } from \"@fluidframework/core-utils/internal\";\n/**\n * If (key1, key2) already has a value in the map, it is returned, otherwise value is added under (key1, key2) and undefined is returned.\n */\nexport function tryAddToNestedMap(map, key1, key2, value) {\n let innerMap = map.get(key1);\n if (innerMap === undefined) {\n innerMap = new Map();\n map.set(key1, innerMap);\n }\n if (innerMap.has(key2)) {\n return innerMap.get(key2);\n }\n innerMap.set(key2, value);\n return undefined;\n}\n/**\n * Copies over all entries from the source map into the destination map.\n *\n * @param source - The map to copy data from. Not mutated.\n * @param destination - The map to copy data into. Both the outer and inner map may be mutated.\n * @param override - Whether existing entries in `destination` should be replaced by corresponding entries in `source`.\n *\n * @remarks - This function performs deep copying when necessary.\n * This ensures that mutating `destination` after this call will not result in unexpected mutations to `source`.\n */\nexport function populateNestedMap(source, destination, override) {\n for (const [key1, sourceInner] of source) {\n let destinationInner = destination.get(key1);\n if (destinationInner === undefined) {\n destinationInner = new Map(sourceInner);\n destination.set(key1, destinationInner);\n }\n else {\n for (const [key2, value] of sourceInner) {\n if (override || !destinationInner.has(key2)) {\n destinationInner.set(key2, value);\n }\n }\n }\n }\n}\n/**\n * Sets the value at (key1, key2) in map to value.\n * If there already is a value for (key1, key2), it is replaced with the provided one.\n */\nexport function setInNestedMap(map, key1, key2, value) {\n const innerMap = getOrAddInMap(map, key1, new Map());\n innerMap.set(key2, value);\n}\n/**\n * Sets the value at `key` in map to value if not already present.\n * Returns the value at `key` after setting it.\n * This is equivalent to a get or default that adds the default to the map.\n */\nexport function getOrAddInMap(map, key, value) {\n const currentValue = map.get(key);\n if (currentValue !== undefined) {\n return currentValue;\n }\n map.set(key, value);\n return value;\n}\n/**\n * Sets the value at `key` in `map` to `generateValue()` if not already present.\n * Returns the value at `key` after setting it.\n */\nexport function getOrAddInMapLazy(map, key, generateValue) {\n const currentValue = map.get(key);\n if (currentValue !== undefined) {\n return currentValue;\n }\n const value = generateValue();\n map.set(key, value);\n return value;\n}\n/**\n * Returns the value at (key1, key2) in map, or undefined if not present.\n */\nexport function tryGetFromNestedMap(map, key1, key2) {\n const innerMap = map.get(key1);\n if (innerMap === undefined) {\n return undefined;\n }\n return innerMap.get(key2);\n}\n/**\n * If (key1, key2) is not in the map, add value to the map.\n * Returns whatever is at (key1, key2) in map (which will be value if it was empty before).\n */\nexport function getOrAddInNestedMap(map, key1, key2, value) {\n const existing = tryAddToNestedMap(map, key1, key2, value);\n if (existing !== undefined) {\n return existing;\n }\n return value;\n}\n/**\n * Does not change map.\n * If (key1, key2) is not in map, returns value.\n * If (key1, key2) is in map, return its entry.\n */\nexport function getOrDefaultInNestedMap(map, key1, key2, value) {\n const existing = tryGetFromNestedMap(map, key1, key2);\n if (existing !== undefined) {\n return existing;\n }\n return value;\n}\n/**\n * Removes the value at (key1, key2) from the map.\n *\n * @returns true iff found.\n */\nexport function deleteFromNestedMap(map, key1, key2) {\n const innerMap = map.get(key1);\n if (innerMap === undefined) {\n return false;\n }\n const deleted = innerMap.delete(key2);\n if (innerMap.size === 0) {\n map.delete(key1);\n }\n return deleted;\n}\n/**\n * Converts a nested map to a flat list of triplets.\n */\nexport function nestedMapToFlatList(map) {\n const list = [];\n map.forEach((innerMap, key1) => {\n innerMap.forEach((val, key2) => {\n list.push([key1, key2, val]);\n });\n });\n return list;\n}\n/**\n * Builds a nested map from a flat list of triplets.\n */\nexport function nestedMapFromFlatList(list) {\n const map = new Map();\n for (const [key1, key2, val] of list) {\n getOrAddInMap(map, key1, new Map()).set(key2, val);\n }\n return map;\n}\nexport function forEachInNestedMap(map, delegate) {\n map.forEach((innerMap, keyFirst) => {\n innerMap.forEach((val, keySecond) => {\n delegate(val, keyFirst, keySecond);\n });\n });\n}\n/**\n * Maps the `input` map values using the provided `delegate`.\n *\n * @param input - The `NestedMap` whose contents are being mapped.\n * @param delegate - The delegate to use for mapping values,\n * @returns A new `NestedMap` with the same keys as `input`, but with the values produced by `delegate`.\n */\nexport function mapNestedMap(input, delegate) {\n const output = new Map();\n input.forEach((inputInnerMap, keyFirst) => {\n const outputInnerMap = new Map();\n inputInnerMap.forEach((val, keySecond) => {\n const mappedValue = delegate(val, keyFirst, keySecond);\n outputInnerMap.set(keySecond, mappedValue);\n });\n output.set(keyFirst, outputInnerMap);\n });\n return output;\n}\n/**\n * Map with two keys; same semantics as NestedMap, but maintains a size count for the entire collection.\n * Note: undefined is not supported as a value, and will cause incorrect behavior.\n */\nexport class SizedNestedMap {\n constructor() {\n this.nestedMap = new Map();\n this.count = 0;\n }\n /**\n * Returns the total number of elements in this nested map.\n */\n get size() {\n return this.count;\n }\n /**\n * If (key1, key2) already has a value in the map, it is returned, otherwise value is added under (key1, key2) and undefined is\n * returned.\n */\n tryGet(key1, key2) {\n return tryGetFromNestedMap(this.nestedMap, key1, key2);\n }\n /**\n * Does not change map.\n * If (key1, key2) is not in map, returns value.\n * If (key1, key2) is in map, return its entry.\n */\n getOrDefault(key1, key2, value) {\n return getOrDefaultInNestedMap(this.nestedMap, key1, key2, value);\n }\n /**\n * If (key1, key2) already has a value in the map, it is returned, otherwise value is added under (key1, key2) and undefined is\n * returned.\n */\n tryAdd(key1, key2, value) {\n const currentVal = tryAddToNestedMap(this.nestedMap, key1, key2, value);\n if (currentVal === undefined) {\n this.count++;\n }\n return currentVal;\n }\n /**\n * Sets the value at (key1, key2) in map to value.\n * If there already is a value for (key1, key2), it is replaced with the provided one.\n */\n set(key1, key2, value) {\n if (this.tryAdd(key1, key2, value) !== undefined) {\n setInNestedMap(this.nestedMap, key1, key2, value);\n }\n }\n /**\n * Removes the value at (key1, key2) from the map.\n * Returns true iff found.\n */\n delete(key1, key2) {\n const deleted = deleteFromNestedMap(this.nestedMap, key1, key2);\n if (deleted) {\n this.count--;\n }\n return deleted;\n }\n /**\n * Runs the supplied delegate for every (value, key1, key2).\n */\n forEach(delegate) {\n forEachInNestedMap(this.nestedMap, delegate);\n }\n /**\n * Clears the map.\n */\n clear() {\n this.count = 0;\n this.nestedMap.clear();\n }\n values() {\n return (Array.from(this.nestedMap.values()).flatMap((innerMap) => innerMap.values())[0] ?? oob());\n }\n [Symbol.iterator]() {\n return this.nestedMap[Symbol.iterator]();\n }\n}\n//# sourceMappingURL=nestedMap.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getOrDefaultInNestedMap, setInNestedMap } from \"./nestedMap.js\";\nexport function addToNestedSet(set, key1, key2) {\n setInNestedMap(set, key1, key2, true);\n}\nexport function nestedSetContains(set, key1, key2) {\n return getOrDefaultInNestedMap(set, key1, key2, false);\n}\n//# sourceMappingURL=nestedSet.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Describes the result of a transaction.\n * Transactions may either succeed and commit, or fail and abort.\n */\nexport var TransactionResult;\n(function (TransactionResult) {\n /**\n * Indicates the transaction failed.\n */\n TransactionResult[TransactionResult[\"Abort\"] = 0] = \"Abort\";\n /**\n * Indicates the transaction succeeded.\n */\n TransactionResult[TransactionResult[\"Commit\"] = 1] = \"Commit\";\n})(TransactionResult || (TransactionResult = {}));\n//# sourceMappingURL=transactionResult.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * An iterator that supports having items pushed onto it for later iteration.\n */\nexport class StackyIterator {\n constructor(list) {\n this.stack = [];\n this.index = 0;\n this.list = list;\n }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n if (this.done) {\n return { value: undefined, done: true };\n }\n return { value: this.pop() };\n }\n get done() {\n return this.index >= this.list.length && this.stack.length === 0;\n }\n push(item) {\n this.stack.push(item);\n }\n pop() {\n if (this.stack.length > 0) {\n return this.stack.pop();\n }\n if (this.index >= this.list.length) {\n return undefined;\n }\n return this.list[this.index++];\n }\n peek() {\n if (this.stack.length > 0) {\n return this.stack[this.stack.length - 1];\n }\n return this.list[this.index];\n }\n}\n//# sourceMappingURL=stackyIterator.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { Type } from \"@sinclair/typebox\";\nimport structuredClone from \"@ungap/structured-clone\";\n/**\n * Casts a readonly object to a mutable one.\n * Better than casting to `Mutable` because it doesn't risk casting a non-`Foo` to a `Mutable`.\n * @param readonly - The object with readonly fields.\n * @returns The same object but with a type that makes all fields mutable.\n */\nexport function asMutable(readonly) {\n return readonly;\n}\nexport const clone = structuredClone;\n/**\n */\nexport function fail(message) {\n throw new Error(message);\n}\n/**\n * Checks whether or not the given object is a `readonly` array.\n *\n * Note that this does NOT indicate if a given array should be treated as readonly.\n * This instead indicates if an object is an Array, and is typed to tolerate the readonly case.\n */\nexport function isReadonlyArray(x) {\n // `Array.isArray()` does not properly narrow `readonly` array types by itself,\n // so we wrap it in this type guard. This may become unnecessary if/when\n // https://github.com/microsoft/TypeScript/issues/17002 is resolved.\n return Array.isArray(x);\n}\n/**\n * Creates and populates a new array.\n * @param size - The size of the array to be created.\n * @param filler - Callback for populating the array with a value for a given index\n */\nexport function makeArray(size, filler) {\n const array = [];\n for (let i = 0; i < size; ++i) {\n array.push(filler(i));\n }\n return array;\n}\n/**\n * Compares two sets using callbacks.\n * Early returns on first false comparison.\n *\n * @param a - One Set.\n * @param b - The other Set.\n * @param aExtra - Called for items in `a` but not `b`.\n * @param bExtra - Called for items in `b` but not `a`.\n * @param same - Called for items in `a` and `b`.\n * @returns false iff any of the call backs returned false.\n */\nexport function compareSets({ a, b, aExtra, bExtra, same, }) {\n for (const item of a.keys()) {\n if (!b.has(item)) {\n if (aExtra && !aExtra(item)) {\n return false;\n }\n }\n else {\n if (same && !same(item)) {\n return false;\n }\n }\n }\n for (const item of b.keys()) {\n if (!a.has(item)) {\n if (bExtra && !bExtra(item)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * Retrieve a value from a map with the given key, or create a new entry if the key is not in the map.\n * @param map - The map to query/update\n * @param key - The key to lookup in the map\n * @param defaultValue - a function which returns a default value. This is called and used to set an initial value for the given key in the map if none exists\n * @returns either the existing value for the given key, or the newly-created value (the result of `defaultValue`)\n */\nexport function getOrCreate(map, key, defaultValue) {\n let value = map.get(key);\n if (value === undefined) {\n value = defaultValue(key);\n map.set(key, value);\n }\n return value;\n}\n/**\n * Utility for dictionaries whose values are lists.\n * Gets the list associated with the provided key, if it exists.\n * Otherwise, creates an entry with an empty list, and returns that list.\n */\nexport function getOrAddEmptyToMap(map, key) {\n let collection = map.get(key);\n if (collection === undefined) {\n collection = [];\n map.set(key, collection);\n }\n return collection;\n}\n/**\n * Map one iterable to another by transforming each element one at a time\n * @param iterable - the iterable to transform\n * @param map - the transformation function to run on each element of the iterable\n * @returns a new iterable of elements which have been transformed by the `map` function\n */\nexport function* mapIterable(iterable, map) {\n for (const t of iterable) {\n yield map(t);\n }\n}\n/**\n * Filter one iterable into another\n * @param iterable - the iterable to filter\n * @param filter - the predicate function to run on each element of the iterable\n * @returns a new iterable including only the elements that passed the filter predicate\n */\nexport function* filterIterable(iterable, filter) {\n for (const t of iterable) {\n if (filter(t)) {\n yield t;\n }\n }\n}\n/**\n * Finds the first element in the given iterable that satisfies a predicate.\n * @param iterable - The iterable to search for an eligible element\n * @param predicate - The predicate to run against each element\n * @returns The first element in the iterable that satisfies the predicate, or undefined if the iterable contains no such element\n */\nexport function find(iterable, predicate) {\n for (const t of iterable) {\n if (predicate(t)) {\n return t;\n }\n }\n}\n/**\n * Counts the number of elements in the given iterable.\n * @param iterable - the iterable to enumerate\n * @returns the number of elements that were iterated after exhausting the iterable\n */\nexport function count(iterable) {\n let n = 0;\n for (const _ of iterable) {\n n += 1;\n }\n return n;\n}\n/**\n * @remarks TODO: Audit usage of this type in schemas, evaluating whether it is necessary and performance\n * of alternatives.\n *\n * True \"arbitrary serializable data\" is probably fine, but some persisted types declarations might be better\n * expressed using composition of schemas for runtime validation, even if we don't think making the types\n * generic is worth the maintenance cost.\n */\nexport const JsonCompatibleReadOnlySchema = Type.Any();\n/**\n * Returns if a particular json compatible value is an object.\n * Does not include `null` or arrays.\n */\nexport function isJsonObject(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n/**\n * Verifies that the supplied indices are valid within the supplied array.\n * @param startIndex - The starting index in the range. Must be in [0, length).\n * @param endIndex - The ending index in the range. Must be within (start, length].\n * @param array - The array the indices refer to\n */\nexport function assertValidRangeIndices(startIndex, endIndex, array) {\n assert(endIndex >= startIndex, 0x79c /* Range indices are malformed. */);\n assertValidIndex(startIndex, array, false);\n assertValidIndex(endIndex, array, true);\n}\nexport function assertValidIndex(index, array, allowOnePastEnd = false) {\n assertNonNegativeSafeInteger(index);\n if (allowOnePastEnd) {\n assert(index <= array.length, 0x378 /* index must be less than or equal to length */);\n }\n else {\n assert(index < array.length, 0x379 /* index must be less than length */);\n }\n}\nexport function assertValidRange({ start, end }, array) {\n assertNonNegativeSafeInteger(start);\n assertNonNegativeSafeInteger(end);\n assert(end <= array.length, 0x79d /* Range end must be less than or equal to length */);\n assert(start <= end, 0x79e /* Range start must be less than or equal to range start */);\n}\nexport function assertNonNegativeSafeInteger(index) {\n assert(Number.isSafeInteger(index), 0x376 /* index must be an integer */);\n assert(index >= 0, 0x377 /* index must be non-negative */);\n}\n/**\n * Convert an object into a Map.\n *\n * This function must only be used with objects specifically intended to encode map like information.\n * The only time such objects should be used is for encoding maps as object literals to allow for developer ergonomics or JSON compatibility.\n * Even those two use-cases need to be carefully considered as using objects as maps can have a lot of issues\n * (including but not limited to unintended access to __proto__ and other non-owned keys).\n * This function helps these few cases get into using an actual map in as safe of was as is practical.\n */\nexport function objectToMap(objectMap) {\n const map = new Map();\n // This function must only be used with objects specifically intended to encode map like information.\n for (const key of Object.keys(objectMap)) {\n const element = objectMap[key];\n map.set(key, element);\n }\n return map;\n}\n/**\n * Convert an object used as a map into a new object used like a map.\n *\n * @remarks\n * This function must only be used with objects specifically intended to encode map like information.\n * The only time such objects should be used is for encoding maps as object literals to allow for developer ergonomics or JSON compatibility.\n * Even those two use-cases need to be carefully considered as using objects as maps can have a lot of issues\n * (including but not limited to unintended access to __proto__ and other non-owned keys).\n * {@link objectToMap} helps these few cases get into using an actual map in as safe of a way as is practical.\n */\nexport function transformObjectMap(objectMap, transformer) {\n const output = Object.create(null);\n // This function must only be used with objects specifically intended to encode map like information.\n for (const key of Object.keys(objectMap)) {\n const element = objectMap[key];\n Object.defineProperty(output, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: transformer(element, key),\n });\n }\n return output;\n}\n/**\n * Make an inverted copy of a map.\n *\n * @returns a map which can look up the keys from the values of the original map.\n */\nexport function invertMap(input) {\n const result = new Map(mapIterable(input, ([key, value]) => [value, key]));\n assert(result.size === input.size, 0x88a /* all values in a map must be unique to invert it */);\n return result;\n}\n/**\n * Returns the value from `set` if it contains exactly one item, otherwise `undefined`.\n */\nexport function oneFromSet(set) {\n if (set === undefined) {\n return undefined;\n }\n if (set.size !== 1) {\n return undefined;\n }\n for (const item of set) {\n return item;\n }\n}\n/**\n * Order {@link Named} objects by their name.\n */\nexport function compareNamed(a, b) {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n}\n/**\n * Placeholder for `Symbol.dispose`.\n * @privateRemarks\n * TODO: replace this with `Symbol.dispose` when it is available or make it a valid polyfill.\n */\nexport const disposeSymbol = Symbol(\"Symbol.dispose placeholder\");\n/**\n * Capitalize a string.\n */\nexport function capitalize(s) {\n // To avoid splitting characters which are made of multiple UTF-16 code units,\n // use iteration instead of indexing to separate the first character.\n const iterated = s[Symbol.iterator]().next();\n if (iterated.done === true) {\n // Empty string case.\n return \"\";\n }\n return (iterated.value.toUpperCase() + s.slice(iterated.value.length));\n}\n/**\n * Compares strings lexically to form a strict partial ordering.\n */\nexport function compareStrings(a, b) {\n return a > b ? 1 : a === b ? 0 : -1;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Base class to assist with implementing ReferenceCounted.\n */\nexport class ReferenceCountedBase {\n constructor(refCount = 1) {\n this.refCount = refCount;\n }\n referenceAdded(count = 1) {\n this.refCount += count;\n }\n referenceRemoved(count = 1) {\n this.refCount -= count;\n assert(this.refCount >= 0, 0x4c4 /* Negative ref count */);\n if (this.refCount === 0) {\n this.onUnreferenced();\n }\n }\n isShared() {\n return this.refCount > 1;\n }\n isUnreferenced() {\n return this.refCount === 0;\n }\n}\n//# sourceMappingURL=referenceCounting.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getOrCreate } from \"./utils.js\";\n/**\n * Version of {@link getOrCreate} with better typing for {@link BrandedMapSubset}.\n * @privateRemarks\n * Only infers type from key to avoid inferring `any` from map's key.\n */\nexport function getOrCreateSlotContent(map, key, defaultValue) {\n return getOrCreate(map, key, defaultValue);\n}\n/**\n * A counter used to allocate unique numbers (See {@link brandedSlot}) to use as {@link BrandedKey}s.\n * This allows the keys to be small integers, which are efficient to use as keys in maps.\n * See {@link BrandedMapSubset}.\n */\nlet slotCounter = 0;\n/**\n * Define a strongly typed slot in which data can be stored in a {@link BrandedMapSubset}.\n */\nexport function brandedSlot() {\n return slotCounter++;\n}\n//# sourceMappingURL=brandedMap.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { oob } from \"@fluidframework/core-utils/internal\";\n/**\n * See comments on `RangeQueryResult`.\n */\nexport function getFromRangeMap(map, start, length) {\n for (const range of map) {\n if (range.start > start) {\n return { value: undefined, length: Math.min(range.start - start, length) };\n }\n const lastRangeKey = range.start + range.length - 1;\n if (lastRangeKey >= start) {\n // This range contains `start`.\n const overlapLength = lastRangeKey - start + 1;\n return { value: range.value, length: Math.min(overlapLength, length) };\n }\n }\n // There were no entries intersecting the query range, so the entire query range has undefined value.\n return { value: undefined, length };\n}\nexport function getFirstEntryFromRangeMap(map, start, length) {\n const lastQueryKey = start + length - 1;\n for (const range of map) {\n if (range.start > lastQueryKey) {\n // We've passed the end of the query range.\n break;\n }\n const lastRangeKey = range.start + range.length - 1;\n if (lastRangeKey >= start) {\n return range;\n }\n }\n return undefined;\n}\n/**\n * Sets the keys from `start` to `start + length - 1` to `value`.\n */\nexport function setInRangeMap(map, start, length, value) {\n const end = start + length - 1;\n const newEntry = { start, length, value };\n let iBefore = -1;\n let iAfter = map.length;\n for (const [i, entry] of map.entries()) {\n const entryLastKey = entry.start + entry.length - 1;\n if (entryLastKey < start) {\n iBefore = i;\n }\n else if (entry.start > end) {\n iAfter = i;\n break;\n }\n }\n const numOverlappingEntries = iAfter - iBefore - 1;\n if (numOverlappingEntries === 0) {\n map.splice(iAfter, 0, newEntry);\n return;\n }\n const iFirst = iBefore + 1;\n const firstEntry = map[iFirst] ?? oob();\n const iLast = iAfter - 1;\n const lastEntry = map[iLast] ?? oob();\n const lengthBeforeFirst = start - firstEntry.start;\n const lastEntryKey = lastEntry.start + lastEntry.length - 1;\n const lengthAfterLast = lastEntryKey - end;\n if (lengthBeforeFirst > 0 && lengthAfterLast > 0 && iFirst === iLast) {\n // The new entry fits in the middle of an existing entry.\n // We replace the existing entry with:\n // 1) the portion which comes before `newEntry`\n // 2) `newEntry`\n // 3) the portion which comes after `newEntry`\n map.splice(iFirst, 1, { ...firstEntry, length: lengthBeforeFirst }, newEntry, {\n ...lastEntry,\n start: end + 1,\n length: lengthAfterLast,\n });\n return;\n }\n if (lengthBeforeFirst > 0) {\n map[iFirst] = { ...firstEntry, length: lengthBeforeFirst };\n // The entry at `iFirst` is no longer overlapping with `newEntry`.\n iBefore = iFirst;\n }\n if (lengthAfterLast > 0) {\n map[iLast] = {\n ...lastEntry,\n start: end + 1,\n length: lengthAfterLast,\n };\n // The entry at `iLast` is no longer overlapping with `newEntry`.\n iAfter = iLast;\n }\n const numContainedEntries = iAfter - iBefore - 1;\n map.splice(iBefore + 1, numContainedEntries, newEntry);\n}\n/**\n * Delete the keys from `start` to `start + length - 1`\n *\n * 1. If an entry is completely included in the deletion range, the whole entry will be deleted\n * e.g.: map = [[1, 2], [4, 6]], delete range: [3, 6]\n * map becomes [[1, 2]] after deletion\n * (Note: the notation [a, b] represents start = a, end = b for simpler visiualization, instead of `b`\n * representing the length)\n *\n * 2. If an entry is partially overlapped with the deletion range, the start or end point will be shifted\n * e.g.: map = [[1, 2], [4, 6]], delete range: [2, 4]\n * map becomes [[1, 1], [5, 6]] after deletion\n *\n * 3. If an entry completely includes the deletion range, the original entry may be split into two.\n * e.g.: map = [[1, 6]], delete range: [2, 4]\n * map becomes [[1, 1], [5, 6]]\n *\n * TODO: We may find ways to mitigate the code duplication between set and delete, and we need to better\n * document the API. AB#7413\n */\nexport function deleteFromRangeMap(map, start, length) {\n const end = start + length - 1;\n let iBefore = -1;\n let iAfter = map.length;\n for (const [i, entry] of map.entries()) {\n const entryLastKey = entry.start + entry.length - 1;\n if (entryLastKey < start) {\n iBefore = i;\n }\n else if (entry.start > end) {\n iAfter = i;\n break;\n }\n }\n const numOverlappingEntries = iAfter - iBefore - 1;\n if (numOverlappingEntries === 0) {\n // No entry will be removed\n return;\n }\n const iFirst = iBefore + 1;\n const iLast = iAfter - 1;\n // Update or remove the overlapping entries\n for (let i = iFirst; i <= iLast; ++i) {\n const entry = map[i] ?? oob();\n const entryLastKey = entry.start + entry.length - 1;\n let isDirty = false;\n // If the entry lies within the range to be deleted, remove it\n if (entry.start >= start && entryLastKey <= end) {\n map.splice(i, 1);\n }\n else {\n // If the entry partially or completely overlaps with the range to be deleted\n if (entry.start < start) {\n // Update the endpoint and length of the portion before the range to be deleted\n const lengthBefore = start - entry.start;\n map[i] = { ...entry, length: lengthBefore };\n isDirty = true;\n }\n if (entryLastKey > end) {\n // Update the startpoint and length of the portion after the range to be deleted\n const newStart = end + 1;\n const newLength = entryLastKey - end;\n map.splice(isDirty ? i + 1 : i, isDirty ? 0 : 1, {\n start: newStart,\n length: newLength,\n value: entry.value,\n });\n }\n }\n }\n}\n//# sourceMappingURL=rangeMap.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { fail } from \"./utils.js\";\n/**\n */\nexport function idAllocatorFromMaxId(maxId = undefined) {\n return idAllocatorFromState({ maxId: maxId ?? -1 });\n}\nexport function idAllocatorFromState(state) {\n return {\n allocate: (c) => {\n const count = c ?? 1;\n assert(count > 0, 0x5cf /* Must allocate at least one ID */);\n const id = state.maxId + 1;\n state.maxId += count;\n return id;\n },\n getMaxId: () => state.maxId,\n };\n}\nexport const fakeIdAllocator = {\n allocate: () => fail(\"Should not allocate IDs\"),\n getMaxId: () => 0,\n};\n//# sourceMappingURL=idAllocator.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * An object which can enter a \"broken\" state where trying to use it is a UsageError.\n */\nexport class Breakable {\n constructor(name) {\n this.name = name;\n }\n /**\n * Throws if the object is in the broken state.\n * @remarks\n * Can use {@link throwIfBroken} to apply this to a method.\n */\n use() {\n if (this.brokenBy !== undefined) {\n throw new UsageError(`Invalid use of ${this.name} after it was put into an invalid state by another error.\\nOriginal Error:\\n${this.brokenBy}`);\n }\n }\n /**\n * Puts this object into the broken state, and throws an error.\n *\n * @throws If already broken by a different error, throws a UsageError, otherwise throws `brokenBy`.\n */\n break(brokenBy) {\n // If already broken by this error, let it bubble up without rethrowing a modified version.\n // This prevents internal errors like asserts getting rethrown as different errors when wrapped with multiple call to `{@link Breakable.run}` or `{@link breakingMethod}`.\n if (this.brokenBy !== brokenBy) {\n this.use();\n this.brokenBy = brokenBy;\n }\n throw brokenBy;\n }\n /**\n * {@link Breakable.break}, except tolerates `unknown` to be more easily used by catch blocks.\n * @privateRemarks\n * If there is a use-case, this should be made public.\n */\n rethrowCaught(brokenBy) {\n if (brokenBy instanceof Error) {\n this.break(brokenBy);\n }\n this.break(new Error(`Non-error thrown breaking ${this.name}. Thrown value: \"${brokenBy}\"`));\n }\n /**\n * Runs code which should break the object if it throws.\n * @remarks\n * This also throws if already broken like {@link Breakable.use}.\n * Any exceptions this catches are re-thrown.\n * Can use {@link breakingMethod} to apply this to a method.\n */\n run(breaker) {\n this.use();\n try {\n return breaker();\n }\n catch (error) {\n this.rethrowCaught(error);\n }\n }\n /**\n * Clears the existing broken state.\n * @remarks\n * This is rarely safe to to: it is only ok when all objects using this breaker are known to not have been left in an invalid state.\n * This is pretty much only safe in tests which just were checking a specific error was thrown, and which know that error closepath is actually exception safe.\n */\n clearError() {\n assert(this.brokenBy !== undefined, 0x9b6 /* No error to clear */);\n this.brokenBy = undefined;\n }\n}\n/**\n * Decorator for methods which should break the object when they throw.\n * @remarks\n * This also throws if already broken like {@link throwIfBroken}.\n * See {@link Breakable.run} for details.\n *\n * This should be used on methods which modify data that could result in an unsupported/broken state if an exception is thrown while modifying.\n * It is ok for breakingMethods to call each-other.\n * @privateRemarks\n * Explicitly capturing the full `Target` type is necessary to make this work with generic methods with unknown numbers of type parameters.\n */\nexport function breakingMethod(target, context) {\n function replacementMethod(...args) {\n if (this.breaker === undefined) {\n // This case is necessary for when wrapping methods which are invoked inside the constructor of the base class before `breaker` is set.\n // Since the constructor throwing does not return an object, failing to put it into a broken state is not too bad.\n // However when more than just the constructed object should be broken, this can result in missing a break.\n return target.call(this, ...args);\n }\n return this.breaker.run(() => {\n return target.call(this, ...args);\n });\n }\n markBreaker(replacementMethod);\n nameFunctionFrom(replacementMethod, target);\n return replacementMethod;\n}\n/**\n * Decorator for methods which should throw if the object is in a broken state.\n * @remarks\n * This should be used on methods which read data that could be invalid when the object is broken.\n * @privateRemarks\n * Explicitly capturing the full `Target` type is necessary to make this work with generic methods with unknown numbers of type parameters.\n */\nexport function throwIfBroken(target, context) {\n function replacementMethod(...args) {\n this.breaker.use();\n return target.call(this, ...args);\n }\n markBreaker(replacementMethod);\n nameFunctionFrom(replacementMethod, target);\n return replacementMethod;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction nameFunctionFrom(toName, nameFrom) {\n toName.displayName =\n nameFrom.displayName ?? nameFrom.name;\n}\nconst isBreakerSymbol = Symbol(\"isBreaker\");\n// Accepting any function like value is desired and safe here as this does not call the provided function.\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction markBreaker(f) {\n f[isBreakerSymbol] = true;\n}\n// Accepting any function like value is desired and safe here as this does not call the provided function.\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isBreaker(f) {\n return isBreakerSymbol in f;\n}\n/**\n * Decorator for classes which should break when their methods throw.\n * @remarks\n * Applies {@link breakingMethod} to all methods declared directly by class or its base classes.\n * Does not include those on derived classes.\n * Does not include getters or setters, or value properties.\n * Methods already marked as {@link breakingMethod} or {@link throwIfBroken} are unaffected.\n */\nexport function breakingClass(target, context) {\n class DecoratedBreakable extends target {\n }\n // Keep track of what keys we have seen,\n // since we visit most derived properties first and need to avoid wrapping base properties overriding more derived ones.\n const overriddenKeys = new Set();\n let prototype = target.prototype;\n while (prototype !== null) {\n for (const key of Reflect.ownKeys(prototype)) {\n if (!overriddenKeys.has(key)) {\n overriddenKeys.add(key);\n const descriptor = Reflect.getOwnPropertyDescriptor(prototype, key);\n if (descriptor !== undefined) {\n // Method\n if (typeof descriptor.value === \"function\") {\n if (!isBreaker(descriptor.value)) {\n // This does not affect the original class, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor\n descriptor.value = breakingMethod(descriptor.value);\n Object.defineProperty(DecoratedBreakable.prototype, key, descriptor);\n }\n }\n }\n }\n }\n prototype = Reflect.getPrototypeOf(prototype);\n }\n return DecoratedBreakable;\n}\n//# sourceMappingURL=breakable.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getOrCreate } from \"../util/index.js\";\n/**\n * Create a {@link Listenable} that can be instructed to emit events via the {@link IEmitter} interface.\n *\n * A class can delegate handling {@link Listenable} to the returned value while using it to emit the events.\n * See also `EventEmitter` which be used as a base class to implement {@link Listenable} via extension.\n */\nexport function createEmitter(noListeners) {\n return new ComposableEventEmitter(noListeners);\n}\n/**\n * Provides an API for subscribing to and listening to events.\n *\n * @remarks Classes wishing to emit events may either extend this class or compose over it.\n *\n * @example Extending this class\n *\n * ```typescript\n * interface MyEvents {\n * \"loaded\": () => void;\n * }\n *\n * class MyClass extends EventEmitter {\n * private load() {\n * this.emit(\"loaded\");\n * }\n * }\n * ```\n *\n * @example Composing over this class\n *\n * ```typescript\n * class MyClass implements ISubscribable {\n * private readonly events = EventEmitter.create();\n *\n * private load() {\n * this.events.emit(\"loaded\");\n * }\n *\n * public on(eventName: K, listener: MyEvents[K]): Off {\n * return this.events.on(eventName, listener);\n * }\n * }\n * ```\n */\nexport class EventEmitter {\n // Because this is protected and not public, calling this externally (not from a subclass) makes sending events to the constructed instance impossible.\n // Instead, use the static `create` function to get an instance which allows emitting events.\n constructor(noListeners) {\n this.noListeners = noListeners;\n this.listeners = new Map();\n }\n emit(eventName, ...args) {\n const listeners = this.listeners.get(eventName);\n if (listeners !== undefined) {\n const argArray = args; // TODO: Current TS (4.5.5) cannot spread `args` into `listener()`, but future versions (e.g. 4.8.4) can.\n // This explicitly copies listeners so that new listeners added during this call to emit will not receive this event.\n for (const [off, listener] of [...listeners]) {\n // If listener has been unsubscribed while invoking other listeners, skip it.\n if (listeners.has(off)) {\n listener(...argArray);\n }\n }\n }\n }\n emitAndCollect(eventName, ...args) {\n const listeners = this.listeners.get(eventName);\n if (listeners !== undefined) {\n const argArray = args;\n const resultArray = [];\n for (const listener of [...listeners.values()]) {\n resultArray.push(listener(...argArray));\n }\n return resultArray;\n }\n return [];\n }\n /**\n * Register an event listener.\n * @param eventName - the name of the event\n * @param listener - the handler to run when the event is fired by the emitter\n * @returns a function which will deregister the listener when run.\n * This function will error if called more than once.\n */\n on(eventName, listener) {\n const off = () => {\n const currentListeners = this.listeners.get(eventName);\n if (currentListeners?.delete(off) === true) {\n if (currentListeners.size === 0) {\n this.listeners.delete(eventName);\n this.noListeners?.(eventName);\n }\n }\n };\n getOrCreate(this.listeners, eventName, () => new Map()).set(off, listener);\n return off;\n }\n hasListeners(eventName) {\n if (eventName === undefined) {\n return this.listeners.size !== 0;\n }\n return this.listeners.has(eventName);\n }\n}\n/**\n * This class exposes the constructor and the `emit` method of `EventEmitter`, elevating them from protected to public\n */\nexport class ComposableEventEmitter extends EventEmitter {\n constructor(noListeners) {\n super(noListeners);\n }\n emit(eventName, ...args) {\n return super.emit(eventName, ...args);\n }\n emitAndCollect(eventName, ...args) {\n return super.emitAndCollect(eventName, ...args);\n }\n}\n//# sourceMappingURL=events.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { brand, extractFromOpaque, } from \"../../util/index.js\";\n/**\n * The empty key (\"\") is used for unnamed relationships, such as the indexer\n * of an explicit array node.\n *\n * This key is a hint that this field is the primary function of the node,\n * and in some abstractions the APIs for this field should be inlined onto the node.\n *\n * TODO:\n * This has to be a FieldKey since different nodes will have different TreeFieldStoredSchema for it.\n * This makes it prone to collisions and suggests\n * that this intention may be better conveyed by metadata on the ITreeSchema.\n * @internal\n */\nexport const EmptyKey = brand(\"\");\n/**\n * FieldKey to use for the root of documents in places that need to refer to detached sequences or the root.\n * TODO: if we do want to standardize on a single value for this,\n * it likely should be namespaced or a UUID to avoid risk of collisions.\n */\nexport const rootFieldKey = brand(\"rootFieldKey\");\n/**\n */\nexport const rootField = keyAsDetachedField(rootFieldKey);\n/**\n * Some code abstracts the root as a node with detached fields as its fields.\n * This maps detached field to field keys for thus use.\n *\n * @returns `field` as a {@link FieldKey} usable on a special root node serving as a parent of detached fields.\n */\nexport function detachedFieldAsKey(field) {\n return brand(extractFromOpaque(field));\n}\n/**\n * The inverse of {@link detachedFieldAsKey}.\n * Thus must only be used on {@link FieldKey}s which were produced via {@link detachedFieldAsKey},\n * and with the same scope (ex: forest) as the detachedFieldAsKey was originally from.\n */\nexport function keyAsDetachedField(key) {\n return brand(key);\n}\n/**\n * Use this type to indicate that a node sits above the detached fields, and thus is not a real node and who's type should not matter.\n */\nexport const aboveRootPlaceholder = brand(\"com.fluidframework.placeholder.aboveRoot\");\n//# sourceMappingURL=types.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createEmitter } from \"../../events/index.js\";\nimport { ReferenceCountedBase, brand, brandedSlot, fail, } from \"../../util/index.js\";\nimport { EmptyKey } from \"./types.js\";\n/**\n * A singleton which represents a permanently invalid location (i.e. there is never a node there)\n */\nconst NeverAnchor = brand(0);\n/**\n * Define a strongly typed slot on anchors in which data can be stored.\n *\n * @remarks\n * This is mainly useful for caching data associated with a location in the tree.\n *\n * Example usage:\n * ```typescript\n * const counterSlot = anchorSlot();\n *\n * function useSlot(anchor: AnchorNode): void {\n * \tanchor.slots.set(counterSlot, 1 + anchor.slots.get(counterSlot) ?? 0);\n * }\n * ```\n */\nexport function anchorSlot() {\n return brandedSlot();\n}\n/**\n * Collection of Anchors at a specific revision.\n *\n * See `Rebaser` for how to update across revisions.\n *\n * TODO: this should not be package exported.\n * If it's needed outside the package an Interface should be used instead which can reduce its\n * API surface to a small subset.\n *\n * @sealed\n */\nexport class AnchorSet {\n constructor() {\n this.events = createEmitter();\n /**\n * Incrementing counter to give each anchor in this set a unique index for its identifier.\n * \"0\" is reserved for the `NeverAnchor`.\n */\n this.anchorCounter = 1;\n /**\n * Incrementing number that is bumped each time that the {@link AnchorSet} is changed.\n * This allows consumers to cache state associated with a particular generation number and later determine if that state may have been invalidated using a comparison with the current generation number.\n * For example, anchor slots can be used to cache the removal status of a node to memoize repeated walks up the tree.\n */\n this.generationNumber = 0;\n /**\n * Special root node under which all anchors in this anchor set are transitively parented.\n * This does not appear in the UpPaths (instead they use undefined for the root).\n * Immediate children of this root are in detached fields (which have their identifiers used as the field keys).\n *\n * This is allocated with refCount one, which is never freed so it is never cleaned up\n * (as long as this AnchorSet is not garbage collected).\n *\n * There should never be any children other than the special root detached field under this between transactions:\n * TODO: check for and enforce this.\n */\n this.root = new PathNode(this, EmptyKey, 0, undefined);\n // TODO: anchor system could be optimized a bit to avoid the maps (Anchor is ref to Path, path has ref count).\n // For now use this more encapsulated approach with maps.\n this.anchorToPath = new Map();\n this.on(\"treeChanging\", () => {\n this.generationNumber += 1;\n });\n }\n /**\n * Allows access to data stored on the AnchorSet in \"slots\".\n * Use {@link anchorSlot} to create slots.\n *\n * @privateRemarks\n * This forwards to the slots of the special above root anchor which locate can't access.\n */\n // See note on BrandedKey.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get slots() {\n return this.root.slots;\n }\n *[Symbol.iterator]() {\n const stack = [];\n let node = this.root;\n while (node !== undefined) {\n yield node;\n for (const [_, children] of node.children) {\n for (const child of children) {\n stack.push(child);\n }\n }\n node = stack.pop();\n }\n }\n on(eventName, listener) {\n return this.events.on(eventName, listener);\n }\n /**\n * Check if there are currently no anchors tracked.\n * Mainly for testing anchor cleanup.\n */\n isEmpty() {\n return this.root.children.size === 0;\n }\n locate(anchor) {\n if (anchor === NeverAnchor) {\n return undefined;\n }\n const path = this.anchorToPath.get(anchor);\n assert(path !== undefined, 0x3a6 /* Cannot locate anchor which is not in this AnchorSet */);\n return path.status === Status.Alive ? path : undefined;\n }\n forget(anchor) {\n if (anchor !== NeverAnchor) {\n const path = this.anchorToPath.get(anchor);\n assert(path !== undefined, 0x351 /* cannot forget unknown Anchor */);\n path.removeRef();\n this.anchorToPath.delete(anchor);\n }\n }\n /**\n * TODO: Add APIs need to allow callers of this function to reduce copying here.\n * Ex: maybe return something extending UpPath here.\n * @param path - the path to the node to be tracked. If null, returns an anchor\n * which is permanently invalid.\n */\n // eslint-disable-next-line @rushstack/no-new-null\n track(path) {\n if (path === null) {\n return NeverAnchor;\n }\n const foundPath = this.trackInner(path);\n const anchor = brand(this.anchorCounter++);\n this.anchorToPath.set(anchor, foundPath);\n return anchor;\n }\n /**\n * Finds a path node, creating if needed, and adds a ref count to it.\n */\n trackInner(path) {\n if (path instanceof PathNode && path.anchorSet === this) {\n path.addRef();\n return path;\n }\n const parent = path.parent ?? this.root;\n const parentPath = this.trackInner(parent);\n const child = parentPath.getOrCreateChild(path.parentField, path.parentIndex);\n // Now that child is added (if needed), remove the extra ref that we added in the recursive call.\n parentPath.removeRef();\n return child;\n }\n /**\n * Finds a path node if it already exists.\n */\n find(path) {\n if (path instanceof PathNode) {\n if (path.anchorSet === this) {\n return path;\n }\n }\n const parent = path.parent ?? this.root;\n const parentPath = this.find(parent);\n return parentPath?.tryGetChild(path.parentField, path.parentIndex);\n }\n /**\n * Returns an equivalent path making as much of it with PathNodes as possible.\n * This allows future operations (like find, track, locate) on this path (and derived ones) to be faster.\n * Note that the returned path may use AnchorNodes from this AnchorSet,\n * but does not have a tracked reference to them, so this should not be held onto across anything that might free an AnchorNode.\n *\n * @remarks\n * Also ensures that any PathNode in the path is from this AnchorSet.\n */\n internalizePath(originalPath) {\n let path = originalPath;\n const stack = [];\n while (path !== undefined) {\n if (path instanceof PathNode && path.anchorSet === this) {\n break;\n }\n stack.push(path);\n path = path.parent;\n }\n // Now `path` contains an internalized path.\n // It just needs the paths from stackOut to wrap it.\n let wrapWith;\n while ((wrapWith = stack.pop()) !== undefined) {\n if (path === undefined || path instanceof PathNode) {\n // If path already has an anchor, get an anchor for it's child if there is one:\n const child = (path ?? this.root).tryGetChild(wrapWith.parentField, wrapWith.parentIndex);\n if (child !== undefined) {\n path = child;\n continue;\n }\n }\n // Replacing this if with a ternary makes the documentation harder to include and hurts readability.\n // eslint-disable-next-line unicorn/prefer-ternary\n if (path === wrapWith.parent && !(wrapWith instanceof PathNode)) {\n // path is safe to reuse from input path, so use it to avoid allocating another object.\n path = wrapWith;\n }\n else {\n path = {\n parent: path,\n parentField: wrapWith.parentField,\n parentIndex: wrapWith.parentIndex,\n };\n }\n }\n return path ?? fail(\"internalize path must be a path\");\n }\n /**\n * Recursively marks the given `nodes` and their descendants as disposed and pointing to a deleted node.\n * Note that this does NOT detach the nodes.\n */\n deepDelete(nodes) {\n const stack = [...nodes];\n while (stack.length > 0) {\n const node = stack.pop();\n assert(node.status === Status.Alive, 0x408 /* PathNode must be alive */);\n node.status = Status.Dangling;\n node.events.emit(\"afterDestroy\", node);\n for (const children of node.children.values()) {\n stack.push(...children);\n }\n }\n }\n /**\n * Decouple nodes from their parent.\n * This removes the reference from the parent to the decoupled children, and updates the indexes of the remaining children accordingly.\n * This does NOT update the decoupled children: both their index and parent are left at their existing values.\n * To decouple and fixup the children, see `removeChildren` and `moveChildren`.\n * @param startPath - The path to the first node that is being decoupled.\n * @param count - number of siblings that are decoupled from the original tree.\n *\n * TODO: tests\n */\n decoupleNodes(startPath, count) {\n assert(count > 0, 0x681 /* count must be positive */);\n const sourceParent = this.find(startPath.parent ?? this.root);\n const sourceChildren = sourceParent?.children?.get(startPath.parentField);\n let nodes = [];\n if (sourceChildren !== undefined) {\n let numberBeforeDecouple = 0;\n let numberToDecouple = 0;\n let index = 0;\n while (index < sourceChildren.length &&\n sourceChildren[index].parentIndex < startPath.parentIndex) {\n numberBeforeDecouple++;\n index++;\n }\n while (index < sourceChildren.length &&\n sourceChildren[index].parentIndex < startPath.parentIndex + count) {\n numberToDecouple++;\n index++;\n }\n while (index < sourceChildren.length) {\n // Fix indexes in source after moved items (subtract count).\n sourceChildren[index].parentIndex -= count;\n index++;\n }\n // Sever the parent -> child connections\n nodes = sourceChildren.splice(numberBeforeDecouple, numberToDecouple);\n if (sourceChildren.length === 0) {\n sourceParent.afterEmptyField(startPath.parentField);\n }\n }\n return nodes;\n }\n /**\n * Couple nodes to a parent.\n * @param destination - where the siblings are coupled to.\n * @param count - number of siblings that are coupled in the original tree.\n * @param coupleInfo - this object contains the nodes to couple and the parent index of the first node that is coupled in the original tree.\n *\n * TODO: tests\n */\n coupleNodes(destination, count, coupleInfo) {\n assert(coupleInfo.nodes.length > 0, 0x682 /* coupleInfo must have nodes to couple */);\n // The destination needs to be created if it does not exist yet.\n const destinationPath = this.trackInner(destination.parent ?? this.root);\n // Update nodes for new parent.\n for (const node of coupleInfo.nodes) {\n node.parentIndex += destination.parentIndex - coupleInfo.startParentIndex;\n node.parentPath = destinationPath;\n node.parentField = destination.parentField;\n }\n // Update new parent to add children\n const field = destinationPath.children.get(destination.parentField);\n if (field === undefined) {\n destinationPath.children.set(destination.parentField, coupleInfo.nodes);\n }\n else {\n // Update existing field contents\n const numberBeforeCouple = this.increaseParentIndexes(field, destination.parentIndex, count);\n // TODO: this will fail for very large numbers of anchors due to argument limits.\n field.splice(numberBeforeCouple, 0, ...coupleInfo.nodes);\n }\n destinationPath.removeRef();\n }\n /**\n * Updates the parent indexes within `field` to account for `count` children being inserted at `fromParentIndex`. Note that\n * `fromParentIndex` is the logical position within the field, not the index with the sparse PathNode array.\n *\n * @param field - the field to update.\n * @param fromParentIndex - the logical index within the field to start updating from.\n * @param count - the number to increase parent indexes.\n * @returns the number of items in the field that are not increased.\n *\n * TODO: tests\n */\n increaseParentIndexes(field, fromParentIndex, count) {\n let index = 0;\n while (index < field.length && field[index].parentIndex < fromParentIndex) {\n index++;\n }\n const numberBeforeIncrease = index;\n while (index < field.length) {\n field[index].parentIndex += count;\n index++;\n }\n return numberBeforeIncrease;\n }\n /**\n * Updates paths for a range move (including re-parenting path items and updating indexes).\n * @param sourceStart - where the siblings are removed from.\n * @param destination - where the siblings are moved to.\n * @param count - number of siblings to move.\n *\n * TODO:\n * How should anchors that become invalid, then valid again (ex: into content that was deleted, then undone) work?\n * Add an API to resurrect them? Store them in special detached fields? Store them in special non-detached fields?\n *\n * TODO:\n * How should custom anchors work (ex: ones not just tied to a specific Node)?\n * This design assumes they can be expressed in terms of a Node anchor + some extra stuff,\n * but we don't have an API for the extra stuff yet.\n *\n * TODO: tests\n */\n moveChildren(sourceStart, destination, count) {\n const nodes = this.decoupleNodes(sourceStart, count);\n if (nodes.length > 0) {\n this.coupleNodes(destination, count, {\n startParentIndex: sourceStart.parentIndex,\n nodes,\n });\n }\n else {\n // If there are no nodes to move, we still need to update the parent indexes of the nodes\n // affected in the move in.\n this.offsetChildren(destination, count);\n }\n }\n removeChildren(path, count) {\n const nodes = this.decoupleNodes(path, count);\n this.deepDelete(nodes);\n }\n /**\n * Updates the parent indexes of all the nodes located at right side of the given path by the given offset.\n * @param firstSiblingToOffset - the path to offset children of.\n * @param offset - the offset to apply to the children.\n *\n */\n offsetChildren(firstSiblingToOffset, offset) {\n const nodePath = this.find(firstSiblingToOffset.parent ?? this.root);\n const field = nodePath?.children.get(firstSiblingToOffset.parentField);\n if (field !== undefined) {\n this.increaseParentIndexes(field, firstSiblingToOffset.parentIndex, offset);\n }\n }\n /**\n * Provides a visitor that can be used to mutate this {@link AnchorSet}.\n *\n * @returns A visitor that can be used to mutate this {@link AnchorSet}.\n *\n * @remarks\n * Mutating the {@link AnchorSet} does NOT update the forest.\n * The visitor must be released after use by calling {@link DeltaVisitor.free} on it.\n * It is invalid to acquire a visitor without releasing the previous one,\n * and this method will throw an error if this is attempted.\n */\n acquireVisitor() {\n assert(this.activeVisitor === undefined, 0x767 /* Must release existing visitor before acquiring another */);\n const referencedPathNodes = [];\n const visitor = {\n anchorSet: this,\n // Run `withNode` on anchorNode for parent if there is such an anchorNode.\n // If at root, run `withRoot` instead.\n maybeWithNode(withNode, withRoot) {\n if (this.parent === undefined && withRoot !== undefined) {\n withRoot();\n }\n else {\n assert(this.parent !== undefined, 0x5b0 /* parent must exist */);\n // TODO:Perf:\n // When traversing to a depth D when there are not anchors in that subtree, this goes O(D^2).\n // Delta traversal should early out in this case because no work is needed (and all move outs are known to not contain anchors).\n this.parent = this.anchorSet.internalizePath(this.parent);\n if (this.parent instanceof PathNode) {\n this.parent.addRef();\n referencedPathNodes.push(this.parent);\n withNode(this.parent);\n }\n }\n },\n // Lookup table for path visitors collected from {@link AnchorEvents.visitSubtreeChanging} emitted events.\n // The key is the path of the node that the visitor is registered on. The code ensures that the path visitor visits only the appropriate subtrees\n // by maintaining the mapping only during time between the {@link DeltaVisitor.enterNode} and {@link DeltaVisitor.exitNode} calls for a given anchorNode.\n pathVisitors: new Map(),\n parentField: undefined,\n parent: undefined,\n bufferedEvents: [],\n // 'currentDepth' and 'depthThresholdForSubtreeChanged' serve to keep track of when do we need to emit\n // subtreeChangedAfterBatch events.\n // The algorithm works as follows:\n // - Initialize both to 0.\n // - As we walk the tree from the root towards the leaves, when we enter a node increment currentDepth by 1.\n // - When we edit a node, set depthThresholdForSubtreeChanged = currentDepth.\n // Intuitively, depthThresholdForSubtreeChanged means \"as you walk the tree towards the root, when you exit a\n // node at this depth you should emit a subtreeChangedAfterBatch event\".\n // - When we exit a node, if d === currentDepth then emit a subtreeChangedAfterBatch and decrement d by 1.\n // Then decrement currentDepth unconditionally.\n // Note that the event will be emitted when exiting a node that was edited (depthThresholdForSubtreeChanged will\n // have been set to the current depth when the edit happened), it will be emitted when exiting a node that is the\n // parent of a node that already emitted the event (because both depthThresholdForSubtreeChanged and currentDepth\n // get decremented when exiting a node so they stay in sync), and if we're already emitting the event but start\n // walking the tree back towards the leaves in a path where no edits happen, currentDepth will be increased again\n // as we walk that path, depthThresholdForSubtreeChanged will not, and thus no event will be emitted when walking\n // back up that path, until we get back to the depth where we were already emitting the event, and will continue\n // emitting it on the way to the root.\n currentDepth: 0,\n depthThresholdForSubtreeChanged: 0,\n free() {\n assert(this.anchorSet.activeVisitor !== undefined, 0x768 /* Multiple free calls for same visitor */);\n for (const node of referencedPathNodes) {\n node.removeRef();\n }\n this.anchorSet.activeVisitor = undefined;\n const alreadyEmitted = new Map();\n for (const { node, event } of this.bufferedEvents) {\n if (!alreadyEmitted.has(node)) {\n alreadyEmitted.set(node, []);\n }\n const emittedEvents = alreadyEmitted.get(node);\n if (emittedEvents?.includes(event) ?? false) {\n continue;\n }\n emittedEvents?.push(event);\n node.events.emit(event, node);\n }\n },\n notifyChildrenChanging() {\n this.maybeWithNode((p) => p.events.emit(\"childrenChanging\", p), () => this.anchorSet.events.emit(\"childrenChanging\", this.anchorSet));\n },\n notifyChildrenChanged() {\n this.maybeWithNode((p) => {\n p.events.emit(\"childrenChanged\", p);\n this.bufferedEvents.push({\n node: p,\n event: \"childrenChangedAfterBatch\",\n });\n }, () => { });\n },\n beforeAttach(source, count, destination) {\n assert(this.parentField !== undefined, 0x7a0 /* Must be in a field in order to attach */);\n const destinationPath = {\n parent: this.parent,\n field: this.parentField,\n index: destination,\n };\n const sourcePath = brand({\n field: source,\n start: 0,\n end: count,\n });\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.beforeAttach(sourcePath, destinationPath);\n }\n }\n },\n afterAttach(source, destination) {\n assert(this.parentField !== undefined, 0x7a1 /* Must be in a field in order to attach */);\n const sourcePath = brand({\n field: source,\n index: 0,\n });\n const destinationPath = {\n parent: this.parent,\n field: this.parentField,\n ...destination,\n };\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.afterAttach(sourcePath, destinationPath);\n }\n }\n },\n attach(source, count, destination) {\n this.notifyChildrenChanging();\n this.attachEdit(source, count, destination);\n this.notifyChildrenChanged();\n },\n attachEdit(source, count, destination) {\n assert(this.parentField !== undefined, 0x7a2 /* Must be in a field in order to attach */);\n const sourcePath = {\n parent: this.anchorSet.root,\n parentField: source,\n parentIndex: 0,\n };\n const destinationPath = {\n parent: this.parent,\n parentField: this.parentField,\n parentIndex: destination,\n };\n this.anchorSet.moveChildren(sourcePath, destinationPath, count);\n this.depthThresholdForSubtreeChanged = this.currentDepth;\n },\n beforeDetach(source, destination) {\n assert(this.parentField !== undefined, 0x7a3 /* Must be in a field in order to attach */);\n const sourcePath = {\n parent: this.parent,\n field: this.parentField,\n ...source,\n };\n const destinationPath = brand({\n field: destination,\n index: 0,\n });\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.beforeDetach(sourcePath, destinationPath);\n }\n }\n },\n afterDetach(source, count, destination) {\n assert(this.parentField !== undefined, 0x7a4 /* Must be in a field in order to attach */);\n const sourcePath = {\n parent: this.parent,\n field: this.parentField,\n index: source,\n };\n const destinationPath = brand({\n field: destination,\n start: 0,\n end: count,\n });\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.afterDetach(sourcePath, destinationPath);\n }\n }\n },\n detach(source, destination) {\n this.notifyChildrenChanging();\n this.detachEdit(source, destination);\n this.notifyChildrenChanged();\n },\n detachEdit(source, destination) {\n assert(this.parentField !== undefined, 0x7a5 /* Must be in a field in order to detach */);\n const sourcePath = {\n parent: this.parent,\n parentField: this.parentField,\n parentIndex: source.start,\n };\n const destinationPath = {\n parent: this.anchorSet.root,\n parentField: destination,\n parentIndex: 0,\n };\n this.anchorSet.moveChildren(sourcePath, destinationPath, source.end - source.start);\n this.depthThresholdForSubtreeChanged = this.currentDepth;\n },\n beforeReplace(newContent, oldContent, destination) {\n assert(this.parentField !== undefined, 0x7a6 /* Must be in a field in order to replace */);\n const oldContentPath = {\n parent: this.parent,\n field: this.parentField,\n ...oldContent,\n };\n const newNodesSourcePath = brand({\n field: newContent,\n start: 0,\n end: oldContent.end - oldContent.start,\n });\n const oldNodesDestinationPath = brand({\n field: destination,\n index: 0,\n });\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.beforeReplace(newNodesSourcePath, oldContentPath, oldNodesDestinationPath);\n }\n }\n },\n afterReplace(newContentSource, newContent, oldContent) {\n assert(this.parentField !== undefined, 0x7a7 /* Must be in a field in order to replace */);\n const newContentPath = {\n parent: this.parent,\n field: this.parentField,\n ...newContent,\n };\n const newNodesSourcePath = brand({\n field: newContentSource,\n index: 0,\n });\n const oldNodesDestinationPath = brand({\n field: oldContent,\n start: 0,\n end: newContent.end - newContent.start,\n });\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.afterReplace(newNodesSourcePath, newContentPath, oldNodesDestinationPath);\n }\n }\n },\n replace(newContentSource, range, oldContentDestination) {\n this.notifyChildrenChanging();\n this.detachEdit(range, oldContentDestination);\n this.attachEdit(newContentSource, range.end - range.start, range.start);\n this.notifyChildrenChanged();\n },\n destroy(detachedField, count) {\n this.anchorSet.removeChildren({\n parent: undefined,\n parentField: detachedField,\n parentIndex: 0,\n }, count);\n },\n beforeDestroy(detachedField, count) {\n const range = brand({\n field: detachedField,\n start: 0,\n end: count,\n });\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n pathVisitor.beforeDestroy(range);\n }\n }\n },\n create(content, destination) {\n // Nothing to do since content can only be created in a new detached field,\n // which cannot contain any anchors.\n },\n afterCreate(content, destination) {\n for (const visitors of this.pathVisitors.values()) {\n for (const pathVisitor of visitors) {\n const rangePath = brand({\n field: destination,\n start: 0,\n end: content.length,\n });\n pathVisitor.afterCreate(rangePath);\n }\n }\n },\n enterNode(index) {\n assert(this.parentField !== undefined, 0x3ab /* Must be in a field to enter node */);\n this.parent = {\n parent: this.parent,\n parentField: this.parentField,\n parentIndex: index,\n };\n this.parentField = undefined;\n this.maybeWithNode((p) => {\n // avoid multiple pass side-effects\n if (!this.pathVisitors.has(p)) {\n const visitors = p.events.emitAndCollect(\"subtreeChanging\", p);\n if (visitors.length > 0) {\n this.pathVisitors.set(p, new Set(visitors.filter((v) => v !== undefined)));\n }\n }\n });\n this.currentDepth++;\n },\n exitNode(index) {\n assert(this.parent !== undefined, 0x3ac /* Must have parent node */);\n this.maybeWithNode((p) => {\n p.events.emit(\"subtreeChanged\", p);\n if (this.depthThresholdForSubtreeChanged === this.currentDepth) {\n this.bufferedEvents.push({\n node: p,\n event: \"subtreeChangedAfterBatch\",\n });\n this.depthThresholdForSubtreeChanged--;\n }\n // Remove subtree path visitors added at this node if there are any\n this.pathVisitors.delete(p);\n });\n const parent = this.parent;\n this.parentField = parent.parentField;\n this.parent = parent.parent;\n this.currentDepth--;\n },\n enterField(key) {\n this.parentField = key;\n },\n exitField(key) {\n this.parentField = undefined;\n },\n };\n this.events.emit(\"treeChanging\", this);\n this.activeVisitor = visitor;\n return visitor;\n }\n}\n/**\n * Indicates the status of a `NodePath`.\n */\nvar Status;\n(function (Status) {\n /**\n * Indicates the `NodePath` is being maintained and corresponds to a valid\n * (i.e., not removed) node in the document.\n */\n Status[Status[\"Alive\"] = 0] = \"Alive\";\n /**\n * Indicates the `NodePath` is not being maintained by the `AnchorSet`.\n * The `NodePath` may or may not correspond to a valid node in the document.\n *\n * Accessing such a node is invalid.\n * Nodes in this state are retained to detect use-after-free bugs.\n */\n Status[Status[\"Disposed\"] = 1] = \"Disposed\";\n /**\n * Indicates the `NodePath` corresponds to a removed node in the document.\n * Such `NodePath`s are not maintained by the `AnchorSet` (other than updating\n * their status to `Disposed` when appropriate).\n *\n * Accessing such a node is invalid.\n * Nodes in this state are retained to detect use-after-free bugs.\n */\n Status[Status[\"Dangling\"] = 2] = \"Dangling\";\n})(Status || (Status = {}));\n/**\n * Tree of anchors.\n *\n * Contains both child and parent pointers, which are kept in sync.\n *\n * Each anchor is equivalent to a path through the tree.\n * This tree structure stores a collection of these paths, but deduplicating the common prefixes of the tree\n * prefix-tree style.\n *\n * These anchors are used instead of just holding onto the node objects in forests for several reasons:\n *\n * - Update policy might be more complex than just tracking a node object in the forest.\n *\n * - Not all forests will have node objects: some may use compressed binary formats with no objects to reference.\n *\n * - Anchors are needed even when not using forests, and for nodes that are outside the currently loaded part of the\n * forest.\n *\n * - Forest in general do not need to support up pointers, but they are needed for anchors.\n *\n * Thus this can be thought of as a sparse copy of the subset of trees which are used as anchors,\n * plus the parent paths for them.\n *\n * ReferenceCountedBase tracks the number of references to this from external sources (`Anchors` via `AnchorSet`.).\n * Kept alive as if any of the follow are true:\n * 1. there are children.\n * 2. refcount is non-zero.\n * 3. events are registered.\n */\nclass PathNode extends ReferenceCountedBase {\n /**\n * Construct a PathNode with refcount 1.\n * @param anchorSet - used to determine if this PathNode is already part of a specific anchorSet\n * to early out UpPath walking.\n */\n constructor(anchorSet, parentField, parentIndex, \n /**\n * The parent of this `PathNode` (an up pointer in the `PathNode` tree).\n * If the status of this node is `Alive`, then there must be a corresponding down pointer from the\n * `parentPath` node to this node.\n * When undefined, this node is the {@link AnchorSet.root} for `this.anchorSet` and thus has no parent.\n *\n * When updating the tree, `AnchorSet` may transiently leave the up and down pointers inconsistent\n * (updating down pointers first), but must ensure they are consistent before the editing operation returns\n * to non-`AnchorSet` code.\n * This consistency guarantee only applies to nodes that are `Alive`.\n */\n parentPath) {\n super(1);\n this.anchorSet = anchorSet;\n this.parentField = parentField;\n this.parentIndex = parentIndex;\n this.parentPath = parentPath;\n this.status = Status.Alive;\n /**\n * Event emitter for this anchor.\n */\n this.events = createEmitter(() => this.considerDispose());\n /**\n * PathNode arrays are kept sorted the PathNode's parentIndex for efficient search.\n * Users of this field must take care to maintain invariants (correct parent pointers, not empty child arrays etc.)\n *\n * Performance Note:\n * Large child lists could be updated more efficiently here using a data-structure optimized\n * for efficient prefix sum updates, such as a Fenwick tree or Finger tree.\n * This would be complicated by the need for parent pointers (including indexes),\n * but is possible to do.\n */\n this.children = new Map();\n // See note on BrandedKey.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.slots = new Map();\n }\n on(eventName, listener) {\n return this.events.on(eventName, listener);\n }\n child(key, index) {\n // Fast path: if child exists, return it.\n return (this.tryGetChild(key, index) ?? { parent: this, parentField: key, parentIndex: index });\n }\n getOrCreateChildRef(key, index) {\n const anchor = this.anchorSet.track(this.child(key, index));\n const node = this.anchorSet.locate(anchor) ?? fail(\"cannot reference child that does not exist\");\n return [anchor, node];\n }\n /**\n * @returns true iff this PathNode is the special root node that sits above all the detached fields.\n * In this case, the fields are detached sequences.\n * Note that the special root node should never appear in an UpPath\n * since UpPaths represent this root as `undefined`.\n */\n isRoot() {\n return this.parentPath === undefined;\n }\n get parent() {\n assert(this.status !== Status.Disposed, 0x409 /* PathNode must not be disposed */);\n assert(this.parentPath !== undefined, 0x355 /* PathNode.parent is an UpPath API and thus should never be called on the root PathNode. */);\n // Root PathNode corresponds to the undefined root for UpPath API.\n if (this.parentPath.isRoot()) {\n return undefined;\n }\n return this.parentPath;\n }\n addRef(count = 1) {\n assert(this.status === Status.Alive, 0x40a /* PathNode must be alive */);\n this.referenceAdded(count);\n }\n removeRef(count = 1) {\n assert(this.status !== Status.Disposed, 0x40b /* PathNode must not be disposed */);\n this.referenceRemoved(count);\n }\n // Called when refcount is set to 0.\n // Node may be kept alive by children or events after this point.\n onUnreferenced() {\n this.considerDispose();\n }\n /**\n * Gets a child, adding a ref to it.\n * Creates child (with 1 ref) if needed.\n */\n getOrCreateChild(key, index) {\n assert(this.status === Status.Alive, 0x40c /* PathNode must be alive */);\n let field = this.children.get(key);\n if (field === undefined) {\n field = [];\n this.children.set(key, field);\n }\n // TODO: should do more optimized search (ex: binary search).\n let child = field.find((c) => c.parentIndex === index);\n if (child === undefined) {\n child = new PathNode(this.anchorSet, key, index, this);\n field.push(child);\n // Keep list sorted by index.\n field.sort((a, b) => a.parentIndex - b.parentIndex);\n }\n else {\n child.addRef();\n }\n return child;\n }\n /**\n * Gets a child if it exists.\n * Does NOT add a ref.\n */\n tryGetChild(key, index) {\n assert(this.status === Status.Alive, 0x40d /* PathNode must be alive */);\n const field = this.children.get(key);\n // TODO: should do more optimized search (ex: binary search or better) using index.\n return field?.find((c) => c.parentIndex === index);\n }\n /**\n * Removes reference from this to `child`.\n * Since PathNodes are doubly linked,\n * the caller must ensure that the reference from child to parent is also removed (or the child is no longer used).\n */\n removeChild(child) {\n assert(this.status === Status.Alive, 0x40e /* PathNode must be alive */);\n const key = child.parentField;\n const field = this.children.get(key);\n // TODO: should do more optimized search (ex: binary search or better) using child.parentIndex()\n // Note that this is the index in the list of child paths, not the index within the field\n const childIndex = field?.indexOf(child) ?? -1;\n assert(childIndex !== -1, 0x35c /* child must be parented to be removed */);\n field?.splice(childIndex, 1);\n if (field?.length === 0) {\n this.afterEmptyField(key);\n }\n }\n /**\n * Call this after directly editing the child array for a field to be empty.\n * Handles cleaning up unneeded data\n * (like the field in the map, and possibly this entire PathNode and its parents if they are no longer needed.)\n */\n afterEmptyField(key) {\n assert(this.status === Status.Alive, 0x40f /* PathNode must be alive */);\n this.children.delete(key);\n this.considerDispose();\n }\n /**\n * If node is no longer needed (has no references, no children and no events):\n * removes this from parent if alive, and sets this to disposed.\n * Must only be called when .\n *\n * Allowed when dangling (but not when disposed).\n */\n considerDispose() {\n assert(this.status !== Status.Disposed, 0x41d /* PathNode must not be disposed */);\n if (this.isUnreferenced() && this.children.size === 0 && !this.events.hasListeners()) {\n if (this.status === Status.Alive) {\n this.parentPath?.removeChild(this);\n }\n this.status = Status.Disposed;\n }\n }\n}\n//# sourceMappingURL=anchorSet.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * A symbol for marking an object as an {@link ITreeCursor}.\n *\n * Useful when APIs want to take in tree data in multiple formats, including cursors.\n */\nexport const CursorMarker = Symbol(\"CursorMarker\");\n/**\n * Check if something is an {@link ITreeCursor}.\n *\n * Useful when APIs want to take in tree data in multiple formats, including cursors.\n */\nexport function isCursor(data) {\n // Other than on null and undefined, looking up a missing symbol shouldn't type error.\n // typeof check deals with undefined while providing an early out for other non-object types.\n return (data !== null &&\n typeof data === \"object\" &&\n data[CursorMarker] === true);\n}\n/**\n */\nexport var CursorLocationType;\n(function (CursorLocationType) {\n /**\n * Can iterate through nodes in a field.\n * At a \"current node\".\n */\n CursorLocationType[CursorLocationType[\"Nodes\"] = 0] = \"Nodes\";\n /**\n * Can iterate through fields of a node.\n * At a \"current field\".\n */\n CursorLocationType[CursorLocationType[\"Fields\"] = 1] = \"Fields\";\n})(CursorLocationType || (CursorLocationType = {}));\n/**\n * @param cursor - tree whose fields will be visited.\n * @param f - builds output from field, which will be selected in cursor when cursor is provided.\n * If `f` moves cursor, it must put it back to where it was at the beginning of `f` before returning.\n * @returns array resulting from applying `f` to each field of the current node on `cursor`.\n * Returns an empty array if the node is empty or not present (which are considered the same).\n * Note that order is not specified for field iteration.\n */\nexport function mapCursorFields(cursor, f) {\n const output = [];\n forEachField(cursor, (c) => {\n output.push(f(c));\n });\n return output;\n}\n/**\n * @param cursor - cursor at a node whose fields will be visited.\n * @param f - For on each field.\n * If `f` moves cursor, it must put it back to where it was at the beginning of `f` before returning.\n */\nexport function forEachField(cursor, f) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x411 /* should be in nodes */);\n for (let inField = cursor.firstField(); inField; inField = cursor.nextField()) {\n f(cursor);\n }\n}\n/**\n * @param cursor - tree whose field will be visited.\n * @param f - builds output from field member, which will be selected in cursor when cursor is provided.\n * If `f` moves cursor, it must put it back to where it was at the beginning of `f` before returning.\n * @returns array resulting from applying `f` to each item of the current field on `cursor`.\n * Returns an empty array if the field is empty or not present (which are considered the same).\n */\nexport function mapCursorField(cursor, f) {\n const output = [];\n forEachNode(cursor, (c) => {\n output.push(f(c));\n });\n return output;\n}\n/**\n * @param cursor - The tree whose field will be visited.\n * @param f - Builds output from field member, which will be selected in cursor when cursor is provided.\n * If `f` moves cursor, it must put it back to where it was at the beginning of `f` before returning.\n * @returns An iterable of `T` resulting from applying `f` to each item of the current field on `cursor`.\n * Yields nothing if an empty array if the field is empty or not present (which are considered the same).\n */\nexport function* iterateCursorField(cursor, f) {\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0x7a8 /* should be in fields */);\n for (let inNodes = cursor.firstNode(); inNodes; inNodes = cursor.nextNode()) {\n yield f(cursor);\n }\n}\n/**\n * @param cursor - cursor at a field whose nodes will be visited.\n * @param f - For on each node.\n * If `f` moves cursor, it must put it back to where it was at the beginning of `f` before returning.\n */\nexport function forEachNode(cursor, f) {\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0x3bd /* should be in fields */);\n for (let inNodes = cursor.firstNode(); inNodes; inNodes = cursor.nextNode()) {\n f(cursor);\n }\n}\n/**\n * @param cursor - cursor at a field or node.\n * @param f - Function to invoke for each node.\n * If `f` moves the cursor, it must put it back to where it was at the beginning of `f` before returning.\n *\n * Invokes `f` on each node in the subtree rooted at the current field or node.\n * Traversal is pre-order.\n * If the cursor is at a node, `f` will be invoked on that node.\n *\n * Returns the `cursor` to its initial position.\n */\nexport function forEachNodeInSubtree(cursor, f) {\n if (cursor.mode === 0 /* CursorLocationType.Nodes */) {\n f(cursor);\n forEachField(cursor, (c) => forEachNodeInSubtree(c, f));\n }\n else {\n forEachNode(cursor, (c) => forEachNodeInSubtree(c, f));\n }\n}\n/**\n * Casts a cursor to an {@link ITreeCursorSynchronous}.\n *\n * TODO: #1404: Handle this properly for partial data loading support.\n */\nexport function castCursorToSynchronous(cursor) {\n return cursor;\n}\n/**\n * Runs `f` inside of field `field` on `cursor`.\n * @param cursor - Cursor whose field to enter and exit. Must be in `nodes` mode.\n * @param field - Field to enter.\n * @param f - Callback to run when in field.\n * @returns return value of `f`\n */\nexport function inCursorField(cursor, field, f) {\n cursor.enterField(field);\n const result = f(cursor);\n cursor.exitField();\n return result;\n}\n/**\n * Runs `f` inside of node `index` on `cursor`.\n * @param cursor - Cursor whoso node to enter and exit. Must be in `fields` mode.\n * @param index - Node to enter.\n * @param f - Callback to run when in node.\n * @returns return value of `f`\n */\nexport function inCursorNode(cursor, index, f) {\n cursor.enterNode(index);\n const result = f(cursor);\n cursor.exitNode();\n return result;\n}\n//# sourceMappingURL=cursor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Returns a deep copy of the given {@link MapTree}.\n * @privateRemarks This is implemented iteratively (rather than recursively, which is much simpler)\n * to avoid the possibility of a stack overflow for very deep trees.\n */\nexport function deepCopyMapTree(mapTree) {\n const rootFields = new Map();\n const nexts = [[rootFields, mapTree.fields]];\n for (let next = nexts.pop(); next !== undefined; next = nexts.pop()) {\n const [fields, sourceFields] = next;\n for (const [key, field] of sourceFields) {\n if (field.length > 0) {\n const newField = [];\n for (const child of field) {\n const childClone = { ...child, fields: new Map() };\n newField.push(childClone);\n nexts.push([childClone.fields, child.fields]);\n }\n fields.set(key, newField);\n }\n }\n }\n return {\n ...mapTree,\n fields: rootFields,\n };\n}\n//# sourceMappingURL=mapTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { keyAsDetachedField } from \"./types.js\";\n/**\n * @returns the number of nodes above this one.\n * Zero when the path's parent is undefined, meaning the path represents a node in a detached field.\n * Runs in O(depth) time.\n */\nexport function getDepth(path) {\n let depth = 0;\n let next = path.parent;\n while (next !== undefined) {\n depth += 1;\n next = next.parent;\n }\n return depth;\n}\nexport function clonePath(path) {\n if (path === undefined) {\n return undefined;\n }\n return {\n parent: clonePath(path.parent),\n parentField: path.parentField,\n parentIndex: path.parentIndex,\n };\n}\n/**\n * @returns The elements of the given `path`, ordered from root-most to child-most.\n * These elements are unchanged and therefore still point \"up\".\n */\nexport function topDownPath(path) {\n const out = [];\n let curr = path;\n while (curr !== undefined) {\n out.push(curr);\n curr = curr.parent;\n }\n out.reverse();\n return out;\n}\n/**\n * @returns true iff `a` and `b` describe the same path.\n *\n * Note that for mutable paths (as used in `AnchorSet`), this equality may change over time: this only checks if the two paths are currently the same.\n */\nexport function compareUpPaths(a, b) {\n if (a === b) {\n // This handles the both `undefined` case, as well as provides an early out if a shared node is encountered.\n return true;\n }\n if (a === undefined || b === undefined) {\n return false;\n }\n if (a.parentField !== b.parentField || a.parentIndex !== b.parentIndex) {\n return false;\n }\n return compareUpPaths(a.parent, b.parent);\n}\n/**\n * @returns true iff `a` and `b` describe the same field path.\n *\n * Note that for mutable paths (as used in `AnchorSet`), this equality may change over time: this only checks if the two paths are currently the same.\n */\nexport function compareFieldUpPaths(a, b) {\n if (a.field !== b.field) {\n return false;\n }\n return compareUpPaths(a.parent, b.parent);\n}\n/**\n * Checks whether or not a given path is parented under the root field.\n * @param path - the path you want to check.\n * @returns the {@link DetachedField} which contains the path.\n */\nexport function getDetachedFieldContainingPath(path) {\n let currentPath = path;\n while (currentPath !== undefined) {\n if (currentPath.parent === undefined) {\n return keyAsDetachedField(currentPath.parentField);\n }\n else {\n currentPath = currentPath.parent;\n }\n }\n return keyAsDetachedField(path.parentField);\n}\n//# sourceMappingURL=pathTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fail } from \"../../util/index.js\";\n/**\n * Get a field from `node`, optionally modifying the tree to create it if missing.\n */\nexport function getGenericTreeField(node, key, createIfMissing) {\n const children = getGenericTreeFieldMap(node, createIfMissing);\n // Do not just read field and check for undefined: see warning on FieldMapObject.\n if (Object.prototype.hasOwnProperty.call(children, key)) {\n return children[key] ?? fail(\"This wont be undefined due to the check above\");\n }\n // Handle missing field:\n if (createIfMissing === false) {\n return [];\n }\n const newField = [];\n children[key] = newField;\n return newField;\n}\n/**\n * Get a FieldMap from `node`, optionally modifying the tree to create it if missing.\n */\nfunction getGenericTreeFieldMap(node, createIfMissing) {\n let children = node.fields;\n if (children === undefined) {\n children = {};\n // Handle missing fields:\n if (createIfMissing) {\n node.fields = children;\n }\n }\n return children;\n}\n/**\n * Sets a field on `node`.\n */\nexport function setGenericTreeField(node, key, content) {\n const children = getGenericTreeFieldMap(node, true);\n // like `children[keyString] = content;` except safe when keyString == \"__proto__\".\n Object.defineProperty(children, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: content,\n });\n}\n/**\n * @returns keys for fields of `tree`.\n */\nexport function genericTreeKeys(tree) {\n const fields = tree.fields;\n // This function is used when iterating through a tree.\n // This means that this is often called on nodes with no keys\n // (most trees are a large portion leaf nodes).\n // Therefore this function special cases empty fields objects as an optimization.\n if (fields === undefined) {\n return [];\n }\n return Object.keys(fields);\n}\n/**\n * Delete a field if empty.\n * Optionally delete FieldMapObject if empty as well.\n */\nexport function genericTreeDeleteIfEmpty(node, key, removeMapObject) {\n const children = getGenericTreeFieldMap(node, false);\n if (Object.prototype.hasOwnProperty.call(children, key)) {\n if (children[key]?.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete children[key];\n if (removeMapObject) {\n if (Object.keys(children).length === 0) {\n delete node.fields;\n }\n }\n }\n }\n}\n//# sourceMappingURL=treeTextFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer, bufferToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { fail } from \"../util/index.js\";\n/**\n * Creates a codec family from a registry of codecs.\n * Any codec that is not a {@link IMultiFormatCodec} will be wrapped with a default binary encoding.\n */\nexport function makeCodecFamily(registry) {\n const codecs = new Map();\n for (const [formatVersion, codec] of registry) {\n if (codecs.has(formatVersion)) {\n fail(\"Duplicate codecs specified.\");\n }\n codecs.set(formatVersion, ensureBinaryEncoding(codec));\n }\n return {\n resolve(formatVersion) {\n const codec = codecs.get(formatVersion);\n assert(codec !== undefined, 0x5e6 /* Requested coded for unsupported format. */);\n return codec;\n },\n getSupportedFormats() {\n return codecs.keys();\n },\n };\n}\nclass DefaultBinaryCodec {\n constructor(jsonCodec) {\n this.jsonCodec = jsonCodec;\n }\n encode(change, context) {\n const jsonable = this.jsonCodec.encode(change, context);\n const json = JSON.stringify(jsonable);\n return IsoBuffer.from(json);\n }\n decode(change, context) {\n const json = bufferToString(change, \"utf8\");\n const jsonable = JSON.parse(json);\n return this.jsonCodec.decode(jsonable, context);\n }\n}\nfunction isJsonCodec(codec) {\n return typeof codec.encode === \"function\" && typeof codec.decode === \"function\";\n}\n/**\n * Constructs a {@link IMultiFormatCodec} from a `IJsonCodec` using a generic binary encoding that simply writes\n * the json representation of the object to a buffer.\n */\nexport function withDefaultBinaryEncoding(jsonCodec) {\n return {\n json: jsonCodec,\n binary: new DefaultBinaryCodec(jsonCodec),\n };\n}\n/**\n * Ensures that the provided single or multi-format codec has a binary encoding.\n * Adapts the json encoding using {@link withDefaultBinaryEncoding} if necessary.\n */\nexport function ensureBinaryEncoding(codec) {\n return isJsonCodec(codec) ? withDefaultBinaryEncoding(codec) : codec;\n}\n/**\n * Codec for objects which carry no information.\n */\nexport const unitCodec = {\n json: {\n encode: () => 0,\n decode: () => 0,\n },\n binary: {\n encode: () => IsoBuffer.from(\"\"),\n decode: () => 0,\n },\n};\n/**\n * Wraps a codec with JSON schema validation for its encoded type.\n * @returns An {@link IJsonCodec} which validates the data it encodes and decodes matches the provided schema.\n */\nexport function withSchemaValidation(schema, codec, validator) {\n if (!validator) {\n return codec;\n }\n const compiledFormat = validator.compile(schema);\n return {\n encode: (obj, context) => {\n const encoded = codec.encode(obj, context);\n if (!compiledFormat.check(encoded)) {\n fail(\"Encoded schema should validate\");\n }\n return encoded;\n },\n decode: (encoded, context) => {\n if (!compiledFormat.check(encoded)) {\n fail(\"Encoded schema should validate\");\n }\n // TODO: would be nice to provide a more specific validate type to the inner codec than the outer one gets.\n return codec.decode(encoded, context);\n },\n };\n}\n//# sourceMappingURL=codec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { fail, objectToMap } from \"../util/index.js\";\n/**\n * This module contains utilities for an encoding of a discriminated union that is efficient to validate using\n * a JSON schema validator.\n * See {@link DiscriminatedUnionDispatcher} for more information on this pattern.\n */\n/**\n * Options to configure a TypeBox schema as a discriminated union that is simple to validate data against.\n *\n * See {@link DiscriminatedUnionDispatcher} for more information on this pattern.\n */\nexport const unionOptions = {\n additionalProperties: false,\n minProperties: 1,\n maxProperties: 1,\n};\n/**\n * Applies a function to the content of a [discriminated union](https://en.wikipedia.org/wiki/Tagged_union)\n * where the function to apply depends on which value from the union it holds.\n *\n * This uses a rather non-standard encoding of the union where it is an object with many differently named optional fields,\n * and which of the fields is populated determines the content type.\n * This union encoding has the advantage that schema validation (such as that implemented by TypeBox) can validate the data efficiently.\n * Other encodings--such as using an untagged union, then tagging the content types with a marker enum--require the schema validator to disambiguate the union members.\n * Most JSON validator implementations fail to recognize the marker enum determines which component of the discriminated union the data must be,\n * and end up checking against all candidate members of the union.\n *\n * @example\n *\n * The following union:\n * ```typescript\n * type Operation = Add | Subtract | Multiply | Divide;\n *\n * interface BinaryOperation {\n * readonly left: number;\n * readonly right: number;\n * }\n *\n * interface Add extends BinaryOperation {\n * readonly type: \"add\";\n * }\n *\n * interface Subtract extends BinaryOperation {\n * readonly type: \"subtract\";\n * }\n *\n * interface Multiply extends BinaryOperation {\n * readonly type: \"multiply\";\n * }\n *\n * interface Divide extends BinaryOperation {\n * readonly type: \"divide\";\n * }\n *\n * ```\n * Would be encoded using this strategy as:\n * ```typescript\n * interface EncodedBinaryOperation {\n * readonly left: number;\n * readonly right: number;\n * }\n *\n * interface EncodedOperation {\n * add?: EncodedBinaryOperation;\n * subtract?: EncodedBinaryOperation;\n * multiply?: EncodedBinaryOperation;\n * divide?: EncodedBinaryOperation;\n * }\n * ```\n * where only a single property of `EncodedOperation` is populated for a given encoded value.\n */\nexport class DiscriminatedUnionDispatcher {\n constructor(library) {\n this.library = objectToMap(library);\n }\n dispatch(union, ...args) {\n const keys = Reflect.ownKeys(union);\n assert(keys.length === 1, 0x733 /* discriminated union type should have exactly one member */);\n const key = keys[0];\n const value = union[key];\n const factory = this.library.get(key) ?? fail(\"missing function for union member\");\n const result = factory(value, ...args);\n return result;\n }\n}\n//# sourceMappingURL=discriminatedUnions.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A {@link JsonValidator} implementation which performs no validation and accepts all data as valid.\n * @privateRemarks Having this as an option unifies opting out of validation with selection of\n * validators, simplifying code performing validation.\n * @internal\n */\nexport const noopValidator = {\n compile: () => ({ check: (data) => true }),\n};\n//# sourceMappingURL=noopValidator.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nexport const Versioned = Type.Object({\n version: Type.Number(),\n});\n//# sourceMappingURL=format.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { withSchemaValidation, } from \"../codec.js\";\nimport { Versioned } from \"./format.js\";\nexport function makeVersionedCodec(supportedVersions, { jsonValidator: validator }, inner) {\n const codec = {\n encode: (data, context) => {\n const encoded = inner.encode(data, context);\n assert(supportedVersions.has(encoded.version), 0x88b /* version being encoded should be supported */);\n return encoded;\n },\n decode: (data, context) => {\n const versioned = data; // Validated by withSchemaValidation\n assert(supportedVersions.has(versioned.version), 0x88c /* version being decoded is not supported */);\n const decoded = inner.decode(data, context);\n return decoded;\n },\n };\n return supportedVersions.has(undefined)\n ? codec\n : withSchemaValidation(Versioned, codec, validator);\n}\nexport function makeVersionedValidatedCodec(options, supportedVersions, schema, codec) {\n return makeVersionedCodec(supportedVersions, options, withSchemaValidation(schema, codec, options.jsonValidator));\n}\n/**\n * Creates a codec which dispatches to the appropriate member of a codec family based on the version of\n * data it encounters.\n * Each member of the codec family must write an explicit version number into the data it encodes.\n */\nexport function makeVersionDispatchingCodec(family, options) {\n const writeCodec = family.resolve(options.writeVersion).json;\n const supportedVersions = new Set(family.getSupportedFormats());\n return makeVersionedCodec(supportedVersions, options, {\n encode(data, context) {\n return writeCodec.encode(data, context);\n },\n decode(data, context) {\n const codec = family.resolve(data.version);\n return codec.json.decode(data, context);\n },\n });\n}\n//# sourceMappingURL=codec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { unionOptions } from \"../../codec/index.js\";\nimport { brandedStringType } from \"../../util/index.js\";\nexport const version = 1;\n/**\n * TypeBox Schema for encoding {@link FieldKey} in persisted data.\n */\nexport const FieldKeySchema = brandedStringType();\nexport const FieldKindIdentifierSchema = brandedStringType();\n/**\n * TypeBox Schema for encoding {@link TreeNodeSchemaIdentifiers} in persisted data.\n */\nexport const TreeNodeSchemaIdentifierSchema = brandedStringType();\nconst FieldSchemaFormatBase = Type.Object({\n kind: FieldKindIdentifierSchema,\n types: Type.Optional(Type.Array(TreeNodeSchemaIdentifierSchema)),\n});\nconst noAdditionalProps = { additionalProperties: false };\nexport const FieldSchemaFormat = Type.Composite([FieldSchemaFormatBase], noAdditionalProps);\n/**\n * Persisted version of {@link ValueSchema}.\n */\nexport var PersistedValueSchema;\n(function (PersistedValueSchema) {\n PersistedValueSchema[PersistedValueSchema[\"Number\"] = 0] = \"Number\";\n PersistedValueSchema[PersistedValueSchema[\"String\"] = 1] = \"String\";\n PersistedValueSchema[PersistedValueSchema[\"Boolean\"] = 2] = \"Boolean\";\n PersistedValueSchema[PersistedValueSchema[\"FluidHandle\"] = 3] = \"FluidHandle\";\n PersistedValueSchema[PersistedValueSchema[\"Null\"] = 4] = \"Null\";\n})(PersistedValueSchema || (PersistedValueSchema = {}));\n/**\n * Discriminated union content of tree node schema.\n *\n * See {@link DiscriminatedUnionDispatcher} for more information on this pattern.\n */\nexport const TreeNodeSchemaDataFormat = Type.Object({\n /**\n * Object node union member.\n */\n object: Type.Optional(Type.Record(Type.String(), FieldSchemaFormat)),\n /**\n * Map node union member.\n */\n map: Type.Optional(FieldSchemaFormat),\n /**\n * Leaf node union member.\n */\n leaf: Type.Optional(Type.Enum(PersistedValueSchema)),\n}, unionOptions);\n//# sourceMappingURL=format.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DiscriminatedUnionDispatcher } from \"../../codec/index.js\";\nimport { brand, fail, invertMap } from \"../../util/index.js\";\nimport { PersistedValueSchema, } from \"./format.js\";\n/**\n * Schema for what {@link TreeValue} is allowed on a Leaf node.\n * @internal\n */\nexport var ValueSchema;\n(function (ValueSchema) {\n ValueSchema[ValueSchema[\"Number\"] = 0] = \"Number\";\n ValueSchema[ValueSchema[\"String\"] = 1] = \"String\";\n ValueSchema[ValueSchema[\"Boolean\"] = 2] = \"Boolean\";\n ValueSchema[ValueSchema[\"FluidHandle\"] = 3] = \"FluidHandle\";\n ValueSchema[ValueSchema[\"Null\"] = 4] = \"Null\";\n})(ValueSchema || (ValueSchema = {}));\n/**\n * Identifier used for the FieldKind for fields which must be empty.\n *\n * @remarks\n * This mainly show up in:\n * 1. The root default field for documents.\n * 2. The schema used for out of schema fields (which thus must be empty/not exist) on object and leaf nodes.\n */\nexport const forbiddenFieldKindIdentifier = \"Forbidden\";\n/**\n * A schema for empty fields (fields which must always be empty).\n * There are multiple ways this could be encoded, but this is the most explicit.\n */\nexport const storedEmptyFieldSchema = {\n // This kind requires the field to be empty.\n kind: brand(forbiddenFieldKindIdentifier),\n // This type set also forces the field to be empty not not allowing any types as all.\n types: new Set(),\n};\n/**\n * Identifier used for the FieldKind for fields of type identifier.\n */\nexport const identifierFieldKindIdentifier = \"Identifier\";\nfunction toErasedTreeNodeSchemaDataFormat(data) {\n return data;\n}\nexport function toTreeNodeSchemaDataFormat(data) {\n return data;\n}\n/**\n * @internal\n */\nexport class TreeNodeStoredSchema {\n}\n/**\n * @internal\n */\nexport class ObjectNodeStoredSchema extends TreeNodeStoredSchema {\n /**\n * @param objectNodeFields -\n * Schema for fields with keys scoped to this TreeNodeStoredSchema.\n * This refers to the TreeFieldStoredSchema directly\n * (as opposed to just supporting FieldSchemaIdentifier and having a central FieldKey -\\> TreeFieldStoredSchema map).\n * This allows us short friendly field keys which can be ergonomically used as field names in code.\n * It also interoperates well with mapFields being used as a map with arbitrary data as keys.\n */\n constructor(objectNodeFields) {\n super();\n this.objectNodeFields = objectNodeFields;\n }\n encode() {\n const fieldsObject = Object.create(null);\n // Sort fields to ensure output is identical for for equivalent schema (since field order is not considered significant).\n // This makes comparing schema easier, and ensures chunk reuse for schema summaries isn't needlessly broken.\n for (const key of [...this.objectNodeFields.keys()].sort()) {\n Object.defineProperty(fieldsObject, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: encodeFieldSchema(this.objectNodeFields.get(key) ?? fail(\"missing field\")),\n });\n }\n return toErasedTreeNodeSchemaDataFormat({\n object: fieldsObject,\n });\n }\n}\n/**\n * @internal\n */\nexport class MapNodeStoredSchema extends TreeNodeStoredSchema {\n /**\n * @param mapFields -\n * Allows using the fields as a map, with the keys being\n * FieldKeys and the values being constrained by this TreeFieldStoredSchema.\n * Usually `FieldKind.Value` should NOT be used here\n * since no nodes can ever be in schema if you use `FieldKind.Value` here\n * (that would require infinite children).\n */\n constructor(mapFields) {\n super();\n this.mapFields = mapFields;\n }\n encode() {\n return toErasedTreeNodeSchemaDataFormat({\n map: encodeFieldSchema(this.mapFields),\n });\n }\n}\n/**\n * @internal\n */\nexport class LeafNodeStoredSchema extends TreeNodeStoredSchema {\n /**\n * @param leafValue -\n * There are several approaches for how to store actual data in the tree\n * (special node types, special field contents, data on nodes etc.)\n * as well as several options about how the data should be modeled at this level\n * (byte sequence? javascript type? json?),\n * as well as options for how much of this would be exposed in the schema language\n * (ex: would all nodes with values be special built-ins, or could any schema add them?)\n * A simple easy to do in javascript approach is taken here:\n * this is not intended to be a suggestion of what approach to take, or what to expose in the schema language.\n * This is simply one approach that can work for modeling them in the internal schema representation.\n */\n constructor(leafValue) {\n super();\n this.leafValue = leafValue;\n }\n encode() {\n return toErasedTreeNodeSchemaDataFormat({\n leaf: encodeValueSchema(this.leafValue),\n });\n }\n}\nexport const storedSchemaDecodeDispatcher = new DiscriminatedUnionDispatcher({\n leaf: (data) => new LeafNodeStoredSchema(decodeValueSchema(data)),\n object: (data) => {\n const map = new Map();\n for (const [key, value] of Object.entries(data)) {\n map.set(key, decodeFieldSchema(value));\n }\n return new ObjectNodeStoredSchema(map);\n },\n map: (data) => new MapNodeStoredSchema(decodeFieldSchema(data)),\n});\nconst valueSchemaEncode = new Map([\n [ValueSchema.Number, PersistedValueSchema.Number],\n [ValueSchema.String, PersistedValueSchema.String],\n [ValueSchema.Boolean, PersistedValueSchema.Boolean],\n [ValueSchema.FluidHandle, PersistedValueSchema.FluidHandle],\n [ValueSchema.Null, PersistedValueSchema.Null],\n]);\nconst valueSchemaDecode = invertMap(valueSchemaEncode);\nfunction encodeValueSchema(inMemory) {\n return valueSchemaEncode.get(inMemory) ?? fail(\"missing PersistedValueSchema\");\n}\nfunction decodeValueSchema(inMemory) {\n return valueSchemaDecode.get(inMemory) ?? fail(\"missing ValueSchema\");\n}\nexport function encodeFieldSchema(schema) {\n const out = {\n kind: schema.kind,\n };\n if (schema.types !== undefined) {\n out.types = [...schema.types];\n }\n return out;\n}\nexport function decodeFieldSchema(schema) {\n const out = {\n // TODO: maybe provide actual FieldKind objects here, error on unrecognized kinds.\n kind: schema.kind,\n types: schema.types === undefined ? undefined : new Set(schema.types),\n };\n return out;\n}\n//# sourceMappingURL=schema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Describes how a particular field functions.\n *\n * This determine its reading and editing APIs, multiplicity, and what merge resolution policies it will use.\n */\nexport var Multiplicity;\n(function (Multiplicity) {\n /**\n * Exactly one item.\n */\n Multiplicity[Multiplicity[\"Single\"] = 0] = \"Single\";\n /**\n * 0 or 1 items.\n */\n Multiplicity[Multiplicity[\"Optional\"] = 1] = \"Optional\";\n /**\n * 0 or more items.\n */\n Multiplicity[Multiplicity[\"Sequence\"] = 2] = \"Sequence\";\n /**\n * Exactly 0 items.\n *\n * Using Forbidden makes what types are listed for allowed in a field irrelevant\n * since the field will never have values in it.\n *\n * Using Forbidden is equivalent to picking a kind that permits empty (like sequence or optional)\n * and having no allowed types (or only never types).\n * Because of this, its possible to express everything constraint wise without Forbidden,\n * but using Forbidden can be more semantically clear than optional with no allowed types.\n *\n * For view schema, this can be useful if you need to:\n * - run a specific out of schema handler when a field is present,\n * but otherwise are ignoring or tolerating (ex: via extra fields) unmentioned fields.\n * - prevent a specific field from being used as an extra field\n * (perhaps for some past of future compatibility reason)\n * - keep a field in a schema for metadata purposes\n * (ex: for improved error messaging, error handling or documentation)\n * that is not used in this specific version of the schema (ex: to document what it was or will be used for).\n *\n * For stored schema, this can be useful if you need to:\n * - have a field which can have its schema updated to Optional or Sequence of any type.\n * - to exclude a field from extra fields\n * - for the schema system to use as a default for fields which aren't declared\n * (ex: when updating a field that did not exist into one that does)\n *\n * @privateRemarks\n * See storedEmptyFieldSchema for a constant, reusable field using Forbidden.\n */\n Multiplicity[Multiplicity[\"Forbidden\"] = 3] = \"Forbidden\";\n})(Multiplicity || (Multiplicity = {}));\n//# sourceMappingURL=multiplicity.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\nimport { createEmitter } from \"../../events/index.js\";\nimport { compareStrings } from \"../../util/index.js\";\nimport { storedEmptyFieldSchema, } from \"./schema.js\";\n/**\n * Mutable TreeStoredSchema repository.\n */\nexport class TreeStoredSchemaRepository {\n /**\n * Copies in the provided schema. If `data` is an TreeStoredSchemaRepository, it will be cheap-cloned.\n * Otherwise, it will be deep-cloned.\n *\n * We might not want to store schema in maps long term, as we might want a way to reserve a\n * large space of schema IDs within a schema.\n * The way mapFields has been structured mitigates the need for this, but it still might be useful.\n *\n * (ex: someone using data as field identifiers might want to\n * reserve all fields identifiers starting with \"foo.\" to have a specific schema).\n * Combined with support for such namespaces in the allowed sets in the schema objects,\n * that might provide a decent alternative to mapFields (which is a bit odd).\n */\n constructor(data) {\n this.events = createEmitter();\n if (data === undefined) {\n this.rootFieldSchemaData = storedEmptyFieldSchema;\n this.nodeSchemaData = new BTree([], compareStrings);\n }\n else {\n if (data instanceof TreeStoredSchemaRepository) {\n this.rootFieldSchemaData = data.rootFieldSchema;\n this.nodeSchemaData = data.nodeSchemaData.clone();\n }\n else {\n this.rootFieldSchemaData = data.rootFieldSchema;\n this.nodeSchemaData = cloneNodeSchemaData(data.nodeSchema);\n }\n }\n }\n on(eventName, listener) {\n return this.events.on(eventName, listener);\n }\n get nodeSchema() {\n // Btree implements iterator, but not in a type-safe way\n return this.nodeSchemaData;\n }\n get rootFieldSchema() {\n return this.rootFieldSchemaData;\n }\n apply(newSchema) {\n this.events.emit(\"beforeSchemaChange\", newSchema);\n const clone = new TreeStoredSchemaRepository(newSchema);\n // In the future, we could use btree's delta functionality to do a more efficient update\n this.rootFieldSchemaData = clone.rootFieldSchemaData;\n this.nodeSchemaData = clone.nodeSchemaData;\n this.events.emit(\"afterSchemaChange\", newSchema);\n }\n clone() {\n return new TreeStoredSchemaRepository(this);\n }\n}\nexport function schemaDataIsEmpty(data) {\n return data.nodeSchema.size === 0;\n}\nfunction cloneNodeSchemaData(nodeSchema) {\n // Schema objects are immutable (unlike stored schema repositories), so this shallow copy is fine.\n const entries = [\n ...nodeSchema.entries(),\n ];\n return new BTree(entries, compareStrings);\n}\n//# sourceMappingURL=storedSchemaRepository.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { schemaFormat } from \"../schema-stored/index.js\";\nconst EncodedFieldMapObject = (tChild) => Type.Record(Type.String(), Type.Array(tChild, { minItems: 1 }));\nconst EncodedNodeData = Type.Object({\n value: Type.Optional(Type.Any()),\n type: Type.Readonly(schemaFormat.TreeNodeSchemaIdentifierSchema),\n});\nconst EncodedGenericFieldsNode = (tChild) => Type.Object({\n fields: Type.Optional(EncodedFieldMapObject(tChild)),\n globalFields: Type.Optional(EncodedFieldMapObject(tChild)),\n});\nconst EncodedGenericTreeNode = (tChild) => Type.Composite([EncodedGenericFieldsNode(tChild), EncodedNodeData], {\n additionalProperties: false,\n});\nexport const EncodedJsonableTree = Type.Recursive((Self) => EncodedGenericTreeNode(Self));\n/* eslint-enable @typescript-eslint/explicit-function-return-type */\n//# sourceMappingURL=persistedTreeTextFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { rootFieldKey } from \"./types.js\";\nexport const emptyDelta = {};\nexport const emptyFieldChanges = {};\nexport function isAttachMark(mark) {\n return mark.attach !== undefined && mark.detach === undefined;\n}\nexport function isDetachMark(mark) {\n return mark.detach !== undefined && mark.attach === undefined;\n}\nexport function isReplaceMark(mark) {\n return mark.detach !== undefined && mark.attach !== undefined;\n}\nexport function isEmptyFieldChanges(fieldChanges) {\n return (fieldChanges.local === undefined &&\n fieldChanges.global === undefined &&\n fieldChanges.rename === undefined);\n}\nexport function deltaForRootInitialization(content) {\n if (content.length === 0) {\n return emptyDelta;\n }\n const buildId = { minor: 0 };\n const delta = {\n build: [{ id: buildId, trees: content }],\n fields: new Map([\n [\n rootFieldKey,\n {\n local: [{ count: content.length, attach: buildId }],\n },\n ],\n ]),\n };\n return delta;\n}\nexport function makeDetachedNodeId(major, minor) {\n const out = { minor };\n if (major !== undefined) {\n out.major = major;\n }\n return out;\n}\nexport function offsetDetachId(id, offset) {\n if (id === undefined) {\n return undefined;\n }\n return {\n ...id,\n minor: id.minor + offset,\n };\n}\nexport function areDetachedNodeIdsEqual(a, b) {\n return a.major === b.major && a.minor === b.minor;\n}\n//# sourceMappingURL=deltaUtil.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { setInNestedMap, tryGetFromNestedMap } from \"../../util/index.js\";\nimport { areDetachedNodeIdsEqual, isAttachMark, isDetachMark, isReplaceMark, offsetDetachId, } from \"./deltaUtil.js\";\n/**\n * Implementation notes:\n *\n * The visit is organized into four phases:\n * 1. a detach pass\n * 2. root transfers\n * 3. an attach pass\n * 4. root destructions\n *\n * The core idea is that before content can be attached, it must first exist and be in a detached field.\n * The detach pass is therefore responsible for making sure that all roots that needs to be attached during the\n * attach pass are detached.\n * In practice, this means the detach pass must:\n * - Create all subtrees that need to be created\n * - Detach all moved nodes\n *\n * In addition to that, the detach pass also detaches nodes that need removing, with the exception of nodes that get\n * replaced. The reason for this exception is that we need to be able to communicate replaces as atomic operations.\n * In order to do that, we need to wait until we are sure that the content to attach is available as a detached root.\n * Replaces are therefore handled during the attach pass.\n * Note that this could theoretically lead to a situation where, in the attach pass, one replace wants to attach\n * a node that has yet to be detached by another replace. This does not occur in practice because we do not support\n * editing operations that would lead to this situation.\n *\n * While the detach pass ensures that nodes to be attached are in a detached state, it does not guarantee that they\n * reside in the correct detach field. That is the responsibility of the root transfers phase.\n *\n * The attach phase carries out attaches and replaces.\n *\n * After the attach phase, roots destruction is carried out.\n * This needs to happen last to allow modifications to detached roots to be applied before they are destroyed.\n *\n * The details of the delta visit algorithm can impact how/when events are emitted by the objects that own the visitors.\n * For example, as of 2024-03-27, the subtreecChanged event of an AnchorNode is emitted when exiting a node during a\n * delta visit, and thus the two-pass nature of the algorithm means the event fires twice for any given change.\n * This two-pass nature also means that the event may fire at a time where no change is visible in the tree. E.g.,\n * if a node is being replaced, when the event fires during the detach pass no change in the tree has happened so the\n * listener won't see any; then when it fires during the attach pass, the change will be visible in the event listener.\n */\n/**\n * Crawls the given `delta`, calling `visitor`'s callback for each change encountered.\n * Each successive call to the visitor callbacks assumes that the change described by earlier calls have been applied\n * to the document tree. For example, for a change that removes the first and third node of a field, the visitor calls\n * will first call detach with a range from indices 0 to 1 then call detach with a range from indices 1 to 2.\n *\n * @param delta - The delta to be crawled.\n * @param visitor - The object to notify of the changes encountered.\n * @param detachedFieldIndex - Index responsible for keeping track of the existing detached fields.\n * @param latestRevision - The latest revision tag associated with this delta.\n */\nexport function visitDelta(delta, visitor, detachedFieldIndex, latestRevision) {\n const detachPassRoots = new Map();\n const attachPassRoots = new Map();\n const rootTransfers = [];\n const rootDestructions = [];\n const refreshers = new Map();\n delta.refreshers?.forEach(({ id: { major, minor }, trees }) => {\n for (let i = 0; i < trees.length; i += 1) {\n const offsettedId = minor + i;\n setInNestedMap(refreshers, major, offsettedId, trees[i]);\n }\n });\n const detachConfig = {\n func: detachPass,\n latestRevision,\n refreshers,\n detachedFieldIndex,\n detachPassRoots,\n attachPassRoots,\n rootTransfers,\n rootDestructions,\n };\n processBuilds(delta.build, detachConfig, visitor);\n visitFieldMarks(delta.fields, visitor, detachConfig);\n fixedPointVisitOfRoots(visitor, detachPassRoots, detachConfig);\n transferRoots(rootTransfers, attachPassRoots, detachedFieldIndex, visitor, refreshers, latestRevision);\n const attachConfig = {\n func: attachPass,\n latestRevision,\n refreshers,\n detachedFieldIndex,\n detachPassRoots,\n attachPassRoots,\n rootTransfers,\n rootDestructions,\n };\n visitFieldMarks(delta.fields, visitor, attachConfig);\n fixedPointVisitOfRoots(visitor, attachPassRoots, attachConfig);\n collectDestroys(delta.destroy, attachConfig);\n for (const { id, count } of rootDestructions) {\n for (let i = 0; i < count; i += 1) {\n const offsetId = offsetDetachId(id, i);\n const root = detachedFieldIndex.getEntry(offsetId);\n const field = detachedFieldIndex.toFieldKey(root);\n visitor.destroy(field, 1);\n detachedFieldIndex.deleteEntry(offsetId);\n }\n }\n}\n/**\n * Visits all nodes in `roots` until none are left.\n * This function tolerates entries being added to and removed from `roots` as part of visits.\n * @param visitor - The visitor to visit the roots with.\n * @param roots - The initial set of roots to visit.\n * Individual entries are removed prior to being visited.\n * @param config - The configuration to use for visits.\n */\nfunction fixedPointVisitOfRoots(visitor, roots, config) {\n while (roots.size > 0) {\n for (const [root, modifications] of roots) {\n roots.delete(root);\n const field = config.detachedFieldIndex.toFieldKey(root);\n visitor.enterField(field);\n // Note: each visit may lead to `roots` being populated with new entries or having some entries removed.\n visitNode(0, modifications, visitor, config);\n visitor.exitField(field);\n }\n }\n}\n/**\n * Transfers roots from one detached field to another.\n * This occurs in the following circumstances:\n * - A changeset moves then removes a node\n * - A changeset restores then moves a node\n * - A changeset restores then removes a node\n * TODO#5481: update the DetachedFieldIndex instead of moving the nodes around.\n *\n * @param rootTransfers - The transfers to perform.\n * @param mapToUpdate - A map to update based on the transfers being performed.\n * @param detachedFieldIndex - The index to update based on the transfers being performed.\n * @param visitor - The visitor to inform of the transfers being performed.\n */\nfunction transferRoots(rootTransfers, mapToUpdate, detachedFieldIndex, visitor, refreshers, revision) {\n let nextBatch = rootTransfers.flatMap(({ oldId, newId, count }) => {\n const atomized = [];\n // It's possible for a detached node to be revived transiently such that it ends up back in the same detached field.\n // Making such a transfer wouldn't just be inefficient, it would lead us to mistakenly think we have moved all content\n // out of the source detached field, and would lead us to delete the tree index entry for that source detached field.\n // This would effectively result in the tree index missing an entry for the detached field.\n // This if statement prevents that from happening.\n if (!areDetachedNodeIdsEqual(oldId, newId)) {\n for (let i = 0; i < count; i += 1) {\n atomized.push({ oldId: offsetDetachId(oldId, i), newId: offsetDetachId(newId, i) });\n }\n }\n return atomized;\n });\n while (nextBatch.length > 0) {\n const delayed = [];\n const priorSize = nextBatch.length;\n for (const { oldId, newId } of nextBatch) {\n let oldRootId = detachedFieldIndex.tryGetEntry(oldId);\n if (oldRootId === undefined) {\n const tree = tryGetFromNestedMap(refreshers, oldId.major, oldId.minor);\n if (tree !== undefined) {\n buildTrees(oldId, [tree], detachedFieldIndex, revision, visitor);\n oldRootId = detachedFieldIndex.getEntry(oldId);\n }\n }\n if (oldRootId === undefined) {\n // The source field is not populated.\n // This can happen when another rename needs to be performed first.\n delayed.push({ oldId, newId });\n continue;\n }\n let newRootId = detachedFieldIndex.tryGetEntry(newId);\n if (newRootId !== undefined) {\n // The destination field is already occupied.\n // This can happen when another rename needs to be performed first.\n delayed.push({ oldId, newId });\n continue;\n }\n newRootId = detachedFieldIndex.createEntry(newId, revision);\n const fields = mapToUpdate.get(oldRootId);\n if (fields !== undefined) {\n mapToUpdate.delete(oldRootId);\n mapToUpdate.set(newRootId, fields);\n }\n const oldField = detachedFieldIndex.toFieldKey(oldRootId);\n const newField = detachedFieldIndex.toFieldKey(newRootId);\n visitor.enterField(oldField);\n visitor.detach({ start: 0, end: 1 }, newField);\n visitor.exitField(oldField);\n detachedFieldIndex.deleteEntry(oldId);\n }\n assert(delayed.length < priorSize, 0x7cf /* transferRoots should make progress */);\n nextBatch = delayed;\n }\n}\nfunction visitFieldMarks(fields, visitor, config) {\n if (fields !== undefined) {\n for (const [key, field] of fields) {\n visitor.enterField(key);\n config.func(field, visitor, config);\n visitor.exitField(key);\n }\n }\n}\nfunction visitNode(index, fields, visitor, config) {\n if (fields !== undefined) {\n visitor.enterNode(index);\n visitFieldMarks(fields, visitor, config);\n visitor.exitNode(index);\n }\n}\n/**\n * Performs the following:\n * - Performs all root creations\n * - Collects all roots that may need a detach pass\n * - Collects all roots that may need an attach pass\n * - Collects all relocates\n * - Collects all destructions\n * - Executes detaches (bottom-up) provided they are not part of a replace\n * (because we want to wait until we are sure content to attach is available as a root)\n */\nfunction detachPass(delta, visitor, config) {\n if (delta.global !== undefined) {\n for (const { id, fields } of delta.global) {\n let root = config.detachedFieldIndex.tryGetEntry(id);\n if (root === undefined) {\n const tree = tryGetFromNestedMap(config.refreshers, id.major, id.minor);\n assert(tree !== undefined, 0x928 /* refresher data not found */);\n buildTrees(id, [tree], config.detachedFieldIndex, config.latestRevision, visitor);\n root = config.detachedFieldIndex.getEntry(id);\n }\n // the revision is updated for any refresher data included in the delta that is used\n config.detachedFieldIndex.updateLatestRevision(id, config.latestRevision);\n config.detachPassRoots.set(root, fields);\n config.attachPassRoots.set(root, fields);\n }\n }\n if (delta.rename !== undefined) {\n config.rootTransfers.push(...delta.rename);\n }\n if (delta.local !== undefined) {\n let index = 0;\n for (const mark of delta.local) {\n if (mark.fields !== undefined) {\n assert(mark.attach === undefined || mark.detach !== undefined, 0x7d0 /* Invalid nested changes on an additive mark */);\n visitNode(index, mark.fields, visitor, config);\n }\n if (isDetachMark(mark)) {\n for (let i = 0; i < mark.count; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const id = offsetDetachId(mark.detach, i);\n const root = config.detachedFieldIndex.createEntry(id, config.latestRevision);\n if (mark.fields !== undefined) {\n config.attachPassRoots.set(root, mark.fields);\n }\n const field = config.detachedFieldIndex.toFieldKey(root);\n visitor.detach({ start: index, end: index + 1 }, field);\n }\n }\n else if (!isAttachMark(mark)) {\n index += mark.count;\n }\n }\n }\n}\nfunction buildTrees(id, trees, detachedFieldIndex, latestRevision, visitor) {\n for (const [i, tree] of trees.entries()) {\n const offsettedId = offsetDetachId(id, i);\n let root = detachedFieldIndex.tryGetEntry(offsettedId);\n assert(root === undefined, 0x929 /* Unable to build tree that already exists */);\n root = detachedFieldIndex.createEntry(offsettedId, latestRevision);\n const field = detachedFieldIndex.toFieldKey(root);\n visitor.create([tree], field);\n }\n}\nfunction processBuilds(builds, config, visitor) {\n if (builds !== undefined) {\n for (const { id, trees } of builds) {\n buildTrees(id, trees, config.detachedFieldIndex, config.latestRevision, visitor);\n }\n }\n}\nfunction collectDestroys(destroys, config) {\n if (destroys !== undefined) {\n config.rootDestructions.push(...destroys);\n }\n}\n/**\n * Preforms the following:\n * - Executes attaches (top-down) applying nested changes on the attached nodes\n * - Executes replaces (top-down) applying nested changes on the attached nodes\n * - Collects detached roots (from replaces) that need an attach pass\n */\nfunction attachPass(delta, visitor, config) {\n if (delta.local !== undefined) {\n let index = 0;\n for (const mark of delta.local) {\n if (isAttachMark(mark) || isReplaceMark(mark)) {\n for (let i = 0; i < mark.count; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const offsetAttachId = offsetDetachId(mark.attach, i);\n let sourceRoot = config.detachedFieldIndex.tryGetEntry(offsetAttachId);\n if (sourceRoot === undefined) {\n const tree = tryGetFromNestedMap(config.refreshers, offsetAttachId.major, offsetAttachId.minor);\n assert(tree !== undefined, 0x92a /* refresher data not found */);\n buildTrees(offsetAttachId, [tree], config.detachedFieldIndex, config.latestRevision, visitor);\n sourceRoot = config.detachedFieldIndex.getEntry(offsetAttachId);\n }\n const sourceField = config.detachedFieldIndex.toFieldKey(sourceRoot);\n const offsetIndex = index + i;\n if (isReplaceMark(mark)) {\n const rootDestination = config.detachedFieldIndex.createEntry(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n offsetDetachId(mark.detach, i), config.latestRevision);\n const destinationField = config.detachedFieldIndex.toFieldKey(rootDestination);\n visitor.replace(sourceField, { start: offsetIndex, end: offsetIndex + 1 }, destinationField);\n // We may need to do a second pass on the detached nodes\n if (mark.fields !== undefined) {\n config.attachPassRoots.set(rootDestination, mark.fields);\n }\n }\n else {\n // This a simple attach\n visitor.attach(sourceField, 1, offsetIndex);\n }\n config.detachedFieldIndex.deleteEntry(offsetAttachId);\n const fields = config.attachPassRoots.get(sourceRoot);\n if (fields !== undefined) {\n config.attachPassRoots.delete(sourceRoot);\n visitNode(offsetIndex, fields, visitor, config);\n }\n }\n }\n else if (!isDetachMark(mark) && mark.fields !== undefined) {\n visitNode(index, mark.fields, visitor, config);\n }\n if (!isDetachMark(mark)) {\n index += mark.count;\n }\n }\n }\n}\n//# sourceMappingURL=visitDelta.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { brand, brandedNumberType, brandedStringType, } from \"../../util/index.js\";\n/**\n * The identifier for a particular session/user/client that can generate `GraphCommit`s\n */\nexport const SessionIdSchema = brandedStringType();\nexport const RevisionTagSchema = Type.Union([\n Type.Literal(\"root\"),\n brandedNumberType(),\n]);\n/**\n * @returns true iff `a` and `b` are the same.\n */\nexport function areEqualChangeAtomIds(a, b) {\n return a.localId === b.localId && a.revision === b.revision;\n}\n/**\n * @returns a ChangeAtomId with the given revision and local ID.\n */\nexport function makeChangeAtomId(localId, revision) {\n return revision === undefined ? { localId } : { localId, revision };\n}\nexport function asChangeAtomId(id) {\n return typeof id === \"object\" ? id : { localId: id };\n}\nexport function taggedAtomId(id, revision) {\n return makeChangeAtomId(id.localId, id.revision ?? revision);\n}\nexport function taggedOptAtomId(id, revision) {\n if (id === undefined) {\n return undefined;\n }\n return taggedAtomId(id, revision);\n}\nexport function offsetChangeAtomId(id, offset) {\n return { ...id, localId: brand(id.localId + offset) };\n}\nexport function replaceAtomRevisions(id, oldRevisions, newRevision) {\n return oldRevisions.has(id.revision) ? atomWithRevision(id, newRevision) : id;\n}\nfunction atomWithRevision(id, revision) {\n const updated = { ...id, revision };\n if (revision === undefined) {\n delete updated.revision;\n }\n return updated;\n}\n/**\n * The type of a commit. This is used to describe the context in which the commit was created.\n *\n * @public\n */\nexport var CommitKind;\n(function (CommitKind) {\n /** A commit corresponding to a change that is not the result of an undo/redo. */\n CommitKind[CommitKind[\"Default\"] = 0] = \"Default\";\n /** A commit that is the result of an undo. */\n CommitKind[CommitKind[\"Undo\"] = 1] = \"Undo\";\n /** A commit that is the result of a redo. */\n CommitKind[CommitKind[\"Redo\"] = 2] = \"Redo\";\n})(CommitKind || (CommitKind = {}));\n/**\n * Creates a new graph commit object. This is useful for creating copies of commits with different parentage.\n * @param parent - the parent of the new commit\n * @param commit - the contents of the new commit object\n * @returns the new commit object\n */\n// Note that this function is synchronous, and therefore it is not a Promise.\n// However, it is still a strong commit-mint.\nexport function mintCommit(parent, commit) {\n const { revision, change } = commit;\n return {\n revision,\n change,\n parent,\n };\n}\nexport function replaceChange(commit, change) {\n const output = { ...commit, change };\n delete output.rollback;\n return output;\n}\n//# sourceMappingURL=types.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport function mapTaggedChange(input, change) {\n return { ...input, change };\n}\nexport function tagChange(change, revision) {\n return { revision, change };\n}\nexport function tagRollbackInverse(inverseChange, revision, rollbackOf) {\n return {\n revision,\n change: inverseChange,\n rollbackOf,\n };\n}\nexport function makeAnonChange(change) {\n return { revision: undefined, change };\n}\nexport var FinalChangeStatus;\n(function (FinalChangeStatus) {\n FinalChangeStatus[FinalChangeStatus[\"conflicted\"] = 0] = \"conflicted\";\n FinalChangeStatus[FinalChangeStatus[\"rebased\"] = 1] = \"rebased\";\n FinalChangeStatus[FinalChangeStatus[\"commuted\"] = 2] = \"commuted\";\n})(FinalChangeStatus || (FinalChangeStatus = {}));\n//# sourceMappingURL=changeRebaser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nexport class RevisionTagCodec {\n constructor(idCompressor) {\n this.idCompressor = idCompressor;\n this.localSessionId = idCompressor.localSessionId;\n }\n encode(tag) {\n return tag === \"root\"\n ? tag\n : this.idCompressor.normalizeToOpSpace(tag);\n }\n decode(tag, context) {\n if (tag === \"root\") {\n return tag;\n }\n assert(typeof tag === \"number\", 0x88d /* String revision tag must be the literal 'root' */);\n return this.idCompressor.normalizeToSessionSpace(tag, context.originatorId);\n }\n}\n//# sourceMappingURL=revisionTagCodec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { makeAnonChange, mapTaggedChange, tagChange, tagRollbackInverse, } from \"./changeRebaser.js\";\nimport { mintCommit } from \"./types.js\";\nexport function rebaseBranch(mintRevisionTag, changeRebaser, sourceHead, targetCommit, targetHead = targetCommit) {\n // Get both source and target as path arrays\n const sourcePath = [];\n const targetPath = [];\n const ancestor = findCommonAncestor([sourceHead, sourcePath], [targetHead, targetPath]);\n assert(ancestor !== undefined, 0x675 /* branches must be related */);\n const sourceBranchLength = sourcePath.length;\n // Find where `targetCommit` is in the target branch\n const targetCommitIndex = targetPath.findIndex((r) => r === targetCommit);\n if (targetCommitIndex === -1) {\n // If the targetCommit is not in the target path, then it is either disjoint from `target` or it is behind/at\n // the commit where source and target diverge (ancestor), in which case there is nothing more to rebase\n // TODO: Ideally, this would be an \"assertExpensive\". It is commented out because it causes O(N²) behavior when\n // processing N inbound commits from the same client whose ref seq# is not advancing (which is a common case).\n // N can be large when the client is sending a burst of changes (potentially on reconnection).\n // assert(\n // \tfindCommonAncestor(targetCommit, targetHead) !== undefined,\n // \t0x676 /* target commit is not in target branch */,\n // );\n return {\n newSourceHead: sourceHead,\n sourceChange: undefined,\n commits: { deletedSourceCommits: [], targetCommits: [], sourceCommits: sourcePath },\n telemetryProperties: {\n sourceBranchLength,\n rebaseDistance: targetCommitIndex + 1,\n countDropped: 0,\n },\n };\n }\n // Iterate through the target path and look for commits that are also present on the source branch (i.e. they\n // have matching tags). Each commit found in the target branch can be skipped when processing the source branch\n // because it has already been rebased onto the target. In the case that one or more of these commits are present\n // directly after `targetCommit`, then the new base can be advanced further without having to do any work.\n const sourceSet = new Set(sourcePath.map((r) => r.revision));\n let newBaseIndex = targetCommitIndex;\n for (const [i, { revision }] of targetPath.entries()) {\n if (sourceSet.has(revision)) {\n sourceSet.delete(revision);\n newBaseIndex = Math.max(newBaseIndex, i);\n }\n else if (i > targetCommitIndex) {\n break;\n }\n }\n /** The commit on the target branch that the new source branch branches off of (i.e. the new common ancestor) */\n const newBase = targetPath[newBaseIndex] ?? oob();\n // Figure out how much of the trunk to start rebasing over.\n const targetCommits = targetPath.slice(0, newBaseIndex + 1);\n const deletedSourceCommits = [...sourcePath];\n // If the source and target rebase path begin with a range that has all the same revisions, remove it; it is\n // equivalent on both branches and doesn't need to be rebased.\n const targetRebasePath = [...targetCommits];\n const minLength = Math.min(sourcePath.length, targetRebasePath.length);\n for (let i = 0; i < minLength; i++) {\n const firstSourcePath = sourcePath[0] ?? oob();\n const firstTargetRebasePath = targetRebasePath[0] ?? oob();\n if (firstSourcePath.revision === firstTargetRebasePath.revision) {\n sourcePath.shift();\n targetRebasePath.shift();\n }\n }\n const sourceCommits = [];\n // If all commits that are about to be rebased over on the target branch already comprise the start of the source branch,\n // are in the same order, and have no other commits interleaving them, then no rebasing needs to occur. Those commits can\n // simply be removed from the source branch, and the remaining commits on the source branch are reparented off of the new\n // base commit.\n if (targetRebasePath.length === 0) {\n for (const c of sourcePath) {\n sourceCommits.push(mintCommit(sourceCommits[sourceCommits.length - 1] ?? newBase, c));\n }\n return {\n newSourceHead: sourceCommits[sourceCommits.length - 1] ?? newBase,\n sourceChange: undefined,\n commits: {\n deletedSourceCommits,\n targetCommits,\n sourceCommits,\n },\n telemetryProperties: {\n sourceBranchLength,\n rebaseDistance: targetCommits.length,\n countDropped: sourceBranchLength - sourceSet.size,\n },\n };\n }\n // For each source commit, rebase backwards over the inverses of any commits already rebased, and then\n // rebase forwards over the rest of the commits up to the new base before advancing the new base.\n let newHead = newBase;\n const revInfos = getRevInfoFromTaggedChanges([...targetRebasePath, ...sourcePath]);\n // Note that the `revisionMetadata` gets updated as `revInfos` gets updated.\n const revisionMetadata = revisionMetadataSourceFromInfo(revInfos);\n let editsToCompose = targetRebasePath.slice();\n for (const c of sourcePath) {\n const rollback = rollbackFromCommit(changeRebaser, c, mintRevisionTag, false);\n if (sourceSet.has(c.revision)) {\n const currentComposedEdit = makeAnonChange(changeRebaser.compose(editsToCompose));\n editsToCompose = [currentComposedEdit];\n const change = changeRebaser.rebase(c, currentComposedEdit, revisionMetadata);\n newHead = {\n revision: c.revision,\n change,\n parent: newHead,\n };\n sourceCommits.push(newHead);\n editsToCompose.push(tagChange(change, c.revision));\n }\n revInfos.push({ revision: c.revision });\n editsToCompose.unshift(rollback);\n revInfos.unshift({ revision: rollback.revision, rollbackOf: rollback.rollbackOf });\n }\n let netChange;\n return {\n newSourceHead: newHead,\n get sourceChange() {\n if (netChange === undefined) {\n netChange = changeRebaser.compose(editsToCompose);\n }\n return netChange;\n },\n commits: {\n deletedSourceCommits,\n targetCommits,\n sourceCommits,\n },\n telemetryProperties: {\n sourceBranchLength,\n rebaseDistance: targetCommits.length,\n countDropped: sourceBranchLength - sourceSet.size,\n },\n };\n}\n/**\n * \"Sandwich/Horseshoe Rebase\" a change over the given source and target branches\n * @param changeRebaser - the change rebaser responsible for rebasing the change over the commits in each branch\n * @param change - the change to rebase\n * @param sourceHead - the head of the branch that `change` is based on\n * @param targetHead - the branch to rebase `change` onto\n * @returns the rebased change\n *\n * @remarks inverses will be cached.\n */\nexport function rebaseChange(changeRebaser, change, sourceHead, targetHead, mintRevisionTag) {\n const sourcePath = [];\n const targetPath = [];\n assert(findCommonAncestor([sourceHead, sourcePath], [targetHead, targetPath]) !== undefined, 0x576 /* branch A and branch B must be related */);\n const inverses = sourcePath.map((commit) => rollbackFromCommit(changeRebaser, commit, mintRevisionTag, true));\n inverses.reverse();\n const telemetryProperties = {\n sourceBranchLength: 1,\n rebaseDistance: sourcePath.length + targetPath.length,\n countDropped: 0,\n };\n return {\n change: rebaseChangeOverChanges(changeRebaser, change, [...inverses, ...targetPath]),\n telemetryProperties,\n };\n}\n/**\n */\nexport function revisionMetadataSourceFromInfo(revInfos) {\n const getIndex = (revision) => {\n const index = revInfos.findIndex((revInfo) => revInfo.revision === revision);\n return index >= 0 ? index : undefined;\n };\n const tryGetInfo = (revision) => {\n if (revision === undefined) {\n return undefined;\n }\n const index = getIndex(revision);\n return index === undefined ? undefined : revInfos[index];\n };\n const hasRollback = (revision) => {\n return revInfos.find((info) => info.rollbackOf === revision) !== undefined;\n };\n return { getIndex, tryGetInfo, hasRollback };\n}\nexport function rebaseChangeOverChanges(changeRebaser, changeToRebase, changesToRebaseOver) {\n const revisionMetadata = revisionMetadataSourceFromInfo(getRevInfoFromTaggedChanges([...changesToRebaseOver, changeToRebase]));\n return changesToRebaseOver.reduce((a, b) => mapTaggedChange(changeToRebase, changeRebaser.rebase(a, b, revisionMetadata)), changeToRebase).change;\n}\n// TODO: Deduplicate\nfunction getRevInfoFromTaggedChanges(changes) {\n const revInfos = [];\n for (const taggedChange of changes) {\n revInfos.push(...revisionInfoFromTaggedChange(taggedChange));\n }\n return revInfos;\n}\n// TODO: Deduplicate\nfunction revisionInfoFromTaggedChange(taggedChange) {\n const revInfos = [];\n if (taggedChange.revision !== undefined) {\n const info = { revision: taggedChange.revision };\n if (taggedChange.rollbackOf !== undefined) {\n info.rollbackOf = taggedChange.rollbackOf;\n }\n revInfos.push(info);\n }\n return revInfos;\n}\nfunction rollbackFromCommit(changeRebaser, commit, mintRevisionTag, cache) {\n if (commit.rollback !== undefined) {\n return commit.rollback;\n }\n const untagged = changeRebaser.invert(commit, true);\n const tag = mintRevisionTag();\n const deeplyTaggedRollback = changeRebaser.changeRevision(untagged, tag, commit.revision);\n const fullyTaggedRollback = tagRollbackInverse(deeplyTaggedRollback, tag, commit.revision);\n if (cache === true) {\n commit.rollback = fullyTaggedRollback;\n }\n return fullyTaggedRollback;\n}\nexport function findAncestor(descendant, predicate = (t) => t.parent === undefined) {\n let d;\n let path;\n if (Array.isArray(descendant)) {\n [d, path] = descendant;\n }\n else {\n d = descendant;\n }\n for (let cur = d; cur !== undefined; cur = cur.parent) {\n if (predicate(cur)) {\n path?.reverse();\n return cur;\n }\n path?.push(cur);\n }\n if (path !== undefined) {\n path.length = 0;\n }\n return undefined;\n}\n/**\n * Find a common ancestor between two descendants that are linked by parent pointers.\n * @param descendantA - a descendant. If an empty `path` array is included, it will be populated\n * with the chain of commits from the ancestor to `descendantA` (not including the ancestor).\n * @param descendantB - another descendant. If an empty `path` array is included, it will be populated\n * with the chain of commits from the ancestor to `descendantB` (not including the ancestor).\n * @returns the common ancestor of `descendantA` and `descendantB`, or `undefined` if no such ancestor exists.\n *\n * @example\n *\n * ```typescript\n * interface Parented {\n * parent?: Parented;\n * }\n * const shared = {};\n * const a = { parent: shared };\n * const b1 = { parent: shared };\n * const b2 = { parent: b1 };\n * const pathB: Parented[] = []\n * const ancestor = findCommonAncestor(a, [b2, pathB]);\n * // ancestor === shared\n * // pathB === [b1, b2]\n * ```\n */\nexport function findCommonAncestor(descendantA, descendantB) {\n let a;\n let b;\n let pathA;\n let pathB;\n if (Array.isArray(descendantA)) {\n [a, pathA] = descendantA;\n assert(pathA === undefined || pathA.length === 0, 0x578 /* Path A must be empty */);\n }\n else {\n a = descendantA;\n }\n if (Array.isArray(descendantB)) {\n [b, pathB] = descendantB;\n assert(pathB === undefined || pathB.length === 0, 0x579 /* Path B must be empty */);\n }\n else {\n b = descendantB;\n }\n if (a === b) {\n return a;\n }\n const reversePaths = () => {\n pathA?.reverse();\n pathB?.reverse();\n };\n const visited = new Set();\n while (a !== undefined || b !== undefined) {\n if (a !== undefined) {\n if (visited.has(a)) {\n if (pathB !== undefined) {\n pathB.length = pathB.findIndex((r) => Object.is(r, a));\n }\n reversePaths();\n return a;\n }\n visited.add(a);\n pathA?.push(a);\n a = a.parent;\n }\n if (b !== undefined) {\n if (visited.has(b)) {\n if (pathA !== undefined) {\n pathA.length = pathA.findIndex((r) => Object.is(r, b));\n }\n reversePaths();\n return b;\n }\n visited.add(b);\n pathB?.push(b);\n b = b.parent;\n }\n }\n if (pathA !== undefined) {\n pathA.length = 0;\n }\n if (pathB !== undefined) {\n pathB.length = 0;\n }\n return undefined;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { brandedNumberType } from \"../../util/index.js\";\nimport { RevisionTagSchema } from \"../rebase/index.js\";\nexport const version = 1.0;\n/**\n * The ID of a detached node. Is not globally unique on.\n * A `RevisionTag` + `DetachId` pair is globally unique and eventually consistent across clients.\n */\nexport const DetachId = Type.Number({ multipleOf: 1 });\n/**\n * The ID of a root node in the forest associated with the owning checkout. Is unique for that forest.\n * Is not consistent across clients.\n */\nconst ForestRootIdSchema = brandedNumberType({ minimum: -1, multipleOf: 1 });\n/**\n * A mapping from a range of the detached node IDs the corresponding range root IDs.\n * The detached node IDs need to be qualified with a revision (stored in the containing `EncodedRootsForRevision`).\n * Note: the length of the range (currently always 1) can be looked up in the forest.\n */\nexport const RootRange = Type.Tuple([\n // ID for the first detached node\n DetachId,\n // ID for the first root node\n ForestRootIdSchema,\n]);\nexport const RootRanges = Type.Array(RootRange);\n/**\n * For all the roots detached in a revision, represents a mapping from the detached node ID to corresponding root ID.\n */\nexport const EncodedRootsForRevision = Type.Union([\n // Used to represent a revision in which more than one node were detached\n Type.Tuple([RevisionTagSchema, RootRanges]),\n // Used to represent a revision in which a single node was detached\n Type.Tuple([RevisionTagSchema, DetachId, ForestRootIdSchema]),\n]);\nexport const Format = Type.Object({\n version: Type.Literal(version),\n data: Type.Array(EncodedRootsForRevision),\n maxId: ForestRootIdSchema,\n}, { additionalProperties: false });\n//# sourceMappingURL=detachedFieldIndexFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { makeVersionedValidatedCodec, } from \"../../codec/index.js\";\nimport { Format, version, } from \"./detachedFieldIndexFormat.js\";\nclass MajorCodec {\n constructor(revisionTagCodec, options, idCompressor) {\n this.revisionTagCodec = revisionTagCodec;\n this.options = options;\n this.idCompressor = idCompressor;\n }\n encode(major) {\n assert(major !== undefined, 0x88e /* Unexpected undefined revision */);\n const id = this.revisionTagCodec.encode(major);\n /**\n * Preface: this codec is only used at summarization time (not for ops).\n * Note that the decode path must provide a session id in which to interpret the revision tag.\n * The revision associated with a detached root generally comes from the session which detaches that subtree,\n * which isn't generally the local session (nor is it available at decode time with the layering of the tree\n * package), despite decode using the local session id.\n *\n * This is made OK by enforcing that all ids on encode/decode are non-local, since local ids won't be interpretable\n * at decode time.\n * This assert is valid because the revision for an acked edit will have already been finalized, and a revision\n * for a local-only edit will be finalizable at summarization time (local edits can only occur on a summarizing client\n * if they're created while detached, and local ids made while detached are finalized before generating the attach summary).\n */\n assert(id === \"root\" || id >= 0, 0x88f /* Expected final id on encode of detached field index revision */);\n return id;\n }\n decode(major) {\n assert(major === \"root\" || major >= 0, 0x890 /* Expected final id on decode of detached field index revision */);\n return this.revisionTagCodec.decode(major, {\n originatorId: this.revisionTagCodec.localSessionId,\n idCompressor: this.idCompressor,\n revision: undefined,\n });\n }\n}\nexport function makeDetachedNodeToFieldCodec(revisionTagCodec, options, idCompressor) {\n const majorCodec = new MajorCodec(revisionTagCodec, options, idCompressor);\n return makeVersionedValidatedCodec(options, new Set([version]), Format, {\n encode: (data) => {\n const rootsForRevisions = [];\n for (const [major, innerMap] of data.data) {\n const encodedRevision = majorCodec.encode(major);\n const rootRanges = [];\n for (const [minor, detachedField] of innerMap) {\n rootRanges.push([minor, detachedField.root]);\n }\n if (rootRanges.length === 1) {\n const firstRootRange = rootRanges[0] ?? oob();\n const rootsForRevision = [\n encodedRevision,\n firstRootRange[0],\n firstRootRange[1],\n ];\n rootsForRevisions.push(rootsForRevision);\n }\n else {\n const rootsForRevision = [encodedRevision, rootRanges];\n rootsForRevisions.push(rootsForRevision);\n }\n }\n const encoded = {\n version,\n data: rootsForRevisions,\n maxId: data.maxId,\n };\n return encoded;\n },\n decode: (parsed) => {\n const map = new Map();\n for (const rootsForRevision of parsed.data) {\n const innerMap = new Map();\n if (rootsForRevision.length === 2) {\n for (const [minor, root] of rootsForRevision[1]) {\n innerMap.set(minor, { root });\n }\n }\n else {\n innerMap.set(rootsForRevision[1], { root: rootsForRevision[2] });\n }\n map.set(majorCodec.decode(rootsForRevision[0]), innerMap);\n }\n return {\n data: map,\n maxId: parsed.maxId,\n };\n },\n });\n}\n//# sourceMappingURL=detachedFieldIndexCodec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { noopValidator } from \"../../codec/index.js\";\nimport { brand, deleteFromNestedMap, forEachInNestedMap, idAllocatorFromMaxId, populateNestedMap, setInNestedMap, tryGetFromNestedMap, } from \"../../util/index.js\";\nimport { makeDetachedNodeToFieldCodec } from \"./detachedFieldIndexCodec.js\";\n/**\n * The tree index records detached field IDs and associates them with a change atom ID.\n */\nexport class DetachedFieldIndex {\n /**\n * @param name - A name for the index, used as a prefix for the generated field keys.\n * @param rootIdAllocator - An ID allocator used to generate unique field keys.\n */\n constructor(name, rootIdAllocator, revisionTagCodec, idCompressor, options) {\n this.name = name;\n this.rootIdAllocator = rootIdAllocator;\n this.revisionTagCodec = revisionTagCodec;\n this.idCompressor = idCompressor;\n /**\n * A mapping from detached node ids to detached fields.\n */\n this.detachedNodeToField = new Map();\n /**\n * A map from revisions to all detached fields for which the revision is the latest relevant revision.\n * See {@link DetachedField.latestRelevantRevision}.\n *\n * @remarks\n * undefined revisions are tolerated but any roots not associated with a revision must be disposed manually\n */\n this.latestRelevantRevisionToFields = new Map();\n /**\n * The process for loading `DetachedFieldIndex` data from a summary is split into two steps:\n * 1. Call {@link loadData}\n * 2. Call {@link setRevisionsForLoadedData}\n *\n * This flag is only set to `false` after calling `loadData` and is set back to `true` after calling `setRevisionsForLoadedData`.\n * This helps ensure that `setRevisionsForLoadedData` is only called after `loadData` and only called once.\n */\n this.isFullyLoaded = true;\n this.options = options ?? { jsonValidator: noopValidator };\n this.codec = makeDetachedNodeToFieldCodec(revisionTagCodec, this.options, idCompressor);\n }\n clone() {\n const clone = new DetachedFieldIndex(this.name, idAllocatorFromMaxId(this.rootIdAllocator.getMaxId()), this.revisionTagCodec, this.idCompressor, this.options);\n populateNestedMap(this.detachedNodeToField, clone.detachedNodeToField, true);\n populateNestedMap(this.latestRelevantRevisionToFields, clone.latestRelevantRevisionToFields, true);\n return clone;\n }\n *entries() {\n for (const [major, innerMap] of this.detachedNodeToField) {\n if (major !== undefined) {\n for (const [minor, { root, latestRelevantRevision }] of innerMap) {\n yield latestRelevantRevision !== undefined\n ? { id: { major, minor }, root, latestRelevantRevision }\n : { id: { major, minor }, root };\n }\n }\n else {\n for (const [minor, { root, latestRelevantRevision }] of innerMap) {\n yield latestRelevantRevision !== undefined\n ? { id: { minor }, root, latestRelevantRevision }\n : { id: { minor }, root };\n }\n }\n }\n }\n /**\n * Removes all entries from the index.\n */\n purge() {\n this.detachedNodeToField.clear();\n this.latestRelevantRevisionToFields.clear();\n }\n updateMajor(current, updated) {\n // Update latestRelevantRevision information corresponding to `current`\n {\n const inner = this.latestRelevantRevisionToFields.get(current);\n if (inner !== undefined) {\n for (const nodeId of inner.values()) {\n const entry = tryGetFromNestedMap(this.detachedNodeToField, nodeId.major, nodeId.minor);\n assert(entry !== undefined, 0x9b8 /* Inconsistent data: missing detached node entry */);\n setInNestedMap(this.detachedNodeToField, nodeId.major, nodeId.minor, {\n ...entry,\n latestRelevantRevision: updated,\n });\n }\n this.latestRelevantRevisionToFields.delete(current);\n this.latestRelevantRevisionToFields.set(updated, inner);\n }\n }\n // Update the major keys corresponding to `current`\n {\n const innerCurrent = this.detachedNodeToField.get(current);\n if (innerCurrent !== undefined) {\n this.detachedNodeToField.delete(current);\n const innerUpdated = this.detachedNodeToField.get(updated);\n if (innerUpdated === undefined) {\n this.detachedNodeToField.set(updated, innerCurrent);\n }\n else {\n for (const [minor, entry] of innerCurrent) {\n assert(innerUpdated.get(minor) === undefined, 0x7a9 /* Collision during index update */);\n innerUpdated.set(minor, entry);\n }\n }\n for (const [minor, entry] of innerCurrent) {\n const entryInLatest = this.latestRelevantRevisionToFields.get(entry.latestRelevantRevision);\n assert(entryInLatest !== undefined, 0x9b9 /* Inconsistent data: missing node entry in latestRelevantRevision */);\n entryInLatest.set(entry.root, { major: updated, minor });\n }\n }\n }\n }\n /**\n * Returns a field key for the given ID.\n * This does not save the field key on the index. To do so, call {@link createEntry}.\n */\n toFieldKey(id) {\n return brand(`${this.name}-${id}`);\n }\n /**\n * Returns the FieldKey associated with the given id.\n * Returns undefined if no such id is known to the index.\n */\n tryGetEntry(id) {\n return tryGetFromNestedMap(this.detachedNodeToField, id.major, id.minor)?.root;\n }\n /**\n * Returns the FieldKey associated with the given id.\n * Fails if no such id is known to the index.\n */\n getEntry(id) {\n const key = this.tryGetEntry(id);\n assert(key !== undefined, 0x7aa /* Unknown removed node ID */);\n return key;\n }\n /**\n * Returns the detached root IDs for all the trees that were detached or last modified by the given revision.\n */\n *getRootsLastTouchedByRevision(revision) {\n const roots = this.latestRelevantRevisionToFields.get(revision);\n if (roots !== undefined) {\n yield* roots.keys();\n }\n }\n /**\n * Removes the detached roots for all the trees that were detached or last modified by the given revision.\n */\n deleteRootsLastTouchedByRevision(revision) {\n const entries = this.latestRelevantRevisionToFields.get(revision);\n if (entries === undefined) {\n return;\n }\n this.latestRelevantRevisionToFields.delete(revision);\n for (const detachedNodeId of entries.values()) {\n const found = deleteFromNestedMap(this.detachedNodeToField, detachedNodeId.major, detachedNodeId.minor);\n assert(found, 0x9ba /* Unable to delete unknown entry */);\n }\n }\n deleteEntry(nodeId) {\n const entry = tryGetFromNestedMap(this.detachedNodeToField, nodeId.major, nodeId.minor);\n assert(entry !== undefined, 0x9bb /* Unable to delete unknown entry */);\n deleteFromNestedMap(this.detachedNodeToField, nodeId.major, nodeId.minor);\n deleteFromNestedMap(this.latestRelevantRevisionToFields, entry.latestRelevantRevision, entry.root);\n }\n /**\n * Associates the DetachedNodeId with a field key and creates an entry for it in the index.\n * @param nodeId - The ID of the detached node.\n * @param revision - The revision that last detached the root.\n * See {@link DetachedField.latestRelevantRevision} for details.\n * @param count - The number of entries to create. These entries will have consecutive minor IDs.\n * @returns The atomic ID that the `DetachedFieldIndex` uses to uniquely identify the first root.\n */\n createEntry(nodeId, revision, count = 1) {\n const root = this.rootIdAllocator.allocate(count);\n if (nodeId !== undefined) {\n for (let i = 0; i < count; i++) {\n assert(tryGetFromNestedMap(this.detachedNodeToField, nodeId.major, nodeId.minor + i) ===\n undefined, 0x7ce /* Detached node ID already exists in index */);\n setInNestedMap(this.detachedNodeToField, nodeId.major, nodeId.minor + i, {\n root: brand(root + i),\n latestRelevantRevision: revision,\n });\n setInNestedMap(this.latestRelevantRevisionToFields, revision, root, nodeId);\n }\n }\n return root;\n }\n /**\n * Updates the latest revision that is relevant to the provided root\n */\n updateLatestRevision(id, revision) {\n const fieldEntry = tryGetFromNestedMap(this.detachedNodeToField, id.major, id.minor);\n assert(fieldEntry !== undefined, 0x9bc /* detached node id does not exist in the detached field index */);\n const { root, latestRelevantRevision: previousRevision } = fieldEntry;\n // remove this root from the set of roots for the previous latest revision\n deleteFromNestedMap(this.latestRelevantRevisionToFields, previousRevision, root);\n // add this root to the set of roots for the new latest revision\n setInNestedMap(this.latestRelevantRevisionToFields, revision, root, id);\n setInNestedMap(this.detachedNodeToField, id.major, id.minor, {\n root,\n latestRelevantRevision: revision,\n });\n }\n encode() {\n return this.codec.encode({\n data: this.detachedNodeToField,\n maxId: this.rootIdAllocator.getMaxId(),\n });\n }\n /**\n * Loads the tree index from the given string, this overrides any existing data.\n */\n loadData(data) {\n const detachedFieldIndex = this.codec.decode(data);\n this.rootIdAllocator = idAllocatorFromMaxId(detachedFieldIndex.maxId);\n this.detachedNodeToField = new Map();\n this.latestRelevantRevisionToFields = new Map();\n this.isFullyLoaded = false;\n const rootMap = new Map();\n forEachInNestedMap(detachedFieldIndex.data, ({ root }, major, minor) => {\n rootMap.set(root, { major, minor });\n });\n this.latestRelevantRevisionToFields.set(undefined, rootMap);\n }\n /**\n * Sets the latest relevant revision for any roots that have an undefined latest relevant revision.\n * This occurs when the detached field index is loaded from a summary and can only be called once after\n * the summary has been loaded.\n */\n setRevisionsForLoadedData(latestRevision) {\n assert(!this.isFullyLoaded, 0x9bd /* revisions should only be set once using this function after loading data from a summary */);\n const newDetachedNodeToField = new Map();\n const rootMap = new Map();\n forEachInNestedMap(this.detachedNodeToField, ({ root }, major, minor) => {\n setInNestedMap(newDetachedNodeToField, major, minor, { root, latestRevision });\n rootMap.set(root, { major, minor });\n });\n this.detachedNodeToField = newDetachedNodeToField;\n this.latestRelevantRevisionToFields.delete(undefined);\n this.latestRelevantRevisionToFields.set(latestRevision, rootMap);\n this.isFullyLoaded = true;\n }\n}\n//# sourceMappingURL=detachedFieldIndex.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { idAllocatorFromMaxId } from \"../../util/index.js\";\nimport { DetachedFieldIndex } from \"./detachedFieldIndex.js\";\nimport { visitDelta } from \"./visitDelta.js\";\nexport function makeDetachedFieldIndex(prefix = \"Temp\", revisionTagCodec, idCompressor, options) {\n return new DetachedFieldIndex(prefix, idAllocatorFromMaxId(), revisionTagCodec, idCompressor, options);\n}\nexport function applyDelta(delta, latestRevision, deltaProcessor, detachedFieldIndex) {\n const visitor = deltaProcessor.acquireVisitor();\n visitDelta(delta, visitor, detachedFieldIndex, latestRevision);\n visitor.free();\n}\nexport function announceDelta(delta, latestRevision, deltaProcessor, detachedFieldIndex) {\n const visitor = deltaProcessor.acquireVisitor();\n visitDelta(delta, combineVisitors([visitor], [visitor]), detachedFieldIndex, latestRevision);\n visitor.free();\n}\n/**\n * @param visitors - The returned visitor invokes the corresponding events for all these visitors, in order.\n * @param announcedVisitors - Subset of `visitors` to also call {@link AnnouncedVisitor} methods on.\n * This must be a subset of `visitors`: if not the visitor will not have its path correctly set when the events are triggered.\n * When `visitors` are making changes to data, `announcedVisitors` can be used to get extra events before or after all the changes from all the visitors have been made.\n * This can, for example, enable visitors to have access to the tree in these extra events despite multiple separate visitors updating different tree related data-structures.\n * @returns a DeltaVisitor combining all `visitors`.\n */\nexport function combineVisitors(visitors, announcedVisitors = []) {\n {\n const set = new Set(visitors);\n for (const item of announcedVisitors) {\n assert(set.has(item), 0x8c8 /* AnnouncedVisitor would not get traversed */);\n }\n }\n return {\n free: () => visitors.forEach((v) => v.free()),\n create: (...args) => {\n visitors.forEach((v) => v.create(...args));\n announcedVisitors.forEach((v) => v.afterCreate(...args));\n },\n destroy: (...args) => {\n announcedVisitors.forEach((v) => v.beforeDestroy(...args));\n visitors.forEach((v) => v.destroy(...args));\n },\n attach: (source, count, destination) => {\n announcedVisitors.forEach((v) => v.beforeAttach(source, count, destination));\n visitors.forEach((v) => v.attach(source, count, destination));\n announcedVisitors.forEach((v) => v.afterAttach(source, { start: destination, end: destination + count }));\n },\n detach: (source, destination) => {\n announcedVisitors.forEach((v) => v.beforeDetach(source, destination));\n visitors.forEach((v) => v.detach(source, destination));\n announcedVisitors.forEach((v) => v.afterDetach(source.start, source.end - source.start, destination));\n },\n replace: (newContent, oldContent, oldContentDestination) => {\n announcedVisitors.forEach((v) => v.beforeReplace(newContent, oldContent, oldContentDestination));\n visitors.forEach((v) => v.replace(newContent, oldContent, oldContentDestination));\n announcedVisitors.forEach((v) => v.afterReplace(newContent, oldContent, oldContentDestination));\n },\n enterNode: (...args) => visitors.forEach((v) => v.enterNode(...args)),\n exitNode: (...args) => visitors.forEach((v) => v.exitNode(...args)),\n enterField: (...args) => visitors.forEach((v) => v.enterField(...args)),\n exitField: (...args) => visitors.forEach((v) => v.exitField(...args)),\n };\n}\n//# sourceMappingURL=visitorUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { detachedFieldAsKey, rootField, } from \"../tree/index.js\";\n/**\n * @param field - defaults to {@link rootField}.\n * @returns anchor to `field`.\n */\nexport function rootAnchor(field = rootField) {\n return {\n parent: undefined,\n fieldKey: detachedFieldAsKey(field),\n };\n}\n/**\n * @param field - defaults to {@link rootField}.\n * @returns anchor to `field`.\n */\nexport function moveToDetachedField(forest, cursorToMove, field = rootField) {\n const result = forest.tryMoveCursorToField(rootAnchor(field), cursorToMove);\n assert(result === 1 /* TreeNavigationResult.Ok */, 0x42d /* Navigation to detached fields should never fail */);\n}\n/**\n */\nexport var ITreeSubscriptionCursorState;\n(function (ITreeSubscriptionCursorState) {\n /**\n * On the current revision of the forest.\n */\n ITreeSubscriptionCursorState[ITreeSubscriptionCursorState[\"Current\"] = 0] = \"Current\";\n /**\n * Empty, but can be reused.\n */\n ITreeSubscriptionCursorState[ITreeSubscriptionCursorState[\"Cleared\"] = 1] = \"Cleared\";\n /**\n * Freed and must not be used.\n */\n ITreeSubscriptionCursorState[ITreeSubscriptionCursorState[\"Freed\"] = 2] = \"Freed\";\n})(ITreeSubscriptionCursorState || (ITreeSubscriptionCursorState = {}));\n/**\n */\nexport var TreeNavigationResult;\n(function (TreeNavigationResult) {\n /**\n * Attempt to navigate cursor to a key or index that is outside the client's view.\n */\n TreeNavigationResult[TreeNavigationResult[\"NotFound\"] = -1] = \"NotFound\";\n /**\n * Attempt to navigate cursor to a portion of the tree that has not yet been loaded.\n */\n TreeNavigationResult[TreeNavigationResult[\"Pending\"] = 0] = \"Pending\";\n /**\n * ITreeReader successfully navigated to the desired node.\n */\n TreeNavigationResult[TreeNavigationResult[\"Ok\"] = 1] = \"Ok\";\n})(TreeNavigationResult || (TreeNavigationResult = {}));\n//# sourceMappingURL=forest.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * APIs for applying `view schema` to documents.\n */\n/**\n * How compatible a particular view schema is for some operation on some specific document.\n */\nexport var Compatibility;\n(function (Compatibility) {\n Compatibility[Compatibility[\"Incompatible\"] = 0] = \"Incompatible\";\n // For write compatibility this can include compatible schema updates to stored schema.\n // TODO: separate schema updates from adapters.\n // RequiresAdapters,\n Compatibility[Compatibility[\"Compatible\"] = 1] = \"Compatible\";\n})(Compatibility || (Compatibility = {}));\n/**\n * What kinds of updates to stored schema to permit.\n *\n * Bit flags enum.\n */\nexport var AllowedUpdateType;\n(function (AllowedUpdateType) {\n /**\n * Do not update the stored schema to match view schema.\n */\n AllowedUpdateType[AllowedUpdateType[\"None\"] = 0] = \"None\";\n /**\n * Update the stored schema as part of initializing an empty document.\n *\n * Includes \"Initialize\".\n */\n // eslint-disable-next-line no-bitwise\n AllowedUpdateType[AllowedUpdateType[\"Initialize\"] = 1] = \"Initialize\";\n /**\n * Update the stored schema to match the view schema if the current document contents are compatible with the view schema.\n * TODO: support this option.\n */\n // DataCompatible,\n /**\n * Update the stored schema to match view schema if all possible documents based on the current stored schema would be compatible with the view schema.\n *\n * Includes \"Initialize\".\n */\n // eslint-disable-next-line no-bitwise\n AllowedUpdateType[AllowedUpdateType[\"SchemaCompatible\"] = 2] = \"SchemaCompatible\";\n})(AllowedUpdateType || (AllowedUpdateType = {}));\n/**\n * A collection of View information for schema, including policy.\n */\nexport class AdaptedViewSchema {\n constructor(adapters, adaptedForViewSchema) {\n this.adapters = adapters;\n this.adaptedForViewSchema = adaptedForViewSchema;\n }\n}\n//# sourceMappingURL=view.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The status of a {@link Revertible}.\n *\n * @public\n */\nexport var RevertibleStatus;\n(function (RevertibleStatus) {\n /** The revertible can be reverted. */\n RevertibleStatus[RevertibleStatus[\"Valid\"] = 0] = \"Valid\";\n /** The revertible has been disposed. Reverting it will have no effect. */\n RevertibleStatus[RevertibleStatus[\"Disposed\"] = 1] = \"Disposed\";\n})(RevertibleStatus || (RevertibleStatus = {}));\n//# sourceMappingURL=revertible.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport class EditBuilder {\n constructor(changeFamily, changeReceiver) {\n this.changeFamily = changeFamily;\n this.changeReceiver = changeReceiver;\n }\n /**\n * Subclasses add editing methods which call this with their generated edits.\n *\n * @sealed\n */\n applyChange(change) {\n this.changeReceiver(change);\n }\n enterTransaction() { }\n exitTransaction() { }\n}\n//# sourceMappingURL=editBuilder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { topDownPath, } from \"../core/index.js\";\nimport { brand, getOrCreate } from \"../util/index.js\";\n/**\n * Index symbol for syntax tree\n */\nexport const indexSymbol = Symbol(\"flex-tree-binder:index\");\n/**\n * Enumeration of binding categories\n */\nexport const BindingType = {\n Remove: \"remove\",\n Insert: \"insert\",\n Invalidation: \"invalidation\",\n Batch: \"batch\",\n};\n/**\n * A generic implementation of a {@link PathVisitor} enabling the registration of listeners\n * categorized by {@link BindingContextType} and {@link BindPolicy}.\n */\nclass AbstractPathVisitor {\n constructor(options) {\n this.options = options;\n this.registeredListeners = new Map();\n }\n // TODO: make these methods abstract and make AbstractPathVisitor implementations implement them\n afterCreate(content) { }\n beforeDestroy(content) { }\n beforeAttach(source, destination) { }\n afterAttach(source, destination) {\n this.onInsert({\n parent: destination.parent,\n parentField: destination.field,\n parentIndex: destination.start,\n }, this.getContent(destination));\n }\n beforeDetach(source, destination) { }\n afterDetach(source, destination) {\n this.onRemove({\n parent: source.parent,\n parentField: source.field,\n parentIndex: source.index,\n }, destination.end - destination.start);\n }\n beforeReplace(newContent, oldContent, oldContentDestination) { }\n afterReplace(newContentSource, newContent, oldContent) {\n this.onRemove({\n parent: newContent.parent,\n parentField: newContent.field,\n parentIndex: newContent.start,\n }, oldContent.end - oldContent.start);\n this.onInsert({\n parent: newContent.parent,\n parentField: newContent.field,\n parentIndex: newContent.start,\n }, this.getContent(newContent));\n }\n getContent(range) {\n // TODO: either lookup the content in the forest or stop providing the content in the events\n return [];\n }\n registerListener(contextType, policies, listener) {\n const contextRoots = getOrCreate(this.registeredListeners, contextType, () => new Map());\n policies.forEach((policy) => {\n const tree = policy.bindTree;\n const currentRoot = this.findRoot(contextType, tree.field);\n if (currentRoot === undefined) {\n const newRoot = {\n field: tree.field,\n index: tree.index,\n listeners: new Set(),\n children: new Map(),\n matchPolicy: policy.matchPolicy,\n };\n assert(contextRoots !== undefined, 0x6da /* expected contextRoots to be defined */);\n contextRoots.set(tree.field, newRoot);\n this.bindTree(contextType, tree, listener, newRoot);\n }\n else {\n this.bindTree(contextType, tree, listener, currentRoot);\n }\n });\n return () => {\n policies.forEach((policy) => this.unregisterListener(contextType, policy.bindTree, listener));\n };\n }\n bindTree(contextType, tree, listener, callTree) {\n if (tree.children.size === 0) {\n callTree.listeners.add(listener);\n }\n else {\n tree.children.forEach((childTree, fieldKey) => {\n const childCallTree = getOrCreate(callTree.children, fieldKey, () => {\n const newChildCallTree = {\n field: fieldKey,\n index: childTree.index,\n listeners: new Set(),\n children: new Map(),\n };\n callTree.children.set(fieldKey, newChildCallTree);\n return newChildCallTree;\n });\n this.bindTree(contextType, childTree, listener, childCallTree);\n });\n }\n }\n findRoot(contextType, field) {\n return this.registeredListeners.get(contextType)?.get(field);\n }\n unregisterListener(contextType, tree, listener, callTree) {\n const foundTree = callTree ?? this.findRoot(contextType, tree.field);\n if (foundTree !== undefined) {\n if (tree.children.size === 0) {\n foundTree.listeners.delete(listener);\n }\n else {\n tree.children.forEach((childTree, fieldKey) => {\n assert(foundTree !== undefined, 0x6db /* expected foundTree to be defined */);\n const childCallTree = foundTree.children.get(fieldKey);\n if (childCallTree !== undefined) {\n this.unregisterListener(contextType, childTree, listener, childCallTree);\n }\n });\n }\n }\n }\n getListeners(contextType, downPath) {\n const firstDownPath = downPath[0] ?? oob();\n const foundRoot = this.findRoot(contextType, firstDownPath.field);\n if (foundRoot === undefined) {\n return undefined;\n }\n else {\n const subtreeMatch = (subtreePolicy, depth) => {\n if (subtreePolicy?.maxDepth !== undefined && depth > subtreePolicy.maxDepth) {\n return false;\n }\n return true;\n };\n const accumulateMatching = (treeNode, index, onMatch) => {\n const step = downPath[index];\n if (step === undefined ||\n treeNode.field !== step.field ||\n (treeNode.index !== undefined && step.index !== treeNode.index)) {\n return undefined;\n }\n for (const child of treeNode.children.values()) {\n accumulateMatching(child, index + 1, onMatch);\n }\n onMatch(index, treeNode);\n };\n const matchedNodes = new Set();\n if (foundRoot.matchPolicy === \"path\") {\n accumulateMatching(foundRoot, 0, (index, treeNode) => {\n if (index === downPath.length - 1) {\n treeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n }\n });\n }\n else if (foundRoot.matchPolicy === \"subtree\") {\n accumulateMatching(foundRoot, 0, (index, treeNode) => {\n treeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n });\n }\n else {\n const matchPolicy = foundRoot.matchPolicy;\n accumulateMatching(foundRoot, 0, (index, treeNode) => {\n if (subtreeMatch(matchPolicy, downPath.length - 1)) {\n treeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n }\n });\n }\n return matchedNodes.size > 0 ? matchedNodes : undefined;\n }\n }\n hasRegisteredContextType(contextType) {\n return this.registeredListeners.has(contextType);\n }\n dispose() {\n this.registeredListeners.clear();\n }\n}\n/**\n * A visitor that invokes listeners immediately when a path is traversed.\n */\nclass DirectPathVisitor extends AbstractPathVisitor {\n processListeners(path, listeners, otherArgs) {\n for (const listener of listeners) {\n listener({\n path,\n ...otherArgs,\n });\n }\n }\n processRegisteredPaths(path, type, otherArgs) {\n const current = toDownPath(path);\n const listeners = this.getListeners(type, current);\n if (listeners !== undefined) {\n this.processListeners(path, listeners, otherArgs);\n }\n }\n onRemove(path, count) {\n this.processRegisteredPaths(path, BindingType.Remove, {\n count,\n type: BindingType.Remove,\n });\n }\n onInsert(path, content) {\n this.processRegisteredPaths(path, BindingType.Insert, {\n content,\n type: BindingType.Insert,\n });\n }\n}\n/**\n * A visitor that invokes listeners only once when flushed if any modifications detected on the registered paths.\n */\nclass InvalidatingPathVisitor extends AbstractPathVisitor {\n constructor() {\n super(...arguments);\n this.listeners = new Set();\n }\n processRegisteredPaths(path) {\n const current = toDownPath(path);\n const listeners = this.getListeners(BindingType.Invalidation, current);\n if (listeners !== undefined) {\n for (const listener of listeners) {\n this.listeners.add(listener);\n }\n }\n }\n onRemove(path, count) {\n this.processRegisteredPaths(path);\n }\n onInsert(path, content) {\n this.processRegisteredPaths(path);\n }\n flush() {\n for (const listener of this.listeners) {\n listener({\n type: BindingType.Invalidation,\n });\n }\n this.listeners.clear();\n return this;\n }\n dispose() {\n this.flush();\n super.dispose();\n }\n}\n/**\n * A visitor that buffers all events which match the registered event categories and corresponding paths.\n * Listeners are invoked when flushed. Flushing has also the ability to sort and batch the events.\n */\nclass BufferingPathVisitor extends AbstractPathVisitor {\n constructor() {\n super(...arguments);\n this.eventQueue = [];\n }\n onRemove(path, count) {\n const current = toDownPath(path);\n const listeners = this.getListeners(BindingType.Remove, current);\n if (listeners !== undefined) {\n this.eventQueue.push({\n path,\n count,\n type: BindingType.Remove,\n listeners,\n });\n }\n }\n onInsert(path, content) {\n const current = toDownPath(path);\n const listeners = this.getListeners(BindingType.Insert, current);\n if (listeners !== undefined) {\n this.eventQueue.push({\n path,\n content,\n type: BindingType.Insert,\n listeners,\n });\n }\n }\n flush() {\n const sortedQueue = nativeSort(this.eventQueue, this.options.sortFn ?? (() => 0));\n const batchEventIndices = new Set();\n const batchEvents = [];\n const collected = new Set();\n if (this.hasRegisteredContextType(BindingType.Batch)) {\n for (const [i, event] of sortedQueue.entries()) {\n const current = toDownPath(event.path);\n const listeners = this.getListeners(BindingType.Batch, current);\n if (listeners !== undefined && listeners.size > 0) {\n for (const listener of listeners) {\n collected.add(listener);\n }\n batchEvents.push(event);\n batchEventIndices.add(i);\n }\n }\n }\n for (const listener of collected) {\n listener({\n type: BindingType.Batch,\n events: batchEvents,\n });\n }\n for (const [i, { listeners, ...context }] of sortedQueue.entries()) {\n if (batchEventIndices.has(i)) {\n continue;\n }\n for (const listener of listeners) {\n listener({ ...context });\n }\n }\n this.eventQueue.length = 0;\n return this;\n }\n dispose() {\n this.flush();\n super.dispose();\n }\n}\nclass AbstractDataBinder {\n constructor(options, visitorFactory) {\n this.options = options;\n this.visitorFactory = visitorFactory;\n this.visitors = new Map();\n this.visitorLocations = new Map();\n this.unregisterHandles = new Set();\n }\n register(anchor, eventType, eventTrees, listener) {\n // TODO: validate BindPath semantics against the schema\n const visitor = getOrCreate(this.visitors, anchor, () => {\n const newVisitor = this.visitorFactory(anchor);\n this.unregisterHandles.add(anchor.anchorNode.on(\"subtreeChanging\", (upPath) => {\n assert(newVisitor !== undefined, 0x6dc /* visitor expected to be defined */);\n if (!this.visitorLocations.has(newVisitor)) {\n this.visitorLocations.set(newVisitor, upPath);\n }\n return newVisitor;\n }));\n return newVisitor;\n });\n const contextType = eventType;\n this.unregisterHandles.add(visitor.registerListener(contextType, eventTrees, listener));\n }\n unregisterAll() {\n this.unregisterHandles.forEach((h) => h());\n this.unregisterHandles.clear();\n this.visitors.forEach((v) => v.dispose());\n this.visitors.clear();\n }\n extractBindPaths(root) {\n const result = [];\n const depthFirst = (node, path = [root]) => {\n if (node.children.size === 0) {\n result.push(path);\n return;\n }\n for (const [field, childNode] of node.children.entries()) {\n depthFirst(childNode, [...path, { field, index: childNode.index }]);\n }\n };\n depthFirst(root);\n return result;\n }\n}\nclass BufferingDataBinder extends AbstractDataBinder {\n constructor(view, options) {\n super(options, (anchor) => new BufferingPathVisitor(options));\n this.view = view;\n this.autoFlushPolicy = options.autoFlushPolicy;\n if (options.autoFlush) {\n this.enableAutoFlush();\n }\n }\n flush() {\n const unsortedVisitors = Array.from(this.visitorLocations.keys());\n const sortFn = this.options.sortAnchorsFn ?? (() => 0);\n const compareFn = (a, b) => {\n const pathA = this.visitorLocations.get(a);\n const pathB = this.visitorLocations.get(b);\n assert(pathA !== undefined, 0x6dd /* pathA expected to be defined */);\n assert(pathB !== undefined, 0x6de /* pathB expected to be defined */);\n return sortFn(pathA, pathB);\n };\n const sortedVisitors = nativeSort(unsortedVisitors, compareFn);\n for (const visitor of sortedVisitors) {\n visitor.flush();\n }\n return this;\n }\n enableAutoFlush() {\n const callbackFn = (() => {\n this.flush();\n });\n const unregisterFlushing = this.view.on(this.autoFlushPolicy, callbackFn);\n this.unregisterHandles.add(unregisterFlushing);\n return this;\n }\n}\nclass DirectDataBinder extends AbstractDataBinder {\n constructor(view, options) {\n super(options, (anchor) => new DirectPathVisitor(options));\n }\n}\nclass InvalidateDataBinder extends AbstractDataBinder {\n constructor(view, options) {\n super(options, (anchor) => new InvalidatingPathVisitor(options));\n this.view = view;\n this.autoFlushPolicy = options.autoFlushPolicy;\n if (options.autoFlush) {\n this.enableAutoFlush();\n }\n }\n flush() {\n for (const visitor of this.visitors.values()) {\n visitor.flush();\n }\n return this;\n }\n enableAutoFlush() {\n const callbackFn = (() => {\n this.flush();\n });\n const unregisterFlushing = this.view.on(this.autoFlushPolicy, callbackFn);\n this.unregisterHandles.add(unregisterFlushing);\n return this;\n }\n}\n/**\n * Compute a top-town {@link DownPath} from an {@link UpPath}.\n */\nexport function toDownPath(upPath) {\n const downPath = topDownPath(upPath);\n const stepDownPath = downPath.map((u) => {\n return { field: u.parentField, index: u.parentIndex };\n });\n stepDownPath.shift(); // remove last step to the root node\n return stepDownPath;\n}\n/**\n * Create a buffering data binder.\n */\nexport function createDataBinderBuffering(view, options) {\n return new BufferingDataBinder(view, options);\n}\n/**\n * Create a direct data binder.\n */\nexport function createDataBinderDirect(view, options) {\n return new DirectDataBinder(view, options);\n}\n/**\n * Create an invalidating data binder.\n */\nexport function createDataBinderInvalidating(view, options) {\n return new InvalidateDataBinder(view, options);\n}\n/**\n * Create binder options. If not specified, the default values are:\n * - sortFn: no sorting\n */\nexport function createBinderOptions({ sortFn, }) {\n return { sortFn };\n}\n/**\n * Create flushable binder options. If not specified, the default values are:\n * - sortFn: no sorting\n * - sortAnchorsFn: no sorting\n * - autoFlush: true\n */\nexport function createFlushableBinderOptions({ sortFn, sortAnchorsFn, autoFlush = true, autoFlushPolicy, }) {\n return {\n sortFn,\n sortAnchorsFn,\n autoFlush,\n autoFlushPolicy,\n };\n}\n/**\n * Utility to create a compare function from a list of compare functions.\n *\n * @param fns - a list of compare functions\n * @returns a compare function that can be used for sorting\n */\nexport function comparePipeline(...fns) {\n return (a, b) => {\n for (const fn of fns) {\n const result = fn(a, b);\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n };\n}\n/**\n * Native sorting algorithm.\n *\n * @param arr - the array to sort\n * @param compareFn - the compare function\n * @returns the sorted array\n */\nfunction nativeSort(arr, compareFn) {\n return [...arr].sort(compareFn);\n}\n/**\n * Compiles a (user friendly) syntax tree into the internal binding structure.\n * The syntax tree is a compact representation of related {@link BindPath}s.\n * The match policy can be specified. If not specified, the default value is \"path\".\n * @returns a {@link BindPolicy} object\n */\nexport function compileSyntaxTree(syntaxTree, matchPolicy) {\n const entries = Object.entries(syntaxTree);\n if (entries.length === 1) {\n const [fieldName, childNode] = entries[0] ?? oob();\n const fieldKey = brand(fieldName);\n const bindTree = compileSyntaxTreeNode(childNode, fieldKey);\n return { matchPolicy: matchPolicy ?? \"path\", bindTree };\n }\n else\n throw new Error(\"Invalid BindSyntaxTree structure\");\n}\nfunction compileSyntaxTreeNode(node, parentField) {\n if (node === true)\n return { field: parentField, children: new Map() };\n const pathStep = {\n field: parentField,\n index: node[indexSymbol],\n };\n const children = new Map();\n for (const [key, value] of Object.entries(node)) {\n const fieldKey = brand(key);\n children.set(fieldKey, compileSyntaxTreeNode(value, fieldKey));\n }\n return {\n ...pathStep,\n children,\n };\n}\n//# sourceMappingURL=editableTreeBinder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { isFluidHandle } from \"@fluidframework/runtime-utils/internal\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { ValueSchema } from \"../core/index.js\";\nexport function allowsValue(schema, nodeValue) {\n if (schema === undefined) {\n return nodeValue === undefined;\n }\n return valueSchemaAllows(schema, nodeValue);\n}\nexport function valueSchemaAllows(schema, nodeValue) {\n switch (schema) {\n case ValueSchema.String:\n return typeof nodeValue === \"string\";\n case ValueSchema.Number:\n return typeof nodeValue === \"number\";\n case ValueSchema.Boolean:\n return typeof nodeValue === \"boolean\";\n case ValueSchema.FluidHandle:\n return isFluidHandle(nodeValue);\n case ValueSchema.Null:\n return nodeValue === null;\n default:\n unreachableCase(schema);\n }\n}\nexport function assertAllowedValue(value) {\n assert(isTreeValue(value), 0x843 /* invalid value */);\n}\n/**\n * Checks if a value is a {@link TreeValue}.\n */\nexport function isTreeValue(nodeValue) {\n switch (typeof nodeValue) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return true;\n default:\n return nodeValue === null || isFluidHandle(nodeValue);\n }\n}\n//# sourceMappingURL=valueUtilities.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _a, _b;\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { CursorMarker, detachedFieldAsKey, rootField, } from \"../core/index.js\";\nimport { fail } from \"../util/index.js\";\n/**\n * Create a cursor, in `nodes` mode at the root of the provided tree.\n *\n * @returns an {@link ITreeCursorSynchronous} for a single root in `nodes` mode.\n */\nexport function stackTreeNodeCursor(adapter, root) {\n return new StackCursor(adapter, [], [], [root], 0);\n}\n/**\n * Create a cursor, in `fields` mode at the `detachedField` under the provided `root`.\n *\n * @returns an {@link ITreeCursorSynchronous} for `detachedField` of `root` in `fields` mode.\n */\nexport function stackTreeFieldCursor(adapter, root, detachedField = rootField) {\n const cursor = stackTreeNodeCursor(adapter, root);\n // Because the root node in `stackTreeNodeCursor` is treated as the above detached fields node,\n // using it then just entering the correct field doesn't mess up the paths reported by the cursor.\n cursor.enterField(detachedFieldAsKey(detachedField));\n return cursor;\n}\n/**\n * A class that satisfies part of the ITreeCursorSynchronous implementation.\n */\nexport class SynchronousCursor {\n constructor() {\n this[_a] = true;\n this.pending = false;\n }\n skipPendingFields() {\n return true;\n }\n}\n_a = CursorMarker;\n/**\n * A simple general purpose ITreeCursorSynchronous implementation.\n *\n * As this is a generic implementation, it's ability to optimize is limited.\n *\n * @privateRemarks\n * Note that TNode can be `null` (and we should support `undefined` as well),\n * so be careful using types like `TNode | undefined` and expressions like `TNode ??`.\n *\n * TODO:\n * 1. Unit tests for this.\n * 2. Support for cursors which are field cursors at the root.\n */\nclass StackCursor extends SynchronousCursor {\n /**\n * Might start at special root where fields are detached sequences.\n *\n * @param adapter - policy logic.\n * @param siblingStack - Stack of collections of siblings along the path through the tree:\n * does not include current level (which is stored in `siblings`).\n * Even levels in the stack (starting from 0) are sequences of nodes and odd levels\n * are for fields keys on a node.\n * @param indexStack - Stack of indices into the corresponding levels in `siblingStack`.\n * @param siblings - Siblings at the current level (not included in `siblingStack`).\n * @param index - Index into `siblings`.\n */\n constructor(adapter, siblingStack, indexStack, siblings, index) {\n super();\n this.adapter = adapter;\n this.siblingStack = siblingStack;\n this.indexStack = indexStack;\n this.siblings = siblings;\n this.index = index;\n this[_b] = true;\n this.chunkLength = 1;\n }\n getFieldKey() {\n // assert(this.mode === CursorLocationType.Fields, \"must be in fields mode\");\n return this.siblings[this.index];\n }\n getStackedFieldKey(height) {\n assert(height % 2 === 1, 0x3b8 /* must field height */);\n const siblingStack = this.siblingStack[height] ?? oob();\n const indexStack = this.indexStack[height] ?? oob();\n return siblingStack[indexStack];\n }\n getStackedNodeIndex(height) {\n // assert(height % 2 === 0, \"must be node height\");\n return this.indexStack[height] ?? oob();\n }\n getStackedNode(height) {\n const index = this.getStackedNodeIndex(height);\n // Test is failing when using `?? oob()` here.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.siblingStack[height][index];\n }\n getFieldLength() {\n // assert(this.mode === CursorLocationType.Fields, \"must be in fields mode\");\n return this.getField().length;\n }\n enterNode(index) {\n // assert(this.mode === CursorLocationType.Fields, \"must be in fields mode\");\n const siblings = this.getField();\n assert(index in siblings, 0x405 /* child must exist at index */);\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n this.index = index;\n this.siblings = siblings;\n }\n getPath(prefix) {\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x3b9 /* must be in nodes mode */);\n return this.getOffsetPath(0, prefix);\n }\n getFieldPath(prefix) {\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x449 /* must be in fields mode */);\n return {\n field: this.indexStack.length === 1\n ? prefix?.rootFieldOverride ?? this.getFieldKey()\n : this.getFieldKey(),\n parent: this.getOffsetPath(1, prefix),\n };\n }\n getOffsetPath(offset, prefix) {\n // It is more efficient to handle prefix directly in here rather than delegating to PrefixedPath.\n const length = this.indexStack.length - offset;\n if (length === 0) {\n return prefix?.parent; // At root\n }\n assert(length > 0, 0x44a /* invalid offset to above root */);\n assert(length % 2 === 0, 0x44b /* offset path must point to node not field */);\n const getIndex = (height) => {\n let parentIndex = height === this.indexStack.length ? this.index : this.getStackedNodeIndex(height);\n if (prefix !== undefined && height === 2) {\n parentIndex += prefix.indexOffset ?? 0;\n }\n return parentIndex;\n };\n // Perf Note:\n // This is O(depth) in tree.\n // If many different anchors are created, this could be optimized to amortize the costs.\n // For example, the cursor could cache UpPaths from the anchorSet when creating an anchor,\n // then reuse them as a starting point when making another.\n // Could cache this at one depth, and remember the depth.\n // When navigating up, adjust cached anchor if present.\n let path = prefix?.parent;\n // Skip top level, since root node in path is \"undefined\" and does not have a parent or index.\n for (let height = 2; height <= length; height += 2) {\n const fieldOverride = height === 2 ? prefix?.rootFieldOverride : undefined;\n path = {\n parent: path,\n parentIndex: getIndex(height),\n parentField: fieldOverride ?? this.getStackedFieldKey(height - 1),\n };\n }\n return path;\n }\n fork() {\n // Siblings arrays are not modified during navigation and do not need be be copied.\n // This allows this copy to be shallow, and `this.siblings` below to not be copied as all.\n return new StackCursor(this.adapter, [...this.siblingStack], [...this.indexStack], this.siblings, this.index);\n }\n enterField(key) {\n // assert(this.mode === CursorLocationType.Nodes, \"must be in nodes mode\");\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n // For fields, siblings are only used for key lookup and\n // nextField and which has arbitrary iteration order,\n // so making a array of just key here works.\n // This adds an allocation, so it's optimizing code simplicity and for the other use case (enumeration)\n // at the cost of an allocation here.\n this.index = 0;\n this.siblings = [key];\n }\n get mode() {\n return this.siblingStack.length % 2 === 0\n ? 0 /* CursorLocationType.Nodes */\n : 1 /* CursorLocationType.Fields */;\n }\n nextField() {\n this.index += 1;\n if (this.index === this.siblings.length) {\n this.exitField();\n return false;\n }\n return true;\n }\n firstField() {\n // assert(this.mode === CursorLocationType.Nodes, \"must be in nodes mode\");\n const fields = this.adapter.keysFromNode(this.getNode());\n if (fields.length === 0) {\n return false;\n }\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n this.index = 0;\n this.siblings = fields;\n return true;\n }\n seekNodes(offset) {\n // assert(this.mode === CursorLocationType.Nodes, \"can only seekNodes when in Nodes\");\n this.index += offset;\n if (this.index in this.siblings) {\n return true;\n }\n this.exitNode();\n return false;\n }\n firstNode() {\n // assert(this.mode === CursorLocationType.Fields, \"firstNode only allowed in fields mode\");\n const nodes = this.getField();\n if (nodes.length === 0) {\n return false;\n }\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n this.index = 0;\n this.siblings = nodes;\n return true;\n }\n nextNode() {\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x406 /* can only nextNode when in Nodes */);\n this.index++;\n if (this.index < this.siblings.length) {\n return true;\n }\n this.exitNode();\n return false;\n }\n exitField() {\n // assert(this.mode === CursorLocationType.Fields, \"can only navigate up from field when in field\");\n this.siblings = this.siblingStack.pop() ?? fail(\"Unexpected siblingStack.length\");\n this.index = this.indexStack.pop() ?? fail(\"Unexpected indexStack.length\");\n }\n exitNode() {\n // assert(this.mode === CursorLocationType.Nodes, \"can only navigate up from node when in node\");\n this.siblings = this.siblingStack.pop() ?? fail(\"Unexpected siblingStack.length\");\n this.index = this.indexStack.pop() ?? fail(\"Unexpected indexStack.length\");\n }\n getNode() {\n // assert(this.mode === CursorLocationType.Nodes, \"can only get node when in node\");\n // Test is failing when using `?? oob()` here.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.siblings[this.index];\n }\n getField() {\n // assert(this.mode === CursorLocationType.Fields, \"can only get field when in fields\");\n const parent = this.getStackedNode(this.indexStack.length - 1);\n const key = this.getFieldKey();\n const field = this.adapter.getFieldFromNode(parent, key);\n return field;\n }\n /**\n * @returns the value of the current node\n */\n get value() {\n return this.adapter.value(this.getNode());\n }\n /**\n * @returns the type of the current node\n */\n get type() {\n return this.adapter.type(this.getNode());\n }\n get fieldIndex() {\n // assert(this.mode === CursorLocationType.Nodes, \"can only node's index when in node\");\n return this.index;\n }\n get chunkStart() {\n return this.fieldIndex;\n }\n}\n_b = CursorMarker;\n/**\n * Apply `prefix` to `path`.\n */\nexport function prefixPath(prefix, path) {\n if (prefix === undefined) {\n return path;\n }\n if (prefix.parent === undefined &&\n prefix.rootFieldOverride === undefined &&\n (prefix.indexOffset ?? 0) === 0) {\n return path;\n }\n return applyPrefix(prefix, path);\n}\n/**\n * Apply `prefix` to `path`.\n */\nexport function prefixFieldPath(prefix, path) {\n if (prefix === undefined) {\n return path;\n }\n if (prefix.parent === undefined &&\n prefix.rootFieldOverride === undefined &&\n (prefix.indexOffset ?? 0) === 0) {\n return path;\n }\n return {\n field: path.parent === undefined ? prefix.rootFieldOverride ?? path.field : path.field,\n parent: prefixPath(prefix, path.parent),\n };\n}\n/**\n * Compose two prefixes together.\n * `prefixFieldPath(root, prefixFieldPath(inner, path))` should be the same as `prefixFieldPath(prefixPathPrefix(root, inner), path))`\n *\n * TODO: tests for this.\n */\nexport function prefixPathPrefix(root, inner) {\n if (inner.parent !== undefined) {\n const composedPrefix = {\n parent: new PrefixedPath(root, inner.parent),\n rootFieldOverride: inner.rootFieldOverride,\n indexOffset: inner.indexOffset,\n };\n return composedPrefix;\n }\n else {\n const composedPrefix = {\n parent: root.parent,\n rootFieldOverride: root.rootFieldOverride ?? inner.rootFieldOverride,\n indexOffset: (inner.indexOffset ?? 0) + (root.indexOffset ?? 0),\n };\n return composedPrefix;\n }\n}\nfunction applyPrefix(prefix, path) {\n if (path === undefined) {\n return prefix.parent;\n }\n else {\n // As an optimization, avoid double wrapping paths with multiple prefixes\n if (path instanceof PrefixedPath) {\n const composedPrefix = prefixPathPrefix(prefix, path.prefix);\n return new PrefixedPath(composedPrefix, path.path);\n }\n else {\n return new PrefixedPath(prefix, path);\n }\n }\n}\n/**\n * Wrapper around a path that adds a prefix to the root.\n *\n * Exported for testing: use `prefixPath` and `prefixFieldPath` to construct.\n */\nexport class PrefixedPath {\n constructor(prefix, path) {\n this.prefix = prefix;\n this.path = path;\n if (path.parent === undefined) {\n this.parentField = prefix.rootFieldOverride ?? path.parentField;\n this.parentIndex = path.parentIndex + (prefix.indexOffset ?? 0);\n }\n else {\n this.parentField = path.parentField;\n this.parentIndex = path.parentIndex;\n }\n }\n get parent() {\n return applyPrefix(this.prefix, this.path.parent);\n }\n}\n//# sourceMappingURL=treeCursorUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { rootFieldKey, } from \"../../core/index.js\";\n/**\n * The key used for the field that contains the root of chunks when not parented anywhere.\n *\n * For now this is using the document root key to ease testing/compatibility, but this may change.\n */\nexport const dummyRoot = rootFieldKey;\n/**\n * A symbol for extracting a TreeChunk from {@link ITreeCursor}.\n */\nexport const cursorChunk = Symbol(\"cursorChunk\");\n/**\n * See {@link WithChunk}.\n */\nexport function tryGetChunk(cursor) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x57b /* cursorChunk only accessible in nodes mode */);\n return cursor[cursorChunk];\n}\n//# sourceMappingURL=chunk.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { ReferenceCountedBase, fail } from \"../../util/index.js\";\nimport { SynchronousCursor, prefixPath } from \"../treeCursorUtils.js\";\nimport { cursorChunk, dummyRoot } from \"./chunk.js\";\n/**\n * General purpose one node chunk.\n */\nexport class BasicChunk extends ReferenceCountedBase {\n /**\n * Create a tree chunk with ref count 1.\n *\n * @param fields - provides exclusive deep ownership of this map to this object (which might mutate it in the future).\n * The caller must have already accounted for this reference to the children in this map (via `referenceAdded`),\n * and any edits to this must update child reference counts.\n * @param value - the value on this node, if any.\n */\n constructor(type, fields, value) {\n super();\n this.type = type;\n this.fields = fields;\n this.value = value;\n this.topLevelLength = 1;\n }\n clone() {\n const fields = new Map();\n for (const [k, v] of this.fields) {\n const field = v.map((child) => {\n child.referenceAdded();\n return child;\n });\n fields.set(k, field);\n }\n return new BasicChunk(this.type, fields, this.value);\n }\n cursor() {\n return new BasicChunkCursor([this], [], [], [], [], [dummyRoot], 0, 0, 0, undefined);\n }\n onUnreferenced() {\n for (const v of this.fields.values()) {\n for (const child of v) {\n child.referenceRemoved();\n }\n }\n }\n}\n/**\n * Cursor over basic chunks.\n *\n * @remarks This implementation is similar to StackCursor, however it is distinct because:\n * 1. The children are chunks, which might have a top level length that greater than 1.\n * 2. It needs to be able to delegate to cursors of other chunk formats it does not natively understand (See TODO below).\n *\n * TODO:\n * This cursor currently only handles child chunks which are BasicChunks:\n * BasicChunks should be an optimized fast path, and arbitrary chunk formats,\n * like UniformChunk, should be supported by delegating to their cursor implementations.\n */\nexport class BasicChunkCursor extends SynchronousCursor {\n /**\n * Starts at root field which might be a detached sequence.\n *\n * @param root - sequence of BasicChunk which make up the contents of the root sequence.\n * Since this cursor starts in `Fields` mode at the root, the siblings array when in fields mode is just the field keys,\n * this is needed to get the actual root nodes when entering nodes of the root field.\n * @param siblingStack - Stack of collections of siblings along the path through the tree:\n * does not include current level (which is stored in `siblings`).\n * Even levels in the stack (starting from 0) are keys and odd levels are sequences of nodes.\n * @param indexStack - Stack of indices into the corresponding levels in `siblingStack`.\n * @param indexOfChunkStack - Index of chunk in array of chunks. Only for Node levels.\n * @param indexWithinChunkStack - Index within chunk selected by indexOfChunkStack. Only for Node levels.\n * @param siblings - Siblings at the current level (not included in `siblingStack`).\n * @param index - Index into `siblings`.\n * @param indexOfChunk - Index of chunk in array of chunks. Only for Nodes mode.\n * @param indexWithinChunk - Index within chunk selected by indexOfChunkStack. Only for Nodes mode.\n * @param nestedCursor - When the outer cursor (this `BasicChunkCursor` cursor)\n * navigates into a chunk it does not natively understand (currently anything other than `BasicChunk`s)\n * it creates the `nestedCursor` over that chunk, and delegates all operations to it.\n */\n constructor(root, siblingStack, indexStack, indexOfChunkStack, \n // TODO: Currently only BasicChunks are supported, and the currently always have a top level length of 1.\n // That makes this stack unneeded. When BasicChunkCursor is more feature complete, this stack should be reevaluated, and removed if possible.\n indexWithinChunkStack, siblings, index, indexOfChunk, indexWithinChunk, nestedCursor) {\n super();\n this.root = root;\n this.siblingStack = siblingStack;\n this.indexStack = indexStack;\n this.indexOfChunkStack = indexOfChunkStack;\n this.indexWithinChunkStack = indexWithinChunkStack;\n this.siblings = siblings;\n this.index = index;\n this.indexOfChunk = indexOfChunk;\n this.indexWithinChunk = indexWithinChunk;\n this.nestedCursor = nestedCursor;\n }\n get [cursorChunk]() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor[cursorChunk];\n }\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x57a /* must be in nodes mode */);\n return this.siblings[this.indexOfChunk];\n }\n atChunkRoot() {\n return (this.siblingStack.length < 2 &&\n (this.nestedCursor === undefined || this.nestedCursor.atChunkRoot()));\n }\n fork() {\n // Siblings arrays are not modified during navigation and do not need be be copied.\n // This allows this copy to be shallow, and `this.siblings` below to not be copied as all.\n return new BasicChunkCursor(this.root, [...this.siblingStack], [...this.indexStack], [...this.indexOfChunkStack], [...this.indexWithinChunkStack], this.siblings, this.index, this.indexOfChunk, this.indexWithinChunk, this.nestedCursor?.fork());\n }\n get mode() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.mode;\n }\n // Compute the number of nodes deep the current depth is.\n // We want the floor of the result, which can computed using a bitwise shift assuming the depth is less than 2^31, which seems safe.\n // eslint-disable-next-line no-bitwise\n const halfHeight = (this.siblingStack.length + 1) >> 1;\n assert(this.indexOfChunkStack.length === halfHeight, 0x51c /* unexpected indexOfChunkStack */);\n assert(this.indexWithinChunkStack.length === halfHeight, 0x51d /* unexpected indexWithinChunkStack */);\n return this.siblingStack.length % 2 === 0\n ? 1 /* CursorLocationType.Fields */\n : 0 /* CursorLocationType.Nodes */;\n }\n getFieldKey() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.getFieldKey();\n }\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x51e /* must be in fields mode */);\n return this.siblings[this.index];\n }\n getStackedFieldKey(height) {\n assert(height % 2 === 0, 0x51f /* must field height */);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.siblingStack[height][this.indexStack[height]];\n }\n getStackedNodeIndex(height) {\n assert(height % 2 === 1, 0x520 /* must be node height */);\n assert(height >= 0, 0x521 /* must not be above root */);\n return this.indexStack[height] ?? oob();\n }\n getStackedNode(height) {\n const index = this.getStackedNodeIndex(height);\n return this.siblingStack[height][index];\n }\n getFieldLength() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.getFieldLength();\n }\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x522 /* must be in fields mode */);\n let total = 0;\n // TODO: optimize?\n for (const chunk of this.getField()) {\n total += chunk.topLevelLength;\n }\n return total;\n }\n enterNode(index) {\n if (this.nestedCursor !== undefined) {\n this.nestedCursor.enterNode(index);\n return;\n }\n const found = this.firstNode() && this.seekNodes(index);\n assert(found, 0x523 /* child must exist at index */);\n }\n getPath(prefix) {\n if (this.nestedCursor !== undefined) {\n return (this.nestedCursor.getPath(this.nestedPathPrefix(prefix)) ??\n fail(\"nested cursors should not be root\"));\n }\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x524 /* must be in nodes mode */);\n const path = this.getOffsetPath(0, prefix);\n assert(path !== undefined, 0x55c /* field root cursor should never have undefined path */);\n return path;\n }\n nestedPathPrefix(prefix) {\n // This uses index offset for actual node, when it should use offset for start of chunk.\n // To compensate, subtract this.indexWithinChunk below.\n const rootPath = this.getOffsetPath(0, prefix) ?? fail(\"nested cursors should not be root\");\n return {\n indexOffset: rootPath.parentIndex - this.indexWithinChunk,\n rootFieldOverride: rootPath.parentField,\n parent: rootPath.parent,\n };\n }\n getFieldPath(prefix) {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.getFieldPath(this.nestedPathPrefix(prefix));\n }\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x525 /* must be in fields mode */);\n return {\n field: this.indexStack.length === 1\n ? prefix?.rootFieldOverride ?? this.getFieldKey()\n : this.getFieldKey(),\n parent: this.getOffsetPath(1, prefix),\n };\n }\n getOffsetPath(offset, prefix) {\n // It is more efficient to handle prefix directly in here rather than delegating to PrefixedPath.\n const length = this.indexStack.length - offset;\n if (length === -1) {\n return prefix?.parent; // At root\n }\n assert(length > 0, 0x526 /* invalid offset to above root */);\n assert(length % 2 === 1, 0x527 /* offset path must point to node not field */);\n // Perf Note:\n // This is O(depth) in tree.\n // If many different anchors are created, this could be optimized to amortize the costs.\n // For example, the cursor could cache UpPaths from the anchorSet when creating an anchor,\n // then reuse them as a starting point when making another.\n // Could cache this at one depth, and remember the depth.\n // When navigating up, adjust cached anchor if present.\n let path;\n function updatePath(newPath) {\n path = path === undefined ? prefixPath(prefix, newPath) : newPath;\n }\n // Skip top level, since root node in path is \"undefined\" and does not have a parent or index.\n for (let height = 1; height < length; height += 2) {\n const key = this.getStackedFieldKey(height - 1);\n updatePath({\n parent: path,\n parentIndex: this.getStackedNodeIndex(height),\n parentField: key,\n });\n }\n updatePath({\n parent: path,\n parentIndex: offset === 0 ? this.index : this.getStackedNodeIndex(length),\n parentField: this.getStackedFieldKey(length - 1),\n });\n return path;\n }\n enterField(key) {\n if (this.nestedCursor !== undefined) {\n this.nestedCursor.enterField(key);\n return;\n }\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x528 /* must be in nodes mode */);\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n // For fields, siblings are only used for key lookup and\n // nextField and which has arbitrary iteration order,\n // so making a array of just key here works.\n // This adds an allocation, so it's optimizing code simplicity and for the other use case (enumeration)\n // at the cost of an allocation here.\n this.index = 0;\n this.siblings = [key];\n }\n nextField() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.nextField();\n }\n this.index += 1;\n if (this.index === this.siblings.length) {\n this.exitField();\n return false;\n }\n return true;\n }\n firstField() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.firstField();\n }\n const fields = this.getNode().fields;\n if (fields.size === 0) {\n return false;\n }\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n this.index = 0;\n this.siblings = [...fields.keys()]; // TODO: avoid this copy\n return true;\n }\n seekNodes(offset) {\n if (this.nestedCursor !== undefined) {\n const atRoot = this.nestedCursor.atChunkRoot();\n const stillIn = this.nestedCursor.seekNodes(offset);\n if (!atRoot) {\n return stillIn;\n }\n if (!stillIn) {\n this.nestedCursor = undefined;\n }\n }\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x529 /* can only seekNodes when in Nodes */);\n assert(this.indexOfChunk < this.siblings.length, 0x52a /* out of bounds indexOfChunk */);\n this.indexWithinChunk += offset;\n if (offset >= 0) {\n const chunks = this.siblings ?? oob();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n while (this.indexWithinChunk >= chunks[this.indexOfChunk].topLevelLength) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.indexWithinChunk -= chunks[this.indexOfChunk].topLevelLength;\n this.indexOfChunk++;\n if (this.indexOfChunk === chunks.length) {\n this.exitNode();\n return false;\n }\n assert(this.indexOfChunk < this.siblings.length, 0x52b /* out of bounds indexOfChunk */);\n }\n }\n else {\n const chunks = this.siblings;\n while (this.indexWithinChunk < 0) {\n if (this.indexOfChunk === 0) {\n this.exitNode();\n return false;\n }\n this.indexOfChunk--;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.indexWithinChunk += chunks[this.indexOfChunk].topLevelLength;\n }\n }\n this.index += offset;\n this.initNestedCursor();\n return true;\n }\n firstNode() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.firstNode();\n }\n const siblings = this.getField();\n if (siblings.length === 0) {\n return false;\n }\n this.siblingStack.push(this.siblings);\n this.indexStack.push(this.index);\n this.indexOfChunkStack.push(this.indexOfChunk);\n this.indexWithinChunkStack.push(this.indexWithinChunk);\n this.index = 0;\n this.siblings = siblings;\n this.indexOfChunk = 0;\n this.indexWithinChunk = 0;\n this.initNestedCursor();\n return true;\n }\n nextNode() {\n if (this.nestedCursor !== undefined) {\n const atRoot = this.nestedCursor.atChunkRoot();\n const stillIn = this.nestedCursor.nextNode();\n if (!atRoot) {\n return stillIn;\n }\n if (!stillIn) {\n this.nestedCursor = undefined;\n }\n }\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x52c /* can only nextNode when in Nodes */);\n this.indexWithinChunk++;\n if (this.indexWithinChunk ===\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.siblings[this.indexOfChunk].topLevelLength) {\n this.indexOfChunk++;\n if (this.indexOfChunk === this.siblings.length) {\n this.exitNode();\n return false;\n }\n this.indexWithinChunk = 0;\n this.initNestedCursor();\n }\n this.index++;\n return true;\n }\n initNestedCursor() {\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x55d /* can only initNestedCursor when in Nodes */);\n const chunk = this.siblings[this.indexOfChunk] ?? oob();\n this.nestedCursor = !(chunk instanceof BasicChunk) ? chunk.cursor() : undefined;\n this.nestedCursor?.enterNode(this.indexWithinChunk);\n }\n exitField() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.exitField();\n }\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x52d /* can only navigate up from field when in field */);\n this.siblings = this.siblingStack.pop() ?? fail(\"Unexpected siblingStack.length\");\n this.index = this.indexStack.pop() ?? fail(\"Unexpected indexStack.length\");\n }\n exitNode() {\n if (this.nestedCursor !== undefined) {\n if (!this.nestedCursor.atChunkRoot()) {\n return this.nestedCursor.exitNode();\n }\n this.nestedCursor = undefined;\n }\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x52e /* can only navigate up from node when in node */);\n this.siblings = this.siblingStack.pop() ?? fail(\"Unexpected siblingStack.length\");\n this.index = this.indexStack.pop() ?? fail(\"Unexpected indexStack.length\");\n this.indexOfChunk =\n this.indexOfChunkStack.pop() ?? fail(\"Unexpected indexOfChunkStack.length\");\n this.indexWithinChunk =\n this.indexWithinChunkStack.pop() ?? fail(\"Unexpected indexWithinChunkStack.length\");\n }\n getNode() {\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x52f /* can only get node when in node */);\n return this.siblings[this.index];\n }\n getField() {\n if (this.siblingStack.length === 0) {\n return this.root;\n }\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x530 /* can only get field when in fields */);\n const parent = this.getStackedNode(this.indexStack.length - 1);\n const key = this.getFieldKey();\n const field = parent.fields.get(key) ?? [];\n return field;\n }\n get value() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.value;\n }\n return this.getNode().value;\n }\n get type() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.type;\n }\n return this.getNode().type;\n }\n get fieldIndex() {\n assert(this.mode === 0 /* CursorLocationType.Nodes */, 0x531 /* can only node's index when in node */);\n if (this.nestedCursor !== undefined) {\n if (this.nestedCursor.atChunkRoot()) {\n // TODO: this.index\n return this.nestedCursor.fieldIndex + this.nestedOffset();\n }\n return this.nestedCursor.fieldIndex;\n }\n return this.index;\n }\n /**\n * Within the field that `nestedCursor` is nested in:\n * returns the index within that field of the first node that is part of the chunk nestedCursor traverses.\n */\n nestedOffset() {\n assert(this.nestedCursor !== undefined, 0x55e /* nested offset requires nested cursor */);\n assert(!this.nestedCursor.atChunkRoot() ||\n this.indexWithinChunk === this.nestedCursor.fieldIndex, 0x55f /* indexes should match if at root */);\n return this.index - this.indexWithinChunk;\n }\n get chunkStart() {\n if (this.nestedCursor !== undefined) {\n if (this.nestedCursor.atChunkRoot()) {\n return this.nestedCursor.chunkStart + this.nestedOffset();\n }\n return this.nestedCursor.chunkStart;\n }\n return this.fieldIndex;\n }\n get chunkLength() {\n if (this.nestedCursor !== undefined) {\n return this.nestedCursor.chunkLength;\n }\n return 1;\n }\n}\n//# sourceMappingURL=basicChunk.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ReferenceCountedBase } from \"../../util/index.js\";\nimport { BasicChunkCursor } from \"./basicChunk.js\";\nimport { dummyRoot } from \"./chunk.js\";\n/**\n * General purpose multi-node sequence chunk.\n */\nexport class SequenceChunk extends ReferenceCountedBase {\n get topLevelLength() {\n let total = 0;\n for (const child of this.subChunks) {\n total += child.topLevelLength;\n }\n return total;\n }\n /**\n * Create a tree chunk with ref count 1.\n *\n * @param fields - provides exclusive deep ownership of this map to this object (which might mutate it in the future).\n * The caller must have already accounted for this reference to the children in this map (via `referenceAdded`),\n * and any edits to this must update child reference counts.\n * @param value - the value on this node, if any.\n */\n constructor(subChunks) {\n super();\n this.subChunks = subChunks;\n }\n clone() {\n const subChunks = this.subChunks.map((child) => {\n child.referenceAdded();\n return child;\n });\n return new SequenceChunk(subChunks);\n }\n cursor() {\n return new BasicChunkCursor(this.subChunks, [], [], [], [], [dummyRoot], 0, 0, 0, undefined);\n }\n onUnreferenced() {\n for (const child of this.subChunks) {\n child.referenceRemoved();\n }\n }\n}\n//# sourceMappingURL=sequenceChunk.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, compareArrays, oob } from \"@fluidframework/core-utils/internal\";\nimport { ReferenceCountedBase, fail } from \"../../util/index.js\";\nimport { SynchronousCursor, prefixFieldPath, prefixPath } from \"../treeCursorUtils.js\";\nimport { cursorChunk, dummyRoot } from \"./chunk.js\";\n/**\n * Create a tree chunk with ref count 1.\n *\n * @param shape - describes the semantics and layout of `values`.\n * @param values - provides exclusive ownership of this array to this object (which might mutate it in the future).\n */\nexport function uniformChunk(shape, values) {\n return new UniformChunk(shape, values);\n}\n/**\n * Chunk which handles a sequence of trees with identical \"shape\" (see `TreeShape`).\n *\n * Separates shape from content,\n * allowing deduplication of shape information and storing of content as a flat sequence of values.\n */\nexport class UniformChunk extends ReferenceCountedBase {\n /**\n * Create a tree chunk with ref count 1.\n *\n * @param shape - describes the semantics and layout of `values`.\n * @param values - provides exclusive ownership of this array to this object (which might mutate it in the future).\n */\n constructor(shape, values) {\n super();\n this.shape = shape;\n this.values = values;\n assert(shape.treeShape.valuesPerTopLevelNode * shape.topLevelLength === values.length, 0x4c3 /* invalid number of values for shape */);\n }\n get topLevelLength() {\n return this.shape.topLevelLength;\n }\n clone() {\n return new UniformChunk(this.shape, this.values.slice());\n }\n cursor() {\n return new Cursor(this);\n }\n onUnreferenced() { }\n}\n/**\n * The \"shape\" of a tree.\n * Does not contain the actual values from the tree, but describes everything else,\n * including where the values would be found in a flat values array.\n *\n * Note that since this requires fields to have uniform shapes (see `FieldShape`),\n * not all trees can have their shape described using this type.\n */\nexport class TreeShape {\n constructor(type, hasValue, fieldsArray) {\n this.type = type;\n this.hasValue = hasValue;\n this.fieldsArray = fieldsArray;\n const fields = new Map();\n let numberOfValues = hasValue ? 1 : 0;\n const infos = [\n new NodePositionInfo(undefined, dummyRoot, 0, undefined, undefined, this, 1, 0),\n ];\n let fieldIndex = 0;\n for (const [k, f, length] of fieldsArray) {\n assert(!fields.has(k), 0x4c5 /* no duplicate keys */);\n const offset = new OffsetShape(f, length, infos.length, k, fieldIndex);\n fields.set(k, offset);\n clonePositions(0, [k, f, length], fieldIndex, numberOfValues, infos);\n numberOfValues += f.valuesPerTopLevelNode * length;\n fieldIndex++;\n }\n this.fields = fields;\n this.valuesPerTopLevelNode = numberOfValues;\n this.positions = infos;\n this.fieldsOffsetArray = [...fields.values()];\n }\n equals(other) {\n // TODO: either dedup instances and/or store a collision resistant hash for fast compare.\n if (!compareArrays(this.fieldsArray, other.fieldsArray, ([k, f, l], [k2, f2, l2]) => k === k2 && l === l2 && f.equals(f2))) {\n return false;\n }\n return this.type === other.type && this.hasValue === other.hasValue;\n }\n withTopLevelLength(topLevelLength) {\n return new ChunkShape(this, topLevelLength);\n }\n}\nfunction clonePositions(indexOfParentInOutput, [key, shape, copies], indexOfParentField, valueOffset, outputInto) {\n const offset = outputInto.length;\n for (let index = 0; index < copies; index++) {\n for (const inner of shape.positions) {\n const wasRoot = inner.indexOfParentPosition === undefined;\n const parentPositionIndex = wasRoot\n ? indexOfParentInOutput\n : inner.indexOfParentPosition + index * shape.positions.length + offset;\n outputInto.push(new NodePositionInfo(parentPositionIndex === undefined ? undefined : outputInto[parentPositionIndex], inner.parentField === dummyRoot ? key : inner.parentField, wasRoot ? index : inner.parentIndex, inner.indexOfParentField ?? indexOfParentField, parentPositionIndex, inner.shape, wasRoot ? copies : inner.topLevelLength, inner.valueOffset + valueOffset + shape.valuesPerTopLevelNode * index));\n }\n }\n}\n/**\n * The shape (see `TreeShape`) of a sequence of trees, all with the same shape (like `FieldShape`, but without a field key).\n *\n * This shape is optimized (by caching derived data like the positions array),\n * so that when paired with a value array it can be efficiently traversed like a tree by an {@link ITreeCursorSynchronous}.\n * See {@link uniformChunk} for how to do this.\n *\n * TODO: consider storing shape information in WASM\n */\nexport class ChunkShape {\n constructor(treeShape, topLevelLength) {\n this.treeShape = treeShape;\n this.topLevelLength = topLevelLength;\n assert(topLevelLength > 0, 0x4c6 /* topLevelLength must be greater than 0 */);\n // TODO: avoid duplication from inner loop\n const positions = [undefined];\n clonePositions(0, [dummyRoot, treeShape, topLevelLength], 0, 0, positions);\n this.positions = positions;\n }\n equals(other) {\n // TODO: either dedup instances and/or store a collision resistant hash for fast compare.\n return this.topLevelLength === other.topLevelLength && this.treeShape === other.treeShape;\n }\n}\n/**\n * Shape of a field (like `FieldShape`) but with information about how it would be offset within a chunk because of its parents.\n */\nclass OffsetShape {\n /**\n * @param shape - the shape of each child in this field\n * @param topLevelLength - number of top level nodes in this sequence chunk (either field within a chunk, or top level chunk)\n * @param offset - number of nodes before this in the parent's subtree\n * @param key - field key\n * @param indexOfParentField - index of node with this shape\n */\n constructor(shape, topLevelLength, offset, key, indexOfParentField) {\n this.shape = shape;\n this.topLevelLength = topLevelLength;\n this.offset = offset;\n this.key = key;\n this.indexOfParentField = indexOfParentField;\n }\n}\n/**\n * Information about a node at a specific position within a uniform chunk.\n */\nclass NodePositionInfo {\n /**\n * @param parent - TODO\n * @param parentField - TODO\n * @param parentIndex - indexWithinParentField\n * @param indexOfParentField - which field of the parent `parentIndex` is indexing into to locate this.\n * @param indexOfParentPosition - Index of parent NodePositionInfo in positions array. TODO: use offsets to avoid copying at top level?\n * @param shape - Shape of the top level sequence this node is part of\n * @param valueOffset - TODO\n */\n constructor(parent, // TODO; general UpPath to allow prefixing here?\n parentField, parentIndex, indexOfParentField, indexOfParentPosition, shape, // Shape of sequence that contains this node (top level is parent of this node)\n topLevelLength, valueOffset) {\n this.parent = parent;\n this.parentField = parentField;\n this.parentIndex = parentIndex;\n this.indexOfParentField = indexOfParentField;\n this.indexOfParentPosition = indexOfParentPosition;\n this.shape = shape;\n this.topLevelLength = topLevelLength;\n this.valueOffset = valueOffset;\n }\n}\n/**\n * The cursor implementation for `UniformChunk`.\n *\n * Works by tracking its location in the chunk's `positions` array.\n */\nclass Cursor extends SynchronousCursor {\n // TODO: support prefix (path above root, including index offset of chunk in its containing field)\n constructor(chunk) {\n super();\n this.chunk = chunk;\n this.mode = 1 /* CursorLocationType.Fields */;\n // Valid only in fields mode. Can be past end for empty fields.\n // This is redundant with fieldKey above (but might be worth keeping for perf), and could be removed.\n this.indexOfField = 0;\n this.chunkStart = 0;\n this.shape = this.chunk.shape;\n this.positions = this.shape.positions;\n this.fieldKey = dummyRoot;\n this.moveToPosition(0);\n }\n get [cursorChunk]() {\n return this.atChunkRoot() ? this.chunk : undefined;\n }\n atChunkRoot() {\n assert((this.fieldKey === undefined) === (this.mode === 0 /* CursorLocationType.Nodes */), 0x560 /* expect valid field key */);\n return (this.nodePositionInfo === undefined ||\n (this.nodePositionInfo.parent === undefined && this.fieldKey === undefined));\n }\n fork() {\n const cursor = new Cursor(this.chunk);\n cursor.mode = this.mode;\n cursor.fieldKey = this.fieldKey;\n cursor.indexOfField = this.indexOfField;\n cursor.moveToPosition(this.positionIndex);\n return cursor;\n }\n /**\n * Change the current node within the chunk.\n * See `nodeInfo` for getting data about the current node.\n *\n * @param positionIndex - index of the position of the newly selected node in `positions`.\n * This is NOT an index within a field, and is not bounds checked.\n */\n moveToPosition(positionIndex) {\n this.nodePositionInfo = this.positions[positionIndex];\n this.positionIndex = positionIndex;\n if (this.nodePositionInfo === undefined) {\n assert(positionIndex === 0, 0x561 /* expected root at start */);\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x562 /* expected root to be a field */);\n }\n }\n /**\n * Gets information about the current node.\n *\n * When in Nodes mode, this means the node this cursor is current at.\n * When if fields mode, this means the node which is the parent of the current field.\n * This cursor is in Nodes mode at the root, so there is no case where a fields mode does not have a parent.\n *\n * @param requiredMode - asserts that the mode matches this. Since the semantics of this function are somewhat mode dependent,\n * providing this ensures that the caller knows what the results will mean.\n */\n nodeInfo(requiredMode) {\n assert(this.mode === requiredMode, 0x4c8 /* tried to access cursor when in wrong mode */);\n assert(this.nodePositionInfo !== undefined, 0x53e /* can not access nodeInfo in root field */);\n return this.nodePositionInfo;\n }\n nextField() {\n this.indexOfField++;\n const fields = this.nodeInfo(1 /* CursorLocationType.Fields */).shape.fieldsArray;\n if (this.indexOfField < fields.length) {\n const fieldArr = fields[this.indexOfField] ?? oob();\n this.fieldKey = fieldArr[0];\n return true;\n }\n this.exitField();\n return false;\n }\n exitField() {\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x4c9 /* exitField when in wrong mode */);\n assert(this.nodePositionInfo !== undefined, 0x563 /* can not exit root field */);\n this.fieldKey = undefined;\n this.mode = 0 /* CursorLocationType.Nodes */;\n }\n getFieldKey() {\n return this.fieldKey ?? fail(\"not in a field\");\n }\n getFieldLength() {\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x53f /* tried to access cursor when in wrong mode */);\n if (this.nodePositionInfo === undefined) {\n return this.shape.topLevelLength;\n }\n const fieldInfo = this.nodePositionInfo.shape.fieldsArray[this.indexOfField];\n if (fieldInfo === undefined) {\n return 0;\n }\n return fieldInfo[2];\n }\n firstNode() {\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x540 /* tried to access cursor when in wrong mode */);\n if (this.nodePositionInfo === undefined) {\n // Root field is not allowed to be empty, so we can skip handling that case.\n this.enterRootNodeInner(0);\n return true;\n }\n else {\n return this.enterNodeInner(this.nodePositionInfo, 0);\n }\n }\n enterNode(childIndex) {\n assert(this.mode === 1 /* CursorLocationType.Fields */, 0x541 /* tried to access cursor when in wrong mode */);\n assert(childIndex >= 0, 0x4ca /* index must be positive */);\n if (this.nodePositionInfo === undefined) {\n assert(childIndex < this.shape.topLevelLength, 0x542 /* index must not be past the end of the field */);\n this.enterRootNodeInner(childIndex);\n }\n else {\n const moved = this.enterNodeInner(this.nodePositionInfo, childIndex);\n assert(moved, 0x4cb /* index must not be past the end of the field */);\n }\n }\n /**\n * Enter the current field, at `childIndex`.\n * @param childIndex - index into current field to navigate to. Must be non-negative integer.\n */\n enterNodeInner(currentPosition, childIndex) {\n const shape = currentPosition.shape;\n const fields = shape.fieldsOffsetArray;\n if (this.indexOfField >= fields.length) {\n return false; // Handle empty field (indexed by key into empty field)\n }\n const f = shape.fieldsOffsetArray[this.indexOfField] ?? oob();\n if (childIndex >= f.topLevelLength) {\n return false;\n }\n this.mode = 0 /* CursorLocationType.Nodes */;\n this.fieldKey = undefined;\n this.moveToPosition(this.positionIndex + f.offset + childIndex * f.shape.positions.length);\n assert(this.fieldIndex === childIndex, 0x4cc /* should be at selected child */);\n return true;\n }\n enterRootNodeInner(childIndex) {\n this.mode = 0 /* CursorLocationType.Nodes */;\n this.fieldKey = undefined;\n // 1 for the \"undefined\" at the beginning of the positions array, then stride by top level tree shape.\n this.moveToPosition(1 + childIndex * this.shape.treeShape.positions.length);\n assert(this.fieldIndex === childIndex, 0x543 /* should be at selected child */);\n }\n getFieldPath(prefix) {\n return prefixFieldPath(prefix, {\n field: this.getFieldKey(),\n parent: this.nodePositionInfo,\n });\n }\n getPath(prefix) {\n return prefixPath(prefix, this.nodeInfo(0 /* CursorLocationType.Nodes */));\n }\n get fieldIndex() {\n return this.nodeInfo(0 /* CursorLocationType.Nodes */).parentIndex;\n }\n get chunkLength() {\n return this.nodeInfo(0 /* CursorLocationType.Nodes */).topLevelLength;\n }\n seekNodes(offset) {\n const info = this.nodeInfo(0 /* CursorLocationType.Nodes */);\n const index = offset + info.parentIndex;\n if (index >= 0 && index < info.topLevelLength) {\n this.moveToPosition(this.positionIndex + offset * info.shape.positions.length);\n return true;\n }\n this.exitNode();\n return false;\n }\n nextNode() {\n // This is the same as `return this.seekNodes(1);` but slightly faster.\n const info = this.nodeInfo(0 /* CursorLocationType.Nodes */);\n const index = info.parentIndex + 1;\n if (index === info.topLevelLength) {\n this.exitNode();\n return false;\n }\n this.moveToPosition(this.positionIndex + info.shape.positions.length);\n return true;\n }\n exitNode() {\n const info = this.nodeInfo(0 /* CursorLocationType.Nodes */);\n this.indexOfField =\n info.indexOfParentField ?? fail(\"navigation up to root field not yet supported\"); // TODO;\n this.fieldKey = info.parentField;\n this.mode = 1 /* CursorLocationType.Fields */;\n this.moveToPosition(info.indexOfParentPosition ?? fail(\"navigation up to root field not yet supported\")); // TODO\n }\n firstField() {\n const fieldsArray = this.nodeInfo(0 /* CursorLocationType.Nodes */).shape.fieldsArray;\n if (fieldsArray.length === 0) {\n return false;\n }\n this.indexOfField = 0;\n this.mode = 1 /* CursorLocationType.Fields */;\n const fields = fieldsArray[0] ?? oob();\n this.fieldKey = fields[0];\n return true;\n }\n enterField(key) {\n const fieldMap = this.nodeInfo(0 /* CursorLocationType.Nodes */).shape.fields;\n const fieldInfo = fieldMap.get(key);\n this.indexOfField =\n fieldInfo === undefined\n ? fieldMap.size\n : fieldInfo.indexOfParentField ?? fail(\"children should have parents\");\n this.fieldKey = key;\n this.mode = 1 /* CursorLocationType.Fields */;\n }\n get type() {\n return this.nodeInfo(0 /* CursorLocationType.Nodes */).shape.type;\n }\n get value() {\n const info = this.nodeInfo(0 /* CursorLocationType.Nodes */);\n return info.shape.hasValue ? this.chunk.values[info.valueOffset] : undefined;\n }\n}\n//# sourceMappingURL=uniformChunk.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { LeafNodeStoredSchema, ObjectNodeStoredSchema, mapCursorFields, Multiplicity, } from \"../../core/index.js\";\nimport { fail, getOrCreate } from \"../../util/index.js\";\nimport { BasicChunk } from \"./basicChunk.js\";\nimport { tryGetChunk } from \"./chunk.js\";\nimport { SequenceChunk } from \"./sequenceChunk.js\";\nimport { TreeShape, UniformChunk } from \"./uniformChunk.js\";\n/**\n * Creates a ChunkPolicy which responds to schema changes.\n */\nexport function makeTreeChunker(schema, policy) {\n return new Chunker(schema, policy, defaultChunkPolicy.sequenceChunkInlineThreshold, defaultChunkPolicy.sequenceChunkInlineThreshold, defaultChunkPolicy.uniformChunkNodeCount, tryShapeFromSchema);\n}\n/**\n * Indicates that there are multiple possible `TreeShape` trees with a given type can have.\n *\n * @remarks\n * For example, a schema transitively containing a sequence field, optional field, or allowing multiple child types will be Polymorphic.\n * See `tryShapeFromSchema` for how to tell if a type is Polymorphic.\n *\n * TODO: cache some of the possible shapes here.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class Polymorphic {\n}\n/**\n * See `Polymorphic`.\n * For now Polymorphic is stateless, so just use a singleton.\n */\nexport const polymorphic = new Polymorphic();\nexport class Chunker {\n constructor(schema, policy, sequenceChunkSplitThreshold, sequenceChunkInlineThreshold, uniformChunkNodeCount, \n // eslint-disable-next-line @typescript-eslint/no-shadow\n tryShapeFromSchema) {\n this.schema = schema;\n this.policy = policy;\n this.sequenceChunkSplitThreshold = sequenceChunkSplitThreshold;\n this.sequenceChunkInlineThreshold = sequenceChunkInlineThreshold;\n this.uniformChunkNodeCount = uniformChunkNodeCount;\n this.tryShapeFromSchema = tryShapeFromSchema;\n /**\n * Cache for information about possible shapes for types.\n * Corresponds to the version of the schema in `schema`.\n * Cleared when `schema` changes.\n */\n this.typeShapes = new Map();\n }\n clone(schema) {\n // This does not preserve the cache.\n // This is probably fine, but is a potential way it could be optimized in the future (with care to ensure invalidation work properly).\n return new Chunker(schema, this.policy, this.sequenceChunkSplitThreshold, this.sequenceChunkInlineThreshold, this.uniformChunkNodeCount, this.tryShapeFromSchema);\n }\n shapeFromSchema(schema) {\n const cached = this.typeShapes.get(schema);\n if (cached !== undefined) {\n return cached;\n }\n this.unregisterSchemaCallback = this.schema.on(\"afterSchemaChange\", () => this.schemaChanged());\n return this.tryShapeFromSchema(this.schema, this.policy, schema, this.typeShapes);\n }\n dispose() {\n // Remove subscription for changes via dependent.\n this.schemaChanged();\n }\n schemaChanged() {\n this.typeShapes.clear();\n if (this.unregisterSchemaCallback) {\n this.unregisterSchemaCallback();\n this.unregisterSchemaCallback = undefined;\n }\n }\n}\n/**\n * Get a TreeChunk for the current node (and its children) of cursor.\n * This will copy if needed, but add refs to existing chunks which hold the data.\n *\n * @param cursor - cursor in nodes mode\n */\nexport function chunkTree(cursor, policy) {\n return chunkRange(cursor, policy, 1, true)[0] ?? oob();\n}\n/**\n * Get a TreeChunk[] for the current field (and its children) of cursor.\n * This will copy if needed, but add refs to existing chunks which hold the data.\n */\nexport function chunkField(cursor, policy) {\n const length = cursor.getFieldLength();\n const started = cursor.firstNode();\n assert(started, 0x57c /* field to chunk should have at least one node */);\n return chunkRange(cursor, policy, length, false);\n}\n/**\n * Get a TreeChunk for the current field (and its children) of cursor.\n * Like {@link chunkField}, but forces the results into a single TreeChunk.\n */\nexport function chunkFieldSingle(cursor, policy) {\n const chunks = chunkField(cursor, policy);\n if (chunks.length === 1) {\n return chunks[0] ?? oob();\n }\n return new SequenceChunk(chunks);\n}\n/**\n * Get a BasicChunk for the current node (and its children) of cursor.\n * This will copy if needed, and add refs to existing chunks which hold the data.\n */\nexport function basicChunkTree(cursor, policy) {\n // symbol based fast path to check for BasicChunk:\n // return existing chunk with a increased ref count if possible.\n const chunk = tryGetChunk(cursor);\n if (chunk instanceof BasicChunk) {\n chunk.referenceAdded();\n return chunk;\n }\n return newBasicChunkTree(cursor, policy);\n}\nexport function makePolicy(policy) {\n const withDefaults = { ...defaultChunkPolicy, ...policy };\n // TODO: move this to a top level policy validation\n assert(withDefaults.sequenceChunkSplitThreshold >= 2, 0x57d /* sequenceChunkThreshold must be at least 2 */);\n return withDefaults;\n}\nexport function shapesFromSchema(schema, policy) {\n const shapes = new Map();\n for (const identifier of schema.nodeSchema.keys()) {\n tryShapeFromSchema(schema, policy, identifier, shapes);\n }\n return shapes;\n}\n/**\n * If `schema` has only one shape, return it.\n *\n * Note that this does not tolerate optional or sequence fields, nor does it optimize for patterns of specific values.\n */\nexport function tryShapeFromSchema(schema, policy, type, shapes) {\n return getOrCreate(shapes, type, () => {\n const treeSchema = schema.nodeSchema.get(type) ?? fail(\"missing schema\");\n if (treeSchema instanceof LeafNodeStoredSchema) {\n return new TreeShape(type, true, []);\n }\n if (treeSchema instanceof ObjectNodeStoredSchema) {\n const fieldsArray = [];\n for (const [key, field] of treeSchema.objectNodeFields) {\n const fieldShape = tryShapeFromFieldSchema(schema, policy, field, key, shapes);\n if (fieldShape === undefined) {\n return polymorphic;\n }\n fieldsArray.push(fieldShape);\n }\n return new TreeShape(type, false, fieldsArray);\n }\n return polymorphic;\n });\n}\n/**\n * If `schema` has only one shape, return it.\n *\n * Note that this does not tolerate optional or sequence fields, nor does it optimize for patterns of specific values.\n */\nexport function tryShapeFromFieldSchema(schema, policy, type, key, shapes) {\n const kind = policy.fieldKinds.get(type.kind) ?? fail(\"missing FieldKind\");\n if (kind.multiplicity !== Multiplicity.Single) {\n return undefined;\n }\n if (type.types?.size !== 1) {\n return undefined;\n }\n const childType = [...type.types][0] ?? oob();\n const childShape = tryShapeFromSchema(schema, policy, childType, shapes);\n if (childShape instanceof Polymorphic) {\n return undefined;\n }\n return [key, childShape, 1];\n}\n/**\n * Default settings for use for {@link ChunkPolicy}.\n * Use `makeTreeChunker` to create a policy with the defaults, but leverages to schema.\n */\nexport const defaultChunkPolicy = {\n // Currently ChunkedForest and BasicTreeCursor don't handle SequenceChunks very efficiently:\n // they likely add more overhead than they save for now, so don't create them.\n sequenceChunkSplitThreshold: Number.POSITIVE_INFINITY,\n sequenceChunkInlineThreshold: Number.POSITIVE_INFINITY,\n // Current UniformChunk handling doesn't scale well to large chunks, so set a modest size limit:\n uniformChunkNodeCount: 400,\n // Without knowing what the schema is, all shapes are possible.\n // Use `makeTreeChunker` to do better.\n shapeFromSchema: () => polymorphic,\n};\nexport const basicOnlyChunkPolicy = {\n sequenceChunkSplitThreshold: Number.POSITIVE_INFINITY,\n sequenceChunkInlineThreshold: Number.POSITIVE_INFINITY,\n uniformChunkNodeCount: 0,\n shapeFromSchema: () => polymorphic,\n};\nfunction newBasicChunkTree(cursor, policy) {\n return new BasicChunk(cursor.type, new Map(mapCursorFields(cursor, () => [cursor.getFieldKey(), chunkField(cursor, policy)])), cursor.value);\n}\n/**\n * @param cursor - cursor in nodes mode\n * @param policy - heuristics to impact chunking\n * @param length - how many nodes to process (at the top level)\n * @param skipLastNavigation - if true, leaves the cursor at the last node instead of moving off of it.\n */\nexport function chunkRange(cursor, policy, length, skipLastNavigation) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x57e /* should be in nodes */);\n let output = [];\n let remaining = length;\n while (remaining > 0) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x57f /* should be in nodes */);\n const start = cursor.chunkStart;\n let reusedChunk = false;\n // symbol based fast path to check for chunk:\n // return existing chunk with a increased ref count if possible.\n if (start === cursor.fieldIndex) {\n const chunkLength = cursor.chunkLength;\n if (chunkLength <= remaining) {\n const chunk = tryGetChunk(cursor);\n if (chunk !== undefined) {\n if (chunk instanceof SequenceChunk &&\n chunk.subChunks.length <= policy.sequenceChunkInlineThreshold) {\n // If sequence chunk, and its very short, inline it.\n // Note that this is not recursive: there may be short sequences nested below this which are not inlined.\n for (const subChunk of chunk.subChunks) {\n subChunk.referenceAdded();\n output.push(subChunk);\n }\n }\n chunk.referenceAdded();\n output.push(chunk);\n remaining -= chunkLength;\n reusedChunk = true;\n let seek = chunkLength;\n if (skipLastNavigation && remaining === 0) {\n seek -= 1;\n }\n cursor.seekNodes(seek);\n }\n }\n }\n if (!reusedChunk) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x580 /* should be in nodes */);\n // TODO: if provided, use schema to consider using UniformChunks\n const type = cursor.type;\n const shape = policy.shapeFromSchema(type);\n if (shape instanceof TreeShape) {\n const nodesPerTopLevelNode = shape.positions.length;\n const maxTopLevelLength = Math.ceil(nodesPerTopLevelNode / policy.uniformChunkNodeCount);\n const maxLength = Math.min(maxTopLevelLength, remaining);\n const newChunk = uniformChunkFromCursor(cursor, shape, maxLength, maxLength === remaining && skipLastNavigation);\n remaining -= newChunk.topLevelLength;\n output.push(newChunk);\n }\n else {\n // Slow path: copy tree into new basic chunk\n output.push(newBasicChunkTree(cursor, policy));\n remaining -= 1;\n if (!skipLastNavigation || remaining !== 0) {\n cursor.nextNode();\n }\n }\n }\n }\n // TODO: maybe make a pass over output to coalesce UniformChunks and/or convert other formats to UniformChunks where possible.\n // If output is large, group it into a tree of sequence chunks.\n while (output.length > policy.sequenceChunkSplitThreshold) {\n const chunkCount = Math.ceil(output.length / policy.sequenceChunkSplitThreshold);\n const newOutput = [];\n // Rounding down, and add an extra item to some of the chunks.\n const chunkSize = Math.floor(output.length / chunkCount);\n // number of chunks to add an extra item to to make total line up.\n const extra = output.length % chunkCount;\n let previousEnd = 0;\n for (let index = 0; index < chunkCount; index++) {\n // If we are in the first `extra` items, add an extra to this chunk.\n const end = previousEnd + chunkSize + (index < extra ? 1 : 0);\n newOutput.push(new SequenceChunk(output.slice(previousEnd, end)));\n previousEnd = end;\n }\n assert(previousEnd === output.length, 0x581 /* chunks should add up to total */);\n output = newOutput;\n }\n return output;\n}\nexport function insertValues(cursor, shape, values) {\n assert(shape.type === cursor.type, 0x582 /* shape and type must match */);\n // TODO:Perf:\n // Fast path for already part of a uniform chunk with matching shape\n // Slow path: walk shape and cursor together, inserting values.\n if (shape.hasValue) {\n values.push(cursor.value);\n }\n for (const [key, childShape, length] of shape.fieldsArray) {\n cursor.enterField(key);\n let count = 0;\n for (let inNodes = cursor.firstNode(); inNodes; inNodes = cursor.nextNode()) {\n insertValues(cursor, childShape, values);\n count++;\n }\n cursor.exitField();\n assert(length === count, 0x583 /* unexpected field length */);\n }\n}\n/**\n * Read up to `maxTopLevelLength` nodes from `cursor`, stopping when limit is hit or type of node changes.\n *\n * This requires that the all trees with matching type match the provided shape.\n * This cannot be used if other shapes are possible for this type.\n *\n * If this stops early due to the type changing, `skipLastNavigation` is not involved:\n * `skipLastNavigation` only determines if the cursor will be left on the node after the last one (possibly exiting the field)\n * if the full length is used.\n */\nexport function uniformChunkFromCursor(cursor, shape, maxTopLevelLength, skipLastNavigation) {\n // TODO:\n // This could have a fast path for consuming already uniformly chunked data with matching shape.\n const values = [];\n let topLevelLength = 1;\n while (topLevelLength <= maxTopLevelLength) {\n insertValues(cursor, shape, values);\n if (topLevelLength === maxTopLevelLength) {\n if (!skipLastNavigation) {\n cursor.nextNode();\n }\n break;\n }\n cursor.nextNode();\n if (cursor.type !== shape.type) {\n break;\n }\n topLevelLength += 1;\n }\n return new UniformChunk(shape.withTopLevelLength(topLevelLength), values);\n}\n//# sourceMappingURL=chunkTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { Versioned } from \"../../codec/index.js\";\nimport { schemaFormat } from \"../../core/index.js\";\nexport const version = 1.0;\nexport const Format = Type.Object({\n version: Type.Literal(version),\n keys: Type.Array(schemaFormat.FieldKeySchema),\n fields: Versioned,\n}, { additionalProperties: false });\n//# sourceMappingURL=format.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { makeVersionedValidatedCodec, } from \"../../codec/index.js\";\nimport { Format } from \"./format.js\";\nexport function makeForestSummarizerCodec(options, fieldBatchCodec) {\n const inner = fieldBatchCodec;\n return makeVersionedValidatedCodec(options, new Set([1]), Format, {\n encode: (data, context) => {\n const keys = [];\n const fields = [];\n for (const [key, value] of data) {\n keys.push(key);\n fields.push(value);\n }\n return { keys, fields: inner.encode(fields, context), version: 1 };\n },\n decode: (data, context) => {\n const out = new Map();\n const fields = inner.decode(data.fields, context);\n assert(data.keys.length === fields.length, 0x891 /* mismatched lengths */);\n for (const [index, field] of fields.entries()) {\n out.set(data.keys[index] ?? oob(), field);\n }\n return out;\n },\n });\n}\n//# sourceMappingURL=codec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createSingleBlobSummary } from \"@fluidframework/shared-object-base/internal\";\nimport { noopValidator } from \"../../codec/index.js\";\nimport { applyDelta, forEachField, makeDetachedFieldIndex, mapCursorField, } from \"../../core/index.js\";\nimport { idAllocatorFromMaxId } from \"../../util/index.js\";\n// eslint-disable-next-line import/no-internal-modules\nimport { chunkField, defaultChunkPolicy } from \"../chunked-forest/chunkTree.js\";\nimport { makeForestSummarizerCodec } from \"./codec.js\";\n/**\n * The storage key for the blob in the summary containing tree data\n */\nconst treeBlobKey = \"ForestTree\";\n/**\n * Provides methods for summarizing and loading a forest.\n */\nexport class ForestSummarizer {\n /**\n * @param encoderContext - The schema if provided here must be mutated by the caller to keep it up to date.\n */\n constructor(forest, revisionTagCodec, fieldBatchCodec, encoderContext, options = { jsonValidator: noopValidator }, idCompressor) {\n this.forest = forest;\n this.revisionTagCodec = revisionTagCodec;\n this.encoderContext = encoderContext;\n this.idCompressor = idCompressor;\n this.key = \"Forest\";\n this.codec = makeForestSummarizerCodec(options, fieldBatchCodec);\n }\n /**\n * Synchronous monolithic summarization of tree content.\n *\n * TODO: when perf matters, this should be replaced with a chunked async version using a binary format.\n *\n * @returns a snapshot of the forest's tree as a string.\n */\n getTreeString(stringify) {\n const rootCursor = this.forest.getCursorAboveDetachedFields();\n const fieldMap = new Map();\n // TODO: Encode all detached fields in one operation for better performance and compression\n forEachField(rootCursor, (cursor) => {\n const key = cursor.getFieldKey();\n const innerCursor = this.forest.allocateCursor(\"getTreeString\");\n assert(this.forest.tryMoveCursorToField({ fieldKey: key, parent: undefined }, innerCursor) ===\n 1 /* TreeNavigationResult.Ok */, 0x892 /* failed to navigate to field */);\n fieldMap.set(key, innerCursor);\n });\n const encoded = this.codec.encode(fieldMap, this.encoderContext);\n fieldMap.forEach((value) => value.free());\n return stringify(encoded);\n }\n getAttachSummary(stringify, fullTree, trackState, telemetryContext) {\n return createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));\n }\n async summarize(stringify, fullTree, trackState, telemetryContext) {\n return createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));\n }\n getGCData(fullGC) {\n // TODO: Properly implement garbage collection. Right now, garbage collection is performed automatically\n // by the code in SharedObject (from which SharedTreeCore extends). The `runtime.uploadBlob` API delegates\n // to the `BlobManager`, which automatically populates the summary with ISummaryAttachment entries for each\n // blob.\n return {\n gcNodes: {},\n };\n }\n async load(services, parse) {\n if (await services.contains(treeBlobKey)) {\n const treeBuffer = await services.readBlob(treeBlobKey);\n const treeBufferString = bufferToString(treeBuffer, \"utf8\");\n // TODO: this code is parsing data without an optional validator, this should be defined in a typebox schema as part of the\n // forest summary format.\n const fields = this.codec.decode(parse(treeBufferString), this.encoderContext);\n const allocator = idAllocatorFromMaxId();\n const fieldChanges = [];\n const build = [];\n for (const [fieldKey, field] of fields) {\n const chunked = chunkField(field, defaultChunkPolicy);\n const nodeCursors = chunked.flatMap((chunk) => mapCursorField(chunk.cursor(), (cursor) => cursor.fork()));\n const buildId = { minor: allocator.allocate(nodeCursors.length) };\n build.push({\n id: buildId,\n trees: nodeCursors,\n });\n fieldChanges.push([\n fieldKey,\n {\n local: [{ count: nodeCursors.length, attach: buildId }],\n },\n ]);\n }\n assert(this.forest.isEmpty, 0x797 /* forest must be empty */);\n applyDelta({ build, fields: new Map(fieldChanges) }, undefined, this.forest, makeDetachedFieldIndex(\"init\", this.revisionTagCodec, this.idCompressor));\n }\n }\n}\n//# sourceMappingURL=forestSummarizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { aboveRootPlaceholder, detachedFieldAsKey, mapCursorField, rootField, } from \"../core/index.js\";\nimport { stackTreeFieldCursor, stackTreeNodeCursor, } from \"./treeCursorUtils.js\";\n/**\n * @returns An {@link ITreeCursorSynchronous} in nodes mode for a single {@link MapTree}.\n */\nexport function cursorForMapTreeNode(root) {\n return stackTreeNodeCursor(adapter, root);\n}\n/**\n * @returns an {@link ITreeCursorSynchronous} in fields mode for a MapTree field.\n */\nexport function cursorForMapTreeField(root, detachedField = rootField) {\n const key = detachedFieldAsKey(detachedField);\n return stackTreeFieldCursor(adapter, {\n type: aboveRootPlaceholder,\n fields: new Map([[key, root]]),\n }, detachedField);\n}\nconst adapter = {\n value: (node) => node.value,\n type: (node) => node.type,\n keysFromNode: (node) => [...node.fields.keys()], // TODO: don't convert this to array here.\n getFieldFromNode: (node, key) => node.fields.get(key) ?? [],\n};\n/**\n * Extract a MapTree from the contents of the given ITreeCursor's current node.\n */\nexport function mapTreeFromCursor(cursor) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x3b7 /* must start at node */);\n const fields = new Map();\n for (let inField = cursor.firstField(); inField; inField = cursor.nextField()) {\n const field = mapCursorField(cursor, mapTreeFromCursor);\n fields.set(cursor.getFieldKey(), field);\n }\n const node = {\n type: cursor.type,\n value: cursor.value,\n fields,\n };\n return node;\n}\n/**\n * Extract an array of MapTrees (a field) from the contents of the given ITreeCursor's current field.\n */\nexport function mapTreeFieldFromCursor(cursor) {\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0xa03 /* must start at field */);\n return mapCursorField(cursor, mapTreeFromCursor);\n}\n//# sourceMappingURL=mapTreeCursor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { brand, getFirstEntryFromRangeMap, getOrAddEmptyToMap, setInRangeMap, } from \"../util/index.js\";\n/**\n */\nexport const MemoizedIdRangeAllocator = {\n fromNextId(nextId = 0) {\n const rangeMap = new Map();\n let _nextId = nextId;\n return {\n allocate(key, startId, length) {\n let count = length ?? 1;\n const out = [];\n const ranges = getOrAddEmptyToMap(rangeMap, key);\n let currId = startId;\n while (count > 0) {\n const firstRange = getFirstEntryFromRangeMap(ranges, currId, count);\n if (firstRange === undefined) {\n const newId = _nextId;\n _nextId += count;\n setInRangeMap(ranges, currId, count, newId);\n out.push({ first: brand(newId), count });\n count = 0;\n }\n else {\n const idRange = {\n first: brand(firstRange.value),\n count: firstRange.length,\n };\n if (currId < firstRange.start) {\n const countToAdd = firstRange.start - currId;\n setInRangeMap(ranges, currId, countToAdd, _nextId);\n out.push({ first: brand(_nextId), count: countToAdd });\n _nextId += countToAdd;\n currId += countToAdd;\n count -= countToAdd;\n }\n else if (firstRange.start < currId) {\n const countToTrim = currId - firstRange.start;\n idRange.first = brand(idRange.first + countToTrim);\n idRange.count -= countToTrim;\n }\n if (idRange.count > count) {\n idRange.count = count;\n }\n else if (idRange.count < count &&\n firstRange.value + firstRange.length === _nextId) {\n // The existing range can be extended\n _nextId += count - idRange.count;\n firstRange.length = count;\n idRange.count = count;\n }\n out.push(idRange);\n count -= idRange.count;\n currId += idRange.count;\n }\n }\n return out;\n },\n mint(length) {\n const count = length ?? 1;\n const out = _nextId;\n _nextId += count;\n return brand(out);\n },\n };\n },\n};\n//# sourceMappingURL=memoizedIdRangeAllocator.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ObjectForest_roots;\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { AnchorSet, ITreeSubscriptionCursorState, aboveRootPlaceholder, deepCopyMapTree, } from \"../../core/index.js\";\nimport { createEmitter } from \"../../events/index.js\";\nimport { assertNonNegativeSafeInteger, assertValidIndex, assertValidRange, brand, fail, } from \"../../util/index.js\";\nimport { cursorForMapTreeNode, mapTreeFromCursor } from \"../mapTreeCursor.js\";\nimport { SynchronousCursor } from \"../treeCursorUtils.js\";\n/** Get a field from a `MutableMapTree`, optionally modifying the tree to create it if missing. */\nfunction getOrCreateField(mapTree, key) {\n const field = mapTree.fields.get(key);\n if (field !== undefined) {\n return field;\n }\n const newField = [];\n mapTree.fields.set(key, newField);\n return newField;\n}\n/**\n * Reference implementation of IEditableForest.\n *\n * This implementation focuses on correctness and simplicity, not performance.\n * It does not use compressed chunks: instead nodes are implemented using objects.\n */\nexport class ObjectForest {\n get roots() {\n return __classPrivateFieldGet(this, _ObjectForest_roots, \"f\");\n }\n constructor(anchors = new AnchorSet(), additionalAsserts = false, roots) {\n this.anchors = anchors;\n this.additionalAsserts = additionalAsserts;\n // All cursors that are in the \"Current\" state. Must be empty when editing.\n this.currentCursors = new Set();\n this.events = createEmitter();\n _ObjectForest_roots.set(this, void 0);\n this.nextRange = 0;\n __classPrivateFieldSet(this, _ObjectForest_roots, roots !== undefined\n ? deepCopyMapTree(roots)\n : {\n type: aboveRootPlaceholder,\n fields: new Map(),\n }, \"f\");\n }\n get isEmpty() {\n return this.roots.fields.size === 0;\n }\n on(eventName, listener) {\n return this.events.on(eventName, listener);\n }\n clone(_, anchors) {\n return new ObjectForest(anchors, this.additionalAsserts, this.roots);\n }\n forgetAnchor(anchor) {\n this.anchors.forget(anchor);\n }\n acquireVisitor() {\n assert(this.activeVisitor === undefined, 0x76c /* Must release existing visitor before acquiring another */);\n // Note: This code uses cursors, however it also modifies the tree.\n // In general this is not safe, but this code happens to only modify the tree below the current cursor location,\n // which happens to work.\n // This pattern could be generalized/formalized with a concept of an exclusive cursor,\n // which can edit, but is the only cursor allowed at the time.\n const cursor = this.allocateCursor(\"acquireVisitor\");\n cursor.setToAboveDetachedSequences();\n /**\n * Called before each edit to allow cursor cleanup to happen and ensure that there are no unexpected cursors.\n * This is required for each change since there may be app facing change event handlers which create cursors.\n */\n const preEdit = () => {\n this.events.emit(\"beforeChange\");\n assert(this.currentCursors.has(cursor), 0x995 /* missing visitor cursor while editing */);\n if (this.currentCursors.size > 1) {\n const unexpectedSources = [...this.currentCursors].flatMap((c) => c === cursor ? [] : c.source ?? null);\n throw new Error(`Found unexpected cursors when editing with the following annotations: ${JSON.stringify(unexpectedSources)}`);\n }\n };\n class Visitor {\n constructor(forest) {\n this.forest = forest;\n }\n free() {\n cursor.free();\n assert(this.forest.activeVisitor !== undefined, 0x76d /* Multiple free calls for same visitor */);\n this.forest.activeVisitor = undefined;\n }\n destroy(detachedField, count) {\n preEdit();\n this.forest.delete(detachedField);\n }\n create(content, destination) {\n preEdit();\n this.forest.add(content, destination);\n this.forest.events.emit(\"afterRootFieldCreated\", destination);\n }\n attach(source, count, destination) {\n preEdit();\n this.attachEdit(source, count, destination);\n }\n detach(source, destination) {\n preEdit();\n this.detachEdit(source, destination);\n }\n /**\n * Attaches the nodes from the given source field into the current field.\n * Does not invalidate dependents.\n * @param source - The the range to be attached.\n * @param count - The number of nodes being attached.\n * Expected to match the number of nodes in the source detached field.\n * @param destination - The index in the current field at which to attach the content.\n */\n attachEdit(source, count, destination) {\n assertNonNegativeSafeInteger(count);\n if (count === 0) {\n return;\n }\n const [parent, key] = cursor.getParent();\n assert(parent !== this.forest.roots || key !== source, 0x7b6 /* Attach source field must be different from current field */);\n const currentField = getOrCreateField(parent, key);\n assertValidIndex(destination, currentField, true);\n const sourceField = __classPrivateFieldGet(this.forest, _ObjectForest_roots, \"f\").fields.get(source) ?? [];\n assert(sourceField !== undefined, 0x7b7 /* Attach source field must exist */);\n assert(sourceField.length === count, 0x7b8 /* Attach must consume all nodes in source field */);\n // TODO: this will fail for very large insertions due to argument limits.\n currentField.splice(destination, 0, ...sourceField);\n this.forest.delete(source);\n }\n /**\n * Detaches the range from the current field and transfers it to the given destination if any.\n * Does not invalidate dependents.\n * @param source - The bounds of the range to be detached from the current field.\n * @param destination - If specified, the destination to transfer the detached range to.\n * If not specified, the detached range is destroyed.\n */\n detachEdit(source, destination) {\n const [parent, key] = cursor.getParent();\n assert(destination === undefined || parent !== this.forest.roots || key !== destination, 0x7b9 /* Detach destination field must be different from current field */);\n const currentField = getOrCreateField(parent, key);\n assertValidRange(source, currentField);\n const content = currentField.splice(source.start, source.end - source.start);\n if (destination !== undefined) {\n this.forest.addFieldAsDetached(content, destination);\n }\n // This check is performed after the transfer to ensure that the field is not removed in scenarios\n // where the source and destination are the same.\n if (currentField.length === 0) {\n parent.fields.delete(key);\n }\n }\n replace(newContentSource, range, oldContentDestination) {\n preEdit();\n assert(newContentSource !== oldContentDestination, 0x7ba /* Replace detached source field and detached destination field must be different */);\n this.detachEdit(range, oldContentDestination);\n this.attachEdit(newContentSource, range.end - range.start, range.start);\n }\n enterNode(index) {\n cursor.enterNode(index);\n }\n exitNode(index) {\n cursor.exitNode();\n }\n enterField(key) {\n cursor.enterField(key);\n }\n exitField(key) {\n cursor.exitField();\n }\n }\n const visitor = new Visitor(this);\n this.activeVisitor = visitor;\n return visitor;\n }\n newDetachedField() {\n const range = brand(String(this.nextRange));\n this.nextRange += 1;\n return range;\n }\n add(nodes, key) {\n const field = Array.from(nodes, mapTreeFromCursor);\n this.addFieldAsDetached(field, key);\n }\n addFieldAsDetached(field, key) {\n assert(!this.roots.fields.has(key), 0x370 /* new range must not already exist */);\n if (field.length > 0) {\n __classPrivateFieldGet(this, _ObjectForest_roots, \"f\").fields.set(key, field);\n }\n }\n delete(field) {\n __classPrivateFieldGet(this, _ObjectForest_roots, \"f\").fields.delete(field);\n }\n allocateCursor(source) {\n return new Cursor(this, source);\n }\n tryMoveCursorToNode(destination, cursorToMove) {\n const path = this.anchors.locate(destination);\n if (path === undefined) {\n return -1 /* TreeNavigationResult.NotFound */;\n }\n this.moveCursorToPath(path, cursorToMove);\n return 1 /* TreeNavigationResult.Ok */;\n }\n tryMoveCursorToField(destination, cursorToMove) {\n if (destination.parent === undefined) {\n this.moveCursorToPath(undefined, cursorToMove);\n }\n else {\n const result = this.tryMoveCursorToNode(destination.parent, cursorToMove);\n if (result !== 1 /* TreeNavigationResult.Ok */) {\n return result;\n }\n }\n cursorToMove.enterField(destination.fieldKey);\n return 1 /* TreeNavigationResult.Ok */;\n }\n moveCursorToPath(destination, cursorToMove) {\n assert(cursorToMove instanceof Cursor, 0x337 /* ObjectForest must only be given its own Cursor type */);\n assert(cursorToMove.forest === this, 0x338 /* ObjectForest must only be given its own Cursor */);\n const indexStack = [];\n const keyStack = [];\n let path = destination;\n while (path !== undefined) {\n indexStack.push(path.parentIndex);\n keyStack.push(path.parentField);\n path = path.parent;\n }\n cursorToMove.setToAboveDetachedSequences();\n while (keyStack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n cursorToMove.enterField(keyStack.pop());\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n cursorToMove.enterNode(indexStack.pop());\n }\n return;\n }\n getCursorAboveDetachedFields() {\n return cursorForMapTreeNode(this.roots);\n }\n}\n_ObjectForest_roots = new WeakMap();\n/**\n * Cursor implementation for ObjectForest.\n */\nclass Cursor extends SynchronousCursor {\n /**\n * @param forest - forest this cursor navigates\n * @param innerCursor - underlying cursor implementation this wraps. `undefined` when state is not `Current`\n */\n constructor(forest, source, innerCursor) {\n super();\n this.forest = forest;\n this.source = source;\n this.innerCursor = innerCursor;\n if (innerCursor === undefined) {\n this.state = ITreeSubscriptionCursorState.Cleared;\n }\n else {\n this.state = ITreeSubscriptionCursorState.Current;\n this.forest.currentCursors.add(this);\n }\n }\n buildFieldAnchor() {\n const path = this.getFieldPath();\n const anchor = path.parent === undefined ? undefined : this.forest.anchors.track(path.parent);\n return { parent: anchor, fieldKey: path.field };\n }\n getFieldPath(prefix) {\n assert(this.innerCursor !== undefined, 0x45f /* Cursor must be current to be used */);\n return this.innerCursor.getFieldPath(prefix);\n }\n get mode() {\n assert(this.innerCursor !== undefined, 0x42e /* Cursor must be current to be used */);\n return this.innerCursor.mode;\n }\n nextField() {\n assert(this.innerCursor !== undefined, 0x42f /* Cursor must be current to be used */);\n return this.innerCursor.nextField();\n }\n exitField() {\n assert(this.innerCursor !== undefined, 0x430 /* Cursor must be current to be used */);\n return this.innerCursor.exitField();\n }\n skipPendingFields() {\n assert(this.innerCursor !== undefined, 0x431 /* Cursor must be current to be used */);\n return this.innerCursor.skipPendingFields();\n }\n getFieldKey() {\n assert(this.innerCursor !== undefined, 0x432 /* Cursor must be current to be used */);\n return this.innerCursor.getFieldKey();\n }\n getFieldLength() {\n assert(this.innerCursor !== undefined, 0x433 /* Cursor must be current to be used */);\n return this.innerCursor.getFieldLength();\n }\n firstNode() {\n assert(this.innerCursor !== undefined, 0x434 /* Cursor must be current to be used */);\n return this.innerCursor.firstNode();\n }\n enterNode(childIndex) {\n assert(this.innerCursor !== undefined, 0x435 /* Cursor must be current to be used */);\n return this.innerCursor.enterNode(childIndex);\n }\n getPath(prefix) {\n assert(this.innerCursor !== undefined, 0x436 /* Cursor must be current to be used */);\n return this.innerCursor.getPath(prefix) ?? fail(\"no path when at root\");\n }\n get fieldIndex() {\n assert(this.innerCursor !== undefined, 0x437 /* Cursor must be current to be used */);\n return this.innerCursor.fieldIndex;\n }\n get chunkStart() {\n assert(this.innerCursor !== undefined, 0x438 /* Cursor must be current to be used */);\n return this.innerCursor.chunkStart;\n }\n get chunkLength() {\n assert(this.innerCursor !== undefined, 0x439 /* Cursor must be current to be used */);\n return this.innerCursor.chunkLength;\n }\n seekNodes(offset) {\n assert(this.innerCursor !== undefined, 0x43a /* Cursor must be current to be used */);\n return this.innerCursor.seekNodes(offset);\n }\n nextNode() {\n assert(this.innerCursor !== undefined, 0x43b /* Cursor must be current to be used */);\n return this.innerCursor.nextNode();\n }\n exitNode() {\n assert(this.innerCursor !== undefined, 0x43c /* Cursor must be current to be used */);\n return this.innerCursor.exitNode();\n }\n firstField() {\n assert(this.innerCursor !== undefined, 0x43d /* Cursor must be current to be used */);\n return this.innerCursor.firstField();\n }\n enterField(key) {\n assert(this.innerCursor !== undefined, 0x43e /* Cursor must be current to be used */);\n return this.innerCursor.enterField(key);\n }\n get type() {\n assert(this.innerCursor !== undefined, 0x43f /* Cursor must be current to be used */);\n return this.innerCursor.type;\n }\n get value() {\n assert(this.innerCursor !== undefined, 0x440 /* Cursor must be current to be used */);\n return this.innerCursor.value;\n }\n // TODO: tests for clear when not at root.\n clear() {\n assert(this.state !== ITreeSubscriptionCursorState.Freed, 0x33b /* Cursor must not be freed */);\n this.state = ITreeSubscriptionCursorState.Cleared;\n this.innerCursor = undefined;\n this.forest.currentCursors.delete(this);\n }\n /**\n * Move this cursor to the special dummy node above the detached sequences.\n * Can be used when cleared (but not freed).\n */\n setToAboveDetachedSequences() {\n assert(this.state !== ITreeSubscriptionCursorState.Freed, 0x33c /* Cursor must not be freed */);\n this.clear();\n this.state = ITreeSubscriptionCursorState.Current;\n // Cast to a cursor of _mutable_ trees to allow direct manipulation of the tree data which is more efficient than doing immutable copies.\n this.innerCursor = cursorForMapTreeNode(this.forest.roots);\n this.forest.currentCursors.add(this);\n }\n getNode() {\n assert(this.innerCursor !== undefined, 0x33e /* Cursor must be current to be used */);\n return this.innerCursor.getNode();\n }\n getParent() {\n assert(this.innerCursor !== undefined, 0x441 /* Cursor must be current to be used */);\n // This could be optimized to skip moving it accessing internals of cursor.\n const key = this.innerCursor.getFieldKey();\n this.innerCursor.exitField();\n const node = this.innerCursor.getNode();\n this.innerCursor.enterField(key);\n return [node, key];\n }\n fork(source) {\n assert(this.innerCursor !== undefined, 0x460 /* Cursor must be current to be used */);\n return new Cursor(this.forest, source ?? `fork: ${this.source}`, this.innerCursor.fork());\n }\n free() {\n assert(this.state !== ITreeSubscriptionCursorState.Freed, 0x33f /* Cursor must not be double freed */);\n this.forest.currentCursors.delete(this);\n this.state = ITreeSubscriptionCursorState.Freed;\n }\n buildAnchor() {\n assert(this.state === ITreeSubscriptionCursorState.Current, 0x37a /* Cursor must be current to be used */);\n return this.forest.anchors.track(this.getPath());\n }\n}\n// This function is the folder level export for objectForest, and hides all the implementation types.\n// When other forest implementations are created (ex: optimized ones),\n// this function should likely be moved and updated to (at least conditionally) use them.\n/**\n * @returns an implementation of {@link IEditableForest} with no data or schema.\n */\nexport function buildForest(anchors, additionalAsserts = false) {\n return new ObjectForest(anchors, additionalAsserts);\n}\n//# sourceMappingURL=objectForest.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { schemaFormat } from \"../../core/index.js\";\nconst noAdditionalProps = { additionalProperties: false };\n/**\n * Format for encoding as json.\n *\n * For consistency all lists are sorted and undefined values are omitted.\n *\n * This chooses to use lists of named objects instead of maps:\n * this choice is somewhat arbitrary, but avoids user data being used as object keys,\n * which can sometimes be an issue (for example handling that for \"__proto__\" can require care).\n * It also makes it simpler to determinately sort by keys.\n */\nexport const Format = Type.Object({\n version: Type.Literal(schemaFormat.version),\n nodes: Type.Record(Type.String(), schemaFormat.TreeNodeSchemaDataFormat),\n root: schemaFormat.FieldSchemaFormat,\n}, noAdditionalProps);\n//# sourceMappingURL=format.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeVersionedValidatedCodec, } from \"../../codec/index.js\";\nimport { decodeFieldSchema, encodeFieldSchema, schemaFormat, storedSchemaDecodeDispatcher, toTreeNodeSchemaDataFormat, } from \"../../core/index.js\";\nimport { brand, fail } from \"../../util/index.js\";\nimport { Format } from \"./format.js\";\nexport function encodeRepo(repo) {\n const nodeSchema = Object.create(null);\n const rootFieldSchema = encodeFieldSchema(repo.rootFieldSchema);\n for (const name of [...repo.nodeSchema.keys()].sort()) {\n const schema = repo.nodeSchema.get(name) ?? fail(\"missing schema\");\n Object.defineProperty(nodeSchema, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: toTreeNodeSchemaDataFormat(schema.encode()),\n });\n }\n return {\n version: schemaFormat.version,\n nodes: nodeSchema,\n root: rootFieldSchema,\n };\n}\nfunction decode(f) {\n const nodeSchema = new Map();\n for (const [key, schema] of Object.entries(f.nodes)) {\n nodeSchema.set(brand(key), storedSchemaDecodeDispatcher.dispatch(schema));\n }\n return {\n rootFieldSchema: decodeFieldSchema(f.root),\n nodeSchema,\n };\n}\n/**\n * Creates a codec which performs synchronous monolithic encoding of schema content.\n */\nexport function makeSchemaCodec(options) {\n return makeVersionedValidatedCodec(options, new Set([schemaFormat.version]), Format, {\n encode: (data) => encodeRepo(data),\n decode: (data) => decode(data),\n });\n}\n//# sourceMappingURL=codec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\nimport { schemaDataIsEmpty, } from \"../../core/index.js\";\nimport { encodeRepo, makeSchemaCodec } from \"./codec.js\";\nconst schemaStringKey = \"SchemaString\";\n/**\n * Provides methods for summarizing and loading a schema repository.\n */\nexport class SchemaSummarizer {\n constructor(runtime, schema, options, collabWindow) {\n this.runtime = runtime;\n this.schema = schema;\n this.key = \"Schema\";\n this.codec = makeSchemaCodec(options);\n this.schema.on(\"afterSchemaChange\", () => {\n // Invalidate the cache, as we need to regenerate the blob if the schema changes\n // We are assuming that schema changes from remote ops are valid, as we are in a summarization context.\n this.schemaIndexLastChangedSeq = collabWindow.getCurrentSeq();\n });\n }\n getAttachSummary(stringify, fullTree, trackState, telemetryContext, incrementalSummaryContext) {\n const builder = new SummaryTreeBuilder();\n if (incrementalSummaryContext !== undefined &&\n this.schemaIndexLastChangedSeq !== undefined &&\n incrementalSummaryContext.latestSummarySequenceNumber >= this.schemaIndexLastChangedSeq) {\n builder.addHandle(schemaStringKey, SummaryType.Blob, `${incrementalSummaryContext.summaryPath}/indexes/${this.key}/${schemaStringKey}`);\n }\n else {\n const dataString = JSON.stringify(this.codec.encode(this.schema));\n builder.addBlob(schemaStringKey, dataString);\n }\n return builder.getSummaryTree();\n }\n async summarize(stringify, fullTree, trackState, telemetryContext, incrementalSummaryContext) {\n throw new Error(\"Method not implemented.\");\n }\n getGCData(fullGC) {\n // TODO: Properly implement garbage collection. Right now, garbage collection is performed automatically\n // by the code in SharedObject (from which SharedTreeCore extends). The `runtime.uploadBlob` API delegates\n // to the `BlobManager`, which automatically populates the summary with ISummaryAttachment entries for each\n // blob.\n return {\n gcNodes: {},\n };\n }\n async load(services, parse) {\n const schemaBuffer = await services.readBlob(schemaStringKey);\n // After the awaits, validate that the schema is in a clean state.\n // This detects any schema that could have been accidentally added through\n // invalid means and are about to be overwritten.\n assert(schemaDataIsEmpty(this.schema), 0x3da /* there should not already be stored schema when loading stored schema */);\n const schemaString = bufferToString(schemaBuffer, \"utf-8\");\n // Currently no Fluid handles are used, so just use JSON.parse.\n const decoded = this.codec.decode(JSON.parse(schemaString));\n this.schema.apply(decoded);\n this.schemaIndexLastChangedSeq = 0;\n }\n}\n/**\n * Dumps schema into a deterministic JSON compatible semi-human readable but unspecified format.\n *\n * @remarks\n * This can be used to help inspect schema for debugging, and to save a snapshot of schema to help detect and review changes to an applications schema.\n *\n * This format may change across major versions of this package: such changes are considered breaking.\n * Beyond that, no compatibility guarantee is provided for this format: it should never be relied upon to load data, it should only be used for comparing outputs from this function.\n * @privateRemarks\n * This currently uses the schema summary format, but that could be changed to something more human readable (particularly if the encoded format becomes less human readable).\n * This intentionally does not leak the format types in the API.\n * @internal\n */\nexport function encodeTreeSchema(schema) {\n return encodeRepo(schema);\n}\n//# sourceMappingURL=schemaSummarizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { aboveRootPlaceholder, detachedFieldAsKey, genericTreeKeys, getGenericTreeField, mapCursorField, moveToDetachedField, rootField, setGenericTreeField, } from \"../core/index.js\";\nimport { stackTreeFieldCursor, stackTreeNodeCursor, } from \"./treeCursorUtils.js\";\n/**\n * This module provides support for reading and writing a human readable (and\n * editable) tree format.\n *\n * This implementation can handle all trees (so it does not need a fallback for any special cases),\n * and is not optimized.\n *\n * It's suitable for testing and debugging,\n * though it could also reasonably be used as a fallback for edge cases or for small trees.\n *\n * TODO: Use placeholders.\n * build / add operations should be able to include detached ranges instead of children directly.\n * summaries should be able to reference unloaded chunks instead of having children directly.\n * Leverage placeholders in the types below to accomplish this.\n * Determine how this relates to Cursor: should cursor be generic over placeholder values?\n * (Could use them for errors to allow non erroring cursors?)\n *\n * Note:\n * Currently a lot of Tree's codebase is using json for serialization.\n * Because putting json strings inside json works poorly (adds lots of escaping),\n * for now this library actually outputs and inputs the Json compatible type JsonableTree\n * rather than actual strings.\n */\n/**\n * Create a cursor, in `nodes` mode at the root of the provided tree.\n *\n * @returns an {@link ITreeCursorSynchronous} in nodes mode for a single {@link JsonableTree}.\n * @remarks\n * Do not confuse this with {@link JsonableTree} with the JSON domain:\n * this takes in data in a specific format that is json compatible (except for FluidHandle values).\n * That is distinct from treating arbitrary JSON data as a tree in the JSON domain.\n */\nexport function cursorForJsonableTreeNode(root) {\n return stackTreeNodeCursor(adapter, root);\n}\n/**\n * @returns an {@link ITreeCursorSynchronous} in fields mode for a JsonableTree field.\n */\nexport function cursorForJsonableTreeField(trees, detachedField = rootField) {\n const key = detachedFieldAsKey(detachedField);\n return stackTreeFieldCursor(adapter, { type: aboveRootPlaceholder, fields: { [key]: trees } }, detachedField);\n}\nexport const adapter = {\n value: (node) => node.value,\n type: (node) => node.type,\n keysFromNode: genericTreeKeys,\n getFieldFromNode: (node, key) => getGenericTreeField(node, key, false),\n};\n/**\n * Extract a JsonableTree from the contents of the given ITreeCursor's current node.\n */\nexport function jsonableTreeFromCursor(cursor) {\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x3ba /* must start at node */);\n const node = cursor.value !== undefined\n ? {\n type: cursor.type,\n value: cursor.value,\n }\n : {\n type: cursor.type,\n };\n // Normalize object by only including fields that are required.\n for (let inFields = cursor.firstField(); inFields; inFields = cursor.nextField()) {\n const field = mapCursorField(cursor, jsonableTreeFromCursor);\n setGenericTreeField(node, cursor.getFieldKey(), field);\n }\n return node;\n}\n/**\n * Extract a JsonableTree from the contents of the given ITreeCursor's current node.\n */\nexport function jsonableTreeFromFieldCursor(cursor) {\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0x7ca /* must start at field */);\n return mapCursorField(cursor, jsonableTreeFromCursor);\n}\n/**\n * Copy forest content into a JsonableTree.\n * @remarks\n * This is not a time or memory efficient way to pass around forest content:\n * its intended for debugging and testing purposes when forest content is needed in a human readable serializable format.\n */\nexport function jsonableTreeFromForest(forest) {\n const readCursor = forest.allocateCursor();\n moveToDetachedField(forest, readCursor);\n const jsonable = jsonableTreeFromFieldCursor(readCursor);\n readCursor.free();\n return jsonable;\n}\n//# sourceMappingURL=treeTextCursor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Functionality for FieldKinds that is stable,\n * meaning that it can not change in any measurable way without providing a new identifier.\n *\n * It is assumed that this information and policy is available on all clients interacting with a document\n * using the identifier.\n *\n * This must contain enough information to process remote edits to this FieldKind consistently with all clients.\n * All behavior must be deterministic, and not change across versions of the app/library.\n *\n * These policies include the data encoding, change encoding, change rebase and change application.\n *\n * @sealed * @privateRemarks\n * This being @sealed is for users of this package.\n * This package itself may provide implementations.\n * This pattern was picked instead of an interface since we do not have a convention for how to mark interfaces as only allowed to be implemented by the package declaring them,\n * and using a class also gets stronger (nominal) typing for objects which will be down cast.\n */\nexport class FlexFieldKind {\n /**\n * @param identifier - Globally scoped identifier.\n * @param multiplicity - bound on the number of children that fields of this kind may have.\n * TODO: consider replacing with numeric upper and lower bounds.\n */\n constructor(identifier, multiplicity) {\n this.identifier = identifier;\n this.multiplicity = multiplicity;\n }\n}\n//# sourceMappingURL=fieldKind.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { LeafNodeStoredSchema, MapNodeStoredSchema, ObjectNodeStoredSchema, Multiplicity, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\n/**\n * @internal\n */\nexport function isNeverField(policy, originalData, field) {\n return isNeverFieldRecursive(policy, originalData, field, new Set());\n}\nexport function isNeverFieldRecursive(policy, originalData, field, parentTypeStack) {\n if ((policy.fieldKinds.get(field.kind) ?? fail(\"missing field kind\")).multiplicity ===\n Multiplicity.Single &&\n field.types !== undefined) {\n for (const type of field.types) {\n if (!isNeverTreeRecursive(policy, originalData, originalData.nodeSchema.get(type), parentTypeStack)) {\n return false;\n }\n }\n // This field requires at least one child, and there are no types permitted in it that can exist,\n // so this is a never field (field which no sequence of children content could ever be in schema for)\n return true;\n }\n return false;\n}\n/**\n * Returns true iff there are no possible trees that could meet this schema.\n * Trees which are infinite (like endless linked lists) are considered impossible.\n *\n * `undefined` means the schema is not present and thus a NeverTree.\n */\nexport function isNeverTree(policy, originalData, treeNode) {\n return isNeverTreeRecursive(policy, originalData, treeNode, new Set());\n}\n/**\n * Returns true iff there are no possible trees that could meet this schema.\n * Trees which are infinite (like endless linked lists) are considered impossible.\n *\n * `undefined` means the schema is not present and thus a NeverTree.\n */\nexport function isNeverTreeRecursive(policy, originalData, treeNode, parentTypeStack) {\n if (treeNode === undefined) {\n return true;\n }\n if (parentTypeStack.has(treeNode)) {\n return true;\n }\n try {\n parentTypeStack.add(treeNode);\n if (treeNode instanceof MapNodeStoredSchema) {\n return ((policy.fieldKinds.get(treeNode.mapFields.kind) ?? fail(\"missing field kind\"))\n .multiplicity === Multiplicity.Single);\n }\n else if (treeNode instanceof ObjectNodeStoredSchema) {\n for (const field of treeNode.objectNodeFields.values()) {\n // TODO: this can recurse infinitely for schema that include themselves in a value field.\n // This breaks even if there are other allowed types.\n // Such schema should either be rejected (as an error here) or considered never (and thus detected by this).\n // This can be done by passing a set/stack of current types recursively here.\n if (isNeverFieldRecursive(policy, originalData, field, parentTypeStack)) {\n return true;\n }\n }\n return false;\n }\n else {\n assert(treeNode instanceof LeafNodeStoredSchema, 0x897 /* unsupported node kind */);\n return false;\n }\n }\n finally {\n parentTypeStack.delete(treeNode);\n }\n}\n//# sourceMappingURL=isNeverTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { FlexFieldKind } from \"./fieldKind.js\";\nimport { isNeverField } from \"./isNeverTree.js\";\n// TODO: stronger typing\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functionality for FieldKinds that is stable,\n * meaning that it can not change in any measurable way without providing a new identifier.\n *\n * It is assumed that this information and policy is available on all clients interacting with a document\n * using the identifier.\n *\n * This must contain enough information to process remote edits to this FieldKind consistently with all clients.\n * All behavior must be deterministic, and not change across versions of the app/library.\n *\n * These policies include the data encoding, change encoding, change rebase and change application.\n */\nexport class FieldKindWithEditor extends FlexFieldKind {\n /**\n * @param identifier - Globally scoped identifier.\n * @param multiplicity - bound on the number of children that fields of this kind may have.\n * TODO: replace with numeric upper and lower bounds.\n * @param changeHandler - Change handling policy.\n * @param allowsTreeSupersetOf - returns true iff `superset` supports all that this does\n * and `superset` is an allowed upgrade. Does not have to handle the `never` cases.\n * See {@link isNeverField}.\n * TODO: when used as a method (instead of a free function like the other superset related functions),\n * this name is/signature is confusing and seems backwards.\n * @param handlesEditsFrom - Kinds (in addition to this) whose edits can be processed by changeHandler.\n * If the kind of a field changes, and edits are rebased across that kind change,\n * listing the other old kind here can prevent those edits from being conflicted and\n * provide a chance to handle them.\n */\n constructor(identifier, multiplicity, changeHandler, allowsTreeSupersetOf, handlesEditsFrom) {\n super(identifier, multiplicity);\n this.changeHandler = changeHandler;\n this.allowsTreeSupersetOf = allowsTreeSupersetOf;\n this.handlesEditsFrom = handlesEditsFrom;\n }\n /**\n * @returns true iff `superset` permits a (non-strict) superset of the subtrees\n * allowed by field made from `this` and `originalTypes`.\n */\n allowsFieldSuperset(policy, originalData, originalTypes, superset) {\n if (isNeverField(policy, originalData, {\n kind: this.identifier,\n types: originalTypes,\n })) {\n return true;\n }\n if (isNeverField(policy, originalData, superset)) {\n return false;\n }\n return this.allowsTreeSupersetOf(originalTypes, superset);\n }\n}\n/**\n * Downcasts to {@link FieldKindWithEditor}.\n */\nexport function withEditor(kind) {\n assert(kind instanceof FieldKindWithEditor, 0x7b5 /* kind must be FieldKindWithEditor */);\n return kind;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n//# sourceMappingURL=fieldKindWithEditor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { LeafNodeStoredSchema, MapNodeStoredSchema, ObjectNodeStoredSchema, storedEmptyFieldSchema, } from \"../../core/index.js\";\nimport { compareSets, fail } from \"../../util/index.js\";\nimport { withEditor } from \"./fieldKindWithEditor.js\";\nimport { isNeverTree } from \"./isNeverTree.js\";\n/**\n * @returns true iff `superset` is a superset of `original`.\n *\n * This does not require a strict (aka proper) superset: equivalent schema will return true.\n *\n * `undefined` TreeNodeStoredSchema means the schema is not present (and thus treated as a NeverTree).\n */\nexport function allowsTreeSuperset(policy, originalData, original, superset) {\n if (isNeverTree(policy, originalData, original)) {\n return true;\n }\n if (isNeverTree(policy, originalData, superset)) {\n return false;\n }\n assert(original !== undefined, 0x716 /* only never trees have undefined schema */);\n assert(superset !== undefined, 0x717 /* only never trees have undefined schema */);\n if (original instanceof LeafNodeStoredSchema) {\n if (superset instanceof LeafNodeStoredSchema) {\n return allowsValueSuperset(original.leafValue, superset.leafValue);\n }\n return false;\n }\n assert(original instanceof MapNodeStoredSchema || original instanceof ObjectNodeStoredSchema, 0x893 /* unsupported node kind */);\n assert(superset instanceof MapNodeStoredSchema || superset instanceof ObjectNodeStoredSchema, 0x894 /* unsupported node kind */);\n if (original instanceof MapNodeStoredSchema) {\n if (superset instanceof MapNodeStoredSchema) {\n return allowsFieldSuperset(policy, originalData, normalizeField(original.mapFields), normalizeField(superset.mapFields));\n }\n return false;\n }\n assert(original instanceof ObjectNodeStoredSchema, 0x895 /* unsupported node kind */);\n if (superset instanceof MapNodeStoredSchema) {\n for (const [_key, field] of original.objectNodeFields) {\n if (!allowsFieldSuperset(policy, originalData, normalizeField(field), normalizeField(superset.mapFields))) {\n return false;\n }\n }\n return true;\n }\n assert(superset instanceof ObjectNodeStoredSchema, 0x896 /* unsupported node kind */);\n return compareSets({\n a: original.objectNodeFields,\n b: superset.objectNodeFields,\n aExtra: (originalField) => allowsFieldSuperset(policy, originalData, original.objectNodeFields.get(originalField) ?? fail(\"missing expected field\"), normalizeField(undefined)),\n bExtra: (supersetField) => allowsFieldSuperset(policy, originalData, normalizeField(undefined), superset.objectNodeFields.get(supersetField) ?? fail(\"missing expected field\")),\n same: (sameField) => allowsFieldSuperset(policy, originalData, original.objectNodeFields.get(sameField) ?? fail(\"missing expected field\"), superset.objectNodeFields.get(sameField) ?? fail(\"missing expected field\")),\n });\n}\n/**\n * @returns true iff `superset` is a superset of `original`.\n *\n * This does not require a strict (aka proper) superset: equivalent schema will return true.\n */\nexport function allowsValueSuperset(original, superset) {\n return original === superset;\n}\n/**\n * @returns true iff `superset` is a superset of `original`.\n *\n * This does not require a strict (aka proper) superset: equivalent schema will return true.\n */\nexport function allowsFieldSuperset(policy, originalData, original, superset) {\n return withEditor(policy.fieldKinds.get(original.kind) ?? fail(\"missing kind\")).allowsFieldSuperset(policy, originalData, original.types, superset);\n}\n/**\n * @returns true iff `superset` is a superset of `original`.\n *\n * This does not require a strict (aka proper) superset: equivalent schema will return true.\n */\nexport function allowsTreeSchemaIdentifierSuperset(original, superset) {\n if (superset === undefined) {\n return true;\n }\n if (original === undefined) {\n return false;\n }\n for (const originalType of original) {\n if (!superset.has(originalType)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @returns true iff `superset` is a superset of `original`.\n *\n * This does not require a strict (aka proper) superset: equivalent schema will return true.\n *\n * A version of this that assumes a specific root field could be slightly more permissive in some simple cases,\n * however if any extra fields and fields with unconstrained types are reachable,\n * it would have to compare everything anyway.\n */\nexport function allowsRepoSuperset(policy, original, superset) {\n {\n // TODO: I think its ok to use the field from superset here, but I should confirm it is, and document why.\n if (!allowsFieldSuperset(policy, original, original.rootFieldSchema, superset.rootFieldSchema)) {\n return false;\n }\n }\n for (const [key, schema] of original.nodeSchema) {\n // TODO: I think its ok to use the tree from superset here, but I should confirm it is, and document why.\n if (!allowsTreeSuperset(policy, original, schema, superset.nodeSchema.get(key))) {\n return false;\n }\n }\n return true;\n}\nexport function normalizeField(schema) {\n return schema ?? storedEmptyFieldSchema;\n}\n//# sourceMappingURL=comparison.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getFromRangeMap, getOrAddInMap, setInRangeMap, } from \"../../util/index.js\";\nexport function addCrossFieldQuery(set, revision, id, count) {\n setInCrossFieldMap(set, revision, id, count, true);\n}\nexport function setInCrossFieldMap(map, revision, id, count, value) {\n setInRangeMap(getOrAddInMap(map, revision, []), id, count, value);\n}\nexport function getFirstFromCrossFieldMap(map, revision, id, count) {\n return getFromRangeMap(map.get(revision) ?? [], id, count);\n}\n/**\n */\nexport var CrossFieldTarget;\n(function (CrossFieldTarget) {\n CrossFieldTarget[CrossFieldTarget[\"Source\"] = 0] = \"Source\";\n CrossFieldTarget[CrossFieldTarget[\"Destination\"] = 1] = \"Destination\";\n})(CrossFieldTarget || (CrossFieldTarget = {}));\n//# sourceMappingURL=crossFieldQueries.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { AnchorSet, ITreeSubscriptionCursorState, aboveRootPlaceholder, detachedFieldAsKey, mapCursorField, rootFieldKey, } from \"../../core/index.js\";\nimport { createEmitter } from \"../../events/index.js\";\nimport { assertValidRange, brand, fail, getOrAddEmptyToMap } from \"../../util/index.js\";\nimport { BasicChunk, BasicChunkCursor } from \"./basicChunk.js\";\nimport { basicChunkTree, chunkTree } from \"./chunkTree.js\";\nfunction makeRoot() {\n return new BasicChunk(aboveRootPlaceholder, new Map());\n}\n/**\n * Implementation of IEditableForest based on copy on write chunks.\n *\n * This implementation focuses on performance.\n */\nexport class ChunkedForest {\n /**\n * @param roots - dummy node above the root under which detached fields are stored. All content of the forest is reachable from this.\n * @param schema - schema which all content in this forest is assumed to comply with.\n * @param chunker - Chunking policy. TODO: dispose of this when forest is disposed.\n * @param anchors - anchorSet used to track location in this forest across changes. Callers of applyDelta must ensure this is updated accordingly.\n */\n constructor(roots, schema, chunker, anchors = new AnchorSet()) {\n this.roots = roots;\n this.schema = schema;\n this.chunker = chunker;\n this.anchors = anchors;\n this.events = createEmitter();\n this.nextDetachedFieldIdentifier = 0;\n }\n get isEmpty() {\n return this.roots.fields.size === 0;\n }\n on(eventName, listener) {\n return this.events.on(eventName, listener);\n }\n clone(schema, anchors) {\n this.roots.referenceAdded();\n return new ChunkedForest(this.roots, schema, this.chunker.clone(schema), anchors);\n }\n forgetAnchor(anchor) {\n this.anchors.forget(anchor);\n }\n acquireVisitor() {\n assert(this.activeVisitor === undefined, 0x76a /* Must release existing visitor before acquiring another */);\n if (this.roots.isShared()) {\n this.roots = this.roots.clone();\n }\n const visitor = {\n forest: this,\n // Current location in the tree, as a non-shared BasicChunk (TODO: support in-place modification of other chunk formats when possible).\n // Start above root detached sequences.\n mutableChunkStack: [],\n mutableChunk: this.roots,\n getParent() {\n assert(this.mutableChunkStack.length > 0, 0x532 /* invalid access to root's parent */);\n return this.mutableChunkStack[this.mutableChunkStack.length - 1] ?? oob();\n },\n free() {\n this.mutableChunk = undefined;\n this.mutableChunkStack.length = 0;\n assert(this.forest.activeVisitor !== undefined, 0x76b /* Multiple free calls for same visitor */);\n this.forest.activeVisitor = undefined;\n },\n destroy(detachedField, count) {\n this.forest.events.emit(\"beforeChange\");\n this.forest.roots.fields.delete(detachedField);\n },\n create(content, destination) {\n this.forest.events.emit(\"beforeChange\");\n const chunks = content.map((c) => chunkTree(c, this.forest.chunker));\n this.forest.roots.fields.set(destination, chunks);\n this.forest.events.emit(\"afterRootFieldCreated\", destination);\n },\n attach(source, count, destination) {\n this.attachEdit(source, count, destination);\n },\n detach(source, destination) {\n this.detachEdit(source, destination);\n },\n /**\n * Attaches the range into the current field by transferring it from the given source path.\n * Does not invalidate dependents.\n * @param source - The the range to be attached.\n * @param destination - The index in the current field at which to attach the content.\n */\n attachEdit(source, count, destination) {\n this.forest.events.emit(\"beforeChange\");\n const sourceField = this.forest.roots.fields.get(source) ?? [];\n this.forest.roots.fields.delete(source);\n if (sourceField.length === 0) {\n return; // Prevent creating 0 sized fields when inserting empty into empty.\n }\n const parent = this.getParent();\n const destinationField = getOrAddEmptyToMap(parent.mutableChunk.fields, parent.key);\n // TODO: this will fail for very large moves due to argument limits.\n destinationField.splice(destination, 0, ...sourceField);\n },\n /**\n * Detaches the range from the current field and transfers it to the given destination if any.\n * Does not invalidate dependents.\n * @param source - The bounds of the range to be detached from the current field.\n * @param destination - If specified, the destination to transfer the detached range to.\n * If not specified, the detached range is destroyed.\n */\n detachEdit(source, destination) {\n this.forest.events.emit(\"beforeChange\");\n const parent = this.getParent();\n const sourceField = parent.mutableChunk.fields.get(parent.key) ?? [];\n assertValidRange(source, sourceField);\n const newField = sourceField.splice(source.start, source.end - source.start);\n if (destination !== undefined) {\n assert(!this.forest.roots.fields.has(destination), 0x7af /* Destination must be a new empty detached field */);\n if (newField.length > 0) {\n this.forest.roots.fields.set(destination, newField);\n }\n }\n else {\n for (const child of newField) {\n child.referenceRemoved();\n }\n }\n // This check is performed after the transfer to ensure that the field is not removed in scenarios\n // where the source and destination are the same.\n if (sourceField.length === 0) {\n parent.mutableChunk.fields.delete(parent.key);\n }\n },\n replace(newContentSource, range, oldContentDestination) {\n assert(newContentSource !== oldContentDestination, 0x7b0 /* Replace detached source field and detached destination field must be different */);\n this.detachEdit(range, oldContentDestination);\n this.attachEdit(newContentSource, range.end - range.start, range.start);\n },\n enterNode(index) {\n assert(this.mutableChunk === undefined, 0x535 /* should be in field */);\n const parent = this.getParent();\n const chunks = parent.mutableChunk.fields.get(parent.key) ?? fail(\"missing edited field\");\n let indexWithinChunk = index;\n let indexOfChunk = 0;\n let chunk = chunks[indexOfChunk] ?? oob();\n while (indexWithinChunk >= chunk.topLevelLength) {\n chunk = chunks[indexOfChunk] ?? oob();\n indexWithinChunk -= chunk.topLevelLength;\n indexOfChunk++;\n if (indexOfChunk === chunks.length) {\n fail(\"missing edited node\");\n }\n }\n let found = chunks[indexOfChunk] ?? oob();\n if (!(found instanceof BasicChunk)) {\n // TODO:Perf: support in place editing of other chunk formats when possible:\n // 1. Support updating values in uniform chunks.\n // 2. Support traversing sequence chunks.\n //\n // Maybe build path when visitor navigates then lazily sync to chunk tree when editing?\n const newChunks = mapCursorField(found.cursor(), (cursor) => basicChunkTree(cursor, this.forest.chunker));\n // TODO: this could fail for really long chunks being split (due to argument count limits).\n // Current implementations of chunks shouldn't ever be that long, but it could be an issue if they get bigger.\n chunks.splice(indexOfChunk, 1, ...newChunks);\n found.referenceRemoved();\n found = newChunks[indexWithinChunk] ?? oob();\n }\n assert(found instanceof BasicChunk, 0x536 /* chunk should have been normalized */);\n if (found.isShared()) {\n this.mutableChunk = chunks[indexOfChunk] = found.clone();\n found.referenceRemoved();\n }\n else {\n this.mutableChunk = found;\n }\n },\n exitNode(index) {\n assert(this.mutableChunk !== undefined, 0x537 /* should be in node */);\n this.mutableChunk = undefined;\n },\n enterField(key) {\n assert(this.mutableChunk !== undefined, 0x538 /* should be in node */);\n this.mutableChunkStack.push({ key, mutableChunk: this.mutableChunk });\n this.mutableChunk = undefined;\n },\n exitField(key) {\n const top = this.mutableChunkStack.pop() ?? fail(\"should not be at root\");\n assert(this.mutableChunk === undefined, 0x539 /* should be in field */);\n this.mutableChunk = top.mutableChunk;\n },\n };\n this.activeVisitor = visitor;\n return visitor;\n }\n newDetachedField() {\n const field = brand(String(this.nextDetachedFieldIdentifier));\n assert(!this.roots.fields.has(detachedFieldAsKey(field)), 0x53a /* new field must not already exist */);\n this.nextDetachedFieldIdentifier += 1;\n return field;\n }\n allocateCursor() {\n return new Cursor(this, ITreeSubscriptionCursorState.Cleared, [], [], [], [], [], [], 0, 0, 0, undefined);\n }\n tryMoveCursorToNode(destination, cursorToMove) {\n const path = this.anchors.locate(destination);\n if (path === undefined) {\n return -1 /* TreeNavigationResult.NotFound */;\n }\n this.moveCursorToPath(path, cursorToMove);\n return 1 /* TreeNavigationResult.Ok */;\n }\n tryMoveCursorToField(destination, cursorToMove) {\n assert(cursorToMove instanceof Cursor, 0x53b /* ChunkedForest must only be given its own Cursor type */);\n if (destination.parent === undefined) {\n cursorToMove.setToDetachedSequence(destination.fieldKey);\n return 1 /* TreeNavigationResult.Ok */;\n }\n const result = this.tryMoveCursorToNode(destination.parent, cursorToMove);\n if (result !== 1 /* TreeNavigationResult.Ok */) {\n return result;\n }\n cursorToMove.enterField(destination.fieldKey);\n return 1 /* TreeNavigationResult.Ok */;\n }\n moveCursorToPath(destination, cursorToMove) {\n assert(cursorToMove instanceof Cursor, 0x53c /* ChunkedForest must only be given its own Cursor type */);\n assert(cursorToMove.forest === this, 0x53d /* ChunkedForest must only be given its own Cursor */);\n const indexStack = [];\n const keyStack = [];\n let path = destination;\n while (path !== undefined) {\n indexStack.push(path.parentIndex);\n keyStack.push(path.parentField);\n path = path.parent;\n }\n cursorToMove.clear();\n while (keyStack.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const key = keyStack.pop();\n if (cursorToMove.state === ITreeSubscriptionCursorState.Cleared) {\n cursorToMove.setToDetachedSequence(key);\n cursorToMove.state = ITreeSubscriptionCursorState.Current;\n }\n else {\n cursorToMove.enterField(key);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n cursorToMove.enterNode(indexStack.pop());\n }\n }\n getCursorAboveDetachedFields() {\n const rootCursor = this.roots.cursor();\n rootCursor.enterNode(0);\n return rootCursor;\n }\n}\nclass Cursor extends BasicChunkCursor {\n constructor(forest, state, root, siblingStack, indexStack, indexOfChunkStack, indexWithinChunkStack, siblings, index, indexOfChunk, indexWithinChunk, nestedCursor) {\n super(root, siblingStack, indexStack, indexOfChunkStack, indexWithinChunkStack, siblings, index, indexOfChunk, indexWithinChunk, nestedCursor);\n this.forest = forest;\n this.state = state;\n }\n setToDetachedSequence(key) {\n this.root = (this.forest.roots.fields.get(key) ?? []);\n this.siblingStack.length = 0;\n this.indexStack.length = 0;\n this.indexOfChunkStack.length = 0;\n this.indexWithinChunkStack.length = 0;\n this.siblings = [key];\n this.index = 0;\n this.indexOfChunk = 0;\n this.indexWithinChunk = 0;\n this.nestedCursor = undefined;\n }\n fork() {\n // Siblings arrays are not modified during navigation and do not need be be copied.\n // This allows this copy to be shallow, and `this.siblings` below to not be copied as all.\n return new Cursor(this.forest, this.state, this.root, [...this.siblingStack], [...this.indexStack], [...this.indexOfChunkStack], [...this.indexWithinChunkStack], this.siblings, this.index, this.indexOfChunk, this.indexWithinChunk, this.nestedCursor?.fork());\n }\n buildFieldAnchor() {\n const path = this.getFieldPath();\n const anchor = path.parent === undefined ? undefined : this.forest.anchors.track(path.parent);\n return { parent: anchor, fieldKey: path.field };\n }\n free() {\n this.state = ITreeSubscriptionCursorState.Freed;\n }\n buildAnchor() {\n return this.forest.anchors.track(this.getPath());\n }\n clear() {\n this.state = ITreeSubscriptionCursorState.Cleared;\n this.setToDetachedSequence(rootFieldKey);\n }\n}\n/**\n * @returns an implementation of {@link IEditableForest} with no data or schema.\n */\nexport function buildChunkedForest(chunker, anchors) {\n return new ChunkedForest(makeRoot(), chunker.schema, chunker, anchors);\n}\n//# sourceMappingURL=chunkedForest.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\n/**\n * Identifier OR Index of an identifier in the identifier list.\n */\nexport const IdentifierOrIndex = Type.Union([\n Type.String(),\n Type.Number({ multipleOf: 1, minimum: 0 }),\n]);\n/**\n * Reference to a shape, by index.\n *\n * Shapes use a dictionary encoding where they are referenced by their index in a shape array.\n */\nexport const ShapeIndex = Type.Number({ multipleOf: 1, minimum: 0 });\nexport const Count = Type.Number({ multipleOf: 1, minimum: 0 });\nconst EncodedFieldBatchBase = Type.Object({\n version: Type.Number(),\n identifiers: Type.Array(Type.String()),\n /**\n * Top level array is list of field from batch.\n * Inner are TreeValues mixed with indexes into \"shapes\" and nested arrays where lengths are needed.\n */\n data: Type.Array(Type.Array(Type.Any())),\n}, { additionalProperties: false });\n/**\n * Format for encoding a tree chunk.\n * @param version - format version. Must be changed if there is any change to the generic schema, or the `shape` schema.\n * @param shape - schema for union of shape format, see {@link DiscriminatedUnionDispatcher}.\n */\nexport const EncodedFieldBatchGeneric = (version, shape) => Type.Composite([\n EncodedFieldBatchBase,\n Type.Object({\n version: Type.Literal(version),\n shapes: Type.Array(shape),\n }),\n], { additionalProperties: false });\n//# sourceMappingURL=formatGeneric.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { unionOptions } from \"../../../codec/index.js\";\nimport { Count, EncodedFieldBatchGeneric, IdentifierOrIndex, ShapeIndex, } from \"./formatGeneric.js\";\nexport const version = 1;\n// Compatible versions used for format/version validation.\n// TODO: A proper version update policy will need to be documented.\nexport const validVersions = new Set([version]);\n/**\n * Top level length is implied from length of data array.\n * All content are of this shape.\n */\nexport const EncodedNestedArray = ShapeIndex;\n/**\n * Inline array.\n */\nexport const EncodedInlineArray = Type.Object({\n length: Count,\n /**\n * All entries are this shape.\n */\n shape: ShapeIndex,\n}, { additionalProperties: false });\n/**\n * Encoded as `shape, ...[data for shape]`.\n *\n * Used for polymorphism.\n */\nexport const EncodedAnyShape = Type.Literal(0);\n/**\n * Content of the encoded field is specified by the Shape referenced by the ShapeIndex.\n * This is a tuple for conciseness.\n */\nexport const EncodedFieldShape = Type.Tuple([\n /**\n * Field key for this field.\n */\n IdentifierOrIndex,\n /**\n * Shape of data in this field.\n */\n ShapeIndex,\n]);\nvar CounterRelativeTo;\n(function (CounterRelativeTo) {\n // Relative to previous node of same type in depth first pre-order traversal.\n CounterRelativeTo[CounterRelativeTo[\"PreviousNodeOfType_DepthFirstPreOrder\"] = 0] = \"PreviousNodeOfType_DepthFirstPreOrder\";\n // TODO: add alternative relative mode relative to previous note at a path to allow delta encoded sequences (like points where x and y are delta encoded relative to previous points).\n})(CounterRelativeTo || (CounterRelativeTo = {}));\nvar CounterMode;\n(function (CounterMode) {\n CounterMode[CounterMode[\"Number\"] = 0] = \"Number\";\n // TODO: document wrap modes and bit skipping. Note UUID subVersion here (ex: UUIDv4)\n CounterMode[CounterMode[\"UUID\"] = 1] = \"UUID\";\n})(CounterMode || (CounterMode = {}));\n/**\n * Delta encoded value relative to a previous node's value.\n */\nexport const EncodedCounter = Type.Object({\n relativeTo: Type.Enum(CounterRelativeTo),\n // If not provided, delta inline in data.\n delta: Type.Optional(Type.Number()),\n mode: Type.Enum(CounterMode),\n}, { additionalProperties: false });\n/**\n * Used in {@link EncodedValueShape} for special field kind handling.\n */\nexport var SpecialField;\n(function (SpecialField) {\n /**\n * Special case for Identifier field kind.\n */\n SpecialField[SpecialField[\"Identifier\"] = 0] = \"Identifier\";\n})(SpecialField || (SpecialField = {}));\n/**\n * Shape of a value on a node.\n *\n * Due to limitations of TypeBox and differences between JavaScript objects, TypeScript types and JSON,\n * the case where no information about the value is captured in the shape is a bit confusing.\n * In TypeBox this is allowed by the user of this type putting it in an optional property.\n * In TypeScript it is modeled using `undefined`.\n * In JavaScript the property may be missing or explicitly `undefined`.\n * In JSON this will serialize as the property being omitted.\n * In this case, the value will be encoded as either:\n * - `false` (when there is no value) OR\n * - `true, value` when there is a value.\n *\n * For a more compact encoding, there are 4 options for the shape:\n * - `true`: there is a value, and it will simply be encoded by putting it in the output buffer (so `value`).\n * - `false`: there is never a value, and it takes up no space in the output buffer.\n * - `[value]`: there is a value, and its always the same.\n * - `SpecialField.Identifier`: special case for node identifier handling.\n * Takes up no space in the output buffer: the value comes from the shape arrays's content.\n * It is wrapped in an array to differentiate value shape types.\n *\n * In the future other value shape formats may be added, likely as objects.\n *\n * @remarks\n * See {@link EncodedTreeShape} for usage.\n */\nexport const EncodedValueShape = Type.Union([\n Type.Boolean(),\n Type.Array(Type.Any(), { minItems: 1, maxItems: 1 }),\n Type.Enum(SpecialField),\n // TODO: support delta encoding and/or special node identifier handling\n // EncodedCounter,\n]);\nexport const EncodedTreeShape = Type.Object({\n /**\n * If not provided, inlined in data.\n */\n type: Type.Optional(IdentifierOrIndex),\n value: Type.Optional(EncodedValueShape),\n /**\n * Fields with fixed (per key) shapes.\n * They are encoded in the order they are specified here.\n * To ensure the order is preserved, this is an array instead of an object with keys.\n */\n fields: Type.Optional(Type.Array(EncodedFieldShape)),\n /**\n * If undefined, no data. Otherwise, nested array of `[key, ...data]*`\n * Covers any fields beyond those in `fields`.\n */\n extraFields: Type.Optional(ShapeIndex),\n}, { additionalProperties: false });\n/**\n * Discriminated union of chunk shapes.\n *\n * See {@link DiscriminatedUnionDispatcher} for more information on this pattern.\n */\nexport const EncodedChunkShape = Type.Object({\n /**\n * {@link EncodedNestedArray} union member.\n */\n a: Type.Optional(EncodedNestedArray),\n /**\n * {@link EncodedInlineArray} union member.\n */\n b: Type.Optional(EncodedInlineArray),\n /**\n * {@link EncodedTreeShape} union member.\n */\n c: Type.Optional(EncodedTreeShape),\n /**\n * {@link EncodedAnyShape} union member.\n */\n d: Type.Optional(EncodedAnyShape),\n}, unionOptions);\nexport const EncodedFieldBatch = EncodedFieldBatchGeneric(version, EncodedChunkShape);\n//# sourceMappingURL=format.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Selects which heuristics to use when encoding tree content.\n * All encoding options here are compatible with the same decoder:\n * the selection here does not impact compatibility.\n * @internal\n */\nexport var TreeCompressionStrategy;\n(function (TreeCompressionStrategy) {\n /**\n * Optimized for encoded size.\n * Use this in production to reduce bandwidth and storage use.\n */\n TreeCompressionStrategy[TreeCompressionStrategy[\"Compressed\"] = 0] = \"Compressed\";\n /**\n * Optimized for human readability.\n * Use this when debugging or testing and needing to inspect encoded tree content.\n */\n TreeCompressionStrategy[TreeCompressionStrategy[\"Uncompressed\"] = 1] = \"Uncompressed\";\n})(TreeCompressionStrategy || (TreeCompressionStrategy = {}));\n//# sourceMappingURL=treeCompressionUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { CursorMarker, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { prefixFieldPath } from \"../treeCursorUtils.js\";\nimport { cursorChunk, dummyRoot } from \"./chunk.js\";\n/**\n * Chunk that is empty.\n *\n * Since all emptiness is the same, this is a singleton.\n *\n * Useful for when a chunk or cursor is needed for an empty field or detached sequence.\n */\nexport const emptyChunk = {\n topLevelLength: 0,\n cursor() {\n return emptyCursor;\n },\n referenceAdded() { },\n referenceRemoved() { },\n isShared() {\n return false; // Immutable, so sharing does not matter.\n },\n};\nconst emptyPath = {\n parent: undefined,\n field: dummyRoot,\n};\n/**\n * Cursor over an empty field.\n * Contains no nodes and is stateless.\n */\nexport const emptyCursor = {\n [CursorMarker]: true,\n pending: false,\n mode: 1 /* CursorLocationType.Fields */,\n [cursorChunk]: emptyChunk,\n nextField() {\n fail(\"cannot navigate above root\");\n },\n exitField() {\n fail(\"cannot navigate above root\");\n },\n skipPendingFields() {\n return true;\n },\n getFieldKey() {\n return emptyPath.field;\n },\n getFieldLength() {\n return 0;\n },\n firstNode() {\n return false;\n },\n enterNode(childIndex) {\n fail(\"empty cursor has no nodes\");\n },\n getFieldPath(prefix) {\n return prefixFieldPath(prefix, emptyPath);\n },\n getPath() {\n fail(\"empty cursor has no nodes\");\n },\n get fieldIndex() {\n return fail(\"empty cursor has no nodes\");\n },\n get chunkStart() {\n return fail(\"empty cursor has no nodes\");\n },\n get chunkLength() {\n return fail(\"empty cursor has no nodes\");\n },\n seekNodes(offset) {\n fail(\"empty cursor has no nodes\");\n },\n nextNode() {\n fail(\"empty cursor has no nodes\");\n },\n exitNode() {\n fail(\"empty cursor has no nodes\");\n },\n firstField() {\n fail(\"empty cursor has no nodes\");\n },\n enterField(key) {\n fail(\"empty cursor has no nodes\");\n },\n get type() {\n return fail(\"empty cursor has no nodes\");\n },\n get value() {\n return fail(\"empty cursor has no nodes\");\n },\n atChunkRoot() {\n return true;\n },\n fork() {\n return emptyCursor;\n },\n};\n//# sourceMappingURL=emptyChunk.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { assertValidIndex } from \"../../../util/index.js\";\nimport { assertAllowedValue } from \"../../valueUtilities.js\";\n/**\n * Utilities related to chunk encoding and decoding that do not depend on specific chunk types or formats.\n */\n/**\n * Counts usages of some `T`, then generates tables for replacing those `T` values with small numbers.\n *\n * Can be used to deduplicate objects when encoding via {@link https://go-compression.github.io/algorithms/dictionary/ | Dictionary Coding}.\n */\nexport class Counter {\n constructor() {\n this.counts = new Map();\n }\n add(t, count = 1) {\n const old = this.counts.get(t) ?? 0;\n this.counts.set(t, old + count);\n }\n /**\n * Generate a table which can be used to deduplicate the items added via `add`.\n * Table is sorted from most used to least used so that more commonly added items will get smaller indexes.\n *\n * @param filter - determines which items should be included in the table.\n */\n buildTable(filter = () => true) {\n const data = [...this.counts.keys()];\n // Sort in descending order by count, giving priority (smaller indexes) to more commonly used values.\n data.sort((a, b) => (this.counts.get(b) ?? 0) - (this.counts.get(a) ?? 0));\n // Since the index needed is the output index not the input one, data.filter doesn't quite work here.\n const filtered = [];\n for (const t of data) {\n const include = filter(t, filtered.length, this.counts.get(t) ?? 0);\n if (include) {\n filtered.push(t);\n }\n }\n return {\n indexToValue: filtered,\n valueToIndex: new Map(filtered.map((t, index) => [t, index])),\n };\n }\n}\n/**\n * Filter for use with Counter.buildTable that minimizes the size of the produced JSON.\n *\n * @remarks\n * This minimizes the number of UTF-16 code units in the produced JSON.\n * This is not ideal: minimizing UTF-8 bytes would be better.\n * For ascii text these are the same, and in worst cases they correlate pretty well (accurate to within a small constant factor).\n * This is thus good enough for a heuristic.\n *\n * Also the use of this filter doesn't take into account the length cost of keeping a value in the table possibly\n * making some of the entries at higher indexes in the table get a larger number.\n * For example, if keeping an entry at index 9 saves one character this will keep it,\n * even if that means the next entry (at index 10) loses more than one character due to 10 being two digits instead of the one digit it would have been at index 9.\n * This means that this filter is not guaranteed to be optimal, but it should always be quite close.\n */\nexport function jsonMinimizingFilter(s, value, count) {\n // The most practical way to compute how long s will be with quoting and escaping\n // is to actually quote and escape it with JSON.stringify:\n const quotedAndEscaped = JSON.stringify(s);\n // Account for count instances of value, and one instance of a `,s` which would go in the table.\n const lengthUsingTable = String(value).length * count + quotedAndEscaped.length + 1;\n // Account for count instances of s.\n const lengthWithoutTable = quotedAndEscaped.length * count;\n // Break ties to not use the table to avoid needing a lookup,\n // and save table entries for other uses.\n return lengthUsingTable < lengthWithoutTable;\n}\n/**\n * Read from an array, but error if index is not valid.\n */\nexport function getChecked(data, index) {\n assertValidIndex(index, data);\n return data[index] ?? oob();\n}\n/**\n * Read one item from the stream, advancing the stream offset.\n */\nexport function readStream(stream) {\n const content = getChecked(stream.data, stream.offset);\n stream.offset++;\n return content;\n}\n/**\n * Read one number from the stream, advancing the stream offset.\n */\nexport function readStreamNumber(stream) {\n const content = readStream(stream);\n assert(typeof content === \"number\", 0x730 /* expected number in stream */);\n return content;\n}\n/**\n * Read one boolean from the stream, advancing the stream offset.\n */\nexport function readStreamBoolean(stream) {\n const content = readStream(stream);\n assert(typeof content === \"boolean\", 0x731 /* expected boolean in stream */);\n return content;\n}\n/**\n * Read one TreeValue from the stream, advancing the stream offset.\n */\nexport function readStreamValue(stream) {\n const content = readStream(stream);\n assertAllowedValue(content);\n return content;\n}\n/**\n * Read one nested array from the stream, advancing the stream offset.\n *\n * @returns the nested array as a stream.\n */\nexport function readStreamStream(stream) {\n const content = readStream(stream);\n assert(Array.isArray(content), 0x732 /* expected Array in stream */);\n return { data: content, offset: 0 };\n}\n//# sourceMappingURL=chunkCodecUtilities.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { getChecked, readStream, } from \"./chunkCodecUtilities.js\";\n/**\n * General purpose shape based tree decoder which gets its support for specific shapes from the caller.\n */\nexport function decode(decoderLibrary, cache, batch, rootDecoder) {\n const decoders = batch.shapes.map((shape) => decoderLibrary.dispatch(shape, cache));\n const chunks = [];\n for (const field of batch.data) {\n const stream = { data: field, offset: 0 };\n const result = rootDecoder.decode(decoders, stream);\n assert(stream.offset === stream.data.length, 0x73a /* expected decode to consume full stream */);\n chunks.push(result);\n }\n return chunks;\n}\n/**\n * Shared data for use in constructing decoders.\n */\nexport class DecoderContext {\n /**\n * @param identifiers - identifier substitution table (use to replace numeric identifier indexes with the actual identifiers from this table).\n */\n constructor(identifiers, shapes, idDecodingContext) {\n this.identifiers = identifiers;\n this.shapes = shapes;\n this.idDecodingContext = idDecodingContext;\n }\n identifier(encoded) {\n if (typeof encoded === \"string\") {\n return encoded;\n }\n return getChecked(this.identifiers, encoded);\n }\n}\n/**\n * Read one identifier from the stream, advancing the stream offset.\n */\nexport function readStreamIdentifier(stream, cache) {\n const content = readStream(stream);\n assert(typeof content === \"number\" || typeof content === \"string\", 0x73b /* content to be a number or string */);\n return cache.identifier(content);\n}\n//# sourceMappingURL=chunkDecodingGeneric.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase, oob } from \"@fluidframework/core-utils/internal\";\nimport { DiscriminatedUnionDispatcher } from \"../../../codec/index.js\";\nimport { assertValidIndex } from \"../../../util/index.js\";\nimport { BasicChunk } from \"../basicChunk.js\";\nimport { emptyChunk } from \"../emptyChunk.js\";\nimport { SequenceChunk } from \"../sequenceChunk.js\";\nimport { getChecked, readStream, readStreamBoolean, readStreamNumber, readStreamStream, readStreamValue, } from \"./chunkCodecUtilities.js\";\nimport { DecoderContext, decode as genericDecode, readStreamIdentifier, } from \"./chunkDecodingGeneric.js\";\nimport { SpecialField, } from \"./format.js\";\n/**\n * Decode `chunk` into a TreeChunk.\n */\nexport function decode(chunk, idDecodingContext) {\n return genericDecode(decoderLibrary, new DecoderContext(chunk.identifiers, chunk.shapes, idDecodingContext), chunk, anyDecoder);\n}\nconst decoderLibrary = new DiscriminatedUnionDispatcher({\n a(shape, cache) {\n return new NestedArrayDecoder(shape);\n },\n b(shape, cache) {\n return new InlineArrayDecoder(shape);\n },\n c(shape, cache) {\n return new TreeDecoder(shape, cache);\n },\n d(shape) {\n return anyDecoder;\n },\n});\n/**\n * Decode a node's value from `stream` using its shape.\n */\nexport function readValue(stream, shape, idDecodingContext) {\n if (shape === undefined) {\n return readStreamBoolean(stream) ? readStreamValue(stream) : undefined;\n }\n else {\n if (shape === true) {\n return readStreamValue(stream);\n }\n else if (shape === false) {\n return undefined;\n }\n else if (Array.isArray(shape)) {\n assert(shape.length === 1, 0x734 /* expected a single constant for value */);\n return shape[0];\n }\n else if (shape === SpecialField.Identifier) {\n // This case is a special case handling the decoding of identifier fields.\n const streamValue = readStream(stream);\n assert(typeof streamValue === \"number\" || typeof streamValue === \"string\", 0x997 /* identifier must be string or number. */);\n const idCompressor = idDecodingContext.idCompressor;\n return typeof streamValue === \"number\"\n ? idCompressor.decompress(idCompressor.normalizeToSessionSpace(streamValue, idDecodingContext.originatorId))\n : streamValue;\n }\n else {\n // EncodedCounter case:\n unreachableCase(shape, \"decoding values as deltas is not yet supported\");\n }\n }\n}\n/**\n * Normalize a {@link TreeChunk} into an array.\n *\n * Unwraps {@link SequenceChunk}s, and wraps other chunks.\n */\nexport function deaggregateChunks(chunk) {\n if (chunk === emptyChunk) {\n return [];\n }\n // TODO: when handling of SequenceChunks has better performance (for example in cursors),\n // consider keeping SequenceChunks here if they are longer than some threshold.\n if (chunk instanceof SequenceChunk) {\n // Could return [] here, however the logic in this file is designed to never produce an empty SequenceChunk, so its better to throw an error here to detect bugs.\n assert(chunk.subChunks.length > 0, 0x735 /* Unexpected empty sequence */);\n // Logic in this file is designed to never produce an unneeded (single item) SequenceChunks, so its better to throw an error here to detect bugs.\n assert(chunk.subChunks.length > 1, 0x736 /* Unexpected single item sequence */);\n for (const sub of chunk.subChunks) {\n // The logic in this file is designed to never produce an nested SequenceChunks or emptyChunk, so its better to throw an error here to detect bugs.\n assert(!(sub instanceof SequenceChunk), 0x737 /* unexpected nested sequence */);\n assert(sub !== emptyChunk, 0x738 /* unexpected empty chunk */);\n sub.referenceAdded();\n }\n chunk.referenceRemoved();\n return chunk.subChunks;\n }\n else {\n return [chunk];\n }\n}\n/**\n * Normalize a {@link TreeChunk}[] into a single TreeChunk.\n *\n * Avoids creating nested or less than 2 child {@link SequenceChunk}s.\n */\nexport function aggregateChunks(input) {\n const chunks = input.flatMap(deaggregateChunks);\n switch (chunks.length) {\n case 0:\n return emptyChunk;\n case 1:\n return chunks[0] ?? oob();\n default:\n return new SequenceChunk(chunks);\n }\n}\n/**\n * Decoder for {@link EncodedNestedArray}s.\n */\nexport class NestedArrayDecoder {\n constructor(shape) {\n this.shape = shape;\n }\n decode(decoders, stream) {\n const decoder = decoders[this.shape] ?? oob();\n // TODO: uniform chunk fast path\n const chunks = [];\n const data = readStream(stream);\n if (typeof data === \"number\") {\n // This case means that the array contained only 0-sized items, and was thus encoded as the length of the array.\n const inner = { data: [], offset: 0 };\n for (let index = 0; index < data; index++) {\n chunks.push(decoder.decode(decoders, inner));\n }\n }\n else {\n assert(Array.isArray(data), 0x739 /* expected number of array for encoding of nested array */);\n const inner = { data, offset: 0 };\n while (inner.offset !== inner.data.length) {\n chunks.push(decoder.decode(decoders, inner));\n }\n }\n return aggregateChunks(chunks);\n }\n}\n/**\n * Decoder for {@link EncodedInlineArray}s.\n */\nexport class InlineArrayDecoder {\n constructor(shape) {\n this.shape = shape;\n }\n decode(decoders, stream) {\n const length = this.shape.length;\n const decoder = decoders[this.shape.shape] ?? oob();\n const chunks = [];\n for (let index = 0; index < length; index++) {\n chunks.push(decoder.decode(decoders, stream));\n }\n return aggregateChunks(chunks);\n }\n}\n/**\n * Decoder for {@link EncodedAnyShape}s.\n */\nexport const anyDecoder = {\n decode(decoders, stream) {\n const shapeIndex = readStreamNumber(stream);\n const decoder = getChecked(decoders, shapeIndex);\n return decoder.decode(decoders, stream);\n },\n};\n/**\n * Get a decoder for fields of a provided (via `shape` and `cache`) {@link EncodedChunkShape}.\n */\nfunction fieldDecoder(cache, key, shape) {\n assertValidIndex(shape, cache.shapes);\n return (decoders, stream) => {\n const decoder = decoders[shape] ?? oob();\n return [key, decoder.decode(decoders, stream)];\n };\n}\n/**\n * Decoder for {@link EncodedTreeShape}s.\n */\nexport class TreeDecoder {\n constructor(shape, cache) {\n this.shape = shape;\n this.cache = cache;\n this.type = shape.type === undefined ? undefined : cache.identifier(shape.type);\n const fieldDecoders = [];\n for (const [fieldKey, fieldShape] of shape.fields ?? []) {\n const key = cache.identifier(fieldKey);\n fieldDecoders.push(fieldDecoder(cache, key, fieldShape));\n }\n this.fieldDecoders = fieldDecoders;\n }\n decode(decoders, stream) {\n const type = this.type ?? readStreamIdentifier(stream, this.cache);\n // TODO: Consider typechecking against stored schema in here somewhere.\n const value = readValue(stream, this.shape.value, this.cache.idDecodingContext);\n const fields = new Map();\n // Helper to add fields, but with unneeded array chunks removed.\n function addField(key, data) {\n // TODO: when handling of ArrayChunks has better performance (for example in cursors),\n // consider keeping array chunks here if they are longer than some threshold.\n const chunks = deaggregateChunks(data);\n if (chunks.length !== 0) {\n fields.set(key, chunks);\n }\n }\n for (const field of this.fieldDecoders) {\n const [key, content] = field(decoders, stream);\n addField(key, content);\n }\n if (this.shape.extraFields !== undefined) {\n const decoder = decoders[this.shape.extraFields] ?? oob();\n const inner = readStreamStream(stream);\n while (inner.offset !== inner.data.length) {\n const key = readStreamIdentifier(inner, this.cache);\n addField(key, decoder.decode(decoders, inner));\n }\n }\n return new BasicChunk(type, fields, value);\n }\n}\n//# sourceMappingURL=chunkDecoding.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fail } from \"../../../util/index.js\";\nimport { Counter, jsonMinimizingFilter, } from \"./chunkCodecUtilities.js\";\n/**\n * An identifier which can be compressed using {@link Counter}.\n *\n * @remarks\n * Compression of Identifiers is done after the output is otherwise generated to enable counting all the usages.\n * To avoid having to decode the decode the data array to determine which data is an identifier and which is some other string,\n * some recognizable representation is required.\n * Using a class and checking its prototype works for this, and is why IdentifierToken is a class.\n */\nexport class IdentifierToken {\n constructor(identifier) {\n this.identifier = identifier;\n }\n}\n/**\n * Replace shapes and identifiers in buffer and any nested arrays.\n *\n * This looks inside nested arrays (including transitively) but not inside objects.\n *\n * Note that this modifies `buffer` to avoid having to copy it.\n */\nexport function handleShapesAndIdentifiers(version, buffer, identifierFilter = jsonMinimizingFilter) {\n const identifiers = new Counter();\n const shapes = new Counter();\n // Shapes can reference other shapes (and identifiers), so we need to traverse the shape graph.\n // These collections enable that.\n const shapesSeen = new Set();\n const shapeToCount = [];\n const shapeDiscovered = (shape) => {\n shapes.add(shape);\n if (!shapesSeen.has(shape)) {\n shapesSeen.add(shape);\n shapeToCount.push(shape);\n }\n };\n const arrays = [buffer];\n for (const array of arrays) {\n for (const item of array) {\n if (item instanceof IdentifierToken) {\n identifiers.add(item.identifier);\n }\n else if (item instanceof Shape) {\n shapeDiscovered(item);\n }\n else if (Array.isArray(item)) {\n // In JS it is legal to push items to an array which is being iterated,\n // and they will be visited in order.\n arrays.push(item);\n }\n else if (item !== null &&\n typeof item === \"object\" &&\n item.shape instanceof Shape) {\n // because \"serializable\" is allowed in buffer and it has type `any`, its very easy to mess up including of shapes in the buffer.\n // This catches the easiest way to get it wrong.\n fail(\"encoder interface instead of shape written to stream\");\n }\n }\n }\n // Traverse shape graph, discovering and counting all shape to shape and shape to identifier references.\n {\n let item;\n while ((item = shapeToCount.pop()) !== undefined) {\n item.count(identifiers, shapeDiscovered);\n }\n }\n // Determine substitutions for identifiers and shapes:\n const identifierTable = identifiers.buildTable(identifierFilter);\n const shapeTable = shapes.buildTable();\n for (const array of arrays) {\n for (let index = 0; index < array.length; index++) {\n const item = array[index];\n if (item instanceof IdentifierToken) {\n array[index] = identifierTable.valueToIndex.get(item.identifier) ?? item.identifier;\n }\n else if (item instanceof Shape) {\n array[index] = shapeTable.valueToIndex.get(item) ?? fail(\"missing shape\");\n }\n }\n }\n const encodedShapes = shapeTable.indexToValue.map((shape) => shape.encodeShape(identifierTable, shapeTable));\n return {\n version,\n // TODO: fix readonly typing issues to remove this cast.\n identifiers: identifierTable.indexToValue,\n shapes: encodedShapes,\n data: buffer,\n };\n}\n/**\n * A tree shape.\n * This similar to a schema for a tree, though it may be more or less specific than the actual schema system used.\n * Can be encoded into a `TEncodedShape`: when doing so encodes references to shapes (if needed) using {@link Counter}:\n * this can include recursive references (direct or indirect).\n *\n * @remarks\n * Deduplication of shapes is done after the output is otherwise generated (including identifier dictionary encoding).\n * To avoid having to decode the data array to determine which data is a shape and which is some other object,\n * some recognizable representation is required.\n * Using a class and checking its prototype works for this, and is why Shape is a class.\n *\n * Note that deduplication compares shapes by object identity not by content, so encoders must ensure shapes are not duplicated to achieve efficient encoding.\n * Comparison by content would be difficult due to shape containing references to other shapes.\n *\n * @privateRemarks\n * Unlike with identifiers, conversion from the initial form (this class / IdentifierToken) is done by the `encodeShape` method, not by general purpose logic in `handleShapesAndIdentifiers`.\n * For `handleShapesAndIdentifiers` to do the conversion without help from `encodeShape`,\n * instances of this Shape class would have to either be or output an object that is identical to the `TEncodedShape` format except with all shape references as object references instead of indexes.\n * Those objects would have to be deeply traversed looking for shape objects to replace with reference indexes.\n * This is possible, but making it type safe would involve generating derived types from the `TEncodedShape` deeply replacing any shape references, as well as requiring deep traversal of all objects in the encoded output.\n * Such an approach seemed less maintainable and readable than the design taken here which avoids the need for those derived types.\n */\nexport class Shape {\n}\n//# sourceMappingURL=chunkEncodingGeneric.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { forEachNode, } from \"../../../core/index.js\";\nimport { fail, getOrCreate } from \"../../../util/index.js\";\nimport { Shape as ShapeGeneric, handleShapesAndIdentifiers, } from \"./chunkEncodingGeneric.js\";\nimport { SpecialField, version, } from \"./format.js\";\n/**\n * Encode data from `FieldBatch` in into an `EncodedChunk`.\n *\n * Optimized for encoded size and encoding performance.\n *\n * Most of the compression strategy comes from the policy provided via `cache`.\n */\nexport function compressedEncode(fieldBatch, cache) {\n const batchBuffer = [];\n // Populate buffer, including shape and identifier references\n for (const cursor of fieldBatch) {\n const buffer = [];\n anyFieldEncoder.encodeField(cursor, cache, buffer);\n batchBuffer.push(buffer);\n }\n return handleShapesAndIdentifiers(version, batchBuffer);\n}\n/**\n * Makes a {@link FieldEncoder} which runs `encoder` on every node in the field.\n * This does not encode the number nodes: the user of this may need to encode that elsewhere.\n */\nexport function asFieldEncoder(encoder) {\n return {\n encodeField(cursor, shapes, outputBuffer) {\n forEachNode(cursor, () => encoder.encodeNode(cursor, shapes, outputBuffer));\n },\n shape: encoder.shape,\n };\n}\n/**\n * Adapt a {@link NodeEncoder} to a {@link NodesEncoder} which invokes `encoder` once.\n */\nexport function asNodesEncoder(encoder) {\n return {\n encodeNodes(cursor, shapes, outputBuffer) {\n encoder.encodeNode(cursor, shapes, outputBuffer);\n cursor.nextNode();\n },\n shape: encoder.shape,\n };\n}\n/**\n * Encodes a chunk with {@link EncodedAnyShape} by prefixing the data with its shape.\n */\nexport class AnyShape extends ShapeGeneric {\n constructor() {\n super();\n }\n encodeShape(identifiers, shapes) {\n const encodedAnyShape = 0;\n return { d: encodedAnyShape };\n }\n count(identifiers, shapes) { }\n static encodeField(cursor, cache, outputBuffer, shape) {\n outputBuffer.push(shape.shape);\n shape.encodeField(cursor, cache, outputBuffer);\n }\n static encodeNode(cursor, cache, outputBuffer, shape) {\n outputBuffer.push(shape.shape);\n shape.encodeNode(cursor, cache, outputBuffer);\n }\n static encodeNodes(cursor, cache, outputBuffer, shape) {\n outputBuffer.push(shape.shape);\n shape.encodeNodes(cursor, cache, outputBuffer);\n }\n}\nAnyShape.instance = new AnyShape();\n/**\n * Encodes a single node polymorphically.\n */\nexport const anyNodeEncoder = {\n encodeNode(cursor, cache, outputBuffer) {\n // TODO: Fast path uniform chunk content.\n const shape = cache.shapeFromTree(cursor.type);\n AnyShape.encodeNode(cursor, cache, outputBuffer, shape);\n },\n shape: AnyShape.instance,\n};\n/**\n * Encodes a field polymorphically.\n */\nexport const anyFieldEncoder = {\n encodeField(cursor, cache, outputBuffer) {\n // TODO: Fast path uniform chunks.\n if (cursor.getFieldLength() === 0) {\n const shape = InlineArrayShape.empty;\n AnyShape.encodeField(cursor, cache, outputBuffer, shape);\n }\n else if (cursor.getFieldLength() === 1) {\n // Fast path chunk of size one size one at least: skip nested array.\n cursor.enterNode(0);\n anyNodeEncoder.encodeNode(cursor, cache, outputBuffer);\n cursor.exitNode();\n }\n else {\n // TODO: more efficient encoding for common cases.\n // Could try to find more specific shape compatible with all children than `anyNodeEncoder`.\n const shape = cache.nestedArray(anyNodeEncoder);\n AnyShape.encodeField(cursor, cache, outputBuffer, shape);\n }\n },\n shape: AnyShape.instance,\n};\n/**\n * Encodes a chunk using {@link EncodedInlineArray}.\n */\nexport class InlineArrayShape extends ShapeGeneric {\n /**\n * @param length - number of invocations of `inner`.\n */\n constructor(length, inner) {\n super();\n this.length = length;\n this.inner = inner;\n }\n encodeNodes(cursor, shapes, outputBuffer) {\n // Linter is wrong about this loop being for-of compatible.\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let index = 0; index < this.length; index++) {\n this.inner.encodeNodes(cursor, shapes, outputBuffer);\n }\n }\n encodeField(cursor, shapes, outputBuffer) {\n // Its possible individual items from this array encode multiple nodes, so don't assume === here.\n assert(cursor.getFieldLength() >= this.length, 0x73c /* unexpected length for fixed length array */);\n cursor.firstNode();\n this.encodeNodes(cursor, shapes, outputBuffer);\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0x73d /* should return to fields mode when finished encoding */);\n }\n encodeShape(identifiers, shapes) {\n return {\n b: {\n length: this.length,\n shape: shapes.valueToIndex.get(this.inner.shape) ?? fail(\"missing shape\"),\n },\n };\n }\n count(identifiers, shapes) {\n shapes(this.inner.shape);\n }\n get shape() {\n return this;\n }\n}\nInlineArrayShape.empty = new InlineArrayShape(0, {\n get shape() {\n // Not actually used, makes count work without adding an additional shape.\n return InlineArrayShape.empty;\n },\n encodeNodes(cursor, shapes, outputBuffer) {\n fail(\"Empty array should not encode any nodes\");\n },\n});\n/**\n * Encodes a field as a nested array with the {@link EncodedNestedArray} shape.\n */\nexport class NestedArrayShape extends ShapeGeneric {\n constructor(inner) {\n super();\n this.inner = inner;\n this.shape = this;\n }\n encodeField(cursor, cache, outputBuffer) {\n const buffer = [];\n let allNonZeroSize = true;\n const length = cursor.getFieldLength();\n forEachNode(cursor, () => {\n const before = buffer.length;\n this.inner.encodeNode(cursor, cache, buffer);\n allNonZeroSize && (allNonZeroSize = buffer.length - before !== 0);\n });\n if (buffer.length === 0) {\n // This relies on the number of inner chunks being the same as the number of nodes.\n // If making inner a `NodesEncoder`, this code will have to be adjusted accordingly.\n outputBuffer.push(length);\n }\n else {\n assert(allNonZeroSize, 0x73e /* either all or none of the members of a nested array must be 0 sized, or there is no way the decoder could process the content correctly. */);\n outputBuffer.push(buffer);\n }\n }\n encodeShape(identifiers, shapes) {\n const shape = shapes.valueToIndex.get(this.inner.shape) ?? fail(\"index for shape not found in table\");\n return {\n a: shape,\n };\n }\n count(identifiers, shapes) {\n shapes(this.inner.shape);\n }\n}\n/**\n * Encode `value` with `shape` into `outputBuffer`.\n *\n * Requires that `value` is compatible with `shape`.\n */\nexport function encodeValue(value, shape, outputBuffer) {\n if (shape === undefined) {\n if (value !== undefined) {\n outputBuffer.push(true, value);\n }\n else {\n outputBuffer.push(false);\n }\n }\n else {\n if (shape === true) {\n assert(value !== undefined, 0x78d /* required value must not be missing */);\n outputBuffer.push(value);\n }\n else if (shape === false) {\n assert(value === undefined, 0x73f /* incompatible value shape: expected no value */);\n }\n else if (Array.isArray(shape)) {\n assert(shape.length === 1, 0x740 /* expected a single constant for value */);\n }\n else if (shape === SpecialField.Identifier) {\n // This case is a special case handling the encoding of identifier fields.\n assert(value !== undefined, 0x998 /* required value must not be missing */);\n outputBuffer.push(value);\n }\n else {\n // EncodedCounter case:\n unreachableCase(shape, \"Encoding values as deltas is not yet supported\");\n }\n }\n}\nexport class EncoderCache {\n constructor(treeEncoder, fieldEncoder, fieldShapes, idCompressor) {\n this.treeEncoder = treeEncoder;\n this.fieldEncoder = fieldEncoder;\n this.fieldShapes = fieldShapes;\n this.idCompressor = idCompressor;\n this.shapesFromSchema = new Map();\n this.nestedArrays = new Map();\n }\n shapeFromTree(schemaName) {\n return getOrCreate(this.shapesFromSchema, schemaName, () => this.treeEncoder(this, schemaName));\n }\n nestedArray(inner) {\n return getOrCreate(this.nestedArrays, inner, () => new NestedArrayShape(inner));\n }\n shapeFromField(field) {\n return new LazyFieldEncoder(this, field, this.fieldEncoder);\n }\n}\nclass LazyFieldEncoder {\n constructor(cache, field, fieldEncoder) {\n this.cache = cache;\n this.field = field;\n this.fieldEncoder = fieldEncoder;\n }\n encodeField(cursor, cache, outputBuffer) {\n this.encoder.encodeField(cursor, cache, outputBuffer);\n }\n get encoder() {\n if (this.encoderLazy === undefined) {\n this.encoderLazy = this.fieldEncoder(this.cache, this.field);\n }\n return this.encoderLazy;\n }\n get shape() {\n return this.encoder.shape;\n }\n}\n//# sourceMappingURL=compressedEncode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { forEachField, } from \"../../../core/index.js\";\nimport { brand, fail } from \"../../../util/index.js\";\nimport { IdentifierToken, Shape } from \"./chunkEncodingGeneric.js\";\nimport { encodeValue, } from \"./compressedEncode.js\";\nimport { isStableId } from \"@fluidframework/id-compressor/internal\";\nexport class NodeShape extends Shape {\n constructor(type, value, fields, extraLocal) {\n super();\n this.type = type;\n this.value = value;\n this.fields = fields;\n this.extraLocal = extraLocal;\n this.explicitKeys = new Set(this.fields.map((f) => f.key));\n }\n getValueToEncode(cursor, cache) {\n if (this.value === 0) {\n assert(typeof cursor.value === \"string\", 0x9aa /* identifier must be type string */);\n if (isStableId(cursor.value)) {\n const sessionSpaceCompressedId = cache.idCompressor.tryRecompress(cursor.value);\n if (sessionSpaceCompressedId !== undefined) {\n return cache.idCompressor.normalizeToOpSpace(sessionSpaceCompressedId);\n }\n }\n }\n return cursor.value;\n }\n encodeNode(cursor, cache, outputBuffer) {\n if (this.type === undefined) {\n outputBuffer.push(new IdentifierToken(cursor.type));\n }\n else {\n assert(cursor.type === this.type, 0x741 /* type must match shape */);\n }\n encodeValue(this.getValueToEncode(cursor, cache), this.value, outputBuffer);\n for (const field of this.fields) {\n cursor.enterField(brand(field.key));\n field.shape.encodeField(cursor, cache, outputBuffer);\n cursor.exitField();\n }\n const localBuffer = [];\n forEachField(cursor, () => {\n const key = cursor.getFieldKey();\n if (!this.explicitKeys.has(key)) {\n assert(this.extraLocal !== undefined, 0x742 /* had extra local fields when shape does not support them */);\n localBuffer.push(new IdentifierToken(key));\n this.extraLocal.encodeField(cursor, cache, localBuffer);\n }\n });\n if (this.extraLocal !== undefined) {\n outputBuffer.push(localBuffer);\n }\n }\n encodeShape(identifiers, shapes) {\n return {\n c: {\n type: encodeOptionalIdentifier(this.type, identifiers),\n value: this.value,\n fields: encodeFieldShapes(this.fields, identifiers, shapes),\n extraFields: encodeOptionalFieldShape(this.extraLocal, shapes),\n },\n };\n }\n count(identifiers, shapes) {\n if (this.type !== undefined) {\n identifiers.add(this.type);\n }\n for (const field of this.fields) {\n identifiers.add(field.key);\n shapes(field.shape.shape);\n }\n if (this.extraLocal !== undefined) {\n shapes(this.extraLocal.shape);\n }\n }\n get shape() {\n return this;\n }\n}\nexport function encodeFieldShapes(fields, identifiers, shapes) {\n if (fields.length === 0) {\n return undefined;\n }\n return fields.map((field) => [\n // key\n encodeIdentifier(field.key, identifiers),\n // shape\n shapes.valueToIndex.get(field.shape.shape) ?? fail(\"missing shape\"),\n ]);\n}\nfunction encodeIdentifier(identifier, identifiers) {\n return identifiers.valueToIndex.get(identifier) ?? identifier;\n}\nfunction encodeOptionalIdentifier(identifier, identifiers) {\n return identifier === undefined ? undefined : encodeIdentifier(identifier, identifiers);\n}\nfunction encodeOptionalFieldShape(shape, shapes) {\n return shape === undefined ? undefined : dedupShape(shape.shape, shapes);\n}\nfunction dedupShape(shape, shapes) {\n return shapes.valueToIndex.get(shape) ?? fail(\"missing shape\");\n}\n//# sourceMappingURL=nodeShape.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { LeafNodeStoredSchema, MapNodeStoredSchema, ObjectNodeStoredSchema, ValueSchema, Multiplicity, identifierFieldKindIdentifier, } from \"../../../core/index.js\";\nimport { fail } from \"../../../util/index.js\";\nimport { EncoderCache, anyNodeEncoder, asFieldEncoder, compressedEncode, } from \"./compressedEncode.js\";\nimport { SpecialField } from \"./format.js\";\nimport { NodeShape } from \"./nodeShape.js\";\n/**\n * Encode data from `fieldBatch` in into an `EncodedChunk`.\n *\n * Optimized for encoded size and encoding performance.\n * TODO: This function should eventually also take in the root FieldSchema to more efficiently compress the nodes.\n */\nexport function schemaCompressedEncode(schema, policy, fieldBatch, idCompressor) {\n return compressedEncode(fieldBatch, buildCache(schema, policy, idCompressor));\n}\nexport function buildCache(schema, policy, idCompressor) {\n const cache = new EncoderCache((fieldHandler, schemaName) => treeShaper(schema, policy, fieldHandler, schemaName), (treeHandler, field) => fieldShaper(treeHandler, field, cache, schema), policy.fieldKinds, idCompressor);\n return cache;\n}\n/**\n * Selects shapes to use to encode fields.\n */\nexport function fieldShaper(treeHandler, field, cache, storedSchema) {\n const kind = cache.fieldShapes.get(field.kind) ?? fail(\"missing FieldKind\");\n const type = oneFromSet(field.types);\n const nodeEncoder = type !== undefined ? treeHandler.shapeFromTree(type) : anyNodeEncoder;\n if (kind.multiplicity === Multiplicity.Single) {\n if (field.kind === identifierFieldKindIdentifier) {\n assert(type !== undefined, 0x999 /* field type must be defined in identifier field */);\n const nodeSchema = storedSchema.nodeSchema.get(type);\n assert(nodeSchema !== undefined, 0x99a /* nodeSchema must be defined */);\n assert(nodeSchema instanceof LeafNodeStoredSchema, 0x99b /* nodeSchema must be LeafNodeStoredSchema */);\n assert(nodeSchema.leafValue === ValueSchema.String, 0x99c /* identifier field can only be type string */);\n const identifierNodeEncoder = new NodeShape(type, SpecialField.Identifier, [], undefined);\n return asFieldEncoder(identifierNodeEncoder);\n }\n return asFieldEncoder(nodeEncoder);\n }\n else {\n return cache.nestedArray(nodeEncoder);\n }\n}\n/**\n * Selects shapes to use to encode trees.\n */\nexport function treeShaper(fullSchema, policy, fieldHandler, schemaName) {\n const schema = fullSchema.nodeSchema.get(schemaName) ?? fail(\"missing node schema\");\n if (schema instanceof ObjectNodeStoredSchema) {\n // TODO:Performance:\n // consider moving some optional and sequence fields to extra fields if they are commonly empty\n // to reduce encoded size.\n const objectNodeFields = [];\n for (const [key, field] of schema.objectNodeFields ?? []) {\n objectNodeFields.push({ key, shape: fieldHandler.shapeFromField(field) });\n }\n const shape = new NodeShape(schemaName, false, objectNodeFields, undefined);\n return shape;\n }\n if (schema instanceof LeafNodeStoredSchema) {\n const shape = new NodeShape(schemaName, valueShapeFromSchema(schema.leafValue), [], undefined);\n return shape;\n }\n if (schema instanceof MapNodeStoredSchema) {\n const shape = new NodeShape(schemaName, false, [], fieldHandler.shapeFromField(schema.mapFields));\n return shape;\n }\n fail(\"unsupported node kind\");\n}\nexport function oneFromSet(set) {\n if (set === undefined) {\n return undefined;\n }\n if (set.size !== 1) {\n return undefined;\n }\n for (const item of set) {\n return item;\n }\n}\nfunction valueShapeFromSchema(schema) {\n switch (schema) {\n case undefined:\n return false;\n case ValueSchema.Number:\n case ValueSchema.String:\n case ValueSchema.Boolean:\n case ValueSchema.FluidHandle:\n return true;\n case ValueSchema.Null:\n return [null];\n default:\n unreachableCase(schema);\n }\n}\n//# sourceMappingURL=schemaBasedEncoding.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { forEachField, forEachNode, } from \"../../../core/index.js\";\nimport { version, } from \"./format.js\";\n/**\n * Encode data from `cursor` in the simplest way supported by `EncodedChunk`.\n *\n * No polymorphism, identifier deduplication or schema based compression.\n * Just uses two hard coded shapes and inline identifiers.\n *\n * This is intended as a simple reference implementation with minimal code and dependencies.\n */\nexport function uncompressedEncode(batch) {\n const rootFields = batch.map(encodeSequence);\n return {\n version,\n identifiers: [],\n // A single shape used to encode all fields.\n shapes: [{ c: anyTreeShape }, { a: anyArray }],\n // Wrap up each field as an indicator to use the above shape, and its encoded data.\n data: rootFields.map((data) => [arrayIndex, data]),\n };\n}\nconst treeIndex = 0;\nconst arrayIndex = 1;\nconst anyTreeShape = {\n extraFields: arrayIndex,\n};\nconst anyArray = treeIndex;\n/**\n * Encode a field using the hard coded shape above.\n * @remarks\n * Since this shape contains no information about the actual schema, all schema/shape information is inline in the data:\n * that is why this encoding is called \"uncompressed\".\n */\nfunction encodeSequence(cursor) {\n const data = [];\n forEachNode(cursor, () => {\n data.push(cursor.type);\n const value = cursor.value;\n data.push(value !== undefined);\n if (value !== undefined) {\n data.push(value);\n }\n const local = [];\n forEachField(cursor, () => {\n const key = cursor.getFieldKey();\n local.push(key, encodeSequence(cursor));\n });\n data.push(local);\n });\n return data;\n}\n//# sourceMappingURL=uncompressedEncode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { makeVersionedValidatedCodec, } from \"../../../codec/index.js\";\nimport { TreeCompressionStrategy } from \"../../treeCompressionUtils.js\";\nimport { decode } from \"./chunkDecoding.js\";\nimport { EncodedFieldBatch, validVersions } from \"./format.js\";\nimport { schemaCompressedEncode } from \"./schemaBasedEncoding.js\";\nimport { uncompressedEncode } from \"./uncompressedEncode.js\";\nexport function makeFieldBatchCodec(options, writeVersion) {\n // Note: it's important that the decode function is schema-agnostic for this strategy/layering to work, since\n // the schema that an op was encoded in doesn't necessarily match the current schema for the document (e.g. if\n // decode is being run on a client that just submitted a schema change, but the op is from another client who has\n // yet to receive that change).\n assert(validVersions.has(writeVersion), 0x935 /* Invalid write version for FieldBatch codec */);\n return makeVersionedValidatedCodec(options, validVersions, EncodedFieldBatch, {\n encode: (data, context) => {\n for (const cursor of data) {\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0x8a3 /* FieldBatch expects fields cursors */);\n }\n let encoded;\n switch (context.encodeType) {\n case TreeCompressionStrategy.Uncompressed:\n encoded = uncompressedEncode(data);\n break;\n case TreeCompressionStrategy.Compressed:\n // eslint-disable-next-line unicorn/prefer-ternary\n if (context.schema !== undefined) {\n encoded = schemaCompressedEncode(context.schema.schema, context.schema.policy, data, context.idCompressor);\n }\n else {\n // TODO: consider enabling a somewhat compressed but not schema accelerated encode.\n encoded = uncompressedEncode(data);\n }\n break;\n default:\n unreachableCase(context.encodeType);\n }\n // TODO: consider checking input data was in schema.\n return encoded;\n },\n decode: (data, context) => {\n // TODO: consider checking data is in schema.\n return decode(data, {\n idCompressor: context.idCompressor,\n originatorId: context.originatorId,\n }).map((chunk) => chunk.cursor());\n },\n });\n}\n//# sourceMappingURL=codecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { RevisionTagSchema, schemaFormat } from \"../../core/index.js\";\nimport { JsonCompatibleReadOnlySchema, brandedNumberType, } from \"../../util/index.js\";\nimport { EncodedFieldBatch } from \"../chunked-forest/index.js\";\nconst noAdditionalProps = { additionalProperties: false };\nexport const ChangesetLocalIdSchema = brandedNumberType({\n multipleOf: 1,\n});\nexport const EncodedChangeAtomId = Type.Union([\n Type.Tuple([ChangesetLocalIdSchema, RevisionTagSchema]),\n ChangesetLocalIdSchema,\n]);\nconst EncodedFieldChange = Type.Object({\n fieldKey: schemaFormat.FieldKeySchema,\n fieldKind: schemaFormat.FieldKindIdentifierSchema,\n // Implementation note: node and field change encoding is mutually recursive.\n // This field marks a boundary in that recursion to avoid constructing excessively complex\n // recursive types. Encoded changes are validated at this boundary at runtime--see modularChangeCodecs.ts.\n change: JsonCompatibleReadOnlySchema,\n}, noAdditionalProps);\nconst EncodedFieldChangeMap = Type.Array(EncodedFieldChange);\nconst EncodedNodeExistsConstraint = Type.Object({\n violated: Type.Boolean(),\n}, noAdditionalProps);\nexport const EncodedNodeChangeset = Type.Object({\n fieldChanges: Type.Optional(EncodedFieldChangeMap),\n nodeExistsConstraint: Type.Optional(EncodedNodeExistsConstraint),\n}, noAdditionalProps);\nexport const EncodedRevisionInfo = Type.Object({\n revision: Type.Readonly(RevisionTagSchema),\n rollbackOf: Type.ReadonlyOptional(RevisionTagSchema),\n}, noAdditionalProps);\n/**\n * Index of field in an EncodedFieldBatch.\n */\nexport const EncodedTreeIndex = Type.Number({ multipleOf: 1, minimum: 0 });\nexport const CommitBuilds = Type.Array(Type.Tuple([\n // ID for first node\n ChangesetLocalIdSchema,\n // Index for a TreeChunk that represents all the nodes\n EncodedTreeIndex,\n]));\nexport const EncodedBuildsArray = Type.Array(Type.Union([\n Type.Tuple([CommitBuilds, RevisionTagSchema]),\n // Revision is omitted when undefined\n Type.Tuple([CommitBuilds]),\n]));\nexport const EncodedBuilds = Type.Object({\n builds: EncodedBuildsArray,\n /**\n * Fields indexed by the EncodedTreeIndexes above.\n * TODO: Strongly typing this here may result in redundant schema validation of this data.\n */\n trees: EncodedFieldBatch,\n}, noAdditionalProps);\nexport const EncodedModularChangeset = Type.Object({\n maxId: Type.Optional(ChangesetLocalIdSchema),\n changes: EncodedFieldChangeMap,\n revisions: Type.ReadonlyOptional(Type.Array(EncodedRevisionInfo)),\n // TODO#8574: separating `builds` and `refreshers` here means that we encode their `EncodedBuilds.trees` separately.\n // This can lead to a less efficient wire representation because of duplicated schema/shape information.\n builds: Type.Optional(EncodedBuilds),\n refreshers: Type.Optional(EncodedBuilds),\n /**\n * The number of constraints within this changeset that are violated.\n */\n violations: Type.Optional(Type.Number({ minimum: 0, multipleOf: 1 })),\n}, noAdditionalProps);\n//# sourceMappingURL=modularChangeFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Helper for creating a {@link FieldChangeRebaser} which does not need access to revision tags.\n * This should only be used for fields where the child nodes cannot be edited.\n */\nexport function referenceFreeFieldChangeRebaser(data) {\n return isolatedFieldChangeRebaser({\n compose: (change1, change2, _composeChild, _genId) => data.compose(change1, change2),\n invert: (change, _invertChild, _genId) => data.invert(change),\n rebase: (change, over, _rebaseChild, _genId) => data.rebase(change, over),\n });\n}\nexport function isolatedFieldChangeRebaser(data) {\n return {\n ...data,\n prune: (change) => change,\n replaceRevisions: (change) => change,\n };\n}\n/**\n */\nexport var NodeAttachState;\n(function (NodeAttachState) {\n NodeAttachState[NodeAttachState[\"Attached\"] = 0] = \"Attached\";\n NodeAttachState[NodeAttachState[\"Detached\"] = 1] = \"Detached\";\n})(NodeAttachState || (NodeAttachState = {}));\n//# sourceMappingURL=fieldChangeHandler.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\n// Many of the return types in this module are intentionally derived, rather than explicitly specified.\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/**\n * Note: TS doesn't easily support extracting a generic function's return type until 4.7:\n * https://github.com/microsoft/TypeScript/pull/47607\n * This type is a workaround and can be removed once we're on a version of typescript which\n * supports expressions more like:\n * `Static>>`\n */\nclass Wrapper {\n encodedGenericChange(e) {\n return EncodedGenericChange(e);\n }\n encodedGenericChangeset(e) {\n return EncodedGenericChangeset(e);\n }\n}\nexport const EncodedGenericChange = (tNodeChangeset) => Type.Tuple([Type.Number({ minimum: 0, multipleOf: 1 }), tNodeChangeset]);\nexport const EncodedGenericChangeset = (tNodeChangeset) => Type.Array(EncodedGenericChange(tNodeChangeset));\n/* eslint-enable @typescript-eslint/explicit-function-return-type */\n//# sourceMappingURL=genericFieldKindFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\nexport function newGenericChangeset(nodes = []) {\n return new BTree(nodes);\n}\n//# sourceMappingURL=genericFieldKindTypes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeCodecFamily } from \"../../codec/index.js\";\nimport { EncodedGenericChangeset } from \"./genericFieldKindFormat.js\";\nimport { newGenericChangeset } from \"./genericFieldKindTypes.js\";\nimport { EncodedNodeChangeset } from \"./modularChangeFormat.js\";\nexport function makeGenericChangeCodec() {\n return makeCodecFamily([[1, makeV1Codec()]]);\n}\nfunction makeV1Codec() {\n return {\n encode: (change, context) => {\n const encoded = change\n .toArray()\n .map(([index, nodeChange]) => [index, context.encodeNode(nodeChange)]);\n return encoded;\n },\n decode: (encoded, context) => {\n return newGenericChangeset(encoded.map(([index, nodeChange]) => [index, context.decodeNode(nodeChange)]));\n },\n encodedSchema: EncodedGenericChangeset(EncodedNodeChangeset),\n };\n}\n//# sourceMappingURL=genericFieldKindCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Multiplicity, replaceAtomRevisions, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { FieldKindWithEditor } from \"./fieldKindWithEditor.js\";\nimport { makeGenericChangeCodec } from \"./genericFieldKindCodecs.js\";\nimport { newGenericChangeset } from \"./genericFieldKindTypes.js\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\n/**\n * {@link FieldChangeHandler} implementation for {@link GenericChangeset}.\n */\nexport const genericChangeHandler = {\n rebaser: {\n compose,\n invert: (change) => change,\n rebase: rebaseGenericChange,\n prune: pruneGenericChange,\n replaceRevisions,\n },\n codecsFactory: makeGenericChangeCodec,\n editor: {\n buildChildChange(index, change) {\n return newGenericChangeset([[index, change]]);\n },\n },\n intoDelta: (change, deltaFromChild) => {\n let nodeIndex = 0;\n const markList = [];\n for (const [index, nodeChange] of change.entries()) {\n if (nodeIndex < index) {\n const offset = index - nodeIndex;\n markList.push({ count: offset });\n nodeIndex = index;\n }\n markList.push({ count: 1, fields: deltaFromChild(nodeChange) });\n nodeIndex += 1;\n }\n return { local: markList };\n },\n relevantRemovedRoots,\n isEmpty: (change) => change.length === 0,\n getNestedChanges,\n createEmpty: newGenericChangeset,\n getCrossFieldKeys: (_change) => [],\n};\nfunction compose(change1, change2, composeChildren) {\n const composed = change1.clone();\n for (const [index, id2] of change2.entries()) {\n const id1 = composed.get(index);\n const idComposed = id1 !== undefined ? composeChildren(id1, id2) : id2;\n composed.set(index, idComposed);\n }\n return composed;\n}\nfunction getNestedChanges(change) {\n return change.toArray().map(([index, nodeChange]) => [nodeChange, index]);\n}\nfunction rebaseGenericChange(change, over, rebaseChild) {\n const rebased = new BTree();\n let nextIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const newEntry = change.getPairOrNextHigher(nextIndex);\n const baseEntry = over.getPairOrNextHigher(nextIndex);\n if (baseEntry === undefined && newEntry === undefined) {\n break;\n }\n const newIndex = newEntry?.[0] ?? Infinity;\n const baseIndex = baseEntry?.[0] ?? Infinity;\n let newNodeChange;\n let baseNodeChange;\n let index;\n if (newIndex === baseIndex) {\n assert(newEntry !== undefined && baseEntry !== undefined, 0xa0d /* Entries should be defined */);\n index = newIndex;\n newNodeChange = newEntry[1];\n baseNodeChange = baseEntry[1];\n }\n else if (newIndex < baseIndex) {\n assert(newEntry !== undefined, 0xa0e /* Entry should be defined */);\n index = newIndex;\n newNodeChange = newEntry[1];\n }\n else {\n assert(baseEntry !== undefined, 0xa0f /* Entry should be defined */);\n index = baseIndex;\n baseNodeChange = baseEntry[1];\n }\n const nodeChange = rebaseChild(newNodeChange, baseNodeChange);\n if (nodeChange !== undefined) {\n rebased.set(index, nodeChange);\n }\n nextIndex = index + 1;\n }\n return rebased;\n}\nfunction pruneGenericChange(changeset, pruneChild) {\n const pruned = new BTree();\n for (const [index, node] of changeset.entries()) {\n const prunedNode = pruneChild(node);\n if (prunedNode !== undefined) {\n pruned.set(index, node);\n }\n }\n return pruned;\n}\nfunction replaceRevisions(changeset, oldRevisions, newRevision) {\n return changeset.mapValues((node) => replaceAtomRevisions(node, oldRevisions, newRevision));\n}\n/**\n * {@link FieldKind} used to represent changes to elements of a field in a field-kind-agnostic format.\n */\nexport const genericFieldKind = new FieldKindWithEditor(\"ModularEditBuilder.Generic\", Multiplicity.Sequence, genericChangeHandler, (types, other) => false, new Set());\n/**\n * Converts a {@link GenericChangeset} into a field-kind-specific `TChange`.\n * @param changeset - The generic changeset to convert.\n * @param target - The {@link FieldChangeHandler} for the `FieldKind` that the returned change should target.\n * @param composeChild - A delegate to compose {@link NodeChangeset}s.\n * @returns An equivalent changeset as represented by the `target` field-kind.\n */\nexport function convertGenericChange(changeset, target, composeChild, genId, revisionMetadata) {\n const perIndex = [];\n for (const [index, nodeChange] of changeset.entries()) {\n perIndex.push(target.editor.buildChildChange(index, nodeChange));\n }\n if (perIndex.length === 0) {\n return target.createEmpty();\n }\n return perIndex.reduce((a, b) => target.rebaser.compose(a, b, composeChild, genId, invalidCrossFieldManager, revisionMetadata));\n}\nconst invalidFunc = () => fail(\"Should not be called when converting generic changes\");\nconst invalidCrossFieldManager = {\n set: invalidFunc,\n get: invalidFunc,\n onMoveIn: invalidFunc,\n moveKey: invalidFunc,\n};\nfunction* relevantRemovedRoots(change, relevantRemovedRootsFromChild) {\n for (const nodeChange of change.values()) {\n yield* relevantRemovedRootsFromChild(nodeChange);\n }\n}\n//# sourceMappingURL=genericFieldKind.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\nimport { EditBuilder, isEmptyFieldChanges, makeAnonChange, makeDetachedNodeId, mapCursorField, replaceAtomRevisions, revisionMetadataSourceFromInfo, areEqualChangeAtomIds, } from \"../../core/index.js\";\nimport { brand, fail, idAllocatorFromMaxId, idAllocatorFromState, getOrAddInMapLazy, } from \"../../util/index.js\";\nimport { chunkFieldSingle, chunkTree, defaultChunkPolicy, } from \"../chunked-forest/index.js\";\nimport { cursorForMapTreeNode, mapTreeFromCursor } from \"../mapTreeCursor.js\";\nimport { MemoizedIdRangeAllocator } from \"../memoizedIdRangeAllocator.js\";\nimport { CrossFieldTarget, getFirstFromCrossFieldMap, setInCrossFieldMap, } from \"./crossFieldQueries.js\";\nimport { NodeAttachState, } from \"./fieldChangeHandler.js\";\nimport { withEditor } from \"./fieldKindWithEditor.js\";\nimport { convertGenericChange, genericFieldKind } from \"./genericFieldKind.js\";\n/**\n * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind\n * as determined by the schema.\n */\nexport class ModularChangeFamily {\n constructor(fieldKinds, codecs) {\n this.codecs = codecs;\n this.fieldKinds = fieldKinds;\n }\n get rebaser() {\n return this;\n }\n /**\n * Produces an equivalent list of `FieldChangeset`s that all target the same {@link FlexFieldKind}.\n * @param changes - The list of `FieldChange`s whose `FieldChangeset`s needs to be normalized.\n * @returns An object that contains both the equivalent list of `FieldChangeset`s that all\n * target the same {@link FlexFieldKind}, and the `FieldKind` that they target.\n * The returned `FieldChangeset`s may be a shallow copy of the input `FieldChange`s.\n */\n normalizeFieldChanges(change1, change2, genId, revisionMetadata) {\n // TODO: Handle the case where changes have conflicting field kinds\n const kind = change1.fieldKind !== genericFieldKind.identifier\n ? change1.fieldKind\n : change2.fieldKind;\n if (kind === genericFieldKind.identifier) {\n // Both changes are generic\n return {\n fieldKind: genericFieldKind.identifier,\n changeHandler: genericFieldKind.changeHandler,\n change1: change1.change,\n change2: change2.change,\n };\n }\n const fieldKind = getFieldKind(this.fieldKinds, kind);\n const changeHandler = fieldKind.changeHandler;\n const normalizedChange1 = this.normalizeFieldChange(change1, changeHandler, genId, revisionMetadata);\n const normalizedChange2 = this.normalizeFieldChange(change2, changeHandler, genId, revisionMetadata);\n return {\n fieldKind: kind,\n changeHandler,\n change1: normalizedChange1,\n change2: normalizedChange2,\n };\n }\n normalizeFieldChange(fieldChange, handler, genId, revisionMetadata) {\n if (fieldChange.fieldKind !== genericFieldKind.identifier) {\n return fieldChange.change;\n }\n // The cast is based on the `fieldKind` check above\n const genericChange = fieldChange.change;\n const convertedChange = convertGenericChange(genericChange, handler, (child1, child2) => {\n assert(child1 === undefined || child2 === undefined, 0x92f /* Should not have two changesets to compose */);\n return child1 ?? child2 ?? fail(\"Should not compose two undefined node IDs\");\n }, genId, revisionMetadata);\n return convertedChange;\n }\n compose(changes) {\n const { revInfos, maxId } = getRevInfoFromTaggedChanges(changes);\n const idState = { maxId };\n if (changes.length === 0) {\n return makeModularChangeset();\n }\n return changes\n .map((change) => change.change)\n .reduce((change1, change2) => this.composePair(change1, change2, revInfos, idState));\n }\n composePair(change1, change2, revInfos, idState) {\n const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys } = this.composeAllFields(change1, change2, revInfos, idState);\n const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(change1, change2);\n return makeModularChangeset(fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys, idState.maxId, revInfos, undefined, allBuilds, allDestroys, allRefreshers);\n }\n composeAllFields(change1, change2, revInfos, idState) {\n if (hasConflicts(change1) && hasConflicts(change2)) {\n return {\n fieldChanges: new Map(),\n nodeChanges: newTupleBTree(),\n nodeToParent: newTupleBTree(),\n nodeAliases: newTupleBTree(),\n crossFieldKeys: newTupleBTree(),\n };\n }\n else if (hasConflicts(change1)) {\n return change2;\n }\n else if (hasConflicts(change2)) {\n return change1;\n }\n const genId = idAllocatorFromState(idState);\n const revisionMetadata = revisionMetadataSourceFromInfo(revInfos);\n const crossFieldTable = newComposeTable(change1, change2);\n // We merge nodeChanges, nodeToParent, and nodeAliases from the two changesets.\n // The merged tables will have correct entries for all nodes which are only referenced in one of the input changesets.\n // During composeFieldMaps and composeInvalidatedElements we will find all nodes referenced in both input changesets\n // and adjust these tables as necessary.\n // Note that when merging these tables we may encounter key collisions and will arbitrarily drop values in that case.\n // A collision for a node ID means that that node is referenced in both changesets\n // (since we assume that if two changesets use the same node ID they are referring to the same node),\n // therefore all collisions will be addressed when processing the intersection of the changesets.\n const composedNodeChanges = brand(mergeBTrees(change1.nodeChanges, change2.nodeChanges));\n const composedNodeToParent = brand(mergeBTrees(change1.nodeToParent, change2.nodeToParent));\n const composedNodeAliases = brand(mergeBTrees(change1.nodeAliases, change2.nodeAliases));\n const composedFields = this.composeFieldMaps(change1.fieldChanges, change2.fieldChanges, genId, crossFieldTable, revisionMetadata);\n this.composeInvalidatedElements(crossFieldTable, composedFields, composedNodeChanges, composedNodeToParent, composedNodeAliases, genId, revisionMetadata);\n // Currently no field kinds require making changes to cross-field keys during composition, so we can just merge the two tables.\n const composedCrossFieldKeys = mergeBTrees(change1.crossFieldKeys, change2.crossFieldKeys);\n return {\n fieldChanges: composedFields,\n nodeChanges: composedNodeChanges,\n nodeToParent: composedNodeToParent,\n nodeAliases: composedNodeAliases,\n crossFieldKeys: brand(composedCrossFieldKeys),\n };\n }\n composeInvalidatedField(fieldChange, crossFieldTable, genId, revisionMetadata) {\n const context = crossFieldTable.fieldToContext.get(fieldChange);\n assert(context !== undefined, 0x8cc /* Should have context for every invalidated field */);\n const { change1: fieldChange1, change2: fieldChange2, composedChange } = context;\n const rebaser = getChangeHandler(this.fieldKinds, composedChange.fieldKind).rebaser;\n const composeNodes = (child1, child2) => {\n if (child1 !== undefined &&\n child2 !== undefined &&\n getFromChangeAtomIdMap(crossFieldTable.newToBaseNodeId, child2) === undefined) {\n setInChangeAtomIdMap(crossFieldTable.newToBaseNodeId, child2, child1);\n crossFieldTable.pendingCompositions.nodeIdsToCompose.push([child1, child2]);\n }\n return child1 ?? child2 ?? fail(\"Should not compose two undefined nodes\");\n };\n const amendedChange = rebaser.compose(fieldChange1, fieldChange2, composeNodes, genId, new ComposeManager(crossFieldTable, fieldChange, false), revisionMetadata);\n composedChange.change = brand(amendedChange);\n }\n /**\n * Updates everything in the composed output which may no longer be valid.\n * This could be due to\n * - discovering that two node changesets refer to the same node (`nodeIdsToCompose`)\n * - a previously composed field being invalidated by a cross field effect (`invalidatedFields`)\n * - a field which was copied directly from an input changeset being invalidated by a cross field effect\n * (`affectedBaseFields` and `affectedNewFields`)\n *\n * Updating an element may invalidate further elements. This function runs until there is no more invalidation.\n */\n composeInvalidatedElements(table, composedFields, composedNodes, composedNodeToParent, nodeAliases, genId, metadata) {\n const pending = table.pendingCompositions;\n while (table.invalidatedFields.size > 0 ||\n pending.nodeIdsToCompose.length > 0 ||\n pending.affectedBaseFields.length > 0 ||\n pending.affectedNewFields.length > 0) {\n // Note that the call to `composeNodesById` can add entries to `crossFieldTable.nodeIdPairs`.\n for (const [id1, id2] of pending.nodeIdsToCompose) {\n this.composeNodesById(table.baseChange.nodeChanges, table.newChange.nodeChanges, composedNodes, composedNodeToParent, nodeAliases, id1, id2, genId, table, metadata);\n }\n pending.nodeIdsToCompose.length = 0;\n this.composeAffectedFields(table, table.baseChange, true, pending.affectedBaseFields, composedFields, composedNodes, genId, metadata);\n this.composeAffectedFields(table, table.newChange, false, pending.affectedNewFields, composedFields, composedNodes, genId, metadata);\n this.processInvalidatedCompositions(table, genId, metadata);\n }\n }\n processInvalidatedCompositions(table, genId, metadata) {\n const fieldsToUpdate = table.invalidatedFields;\n table.invalidatedFields = new Set();\n for (const fieldChange of fieldsToUpdate) {\n this.composeInvalidatedField(fieldChange, table, genId, metadata);\n }\n }\n /**\n * Ensures that each field in `affectedFields` has been updated in the composition output.\n * Any field which has already been composed is ignored.\n * All other fields are optimistically assumed to not have any changes in the other input changeset.\n *\n * @param change - The changeset which contains the affected fields.\n * This should be one of the two changesets being composed.\n * @param areBaseFields - Whether the affected fields are part of the base changeset.\n * If not, they are assumed to be part of the new changeset.\n * @param affectedFields - The set of fields to process.\n */\n composeAffectedFields(table, change, areBaseFields, affectedFields, composedFields, composedNodes, genId, metadata) {\n for (const fieldIdKey of affectedFields.keys()) {\n const fieldId = normalizeFieldId(fieldIdFromFieldIdKey(fieldIdKey), change.nodeAliases);\n const fieldChange = fieldChangeFromId(change.fieldChanges, change.nodeChanges, fieldId);\n if (table.fieldToContext.has(fieldChange) ||\n table.newFieldToBaseField.has(fieldChange)) {\n // This function handles fields which were not part of the intersection of the two changesets but which need to be updated anyway.\n // If we've already processed this field then either it is up to date\n // or there is pending inval which will be handled in processInvalidatedCompositions.\n continue;\n }\n const emptyChange = this.createEmptyFieldChange(fieldChange.fieldKind);\n const [change1, change2] = areBaseFields\n ? [fieldChange, emptyChange]\n : [emptyChange, fieldChange];\n const composedField = this.composeFieldChanges(change1, change2, genId, table, metadata);\n if (fieldId.nodeId === undefined) {\n composedFields.set(fieldId.field, composedField);\n continue;\n }\n const nodeId = getFromChangeAtomIdMap(table.newToBaseNodeId, fieldId.nodeId) ?? fieldId.nodeId;\n let nodeChangeset = nodeChangeFromId(composedNodes, nodeId);\n if (!table.composedNodes.has(nodeChangeset)) {\n nodeChangeset = cloneNodeChangeset(nodeChangeset);\n setInChangeAtomIdMap(composedNodes, nodeId, nodeChangeset);\n }\n if (nodeChangeset.fieldChanges === undefined) {\n nodeChangeset.fieldChanges = new Map();\n }\n nodeChangeset.fieldChanges.set(fieldId.field, composedField);\n }\n affectedFields.clear();\n }\n composeFieldMaps(change1, change2, genId, crossFieldTable, revisionMetadata) {\n const composedFields = new Map();\n if (change1 === undefined || change2 === undefined) {\n return change1 ?? change2 ?? composedFields;\n }\n for (const [field, fieldChange1] of change1) {\n const fieldChange2 = change2.get(field);\n const composedField = fieldChange2 !== undefined\n ? this.composeFieldChanges(fieldChange1, fieldChange2, genId, crossFieldTable, revisionMetadata)\n : fieldChange1;\n composedFields.set(field, composedField);\n }\n for (const [field, fieldChange2] of change2) {\n if (change1 === undefined || !change1.has(field)) {\n composedFields.set(field, fieldChange2);\n }\n }\n return composedFields;\n }\n /**\n * Returns the composition of the two input fields.\n *\n * Any nodes in this field which were modified by both changesets\n * will be added to `crossFieldTable.pendingCompositions.nodeIdsToCompose`.\n *\n * Any fields which had cross-field information sent to them as part of this field composition\n * will be added to either `affectedBaseFields` or `affectedNewFields` in `crossFieldTable.pendingCompositions`.\n *\n * Any composed `FieldChange` which is invalidated by new cross-field information will be added to `crossFieldTable.invalidatedFields`.\n */\n composeFieldChanges(change1, change2, idAllocator, crossFieldTable, revisionMetadata) {\n const { fieldKind, changeHandler, change1: change1Normalized, change2: change2Normalized, } = this.normalizeFieldChanges(change1, change2, idAllocator, revisionMetadata);\n const manager = new ComposeManager(crossFieldTable, change1);\n const composedChange = changeHandler.rebaser.compose(change1Normalized, change2Normalized, (child1, child2) => {\n if (child1 !== undefined && child2 !== undefined) {\n setInChangeAtomIdMap(crossFieldTable.newToBaseNodeId, child2, child1);\n crossFieldTable.pendingCompositions.nodeIdsToCompose.push([child1, child2]);\n }\n return child1 ?? child2 ?? fail(\"Should not compose two undefined nodes\");\n }, idAllocator, manager, revisionMetadata);\n const composedField = {\n fieldKind,\n change: brand(composedChange),\n };\n crossFieldTable.fieldToContext.set(change1, {\n change1: change1Normalized,\n change2: change2Normalized,\n composedChange: composedField,\n });\n crossFieldTable.newFieldToBaseField.set(change2, change1);\n return composedField;\n }\n composeNodesById(nodeChanges1, nodeChanges2, composedNodes, composedNodeToParent, nodeAliases, id1, id2, idAllocator, crossFieldTable, revisionMetadata) {\n const nodeChangeset1 = nodeChangeFromId(nodeChanges1, id1);\n const nodeChangeset2 = nodeChangeFromId(nodeChanges2, id2);\n const composedNodeChangeset = this.composeNodeChanges(nodeChangeset1, nodeChangeset2, idAllocator, crossFieldTable, revisionMetadata);\n setInChangeAtomIdMap(composedNodes, id1, composedNodeChangeset);\n if (!areEqualChangeAtomIds(id1, id2)) {\n composedNodes.delete([id2.revision, id2.localId]);\n composedNodeToParent.delete([id2.revision, id2.localId]);\n setInChangeAtomIdMap(nodeAliases, id2, id1);\n // We need to delete id1 to avoid forming a cycle in case id1 already had an alias.\n nodeAliases.delete([id1.revision, id1.localId]);\n }\n crossFieldTable.composedNodes.add(composedNodeChangeset);\n }\n composeNodeChanges(change1, change2, genId, crossFieldTable, revisionMetadata) {\n const nodeExistsConstraint = change1.nodeExistsConstraint ?? change2.nodeExistsConstraint;\n const composedFieldChanges = this.composeFieldMaps(change1.fieldChanges, change2.fieldChanges, genId, crossFieldTable, revisionMetadata);\n const composedNodeChange = {};\n if (composedFieldChanges.size > 0) {\n composedNodeChange.fieldChanges = composedFieldChanges;\n }\n if (nodeExistsConstraint !== undefined) {\n composedNodeChange.nodeExistsConstraint = nodeExistsConstraint;\n }\n return composedNodeChange;\n }\n /**\n * @param change - The change to invert.\n * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when\n * performing a sandwich rebase.\n */\n invert(change, isRollback) {\n // Rollback changesets destroy the nodes created by the change being rolled back.\n const destroys = isRollback ? invertBuilds(change.change.builds) : undefined;\n // Destroys only occur in rollback changesets, which are never inverted.\n assert(change.change.destroys === undefined, 0x89a /* Unexpected destroys in change to invert */);\n if ((change.change.constraintViolationCount ?? 0) > 0) {\n return makeModularChangeset(undefined, undefined, undefined, undefined, undefined, change.change.maxId, [], undefined, undefined, destroys);\n }\n const genId = idAllocatorFromMaxId(change.change.maxId ?? -1);\n const crossFieldTable = {\n ...newCrossFieldTable(),\n originalFieldToContext: new Map(),\n invertedNodeToParent: brand(change.change.nodeToParent.clone()),\n };\n const { revInfos } = getRevInfoFromTaggedChanges([change]);\n const revisionMetadata = revisionMetadataSourceFromInfo(revInfos);\n const invertedFields = this.invertFieldMap(change.change.fieldChanges, undefined, isRollback, genId, crossFieldTable, revisionMetadata);\n const invertedNodes = newTupleBTree();\n change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {\n invertedNodes.set([revision, localId], this.invertNodeChange(nodeChangeset, { revision, localId }, isRollback, genId, crossFieldTable, revisionMetadata));\n });\n if (crossFieldTable.invalidatedFields.size > 0) {\n const fieldsToUpdate = crossFieldTable.invalidatedFields;\n crossFieldTable.invalidatedFields = new Set();\n for (const fieldChange of fieldsToUpdate) {\n const originalFieldChange = fieldChange.change;\n const context = crossFieldTable.originalFieldToContext.get(fieldChange);\n assert(context !== undefined, 0x851 /* Should have context for every invalidated field */);\n const { invertedField, fieldId } = context;\n const amendedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(originalFieldChange, isRollback, genId, new InvertManager(crossFieldTable, fieldChange, fieldId), revisionMetadata);\n invertedField.change = brand(amendedChange);\n }\n }\n const crossFieldKeys = this.makeCrossFieldKeyTable(invertedFields, invertedNodes);\n return makeModularChangeset(invertedFields, invertedNodes, crossFieldTable.invertedNodeToParent, change.change.nodeAliases, crossFieldKeys, genId.getMaxId(), [], change.change.constraintViolationCount, undefined, destroys);\n }\n invertFieldMap(changes, parentId, isRollback, genId, crossFieldTable, revisionMetadata) {\n const invertedFields = new Map();\n for (const [field, fieldChange] of changes) {\n const fieldId = { nodeId: parentId, field };\n const manager = new InvertManager(crossFieldTable, fieldChange, fieldId);\n const invertedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(fieldChange.change, isRollback, genId, manager, revisionMetadata);\n const invertedFieldChange = {\n ...fieldChange,\n change: brand(invertedChange),\n };\n invertedFields.set(field, invertedFieldChange);\n crossFieldTable.originalFieldToContext.set(fieldChange, {\n fieldId,\n invertedField: invertedFieldChange,\n });\n }\n return invertedFields;\n }\n invertNodeChange(change, id, isRollback, genId, crossFieldTable, revisionMetadata) {\n const inverse = {};\n if (change.fieldChanges !== undefined) {\n inverse.fieldChanges = this.invertFieldMap(change.fieldChanges, id, isRollback, genId, crossFieldTable, revisionMetadata);\n }\n return inverse;\n }\n rebase(taggedChange, over, revisionMetadata) {\n const change = taggedChange.change;\n const maxId = Math.max(change.maxId ?? -1, over.change.maxId ?? -1);\n const idState = { maxId };\n const genId = idAllocatorFromState(idState);\n const crossFieldTable = {\n ...newCrossFieldTable(),\n newChange: change,\n baseChange: over.change,\n baseFieldToContext: new Map(),\n baseToRebasedNodeId: newTupleBTree(),\n rebasedFields: new Set(),\n rebasedNodeToParent: brand(change.nodeToParent.clone()),\n rebasedCrossFieldKeys: brand(change.crossFieldKeys.clone()),\n nodeIdPairs: [],\n affectedBaseFields: newTupleBTree(),\n fieldsWithUnattachedChild: new Set(),\n };\n const constraintState = newConstraintState(change.constraintViolationCount ?? 0);\n const getBaseRevisions = () => revisionInfoFromTaggedChange(over).map((info) => info.revision);\n const rebaseMetadata = {\n ...revisionMetadata,\n getRevisionToRebase: () => taggedChange.revision,\n getBaseRevisions,\n };\n const rebasedNodes = brand(change.nodeChanges.clone());\n const rebasedFields = this.rebaseIntersectingFields(crossFieldTable, rebasedNodes, genId, constraintState, rebaseMetadata);\n this.rebaseInvalidatedElements(rebasedFields, rebasedNodes, crossFieldTable, rebaseMetadata, genId);\n this.updateConstraintsForFields(rebasedFields, NodeAttachState.Attached, constraintState, rebasedNodes);\n return makeModularChangeset(this.pruneFieldMap(rebasedFields, rebasedNodes), rebasedNodes, crossFieldTable.rebasedNodeToParent, change.nodeAliases, crossFieldTable.rebasedCrossFieldKeys, idState.maxId, change.revisions, constraintState.violationCount, change.builds, change.destroys, change.refreshers);\n }\n // This performs a first pass on all fields which have both new and base changes.\n // TODO: Can we also handle additional passes in this method?\n rebaseIntersectingFields(crossFieldTable, rebasedNodes, genId, constraintState, metadata) {\n const change = crossFieldTable.newChange;\n const baseChange = crossFieldTable.baseChange;\n const rebasedFields = this.rebaseFieldMap(change.fieldChanges, baseChange.fieldChanges, undefined, genId, crossFieldTable, metadata);\n // This loop processes all fields which have both base and new changes.\n // Note that the call to `rebaseNodeChange` can add entries to `crossFieldTable.nodeIdPairs`.\n for (const [newId, baseId, _attachState] of crossFieldTable.nodeIdPairs) {\n const rebasedNode = this.rebaseNodeChange(newId, baseId, genId, crossFieldTable, metadata, constraintState);\n setInChangeAtomIdMap(rebasedNodes, newId, rebasedNode);\n }\n return rebasedFields;\n }\n // This processes fields which have no new changes but have been invalidated by another field.\n rebaseFieldsWithoutNewChanges(rebasedFields, rebasedNodes, crossFieldTable, genId, metadata) {\n const baseChange = crossFieldTable.baseChange;\n for (const [revision, localId, fieldKey] of crossFieldTable.affectedBaseFields.keys()) {\n const baseNodeId = localId !== undefined\n ? normalizeNodeId({ revision, localId }, baseChange.nodeAliases)\n : undefined;\n const baseFieldChange = fieldMapFromNodeId(baseChange.fieldChanges, baseChange.nodeChanges, baseNodeId).get(fieldKey);\n assert(baseFieldChange !== undefined, 0x9c2 /* Cross field key registered for empty field */);\n if (crossFieldTable.baseFieldToContext.has(baseFieldChange)) {\n // This field has already been processed because there were changes to rebase.\n continue;\n }\n // This field has no changes in the new changeset, otherwise it would have been added to\n // `crossFieldTable.baseFieldToContext` when processing fields with both base and new changes.\n const rebaseChild = (child, baseChild, stateChange) => {\n assert(child === undefined, 0x9c3 /* There should be no new changes in this field */);\n return undefined;\n };\n const handler = getChangeHandler(this.fieldKinds, baseFieldChange.fieldKind);\n const fieldChange = {\n ...baseFieldChange,\n change: brand(handler.createEmpty()),\n };\n const rebasedNodeId = baseNodeId !== undefined\n ? rebasedNodeIdFromBaseNodeId(crossFieldTable, baseNodeId)\n : undefined;\n const fieldId = { nodeId: rebasedNodeId, field: fieldKey };\n const rebasedField = handler.rebaser.rebase(fieldChange.change, baseFieldChange.change, rebaseChild, genId, new RebaseManager(crossFieldTable, baseFieldChange, fieldId), metadata);\n const rebasedFieldChange = {\n ...baseFieldChange,\n change: brand(rebasedField),\n };\n // TODO: Deduplicate\n crossFieldTable.baseFieldToContext.set(baseFieldChange, {\n newChange: fieldChange,\n baseChange: baseFieldChange,\n rebasedChange: rebasedFieldChange,\n fieldId,\n baseNodeIds: [],\n });\n crossFieldTable.rebasedFields.add(rebasedFieldChange);\n this.attachRebasedField(rebasedFields, rebasedNodes, crossFieldTable, rebasedFieldChange, fieldId, genId, metadata);\n }\n }\n rebaseInvalidatedElements(rebasedFields, rebasedNodes, table, metadata, idAllocator) {\n this.rebaseFieldsWithoutNewChanges(rebasedFields, rebasedNodes, table, idAllocator, metadata);\n this.rebaseFieldsWithUnattachedChild(table, metadata, idAllocator);\n this.rebaseInvalidatedFields(table, metadata, idAllocator);\n }\n rebaseInvalidatedFields(crossFieldTable, rebaseMetadata, genId) {\n const fieldsToUpdate = crossFieldTable.invalidatedFields;\n crossFieldTable.invalidatedFields = new Set();\n for (const field of fieldsToUpdate) {\n this.rebaseInvalidatedField(field, crossFieldTable, rebaseMetadata, genId);\n }\n }\n rebaseFieldsWithUnattachedChild(table, metadata, idAllocator) {\n for (const field of table.fieldsWithUnattachedChild) {\n table.invalidatedFields.delete(field);\n this.rebaseInvalidatedField(field, table, metadata, idAllocator, true);\n }\n }\n rebaseInvalidatedField(baseField, crossFieldTable, rebaseMetadata, genId, allowInval = false) {\n const context = crossFieldTable.baseFieldToContext.get(baseField);\n assert(context !== undefined, 0x852 /* Every field should have a context */);\n const { changeHandler, change1: fieldChangeset, change2: baseChangeset, } = this.normalizeFieldChanges(context.newChange, context.baseChange, genId, rebaseMetadata);\n const rebaseChild = (curr, base) => {\n if (curr !== undefined) {\n return curr;\n }\n if (base !== undefined) {\n for (const id of context.baseNodeIds) {\n if (areEqualChangeAtomIds(base, id)) {\n return base;\n }\n }\n }\n return undefined;\n };\n context.rebasedChange.change = brand(changeHandler.rebaser.rebase(fieldChangeset, baseChangeset, rebaseChild, genId, new RebaseManager(crossFieldTable, baseField, context.fieldId, allowInval), rebaseMetadata));\n }\n attachRebasedField(rebasedFields, rebasedNodes, table, rebasedField, { nodeId, field: fieldKey }, idAllocator, metadata) {\n if (nodeId === undefined) {\n rebasedFields.set(fieldKey, rebasedField);\n return;\n }\n const rebasedNode = getFromChangeAtomIdMap(rebasedNodes, nodeId);\n if (rebasedNode !== undefined) {\n if (rebasedNode.fieldChanges === undefined) {\n rebasedNode.fieldChanges = new Map([[fieldKey, rebasedField]]);\n return;\n }\n assert(!rebasedNode.fieldChanges.has(fieldKey), 0x9c4 /* Expected an empty field */);\n rebasedNode.fieldChanges.set(fieldKey, rebasedField);\n return;\n }\n const newNode = {\n fieldChanges: new Map([[fieldKey, rebasedField]]),\n };\n setInChangeAtomIdMap(rebasedNodes, nodeId, newNode);\n setInChangeAtomIdMap(table.baseToRebasedNodeId, nodeId, nodeId);\n const parentFieldId = getParentFieldId(table.baseChange, nodeId);\n this.attachRebasedNode(rebasedFields, rebasedNodes, table, nodeId, parentFieldId, idAllocator, metadata);\n }\n attachRebasedNode(rebasedFields, rebasedNodes, table, baseNodeId, parentFieldIdBase, idAllocator, metadata) {\n const baseFieldChange = fieldChangeFromId(table.baseChange.fieldChanges, table.baseChange.nodeChanges, parentFieldIdBase);\n const rebasedFieldId = rebasedFieldIdFromBaseId(table, parentFieldIdBase);\n setInChangeAtomIdMap(table.rebasedNodeToParent, baseNodeId, rebasedFieldId);\n const context = table.baseFieldToContext.get(baseFieldChange);\n if (context !== undefined) {\n // We've already processed this field.\n // The new child node will be attached in rebaseFieldsWithUnattachedChild.\n context.baseNodeIds.push(baseNodeId);\n table.fieldsWithUnattachedChild.add(baseFieldChange);\n return;\n }\n const handler = getChangeHandler(this.fieldKinds, baseFieldChange.fieldKind);\n const fieldChange = {\n ...baseFieldChange,\n change: brand(handler.createEmpty()),\n };\n const rebasedChangeset = handler.rebaser.rebase(handler.createEmpty(), baseFieldChange.change, (_idNew, idBase) => idBase !== undefined && areEqualChangeAtomIds(idBase, baseNodeId)\n ? baseNodeId\n : undefined, idAllocator, new RebaseManager(table, baseFieldChange, rebasedFieldId), metadata);\n const rebasedField = { ...baseFieldChange, change: brand(rebasedChangeset) };\n table.rebasedFields.add(rebasedField);\n table.baseFieldToContext.set(baseFieldChange, {\n newChange: fieldChange,\n baseChange: baseFieldChange,\n rebasedChange: rebasedField,\n fieldId: rebasedFieldId,\n baseNodeIds: [],\n });\n this.attachRebasedField(rebasedFields, rebasedNodes, table, rebasedField, rebasedFieldId, idAllocator, metadata);\n }\n rebaseFieldMap(change, over, parentId, genId, crossFieldTable, revisionMetadata) {\n const rebasedFields = new Map();\n const rebaseChild = (child, baseChild, stateChange) => {\n if (child !== undefined && baseChild !== undefined) {\n crossFieldTable.nodeIdPairs.push([child, baseChild, stateChange]);\n }\n return child;\n };\n for (const [field, fieldChange] of change) {\n const fieldId = { nodeId: parentId, field };\n const baseChange = over.get(field);\n if (baseChange === undefined) {\n rebasedFields.set(field, fieldChange);\n continue;\n }\n const { fieldKind, changeHandler, change1: fieldChangeset, change2: baseChangeset, } = this.normalizeFieldChanges(fieldChange, baseChange, genId, revisionMetadata);\n const manager = new RebaseManager(crossFieldTable, baseChange, fieldId);\n const rebasedField = changeHandler.rebaser.rebase(fieldChangeset, baseChangeset, rebaseChild, genId, manager, revisionMetadata);\n const rebasedFieldChange = {\n fieldKind,\n change: brand(rebasedField),\n };\n rebasedFields.set(field, rebasedFieldChange);\n crossFieldTable.baseFieldToContext.set(baseChange, {\n baseChange,\n newChange: fieldChange,\n rebasedChange: rebasedFieldChange,\n fieldId,\n baseNodeIds: [],\n });\n crossFieldTable.rebasedFields.add(rebasedFieldChange);\n }\n return rebasedFields;\n }\n rebaseNodeChange(newId, baseId, genId, crossFieldTable, revisionMetadata, constraintState) {\n const change = nodeChangeFromId(crossFieldTable.newChange.nodeChanges, newId);\n const over = nodeChangeFromId(crossFieldTable.baseChange.nodeChanges, baseId);\n const baseMap = over?.fieldChanges ?? new Map();\n const fieldChanges = change.fieldChanges !== undefined && over.fieldChanges !== undefined\n ? this.rebaseFieldMap(change?.fieldChanges ?? new Map(), baseMap, newId, genId, crossFieldTable, revisionMetadata)\n : change.fieldChanges;\n const rebasedChange = {};\n if (fieldChanges !== undefined && fieldChanges.size > 0) {\n rebasedChange.fieldChanges = fieldChanges;\n }\n if (change?.nodeExistsConstraint !== undefined) {\n rebasedChange.nodeExistsConstraint = change.nodeExistsConstraint;\n }\n setInChangeAtomIdMap(crossFieldTable.baseToRebasedNodeId, baseId, newId);\n return rebasedChange;\n }\n updateConstraintsForFields(fields, parentAttachState, constraintState, nodes) {\n for (const field of fields.values()) {\n const handler = getChangeHandler(this.fieldKinds, field.fieldKind);\n for (const [nodeId, index] of handler.getNestedChanges(field.change)) {\n const isDetached = index === undefined;\n const attachState = parentAttachState === NodeAttachState.Detached || isDetached\n ? NodeAttachState.Detached\n : NodeAttachState.Attached;\n this.updateConstraintsForNode(nodeId, attachState, constraintState, nodes);\n }\n }\n }\n updateConstraintsForNode(nodeId, attachState, constraintState, nodes) {\n const node = nodes.get([nodeId.revision, nodeId.localId]) ?? fail(\"Unknown node ID\");\n if (node.nodeExistsConstraint !== undefined) {\n const isNowViolated = attachState === NodeAttachState.Detached;\n if (node.nodeExistsConstraint.violated !== isNowViolated) {\n node.nodeExistsConstraint = {\n ...node.nodeExistsConstraint,\n violated: isNowViolated,\n };\n constraintState.violationCount += isNowViolated ? 1 : -1;\n }\n }\n if (node.fieldChanges !== undefined) {\n this.updateConstraintsForFields(node.fieldChanges, attachState, constraintState, nodes);\n }\n }\n pruneFieldMap(changeset, nodeMap) {\n if (changeset === undefined) {\n return undefined;\n }\n const prunedChangeset = new Map();\n for (const [field, fieldChange] of changeset) {\n const handler = getChangeHandler(this.fieldKinds, fieldChange.fieldKind);\n const prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) => this.pruneNodeChange(nodeId, nodeMap));\n if (!handler.isEmpty(prunedFieldChangeset)) {\n prunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });\n }\n }\n return prunedChangeset.size > 0 ? prunedChangeset : undefined;\n }\n pruneNodeChange(nodeId, nodeMap) {\n const changeset = nodeChangeFromId(nodeMap, nodeId);\n const prunedFields = changeset.fieldChanges !== undefined\n ? this.pruneFieldMap(changeset.fieldChanges, nodeMap)\n : undefined;\n const prunedChange = { ...changeset, fieldChanges: prunedFields };\n if (prunedChange.fieldChanges === undefined) {\n delete prunedChange.fieldChanges;\n }\n if (isEmptyNodeChangeset(prunedChange)) {\n nodeMap.delete([nodeId.revision, nodeId.localId]);\n return undefined;\n }\n else {\n setInChangeAtomIdMap(nodeMap, nodeId, prunedChange);\n return nodeId;\n }\n }\n changeRevision(change, newRevision, rollbackOf) {\n const oldRevisions = new Set(change.revisions === undefined\n ? [undefined]\n : change.revisions.map((revInfo) => revInfo.revision));\n const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, oldRevisions, newRevision);\n const updatedNodes = newTupleBTree();\n for (const [[revision, id], nodeChangeset] of change.nodeChanges.entries()) {\n updatedNodes.set([replaceRevision(revision, oldRevisions, newRevision), id], this.replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision));\n }\n const updatedNodeToParent = newTupleBTree();\n for (const [[revision, id], fieldId] of change.nodeToParent.entries()) {\n updatedNodeToParent.set([replaceRevision(revision, oldRevisions, newRevision), id], replaceFieldIdRevision(normalizeFieldId(fieldId, change.nodeAliases), oldRevisions, newRevision));\n }\n const updated = {\n ...change,\n fieldChanges: updatedFields,\n nodeChanges: updatedNodes,\n nodeToParent: updatedNodeToParent,\n // We've updated all references to old node IDs, so we no longer need an alias table.\n nodeAliases: newTupleBTree(),\n crossFieldKeys: replaceCrossFieldKeyTableRevisions(change.crossFieldKeys, oldRevisions, newRevision, change.nodeAliases),\n };\n if (change.builds !== undefined) {\n updated.builds = replaceIdMapRevisions(change.builds, oldRevisions, newRevision);\n }\n if (change.destroys !== undefined) {\n updated.destroys = replaceIdMapRevisions(change.destroys, oldRevisions, newRevision);\n }\n if (change.refreshers !== undefined) {\n updated.refreshers = replaceIdMapRevisions(change.refreshers, oldRevisions, newRevision);\n }\n if (newRevision !== undefined) {\n const revInfo = { revision: newRevision };\n if (rollbackOf !== undefined) {\n revInfo.rollbackOf = rollbackOf;\n }\n updated.revisions = [revInfo];\n }\n else {\n delete updated.revisions;\n }\n return updated;\n }\n replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision) {\n const updated = { ...nodeChangeset };\n if (nodeChangeset.fieldChanges !== undefined) {\n updated.fieldChanges = this.replaceFieldMapRevisions(nodeChangeset.fieldChanges, oldRevisions, newRevision);\n }\n return updated;\n }\n replaceFieldMapRevisions(fields, oldRevisions, newRevision) {\n const updatedFields = new Map();\n for (const [field, fieldChange] of fields) {\n const updatedFieldChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.replaceRevisions(fieldChange.change, oldRevisions, newRevision);\n updatedFields.set(field, { ...fieldChange, change: brand(updatedFieldChange) });\n }\n return updatedFields;\n }\n makeCrossFieldKeyTable(fields, nodes) {\n const keys = newCrossFieldKeyTable();\n this.populateCrossFieldKeyTableForFieldMap(keys, fields, undefined);\n nodes.forEachPair(([revision, localId], node) => {\n if (node.fieldChanges !== undefined) {\n this.populateCrossFieldKeyTableForFieldMap(keys, node.fieldChanges, {\n revision,\n localId,\n });\n }\n });\n return keys;\n }\n populateCrossFieldKeyTableForFieldMap(table, fields, parent) {\n for (const [fieldKey, fieldChange] of fields) {\n const keys = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).getCrossFieldKeys(fieldChange.change);\n for (const key of keys) {\n table.set(key, { nodeId: parent, field: fieldKey });\n }\n }\n }\n buildEditor(changeReceiver) {\n return new ModularEditBuilder(this, this.fieldKinds, changeReceiver);\n }\n createEmptyFieldChange(fieldKind) {\n const emptyChange = getChangeHandler(this.fieldKinds, fieldKind).createEmpty();\n return { fieldKind, change: brand(emptyChange) };\n }\n}\nModularChangeFamily.emptyChange = makeModularChangeset();\nfunction replaceCrossFieldKeyTableRevisions(table, oldRevisions, newRevision, nodeAliases) {\n const updated = newTupleBTree();\n table.forEachPair(([target, revision, id, count], field) => {\n const updatedKey = [\n target,\n replaceRevision(revision, oldRevisions, newRevision),\n id,\n count,\n ];\n const normalizedFieldId = normalizeFieldId(field, nodeAliases);\n const updatedNodeId = normalizedFieldId.nodeId !== undefined\n ? replaceAtomRevisions(normalizedFieldId.nodeId, oldRevisions, newRevision)\n : undefined;\n const updatedValue = {\n ...normalizedFieldId,\n nodeId: updatedNodeId,\n };\n updated.set(updatedKey, updatedValue);\n });\n return updated;\n}\nfunction replaceRevision(revision, oldRevisions, newRevision) {\n return oldRevisions.has(revision) ? newRevision : revision;\n}\nfunction replaceIdMapRevisions(map, oldRevisions, newRevision) {\n const updated = newTupleBTree();\n for (const [[revision, id], value] of map.entries()) {\n updated.set([replaceRevision(revision, oldRevisions, newRevision), id], value);\n }\n return updated;\n}\nfunction composeBuildsDestroysAndRefreshers(change1, change2) {\n // Duplicate builds can happen in compositions of commits that needed to include detached tree refreshers (e.g., undos):\n // In that case, it's possible for the refreshers to contain different trees because the latter\n // refresher may already reflect the changes made by the commit that includes the earlier\n // refresher. This composition includes the changes made by the commit that includes the\n // earlier refresher, so we need to include the build for the earlier refresher, otherwise\n // the produced changeset will build a tree one which those changes have already been applied\n // and also try to apply the changes again, effectively applying them twice.\n // Note that it would in principle be possible to adopt the later build and exclude from the\n // composition all the changes already reflected on the tree, but that is not something we\n // care to support at this time.\n const allBuilds = brand(mergeBTrees(change1.builds ?? newTupleBTree(), change2.builds ?? newTupleBTree(), true));\n const allDestroys = brand(mergeBTrees(change1.destroys ?? newTupleBTree(), change2.destroys ?? newTupleBTree()));\n const allRefreshers = brand(mergeBTrees(change1.refreshers ?? newTupleBTree(), change2.refreshers ?? newTupleBTree(), true));\n if (change1.destroys !== undefined && change2.builds !== undefined) {\n for (const [key, chunk] of change2.builds.entries()) {\n const destroyCount = change1.destroys.get(key);\n if (destroyCount !== undefined) {\n assert(destroyCount === chunk.topLevelLength, 0x89b /* Expected build and destroy to have the same length */);\n allBuilds.delete(key);\n allDestroys.delete(key);\n }\n }\n }\n if (change1.builds !== undefined && change2.destroys !== undefined) {\n for (const [key, chunk] of change1.builds.entries()) {\n const destroyCount = change2.destroys.get(key);\n if (destroyCount !== undefined) {\n assert(destroyCount === chunk.topLevelLength, 0x9f0 /* Expected build and destroy to have the same length */);\n allBuilds.delete(key);\n allDestroys.delete(key);\n }\n }\n }\n return { allBuilds, allDestroys, allRefreshers };\n}\nfunction invertBuilds(builds) {\n if (builds !== undefined) {\n return brand(builds.mapValues((chunk) => chunk.topLevelLength));\n }\n return undefined;\n}\n/**\n * Returns the set of removed roots that should be in memory for the given change to be applied.\n * A removed root is relevant if any of the following is true:\n * - It is being inserted\n * - It is being restored\n * - It is being edited\n * - The ID it is associated with is being changed\n *\n * May be conservative by returning more removed roots than strictly necessary.\n *\n * Will never return IDs for non-root trees, even if they are removed.\n *\n * @param change - The change to be applied.\n * @param fieldKinds - The field kinds to delegate to.\n */\nexport function* relevantRemovedRoots(change, fieldKinds) {\n yield* relevantRemovedRootsFromFields(change.fieldChanges, change.nodeChanges, fieldKinds);\n}\nfunction* relevantRemovedRootsFromFields(change, nodeChanges, fieldKinds) {\n for (const [_, fieldChange] of change) {\n const handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n const delegate = function* (node) {\n const nodeChangeset = nodeChangeFromId(nodeChanges, node);\n if (nodeChangeset.fieldChanges !== undefined) {\n yield* relevantRemovedRootsFromFields(nodeChangeset.fieldChanges, nodeChanges, fieldKinds);\n }\n };\n yield* handler.relevantRemovedRoots(fieldChange.change, delegate);\n }\n}\n/**\n * Adds any refreshers missing from the provided change that are relevant to the change and\n * removes any refreshers from the provided change that are not relevant to the change.\n *\n * @param change - The change that possibly has missing or superfluous refreshers. Not mutated by this function.\n * @param getDetachedNode - The function to retrieve a tree chunk from the corresponding detached node id.\n * @param removedRoots - The set of removed roots that should be in memory for the given change to be applied.\n * Can be retrieved by calling {@link relevantRemovedRoots}.\n * @param requireRefreshers - when true, this function enforces that all relevant removed roots have a\n * corresponding build or refresher.\n */\nexport function updateRefreshers(change, getDetachedNode, removedRoots, requireRefreshers = true) {\n const refreshers = newTupleBTree();\n const chunkLengths = new Map();\n if (change.builds !== undefined) {\n for (const [[revision, id], chunk] of change.builds.entries()) {\n const lengthTree = getOrAddInMapLazy(chunkLengths, revision, () => new BTree());\n lengthTree.set(id, chunk.topLevelLength);\n }\n }\n for (const root of removedRoots) {\n if (change.builds !== undefined) {\n const lengthTree = chunkLengths.get(root.major);\n if (lengthTree !== undefined) {\n const lengthPair = lengthTree.getPairOrNextLower(root.minor);\n if (lengthPair !== undefined) {\n const [firstMinor, length] = lengthPair;\n // if the root minor is within the length of the minor of the retrieved pair\n // then there's no need to check for the detached node\n if (root.minor < firstMinor + length) {\n continue;\n }\n }\n }\n }\n const node = getDetachedNode(root);\n if (node === undefined) {\n assert(!requireRefreshers, 0x8cd /* detached node should exist */);\n }\n else {\n refreshers.set([root.major, brand(root.minor)], node);\n }\n }\n const { fieldChanges, nodeChanges, maxId, revisions, constraintViolationCount, builds, destroys, } = change;\n return makeModularChangeset(fieldChanges, nodeChanges, change.nodeToParent, change.nodeAliases, change.crossFieldKeys, maxId, revisions, constraintViolationCount, builds, destroys, refreshers);\n}\n/**\n * @param change - The change to convert into a delta.\n * @param fieldKinds - The field kinds to delegate to.\n */\nexport function intoDelta(taggedChange, fieldKinds) {\n const change = taggedChange.change;\n const idAllocator = MemoizedIdRangeAllocator.fromNextId();\n const rootDelta = {};\n if ((change.constraintViolationCount ?? 0) === 0) {\n // If there are no constraint violations, then tree changes apply.\n const fieldDeltas = intoDeltaImpl(change.fieldChanges, change.nodeChanges, idAllocator, fieldKinds);\n if (fieldDeltas.size > 0) {\n rootDelta.fields = fieldDeltas;\n }\n }\n // Constraint violations should not prevent nodes from being built\n if (change.builds && change.builds.size > 0) {\n rootDelta.build = copyDetachedNodes(change.builds);\n }\n if (change.destroys !== undefined && change.destroys.size > 0) {\n const destroys = [];\n for (const [[major, minor], count] of change.destroys.entries()) {\n destroys.push({\n id: makeDetachedNodeId(major, minor),\n count,\n });\n }\n rootDelta.destroy = destroys;\n }\n if (change.refreshers && change.refreshers.size > 0) {\n rootDelta.refreshers = copyDetachedNodes(change.refreshers);\n }\n return rootDelta;\n}\nfunction copyDetachedNodes(detachedNodes) {\n const copiedDetachedNodes = [];\n for (const [[major, minor], chunk] of detachedNodes.entries()) {\n if (chunk.topLevelLength > 0) {\n const trees = mapCursorField(chunk.cursor(), (c) => cursorForMapTreeNode(mapTreeFromCursor(c)));\n copiedDetachedNodes.push({\n id: makeDetachedNodeId(major, minor),\n trees,\n });\n }\n }\n return copiedDetachedNodes.length > 0 ? copiedDetachedNodes : undefined;\n}\n/**\n * @param change - The change to convert into a delta.\n */\nfunction intoDeltaImpl(change, nodeChanges, idAllocator, fieldKinds) {\n const delta = new Map();\n for (const [field, fieldChange] of change) {\n const deltaField = getChangeHandler(fieldKinds, fieldChange.fieldKind).intoDelta(fieldChange.change, (childChange) => {\n const nodeChange = nodeChangeFromId(nodeChanges, childChange);\n return deltaFromNodeChange(nodeChange, nodeChanges, idAllocator, fieldKinds);\n }, idAllocator);\n if (!isEmptyFieldChanges(deltaField)) {\n delta.set(field, deltaField);\n }\n }\n return delta;\n}\nfunction deltaFromNodeChange(change, nodeChanges, idAllocator, fieldKinds) {\n if (change.fieldChanges !== undefined) {\n return intoDeltaImpl(change.fieldChanges, nodeChanges, idAllocator, fieldKinds);\n }\n // TODO: update the API to allow undefined to be returned here\n return new Map();\n}\n/**\n * @param revInfos - This should describe the revision being rebased and all revisions in the rebase path,\n * even if not part of the current base changeset.\n * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `revInfos` must include\n * the changes [A⁻¹ X, Y, A, B] for each rebase step of B.\n * @param revisionToRebase - The revision of the changeset which is being rebased.\n * @param baseRevisions - The set of revisions in the changeset being rebased over.\n * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `baseRevisions` must include\n * revisions [A⁻¹ X, Y, A] if rebasing over the composition of all those changes, or\n * revision [A⁻¹] for the first rebase, then [X], etc. if rebasing over edits individually.\n * @returns - RebaseRevisionMetadata to be passed to `FieldChangeRebaser.rebase`*\n */\nexport function rebaseRevisionMetadataFromInfo(revInfos, revisionToRebase, baseRevisions) {\n const filteredRevisions = [];\n for (const revision of baseRevisions) {\n if (revision !== undefined) {\n filteredRevisions.push(revision);\n }\n }\n const getBaseRevisions = () => filteredRevisions;\n return {\n ...revisionMetadataSourceFromInfo(revInfos),\n getRevisionToRebase: () => revisionToRebase,\n getBaseRevisions,\n };\n}\nfunction isEmptyNodeChangeset(change) {\n return change.fieldChanges === undefined && change.nodeExistsConstraint === undefined;\n}\nexport function getFieldKind(fieldKinds, kind) {\n if (kind === genericFieldKind.identifier) {\n return genericFieldKind;\n }\n const fieldKind = fieldKinds.get(kind);\n assert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);\n return withEditor(fieldKind);\n}\nexport function getChangeHandler(fieldKinds, kind) {\n return getFieldKind(fieldKinds, kind).changeHandler;\n}\nfunction newComposeTable(baseChange, newChange) {\n return {\n ...newCrossFieldTable(),\n baseChange,\n newChange,\n fieldToContext: new Map(),\n newFieldToBaseField: new Map(),\n newToBaseNodeId: newTupleBTree(),\n composedNodes: new Set(),\n pendingCompositions: {\n nodeIdsToCompose: [],\n affectedBaseFields: newTupleBTree(),\n affectedNewFields: newTupleBTree(),\n },\n };\n}\nfunction newCrossFieldTable() {\n return {\n srcTable: new Map(),\n dstTable: new Map(),\n srcDependents: new Map(),\n dstDependents: new Map(),\n invalidatedFields: new Set(),\n };\n}\nfunction newConstraintState(violationCount) {\n return {\n violationCount,\n };\n}\nclass CrossFieldManagerI {\n constructor(crossFieldTable, currentFieldKey, allowInval = true) {\n this.crossFieldTable = crossFieldTable;\n this.currentFieldKey = currentFieldKey;\n this.allowInval = allowInval;\n }\n set(target, revision, id, count, newValue, invalidateDependents) {\n if (invalidateDependents && this.allowInval) {\n const lastChangedId = id + count - 1;\n let firstId = id;\n while (firstId <= lastChangedId) {\n const dependentEntry = getFirstFromCrossFieldMap(this.getDependents(target), revision, firstId, lastChangedId - firstId + 1);\n if (dependentEntry.value !== undefined) {\n this.crossFieldTable.invalidatedFields.add(dependentEntry.value);\n }\n firstId = brand(firstId + dependentEntry.length);\n }\n }\n setInCrossFieldMap(this.getMap(target), revision, id, count, newValue);\n }\n get(target, revision, id, count, addDependency) {\n if (addDependency) {\n // We assume that if there is already an entry for this ID it is because\n // a field handler has called compose on the same node multiple times.\n // In this case we only want to update the latest version, so we overwrite the dependency.\n setInCrossFieldMap(this.getDependents(target), revision, id, count, this.currentFieldKey);\n }\n return getFirstFromCrossFieldMap(this.getMap(target), revision, id, count);\n }\n getMap(target) {\n return target === CrossFieldTarget.Source\n ? this.crossFieldTable.srcTable\n : this.crossFieldTable.dstTable;\n }\n getDependents(target) {\n return target === CrossFieldTarget.Source\n ? this.crossFieldTable.srcDependents\n : this.crossFieldTable.dstDependents;\n }\n}\nclass InvertManager extends CrossFieldManagerI {\n constructor(table, field, fieldId, allowInval = true) {\n super(table, field, allowInval);\n this.fieldId = fieldId;\n }\n onMoveIn(id) {\n setInChangeAtomIdMap(this.table.invertedNodeToParent, id, this.fieldId);\n }\n moveKey(target, revision, id, count) {\n assert(false, 0x9c5 /* Keys should not be moved manually during invert */);\n }\n get table() {\n return this.crossFieldTable;\n }\n}\nclass RebaseManager extends CrossFieldManagerI {\n constructor(table, currentField, fieldId, allowInval = true) {\n super(table, currentField, allowInval);\n this.fieldId = fieldId;\n }\n set(target, revision, id, count, newValue, invalidateDependents) {\n if (invalidateDependents && this.allowInval) {\n const newFieldIds = getFieldsForCrossFieldKey(this.table.newChange, [\n target,\n revision,\n id,\n count,\n ]);\n assert(newFieldIds.length === 0, 0x9c6 /* TODO: Modifying a cross-field key from the new changeset is currently unsupported */);\n const baseFieldIds = getFieldsForCrossFieldKey(this.table.baseChange, [\n target,\n revision,\n id,\n count,\n ]);\n assert(baseFieldIds.length > 0, 0x9c7 /* Cross field key not registered in base or new change */);\n for (const baseFieldId of baseFieldIds) {\n this.table.affectedBaseFields.set([baseFieldId.nodeId?.revision, baseFieldId.nodeId?.localId, baseFieldId.field], true);\n }\n }\n super.set(target, revision, id, count, newValue, invalidateDependents);\n }\n onMoveIn(id) {\n setInChangeAtomIdMap(this.table.rebasedNodeToParent, id, this.fieldId);\n }\n moveKey(target, revision, id, count) {\n setInCrossFieldKeyTable(this.table.rebasedCrossFieldKeys, target, revision, id, count, this.fieldId);\n }\n get table() {\n return this.crossFieldTable;\n }\n}\n// TODO: Deduplicate this with RebaseTable\nclass ComposeManager extends CrossFieldManagerI {\n constructor(table, currentField, allowInval = true) {\n super(table, currentField, allowInval);\n }\n set(target, revision, id, count, newValue, invalidateDependents) {\n if (invalidateDependents && this.allowInval) {\n const newFieldIds = getFieldsForCrossFieldKey(this.table.newChange, [\n target,\n revision,\n id,\n count,\n ]);\n if (newFieldIds.length > 0) {\n for (const newFieldId of newFieldIds) {\n this.table.pendingCompositions.affectedNewFields.set([newFieldId.nodeId?.revision, newFieldId.nodeId?.localId, newFieldId.field], true);\n }\n }\n else {\n const baseFieldIds = getFieldsForCrossFieldKey(this.table.baseChange, [\n target,\n revision,\n id,\n count,\n ]);\n assert(baseFieldIds.length > 0, 0x9c8 /* Cross field key not registered in base or new change */);\n for (const baseFieldId of baseFieldIds) {\n this.table.pendingCompositions.affectedBaseFields.set([baseFieldId.nodeId?.revision, baseFieldId.nodeId?.localId, baseFieldId.field], true);\n }\n }\n }\n super.set(target, revision, id, count, newValue, invalidateDependents);\n }\n onMoveIn(id) {\n throw new Error(\"Method not implemented.\");\n }\n moveKey(target, revision, id, count) {\n throw new Error(\"Method not implemented.\");\n }\n get table() {\n return this.crossFieldTable;\n }\n}\nfunction makeModularChangeset(fieldChanges = undefined, nodeChanges = undefined, nodeToParent = undefined, nodeAliases = undefined, crossFieldKeys = undefined, maxId = -1, revisions = undefined, constraintViolationCount = undefined, builds, destroys, refreshers) {\n const changeset = {\n fieldChanges: fieldChanges ?? new Map(),\n nodeChanges: nodeChanges ?? newTupleBTree(),\n nodeToParent: nodeToParent ?? newTupleBTree(),\n nodeAliases: nodeAliases ?? newTupleBTree(),\n crossFieldKeys: crossFieldKeys ?? newCrossFieldKeyTable(),\n };\n if (revisions !== undefined && revisions.length > 0) {\n changeset.revisions = revisions;\n }\n if (maxId >= 0) {\n changeset.maxId = brand(maxId);\n }\n if (constraintViolationCount !== undefined && constraintViolationCount > 0) {\n changeset.constraintViolationCount = constraintViolationCount;\n }\n if (builds !== undefined && builds.size > 0) {\n changeset.builds = builds;\n }\n if (destroys !== undefined && destroys.size > 0) {\n changeset.destroys = destroys;\n }\n if (refreshers !== undefined && refreshers.size > 0) {\n changeset.refreshers = refreshers;\n }\n return changeset;\n}\nexport class ModularEditBuilder extends EditBuilder {\n constructor(family, fieldKinds, changeReceiver) {\n super(family, changeReceiver);\n this.fieldKinds = fieldKinds;\n this.transactionDepth = 0;\n this.idAllocator = idAllocatorFromMaxId();\n }\n enterTransaction() {\n this.transactionDepth += 1;\n if (this.transactionDepth === 1) {\n this.idAllocator = idAllocatorFromMaxId();\n }\n }\n exitTransaction() {\n assert(this.transactionDepth > 0, 0x5b9 /* Cannot exit inexistent transaction */);\n this.transactionDepth -= 1;\n if (this.transactionDepth === 0) {\n this.idAllocator = idAllocatorFromMaxId();\n }\n }\n /**\n * @param firstId - The ID to associate with the first node\n * @param content - The node(s) to build. Can be in either Field or Node mode.\n * @returns A description of the edit that can be passed to `submitChanges`.\n */\n buildTrees(firstId, content) {\n if (content.mode === 1 /* CursorLocationType.Fields */ && content.getFieldLength() === 0) {\n return { type: \"global\" };\n }\n const builds = newTupleBTree();\n const chunk = content.mode === 1 /* CursorLocationType.Fields */\n ? chunkFieldSingle(content, defaultChunkPolicy)\n : chunkTree(content, defaultChunkPolicy);\n builds.set([undefined, firstId], chunk);\n return {\n type: \"global\",\n builds,\n };\n }\n /**\n * Adds a change to the edit builder\n * @param field - the field which is being edited\n * @param fieldKind - the kind of the field\n * @param change - the change to the field\n * @param maxId - the highest `ChangesetLocalId` used in this change\n */\n submitChange(field, fieldKind, change) {\n const crossFieldKeys = getChangeHandler(this.fieldKinds, fieldKind).getCrossFieldKeys(change);\n const modularChange = buildModularChangesetFromField(field, { fieldKind, change }, newTupleBTree(), newTupleBTree(), newCrossFieldKeyTable(), this.idAllocator, crossFieldKeys);\n this.applyChange(modularChange);\n }\n submitChanges(changes) {\n const modularChange = this.buildChanges(changes);\n this.applyChange(modularChange);\n }\n buildChanges(changes) {\n const changeMaps = changes.map((change) => makeAnonChange(change.type === \"global\"\n ? makeModularChangeset(undefined, undefined, undefined, undefined, undefined, this.idAllocator.getMaxId(), undefined, undefined, change.builds)\n : buildModularChangesetFromField(change.field, {\n fieldKind: change.fieldKind,\n change: change.change,\n }, newTupleBTree(), newTupleBTree(), newCrossFieldKeyTable(), this.idAllocator, getChangeHandler(this.fieldKinds, change.fieldKind).getCrossFieldKeys(change.change))));\n const composedChange = this.changeFamily.rebaser.compose(changeMaps);\n const maxId = brand(this.idAllocator.getMaxId());\n if (maxId >= 0) {\n composedChange.maxId = maxId;\n }\n return composedChange;\n }\n generateId(count) {\n return brand(this.idAllocator.allocate(count));\n }\n addNodeExistsConstraint(path) {\n const nodeChange = {\n nodeExistsConstraint: { violated: false },\n };\n this.applyChange(buildModularChangesetFromNode(path, nodeChange, newTupleBTree(), newTupleBTree(), newCrossFieldKeyTable(), this.idAllocator));\n }\n}\nfunction buildModularChangesetFromField(path, fieldChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator = idAllocatorFromMaxId(), localCrossFieldKeys = [], childId = undefined) {\n const fieldChanges = new Map([[path.field, fieldChange]]);\n if (path.parent === undefined) {\n for (const key of localCrossFieldKeys) {\n crossFieldKeys.set(key, { nodeId: undefined, field: path.field });\n }\n if (childId !== undefined) {\n setInChangeAtomIdMap(nodeToParent, childId, {\n nodeId: undefined,\n field: path.field,\n });\n }\n return makeModularChangeset(fieldChanges, nodeChanges, nodeToParent, undefined, crossFieldKeys, idAllocator.getMaxId());\n }\n const nodeChangeset = {\n fieldChanges,\n };\n const parentId = { localId: brand(idAllocator.allocate()) };\n for (const key of localCrossFieldKeys) {\n crossFieldKeys.set(key, { nodeId: parentId, field: path.field });\n }\n if (childId !== undefined) {\n setInChangeAtomIdMap(nodeToParent, childId, {\n nodeId: parentId,\n field: path.field,\n });\n }\n return buildModularChangesetFromNode(path.parent, nodeChangeset, nodeChanges, nodeToParent, crossFieldKeys, idAllocator, parentId);\n}\nfunction buildModularChangesetFromNode(path, nodeChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator, nodeId = { localId: brand(idAllocator.allocate()) }) {\n setInChangeAtomIdMap(nodeChanges, nodeId, nodeChange);\n const fieldChangeset = genericFieldKind.changeHandler.editor.buildChildChange(path.parentIndex, nodeId);\n const fieldChange = {\n fieldKind: genericFieldKind.identifier,\n change: fieldChangeset,\n };\n return buildModularChangesetFromField({ parent: path.parent, field: path.parentField }, fieldChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator, [], nodeId);\n}\nfunction getRevInfoFromTaggedChanges(changes) {\n let maxId = -1;\n const revInfos = [];\n for (const taggedChange of changes) {\n const change = taggedChange.change;\n maxId = Math.max(change.maxId ?? -1, maxId);\n revInfos.push(...revisionInfoFromTaggedChange(taggedChange));\n }\n const revisions = new Set();\n const rolledBackRevisions = [];\n for (const info of revInfos) {\n revisions.add(info.revision);\n if (info.rollbackOf !== undefined) {\n rolledBackRevisions.push(info.rollbackOf);\n }\n }\n rolledBackRevisions.reverse();\n for (const revision of rolledBackRevisions) {\n if (!revisions.has(revision)) {\n revInfos.push({ revision });\n }\n }\n return { maxId: brand(maxId), revInfos };\n}\nfunction revisionInfoFromTaggedChange(taggedChange) {\n const revInfos = [];\n if (taggedChange.change.revisions !== undefined) {\n revInfos.push(...taggedChange.change.revisions);\n }\n else if (taggedChange.revision !== undefined) {\n const info = { revision: taggedChange.revision };\n if (taggedChange.rollbackOf !== undefined) {\n info.rollbackOf = taggedChange.rollbackOf;\n }\n revInfos.push(info);\n }\n return revInfos;\n}\nfunction mergeBTrees(tree1, tree2, preferLeft = true) {\n if (tree1 === undefined) {\n return tree2 !== undefined ? brand(tree2.clone()) : newTupleBTree();\n }\n const result = brand(tree1.clone());\n if (tree2 === undefined) {\n return result;\n }\n for (const [key, value] of tree2.entries()) {\n result.set(key, value, !preferLeft);\n }\n return result;\n}\nfunction fieldChangeFromId(fields, nodes, id) {\n const fieldMap = fieldMapFromNodeId(fields, nodes, id.nodeId);\n return fieldMap.get(id.field) ?? fail(\"No field exists for the given ID\");\n}\nfunction fieldMapFromNodeId(rootFieldMap, nodes, nodeId) {\n if (nodeId === undefined) {\n return rootFieldMap;\n }\n const node = nodeChangeFromId(nodes, nodeId);\n assert(node.fieldChanges !== undefined, 0x9c9 /* Expected node to have field changes */);\n return node.fieldChanges;\n}\nfunction rebasedFieldIdFromBaseId(table, baseId) {\n if (baseId.nodeId === undefined) {\n return baseId;\n }\n return { ...baseId, nodeId: rebasedNodeIdFromBaseNodeId(table, baseId.nodeId) };\n}\nfunction rebasedNodeIdFromBaseNodeId(table, baseId) {\n return getFromChangeAtomIdMap(table.baseToRebasedNodeId, baseId) ?? baseId;\n}\nfunction nodeChangeFromId(nodes, id) {\n const node = getFromChangeAtomIdMap(nodes, id);\n assert(node !== undefined, 0x9ca /* Unknown node ID */);\n return node;\n}\nfunction fieldIdFromFieldIdKey([revision, localId, field]) {\n const nodeId = localId !== undefined ? { revision, localId } : undefined;\n return { nodeId, field };\n}\nfunction cloneNodeChangeset(nodeChangeset) {\n if (nodeChangeset.fieldChanges !== undefined) {\n return { ...nodeChangeset, fieldChanges: new Map(nodeChangeset.fieldChanges) };\n }\n return { ...nodeChangeset };\n}\nfunction replaceFieldIdRevision(fieldId, oldRevisions, newRevision) {\n if (fieldId.nodeId === undefined) {\n return fieldId;\n }\n return {\n ...fieldId,\n nodeId: replaceAtomRevisions(fieldId.nodeId, oldRevisions, newRevision),\n };\n}\nexport function getParentFieldId(changeset, nodeId) {\n const parentId = getFromChangeAtomIdMap(changeset.nodeToParent, nodeId);\n assert(parentId !== undefined, 0x9cb /* Parent field should be defined */);\n return normalizeFieldId(parentId, changeset.nodeAliases);\n}\nexport function getFieldsForCrossFieldKey(changeset, [target, revision, id, count]) {\n let firstLocalId = id;\n const lastLocalId = id + count - 1;\n const fields = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const entry = getFirstIntersectingCrossFieldEntry(changeset.crossFieldKeys, [\n target,\n revision,\n brand(firstLocalId),\n count,\n ]);\n if (entry === undefined) {\n return fields;\n }\n const [[_target, _revision, entryId, entryCount], fieldId] = entry;\n fields.push(normalizeFieldId(fieldId, changeset.nodeAliases));\n const entryLastId = entryId + entryCount - 1;\n if (entryLastId >= lastLocalId) {\n return fields;\n }\n firstLocalId = entryLastId + 1;\n }\n}\nfunction getFirstIntersectingCrossFieldEntry(table, [target, revision, id, count]) {\n const entry = table.nextLowerPair([target, revision, id, Infinity]);\n if (entry === undefined) {\n return undefined;\n }\n const [entryTarget, entryRevision, entryId, entryCount] = entry[0];\n if (entryTarget !== target || entryRevision !== revision) {\n return undefined;\n }\n const lastQueryId = id + count - 1;\n const entryLastId = entryId + entryCount - 1;\n if (entryId > lastQueryId || entryLastId < id) {\n return undefined;\n }\n return entry;\n}\nfunction setInCrossFieldKeyTable(table, target, revision, id, count, value) {\n let entry = getFirstIntersectingCrossFieldEntry(table, [target, revision, id, count]);\n const lastQueryId = id + count - 1;\n while (entry !== undefined) {\n const [entryKey, entryValue] = entry;\n table.delete(entryKey);\n const [_target, _revision, entryId, entryCount] = entryKey;\n if (entryId < id) {\n table.set([target, revision, entryId, id - entryId], entryValue);\n }\n const lastEntryId = entryId + entryCount - 1;\n if (lastEntryId > lastQueryId) {\n table.set([target, revision, brand(lastQueryId + 1), lastEntryId - lastQueryId], entryValue);\n break;\n }\n const nextId = brand(lastEntryId + 1);\n entry = getFirstIntersectingCrossFieldEntry(table, [\n target,\n revision,\n nextId,\n lastQueryId - nextId + 1,\n ]);\n }\n table.set([target, revision, id, count], value);\n}\nfunction normalizeFieldId(fieldId, nodeAliases) {\n return fieldId.nodeId !== undefined\n ? { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) }\n : fieldId;\n}\n/**\n * @returns The canonical form of nodeId, according to nodeAliases\n */\nfunction normalizeNodeId(nodeId, nodeAliases) {\n let currentId = nodeId;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const dealiased = getFromChangeAtomIdMap(nodeAliases, currentId);\n if (dealiased === undefined) {\n return currentId;\n }\n currentId = dealiased;\n }\n}\nfunction hasConflicts(change) {\n return (change.constraintViolationCount ?? 0) > 0;\n}\nexport function newCrossFieldKeyTable() {\n return newTupleBTree();\n}\nexport function newTupleBTree(entries) {\n return brand(new BTree(entries, compareTuples));\n}\n// This assumes that the arrays are the same length.\nfunction compareTuples(arrayA, arrayB) {\n for (let i = 0; i < arrayA.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const a = arrayA[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const b = arrayB[i];\n // Less-than and greater-than always return false if either value is undefined,\n // so we handle undefined separately, treating it as less than all other values.\n if (a === undefined && b !== undefined) {\n return -1;\n }\n else if (b === undefined && a !== undefined) {\n return 1;\n }\n else if (a < b) {\n return -1;\n }\n else if (a > b) {\n return 1;\n }\n }\n return 0;\n}\nfunction getFromChangeAtomIdMap(map, id) {\n return map.get([id.revision, id.localId]);\n}\nfunction setInChangeAtomIdMap(map, id, value) {\n map.set([id.revision, id.localId], value);\n}\n//# sourceMappingURL=modularChangeFamily.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { makeCodecFamily, withSchemaValidation, } from \"../../codec/index.js\";\nimport { brand, fail, idAllocatorFromMaxId, } from \"../../util/index.js\";\nimport { chunkFieldSingle, defaultChunkPolicy, } from \"../chunked-forest/index.js\";\nimport { TreeCompressionStrategy } from \"../treeCompressionUtils.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport { EncodedModularChangeset, } from \"./modularChangeFormat.js\";\nimport { newCrossFieldKeyTable, newTupleBTree } from \"./modularChangeFamily.js\";\nexport function makeModularChangeCodecFamily(fieldKindConfigurations, revisionTagCodec, fieldsCodec, { jsonValidator: validator }, chunkCompressionStrategy = TreeCompressionStrategy.Compressed) {\n return makeCodecFamily(Array.from(fieldKindConfigurations.entries(), ([version, fieldKinds]) => [\n version,\n makeModularChangeCodec(fieldKinds, revisionTagCodec, fieldsCodec, { jsonValidator: validator }, chunkCompressionStrategy),\n ]));\n}\nfunction makeModularChangeCodec(fieldKinds, revisionTagCodec, fieldsCodec, { jsonValidator: validator }, chunkCompressionStrategy = TreeCompressionStrategy.Compressed) {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const getMapEntry = ({ kind, formatVersion }) => {\n const codec = kind.changeHandler.codecsFactory(revisionTagCodec).resolve(formatVersion);\n return {\n codec,\n compiledSchema: codec.json.encodedSchema\n ? validator.compile(codec.json.encodedSchema)\n : undefined,\n };\n };\n /**\n * The codec version for the generic field kind.\n */\n const genericFieldKindFormatVersion = 1;\n const fieldChangesetCodecs = new Map([\n [\n genericFieldKind.identifier,\n getMapEntry({ kind: genericFieldKind, formatVersion: genericFieldKindFormatVersion }),\n ],\n ]);\n fieldKinds.forEach((entry, identifier) => {\n fieldChangesetCodecs.set(identifier, getMapEntry(entry));\n });\n const getFieldChangesetCodec = (fieldKind) => {\n const entry = fieldChangesetCodecs.get(fieldKind);\n assert(entry !== undefined, 0x5ea /* Tried to encode unsupported fieldKind */);\n return entry;\n };\n function encodeFieldChangesForJson(change, context, nodeChanges) {\n const fieldContext = {\n baseContext: context,\n encodeNode: (nodeId) => {\n const node = nodeChanges.get([nodeId.revision, nodeId.localId]);\n assert(node !== undefined, 0x92e /* Unknown node ID */);\n return encodeNodeChangesForJson(node, fieldContext);\n },\n decodeNode: () => fail(\"Should not decode nodes during field encoding\"),\n };\n return encodeFieldChangesForJsonI(change, fieldContext);\n }\n function encodeFieldChangesForJsonI(change, context) {\n const encodedFields = [];\n for (const [field, fieldChange] of change) {\n const { codec, compiledSchema } = getFieldChangesetCodec(fieldChange.fieldKind);\n const encodedChange = codec.json.encode(fieldChange.change, context);\n if (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {\n fail(\"Encoded change didn't pass schema validation.\");\n }\n const fieldKey = field;\n const encodedField = {\n fieldKey,\n fieldKind: fieldChange.fieldKind,\n change: encodedChange,\n };\n encodedFields.push(encodedField);\n }\n return encodedFields;\n }\n function encodeNodeChangesForJson(change, context) {\n const encodedChange = {};\n const { fieldChanges, nodeExistsConstraint } = change;\n if (fieldChanges !== undefined) {\n encodedChange.fieldChanges = encodeFieldChangesForJsonI(fieldChanges, context);\n }\n if (nodeExistsConstraint !== undefined) {\n encodedChange.nodeExistsConstraint = nodeExistsConstraint;\n }\n return encodedChange;\n }\n function decodeFieldChangesFromJson(encodedChange, parentId, decoded, context, idAllocator) {\n const decodedFields = new Map();\n for (const field of encodedChange) {\n const { codec, compiledSchema } = getFieldChangesetCodec(field.fieldKind);\n if (compiledSchema !== undefined && !compiledSchema.check(field.change)) {\n fail(\"Encoded change didn't pass schema validation.\");\n }\n const fieldId = {\n nodeId: parentId,\n field: field.fieldKey,\n };\n const fieldContext = {\n baseContext: context,\n encodeNode: () => fail(\"Should not encode nodes during field decoding\"),\n decodeNode: (encodedNode) => {\n const nodeId = {\n revision: context.revision,\n localId: brand(idAllocator.allocate()),\n };\n const node = decodeNodeChangesetFromJson(encodedNode, nodeId, decoded, context, idAllocator);\n decoded.nodeChanges.set([nodeId.revision, nodeId.localId], node);\n decoded.nodeToParent.set([nodeId.revision, nodeId.localId], fieldId);\n return nodeId;\n },\n };\n const fieldChangeset = codec.json.decode(field.change, fieldContext);\n const crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(fieldChangeset);\n for (const crossFieldKey of crossFieldKeys) {\n decoded.crossFieldKeys.set(crossFieldKey, fieldId);\n }\n const fieldKey = brand(field.fieldKey);\n decodedFields.set(fieldKey, {\n fieldKind: field.fieldKind,\n change: brand(fieldChangeset),\n });\n }\n return decodedFields;\n }\n function decodeNodeChangesetFromJson(encodedChange, id, decoded, context, idAllocator) {\n const decodedChange = {};\n const { fieldChanges, nodeExistsConstraint } = encodedChange;\n if (fieldChanges !== undefined) {\n decodedChange.fieldChanges = decodeFieldChangesFromJson(fieldChanges, id, decoded, context, idAllocator);\n }\n if (nodeExistsConstraint !== undefined) {\n decodedChange.nodeExistsConstraint = nodeExistsConstraint;\n }\n return decodedChange;\n }\n function encodeDetachedNodes(detachedNodes, context) {\n if (detachedNodes === undefined) {\n return undefined;\n }\n const treesToEncode = [];\n const buildsArray = [];\n let buildsForRevision;\n for (const [[revision, id], chunk] of detachedNodes.entries()) {\n const encodedRevision = encodeRevisionOpt(revisionTagCodec, revision, context);\n if (buildsForRevision === undefined || buildsForRevision[1] !== encodedRevision) {\n if (buildsForRevision !== undefined) {\n buildsArray.push(buildsForRevision);\n }\n buildsForRevision = encodedRevision !== undefined ? [[], encodedRevision] : [[]];\n }\n treesToEncode.push(chunk.cursor());\n const treeIndexInBatch = treesToEncode.length - 1;\n buildsForRevision?.[0].push([id, treeIndexInBatch]);\n }\n if (buildsForRevision !== undefined) {\n buildsArray.push(buildsForRevision);\n }\n return buildsArray.length === 0\n ? undefined\n : {\n builds: buildsArray,\n trees: fieldsCodec.encode(treesToEncode, {\n encodeType: chunkCompressionStrategy,\n schema: context.schema,\n originatorId: context.originatorId,\n idCompressor: context.idCompressor,\n }),\n };\n }\n function decodeDetachedNodes(encoded, context) {\n if (encoded === undefined || encoded.builds.length === 0) {\n return undefined;\n }\n const chunks = fieldsCodec.decode(encoded.trees, {\n encodeType: chunkCompressionStrategy,\n originatorId: context.originatorId,\n idCompressor: context.idCompressor,\n });\n const getChunk = (index) => {\n assert(index < chunks.length, 0x898 /* out of bounds index for build chunk */);\n return chunkFieldSingle(chunks[index] ?? oob(), defaultChunkPolicy);\n };\n const map = newTupleBTree();\n encoded.builds.forEach((build) => {\n // EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple\n const revision = build[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);\n const decodedChunks = build[0].map(([i, n]) => [\n i,\n getChunk(n),\n ]);\n for (const [id, chunk] of decodedChunks) {\n map.set([revision, id], chunk);\n }\n });\n return map;\n }\n function encodeRevisionInfos(revisions, context) {\n if (context.revision !== undefined) {\n assert(revisions.length === 1 &&\n revisions[0] !== undefined &&\n revisions[0].revision === context.revision &&\n revisions[0].rollbackOf === undefined, 0x964 /* A tagged change should only contain the tagged revision */);\n return undefined;\n }\n const encodedRevisions = [];\n for (const revision of revisions) {\n const encodedRevision = {\n revision: revisionTagCodec.encode(revision.revision, context),\n };\n if (revision.rollbackOf !== undefined) {\n encodedRevision.rollbackOf = revisionTagCodec.encode(revision.rollbackOf, context);\n }\n encodedRevisions.push(encodedRevision);\n }\n return encodedRevisions;\n }\n function decodeRevisionInfos(revisions, context) {\n if (revisions === undefined) {\n return context.revision !== undefined ? [{ revision: context.revision }] : undefined;\n }\n const decodedRevisions = [];\n for (const revision of revisions) {\n const decodedRevision = {\n revision: revisionTagCodec.decode(revision.revision, context),\n };\n if (revision.rollbackOf !== undefined) {\n decodedRevision.rollbackOf = revisionTagCodec.decode(revision.rollbackOf, context);\n }\n decodedRevisions.push(decodedRevision);\n }\n return decodedRevisions;\n }\n const modularChangeCodec = {\n encode: (change, context) => {\n // Destroys only exist in rollback changesets, which are never sent.\n assert(change.destroys === undefined, 0x899 /* Unexpected changeset with destroys */);\n return {\n maxId: change.maxId,\n revisions: change.revisions === undefined\n ? undefined\n : encodeRevisionInfos(change.revisions, context),\n changes: encodeFieldChangesForJson(change.fieldChanges, context, change.nodeChanges),\n builds: encodeDetachedNodes(change.builds, context),\n refreshers: encodeDetachedNodes(change.refreshers, context),\n violations: change.constraintViolationCount,\n };\n },\n decode: (encodedChange, context) => {\n const decoded = {\n fieldChanges: new Map(),\n nodeChanges: newTupleBTree(),\n nodeToParent: newTupleBTree(),\n nodeAliases: newTupleBTree(),\n crossFieldKeys: newCrossFieldKeyTable(),\n };\n decoded.fieldChanges = decodeFieldChangesFromJson(encodedChange.changes, undefined, decoded, context, idAllocatorFromMaxId(encodedChange.maxId));\n if (encodedChange.builds !== undefined) {\n decoded.builds = decodeDetachedNodes(encodedChange.builds, context);\n }\n if (encodedChange.refreshers !== undefined) {\n decoded.refreshers = decodeDetachedNodes(encodedChange.refreshers, context);\n }\n if (encodedChange.violations !== undefined) {\n decoded.constraintViolationCount = encodedChange.violations;\n }\n const decodedRevInfos = decodeRevisionInfos(encodedChange.revisions, context);\n if (decodedRevInfos !== undefined) {\n decoded.revisions = decodedRevInfos;\n }\n if (encodedChange.maxId !== undefined) {\n decoded.maxId = encodedChange.maxId;\n }\n return decoded;\n },\n };\n return withSchemaValidation(EncodedModularChangeset, modularChangeCodec, validator);\n}\nfunction getChangeHandler(fieldKinds, fieldKind) {\n if (fieldKind === genericFieldKind.identifier) {\n return genericFieldKind.changeHandler;\n }\n const handler = fieldKinds.get(fieldKind)?.kind.changeHandler;\n assert(handler !== undefined, 0x9c1 /* Unknown field kind */);\n return handler;\n}\nfunction encodeRevisionOpt(revisionCodec, revision, context) {\n if (revision === undefined) {\n return undefined;\n }\n return revision === context.revision ? undefined : revisionCodec.encode(revision, context);\n}\n//# sourceMappingURL=modularChangeCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { unionOptions } from \"../../codec/index.js\";\nimport { RevisionTagSchema } from \"../../core/index.js\";\nimport { ChangesetLocalIdSchema, EncodedChangeAtomId } from \"../modular-schema/index.js\";\nexport var DetachIdOverrideType;\n(function (DetachIdOverrideType) {\n /**\n * The detach effect is the inverse of the prior attach characterized by the accompanying `CellId`'s revision and\n * local ID.\n *\n * An override is needed in such a case to ensure that rollbacks and undos return tree content to the appropriate\n * detached root. It is also needed to ensure that cell comparisons work properly for undos.\n */\n DetachIdOverrideType[DetachIdOverrideType[\"Unattach\"] = 0] = \"Unattach\";\n /**\n * The detach effect is reapplying a prior detach.\n *\n * The accompanying cell ID is used in two ways:\n * - It indicates the location of the cell (including adjacent cell information) so that rebasing over this detach\n * can contribute the correct lineage information to the rebased mark.\n * - It specifies the revision and local ID that should be used to characterize the cell in the output context of\n * detach.\n */\n DetachIdOverrideType[DetachIdOverrideType[\"Redetach\"] = 1] = \"Redetach\";\n})(DetachIdOverrideType || (DetachIdOverrideType = {}));\nconst noAdditionalProps = { additionalProperties: false };\nconst CellCount = Type.Number({ multipleOf: 1, minimum: 1 });\nconst MoveId = ChangesetLocalIdSchema;\nconst HasMoveId = Type.Object({ id: MoveId });\nconst LineageEvent = Type.Tuple([\n RevisionTagSchema,\n ChangesetLocalIdSchema,\n /** count */\n CellCount,\n /** offset */\n Type.Number({ multipleOf: 1, minimum: 0 }),\n]);\nconst HasLineage = Type.Object({ lineage: Type.Optional(Type.Array(LineageEvent)) });\nconst IdRange = Type.Tuple([ChangesetLocalIdSchema, CellCount]);\nconst CellId = Type.Composite([\n HasLineage,\n Type.Object({\n atom: EncodedChangeAtomId,\n adjacentCells: Type.Optional(Type.Array(IdRange)),\n }),\n], noAdditionalProps);\nconst HasRevisionTag = Type.Object({ revision: Type.Optional(RevisionTagSchema) });\nconst Insert = Type.Composite([HasMoveId, HasRevisionTag], noAdditionalProps);\nconst HasMoveFields = Type.Composite([\n HasMoveId,\n HasRevisionTag,\n Type.Object({ finalEndpoint: Type.Optional(EncodedChangeAtomId) }),\n]);\nconst MoveIn = Type.Composite([HasMoveFields], noAdditionalProps);\nconst DetachIdOverride = Type.Object({\n type: Type.Enum(DetachIdOverrideType),\n id: CellId,\n}, noAdditionalProps);\nconst DetachFields = Type.Object({\n idOverride: Type.Optional(DetachIdOverride),\n});\nconst Remove = Type.Composite([\n Type.Object({\n id: ChangesetLocalIdSchema,\n }),\n HasRevisionTag,\n DetachFields,\n], noAdditionalProps);\nconst MoveOut = Type.Composite([HasMoveFields, DetachFields], noAdditionalProps);\nconst Attach = Type.Object({\n insert: Type.Optional(Insert),\n moveIn: Type.Optional(MoveIn),\n}, unionOptions);\nconst Detach = Type.Object({\n // TODO:AB6715 rename to `remove`\n delete: Type.Optional(Remove),\n moveOut: Type.Optional(MoveOut),\n}, unionOptions);\nconst AttachAndDetach = Type.Object({\n attach: Attach,\n detach: Detach,\n});\nconst MarkEffect = Type.Object({\n // Note: `noop` is encoded by omitting `effect` from the encoded cell mark, so is not included here.\n insert: Type.Optional(Insert),\n moveIn: Type.Optional(MoveIn),\n // TODO:AB6715 rename to `remove`\n delete: Type.Optional(Remove),\n moveOut: Type.Optional(MoveOut),\n attachAndDetach: Type.Optional(AttachAndDetach),\n}, unionOptions);\nconst CellMark = (tMark, tNodeChange) => Type.Object({\n // If undefined, indicates a Noop mark.\n effect: Type.Optional(tMark),\n cellId: Type.Optional(CellId),\n changes: Type.Optional(tNodeChange),\n count: CellCount,\n}, noAdditionalProps);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = (tNodeChange) => CellMark(MarkEffect, tNodeChange);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = (tNodeChange) => Type.Array(Mark(tNodeChange));\n//# sourceMappingURL=formatV1.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeDetachedNodeId, } from \"../core/index.js\";\nexport function nodeIdFromChangeAtom(changeAtom) {\n return makeDetachedNodeId(changeAtom.revision, changeAtom.localId);\n}\n/**\n * Converts a `Delta.Root` whose tree content is represented with by `TIn` instances\n * into a `Delta.Root`whose tree content is represented with by `TOut` instances.\n *\n * This function is useful for converting `Delta`s that represent tree content with cursors\n * into `Delta`s that represent tree content with a deep-comparable representation of the content.\n * See {@link assertDeltaEqual}.\n * @param root - The delta to convert. Not mutated.\n * @param func - The functions used to map tree content.\n */\nexport function mapRootChanges(root, func) {\n const out = {};\n if (root.fields !== undefined) {\n out.fields = root.fields;\n }\n if (root.build !== undefined) {\n out.build = root.build.map(({ id, trees }) => ({\n id,\n trees: trees.map(func),\n }));\n }\n return out;\n}\n//# sourceMappingURL=deltaUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport const NoopMarkType = undefined;\n//# sourceMappingURL=types.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { areEqualChangeAtomIds, makeChangeAtomId, } from \"../../core/index.js\";\nimport { brand, fail } from \"../../util/index.js\";\nimport { CrossFieldTarget, } from \"../modular-schema/index.js\";\nimport { NoopMarkType, } from \"./types.js\";\nexport function isEmpty(change) {\n for (const mark of change) {\n if (mark.changes !== undefined || mark.type !== undefined) {\n return false;\n }\n }\n return true;\n}\nexport function createEmpty() {\n return [];\n}\nexport function getNestedChanges(change) {\n const output = [];\n let index = 0;\n for (const { changes, cellId, count } of change) {\n if (changes !== undefined) {\n output.push([changes, cellId === undefined ? index : undefined]);\n }\n if (cellId === undefined) {\n index += count;\n }\n }\n return output;\n}\nexport function isNewAttach(mark, revision) {\n return isNewAttachEffect(mark, mark.cellId, revision);\n}\nexport function isNewAttachEffect(effect, cellId, revision) {\n return ((isAttach(effect) &&\n cellId !== undefined &&\n (effect.revision ?? revision) === (cellId.revision ?? revision)) ||\n (isAttachAndDetachEffect(effect) && isNewAttachEffect(effect.attach, cellId, revision)));\n}\nexport function isRename(mark) {\n return mark.type === \"Rename\";\n}\nexport function isInsert(mark) {\n return mark.type === \"Insert\";\n}\nexport function isAttach(effect) {\n return effect.type === \"Insert\" || effect.type === \"MoveIn\";\n}\nexport function isReattach(mark) {\n return isReattachEffect(mark, mark.cellId);\n}\nexport function isReattachEffect(effect, cellId) {\n return isAttach(effect) && !isNewAttachEffect(effect, cellId);\n}\nexport function isActiveReattach(mark) {\n return isAttach(mark) && isReattachEffect(mark, mark.cellId) && mark.cellId !== undefined;\n}\nexport function areEqualCellIds(a, b) {\n if (a === undefined || b === undefined) {\n return a === b;\n }\n return areEqualChangeAtomIds(a, b);\n}\nexport function getInputCellId(mark) {\n return mark.cellId;\n}\nexport function getOutputCellId(mark) {\n if (isDetach(mark) || isRename(mark)) {\n return getDetachOutputCellId(mark);\n }\n else if (markFillsCells(mark)) {\n return undefined;\n }\n else if (isAttachAndDetachEffect(mark)) {\n return getDetachOutputCellId(mark.detach);\n }\n return getInputCellId(mark);\n}\nexport function cellSourcesFromMarks(marks, contextGetter) {\n const set = new Set();\n for (const mark of marks) {\n const cell = contextGetter(mark);\n if (cell !== undefined) {\n set.add(cell.revision);\n }\n }\n return set;\n}\nexport var CellOrder;\n(function (CellOrder) {\n CellOrder[CellOrder[\"SameCell\"] = 0] = \"SameCell\";\n CellOrder[CellOrder[\"OldThenNew\"] = 1] = \"OldThenNew\";\n CellOrder[CellOrder[\"NewThenOld\"] = 2] = \"NewThenOld\";\n})(CellOrder || (CellOrder = {}));\n/**\n * Determines the order of two cells from two changesets.\n *\n * This function makes the following assumptions:\n * 1. The cells represent the same context.\n * 2. `oldMarkCell` is from a mark in a changeset that is older than the changeset that contains the mark that\n * `newMarkCell` is from.\n * 3. In terms of sequence index, all cells located before A are also located before B,\n * and all cells located before B are also located before A.\n * 4. If a changeset has a mark/tombstone that describes a cell named in some revision R,\n * then that changeset must contain marks/tombstones for all cells named in R as well as all cells named in later\n * revisions up to its own.\n * 5. If a changeset foo is rebased over a changeset bar, then the rebased version of foo must contain tombstones or\n * marks for all cells referenced or named in bar. It has yet to be determined whether this assumption is necessary\n * for the logic below.\n *\n * @param oldMarkCell - The cell referenced or named by a mark or tombstone from the older changeset.\n * @param newMarkCell - The cell referenced or named by a mark or tombstone from the newer changeset.\n * @param oldChangeKnowledge - The set of revisions that the older changeset has cell representations for.\n * @param newChangeKnowledge - The set of revisions that the newer changeset has cell representations for.\n * @param metadata - Revision metadata for the operation being carried out.\n * @returns a {@link CellOrder} which describes how the cells are ordered relative to one-another.\n */\nexport function compareCellPositionsUsingTombstones(oldMarkCell, newMarkCell, oldChangeKnowledge, newChangeKnowledge, metadata) {\n if (areEqualChangeAtomIds(oldMarkCell, newMarkCell)) {\n return CellOrder.SameCell;\n }\n const oldChangeKnowsOfNewMarkCellRevision = oldChangeKnowledge.has(newMarkCell.revision);\n const newChangeKnowsOfOldMarkCellRevision = newChangeKnowledge.has(oldMarkCell.revision);\n if (oldChangeKnowsOfNewMarkCellRevision && newChangeKnowsOfOldMarkCellRevision) {\n // If both changesets know of both cells, but we've been asked to compare different cells,\n // Then either the changesets they originate from do not represent the same context,\n // or the ordering of their cells in inconsistent.\n // The only exception to this is when we're composing anonymous changesets in a transaction.\n assert(oldMarkCell.revision === undefined && newMarkCell.revision === undefined, 0x8a0 /* Inconsistent cell ordering */);\n // We are composing anonymous changesets in a transaction. The new changeset is creating a cell in a gap\n // where the old changeset knows of some now empty cell. We order the new cell relative to the old cell in a\n // way that is consistent with its tie-breaking behavior should the old cell be concurrently re-filled.\n // Since only tie-break left is supported at the moment, the new cell comes first.\n return CellOrder.NewThenOld;\n }\n if (newChangeKnowsOfOldMarkCellRevision) {\n // The changeset that contains `newMarkCell` has tombstones for the revision that created `oldMarkCell`,\n // so a tombstone/mark matching `oldMarkCell` must occur later in the newer changeset.\n return CellOrder.NewThenOld;\n }\n else if (oldChangeKnowsOfNewMarkCellRevision) {\n // The changeset that contains `oldMarkCell` has tombstones for revision that created `newMarkCell`,\n // so a tombstone/mark matching `newMarkCell` must occur later in the older changeset.\n return CellOrder.OldThenNew;\n }\n else {\n // These cells are only ordered through tie-breaking.\n // Since tie-breaking is hard-coded to \"merge left\", the younger cell comes first.\n // In the context of compose, an undefined revision means we are composing anonymous changesets into\n // a transaction, which means the cell from the newer changeset is younger.\n if (newMarkCell.revision === undefined) {\n return CellOrder.NewThenOld;\n }\n // The only case where the old mark cell should have no revision is when composing anonymous changesets\n // into a transaction, in which case the new mark cell should also have no revision, which is handled above.\n // In all other cases, the old mark cell should have a revision.\n assert(oldMarkCell.revision !== undefined, 0x8a1 /* Old mark cell should have a revision */);\n // Note that these indices are for ordering the revisions in which the cells were named, not the revisions\n // of the changesets in which the marks targeting these cells appear.\n const oldCellRevisionIndex = metadata.getIndex(oldMarkCell.revision);\n const newCellRevisionIndex = metadata.getIndex(newMarkCell.revision);\n // If the metadata defines an ordering for the revisions then the cell from the newer revision comes first.\n if (newCellRevisionIndex !== undefined && oldCellRevisionIndex !== undefined) {\n return newCellRevisionIndex > oldCellRevisionIndex\n ? CellOrder.NewThenOld\n : CellOrder.OldThenNew;\n }\n if (newCellRevisionIndex === undefined && oldCellRevisionIndex === undefined) {\n // While it is possible for both marks to refer to cells that were named in revisions that are outside\n // the scope of the metadata, such a scenario should be handled above due to the fact that one of the two\n // changesets should have tombstones or marks for both cells.\n //\n // To see this in the context of rebase, we must consider the lowest common ancestor (LCA) of each change's\n // original (i.e., unrebased) edit with the head of the branch they will both reside on after the rebase.\n // ...─(Ti)─...─(Tj)─...─(old')─(new') <- branch both change will reside on after rebase\n // | └─...─(new)\n // └─...─(old)\n // In the diagram above we can see that by the time `new` is being rebased over `old`, both changesets have\n // been rebased over, and therefore have cell information for, changes `Tj` onwards. This means that one of\n // The two changesets (the `old` one in the diagram above) will have tombstones or marks for any cells that\n // `new` refers to so long as those cells were not created on `new`'s branch.\n // Note that the change that contains the superset of cells (again, ignoring cells created on the other\n // change's branch) is not always the older change. Consider the following scenario:\n // ...─(Ti)─...─(Tj)─...─(old')─(new')\n // | └─...─(old)\n // └─...─(new)\n //\n // The same scenario can arise in the context of compose (just consider composing `old'` and `new'` from\n // the examples above) with the same resolution.\n assert(false, 0x8a2 /* Invalid cell ordering scenario */);\n }\n // The absence of metadata for a cell with a defined revision means that the cell is from a revision that\n // predates the edits that are within the scope of the metadata. Such a cell is therefore older than the one\n // for which we do have metadata.\n return oldCellRevisionIndex === undefined ? CellOrder.NewThenOld : CellOrder.OldThenNew;\n }\n}\n/**\n * @returns the ID of the cell in the output context of the given detach `mark`.\n */\nexport function getDetachOutputCellId(mark) {\n if (isRename(mark)) {\n return mark.idOverride;\n }\n if (mark.idOverride !== undefined) {\n return mark.idOverride;\n }\n return mark.revision === undefined\n ? { localId: mark.id }\n : { revision: mark.revision, localId: mark.id };\n}\n/**\n * @returns the ID of the detached node in the output context of the given detach `mark`.\n */\nexport function getDetachedNodeId(mark) {\n switch (mark.type) {\n case \"Rename\":\n case \"Remove\": {\n return getDetachOutputCellId(mark);\n }\n case \"MoveOut\": {\n return makeChangeAtomId(mark.id, mark.revision);\n }\n default:\n unreachableCase(mark);\n }\n}\n/**\n * Preserves the semantics of the given `mark` but repackages it into a `DetachOfRemovedNodes` when possible.\n */\nexport function normalizeCellRename(cellId, count, attach, detach) {\n if (attach.type === \"MoveIn\") {\n if (detach.type === \"MoveOut\") {\n const outputId = getDetachOutputCellId(detach);\n // Note that the output ID may be the same as the cellId. In such a scenario,\n // we output an (impact-less) Rename mark anyway (as opposed to a Skip)\n // because the resulting Rename may be rebased over other changes that rename the input cell,\n // eventually leading to an impactful rename.\n return {\n type: \"Rename\",\n count,\n cellId,\n idOverride: outputId,\n };\n }\n }\n else {\n // Normalization: when the attach is an insert/revive, we rely on the implicit reviving semantics of the\n // detach instead of using an explicit revive effect in an AttachAndDetach\n return {\n ...detach,\n count,\n cellId,\n };\n }\n return {\n type: \"AttachAndDetach\",\n attach,\n detach,\n count,\n cellId,\n };\n}\n/**\n * Preserves the semantics of the given `mark` but repackages it into an `AttachAndDetach` mark if it is not already one.\n */\nexport function asAttachAndDetach(mark) {\n if (mark.type === \"AttachAndDetach\") {\n return mark;\n }\n const { cellId, count, changes, revision, ...effect } = mark;\n const attachAndDetach = {\n type: \"AttachAndDetach\",\n count,\n cellId,\n attach: {\n type: \"Insert\",\n id: mark.id,\n },\n detach: effect,\n };\n if (changes !== undefined) {\n attachAndDetach.changes = changes;\n }\n if (revision !== undefined) {\n attachAndDetach.attach.revision = revision;\n attachAndDetach.detach.revision = revision;\n }\n return attachAndDetach;\n}\nexport function cloneMark(mark) {\n const clone = { ...cloneMarkEffect(mark), count: mark.count };\n if (mark.cellId !== undefined) {\n clone.cellId = cloneCellId(mark.cellId);\n }\n return clone;\n}\nexport function cloneMarkEffect(effect) {\n const clone = { ...effect };\n if (clone.type === \"AttachAndDetach\") {\n clone.attach = cloneMarkEffect(clone.attach);\n clone.detach = cloneMarkEffect(clone.detach);\n }\n return clone;\n}\nexport function cloneCellId(id) {\n const cloned = { ...id };\n return cloned;\n}\n/**\n * @param mark - The mark to get the length of.\n * @param ignorePairing - When true, the length of a paired mark (e.g. MoveIn/MoveOut) whose matching mark is not active\n * will be treated the same as if the matching mark were active.\n * @returns The number of nodes within the output context of the mark.\n */\nexport function getOutputLength(mark, ignorePairing = false) {\n return areOutputCellsEmpty(mark) ? 0 : mark.count;\n}\n/**\n * @param mark - The mark to get the length of.\n * @returns The number of nodes within the input context of the mark.\n */\nexport function getInputLength(mark) {\n return areInputCellsEmpty(mark) ? 0 : mark.count;\n}\nexport function markEmptiesCells(mark) {\n return !areInputCellsEmpty(mark) && areOutputCellsEmpty(mark);\n}\nexport function markFillsCells(mark) {\n return areInputCellsEmpty(mark) && !areOutputCellsEmpty(mark);\n}\nexport function markHasCellEffect(mark) {\n return areInputCellsEmpty(mark) !== areOutputCellsEmpty(mark);\n}\nexport function isAttachAndDetachEffect(effect) {\n return effect.type === \"AttachAndDetach\";\n}\nexport function isDetachOfRemovedNodes(mark) {\n return isDetach(mark) && mark.cellId !== undefined;\n}\nexport function isImpactfulCellRename(mark) {\n return (isAttachAndDetachEffect(mark) || isDetachOfRemovedNodes(mark)) && isImpactful(mark);\n}\nexport function areInputCellsEmpty(mark) {\n return mark.cellId !== undefined;\n}\nexport function areOutputCellsEmpty(mark) {\n const type = mark.type;\n switch (type) {\n case NoopMarkType:\n return mark.cellId !== undefined;\n case \"Remove\":\n case \"Rename\":\n case \"MoveOut\":\n case \"AttachAndDetach\":\n return true;\n case \"MoveIn\":\n case \"Insert\":\n return false;\n default:\n unreachableCase(type);\n }\n}\n/**\n * Creates a mark that is equivalent to the given `mark` but with effects removed if those have no impact in the input\n * context of that mark.\n *\n * @param mark - The mark to settle. Never mutated.\n * @returns either the original mark or a shallow clone of it with effects stripped out.\n */\nexport function settleMark(mark) {\n if (isImpactful(mark)) {\n return mark;\n }\n return omitMarkEffect(mark);\n}\n/**\n * @returns true, iff the given `mark` would have impact on the field when applied.\n * Ignores the impact of nested changes.\n * CellRename effects are considered impactful if they actually change the ID of the cells.\n */\nexport function isImpactful(mark) {\n const type = mark.type;\n switch (type) {\n case NoopMarkType:\n return false;\n case \"Rename\":\n return true;\n case \"Remove\": {\n const inputId = getInputCellId(mark);\n if (inputId === undefined) {\n return true;\n }\n const outputId = getOutputCellId(mark);\n assert(outputId !== undefined, 0x824 /* Remove marks must have an output cell ID */);\n return !areEqualChangeAtomIds(inputId, outputId);\n }\n case \"AttachAndDetach\":\n case \"MoveOut\":\n return true;\n case \"MoveIn\":\n // MoveIn marks always target an empty cell.\n assert(mark.cellId !== undefined, 0x825 /* MoveIn marks should target empty cells */);\n return true;\n case \"Insert\":\n // A Revive has no impact if the nodes are already in the document.\n return mark.cellId !== undefined;\n default:\n unreachableCase(type);\n }\n}\nexport function isTombstone(mark) {\n return mark.type === NoopMarkType && mark.cellId !== undefined && mark.changes === undefined;\n}\nexport function isNoopMark(mark) {\n return mark.type === NoopMarkType;\n}\nexport function areOverlappingIdRanges(id1, count1, id2, count2) {\n const lastId1 = id1 + count1 - 1;\n const lastId2 = id2 + count2 - 1;\n return (id2 <= id1 && id1 <= lastId2) || (id1 <= id2 && id2 <= lastId1);\n}\nexport function compareCellsFromSameRevision(cell1, count1, cell2, count2) {\n assert(cell1.revision === cell2.revision, 0x85b /* Expected cells to have the same revision */);\n if (areOverlappingIdRanges(cell1.localId, count1, cell2.localId, count2)) {\n return cell1.localId - cell2.localId;\n }\n return undefined;\n}\nexport function isDetach(mark) {\n const type = mark?.type;\n return type === \"Remove\" || type === \"MoveOut\";\n}\nexport function isRemoveMark(mark) {\n return mark?.type === \"Remove\";\n}\nfunction areMergeableChangeAtoms(lhs, lhsCount, rhs) {\n if (lhs === undefined || rhs === undefined) {\n return lhs === undefined && rhs === undefined;\n }\n return (lhs.revision === rhs.revision && areAdjacentIdRanges(lhs.localId, lhsCount, rhs.localId));\n}\nfunction areAdjacentIdRanges(firstStart, firstLength, secondStart) {\n return firstStart + firstLength === secondStart;\n}\nfunction haveMergeableIdOverrides(lhs, lhsCount, rhs) {\n if (lhs.idOverride !== undefined && rhs.idOverride !== undefined) {\n return areMergeableCellIds(lhs.idOverride, lhsCount, rhs.idOverride);\n }\n return (lhs.idOverride === undefined) === (rhs.idOverride === undefined);\n}\nfunction areMergeableCellIds(lhs, lhsCount, rhs) {\n return areMergeableChangeAtoms(lhs, lhsCount, rhs);\n}\n/**\n * Attempts to extend `lhs` to include the effects of `rhs`.\n * @param lhs - The mark to extend.\n * @param rhs - The effect so extend `rhs` with.\n * @returns `lhs` iff the function was able to mutate `lhs` to include the effects of `rhs`.\n * When `undefined` is returned, `lhs` is left untouched.\n */\nexport function tryMergeMarks(lhs, rhs) {\n if (rhs.type !== lhs.type) {\n return undefined;\n }\n if (!areMergeableCellIds(lhs.cellId, lhs.count, rhs.cellId)) {\n return undefined;\n }\n if (rhs.changes !== undefined || lhs.changes !== undefined) {\n return undefined;\n }\n const mergedEffect = tryMergeEffects(lhs, rhs, lhs.count);\n if (mergedEffect === undefined) {\n return undefined;\n }\n return { ...lhs, ...mergedEffect, count: lhs.count + rhs.count };\n}\nfunction tryMergeEffects(lhs, rhs, lhsCount) {\n if (lhs.type !== rhs.type) {\n return undefined;\n }\n if (rhs.type === NoopMarkType) {\n return lhs;\n }\n if (rhs.type === \"AttachAndDetach\") {\n const lhsAttachAndDetach = lhs;\n const attach = tryMergeEffects(lhsAttachAndDetach.attach, rhs.attach, lhsCount);\n const detach = tryMergeEffects(lhsAttachAndDetach.detach, rhs.detach, lhsCount);\n if (attach === undefined || detach === undefined) {\n return undefined;\n }\n assert(isAttach(attach) && isDetach(detach), 0x826 /* Merged marks should be same type as input marks */);\n return { ...lhsAttachAndDetach, attach, detach };\n }\n if (lhs.revision !== rhs.revision) {\n return undefined;\n }\n if (isDetach(lhs) && isDetach(rhs) && !haveMergeableIdOverrides(lhs, lhsCount, rhs)) {\n return undefined;\n }\n const type = rhs.type;\n switch (type) {\n case \"MoveIn\": {\n const lhsMoveIn = lhs;\n if (lhsMoveIn.id + lhsCount === rhs.id &&\n areMergeableChangeAtoms(lhsMoveIn.finalEndpoint, lhsCount, rhs.finalEndpoint)) {\n return lhsMoveIn;\n }\n break;\n }\n case \"Remove\": {\n const lhsDetach = lhs;\n if (lhsDetach.id + lhsCount === rhs.id &&\n haveMergeableIdOverrides(lhsDetach, lhsCount, rhs)) {\n return lhsDetach;\n }\n break;\n }\n case \"Rename\": {\n const lhsDetach = lhs;\n if (haveMergeableIdOverrides(lhsDetach, lhsCount, rhs)) {\n return lhsDetach;\n }\n break;\n }\n case \"MoveOut\": {\n const lhsMoveOut = lhs;\n if (lhsMoveOut.id + lhsCount === rhs.id &&\n haveMergeableIdOverrides(lhsMoveOut, lhsCount, rhs) &&\n areMergeableChangeAtoms(lhsMoveOut.finalEndpoint, lhsCount, rhs.finalEndpoint)) {\n return lhsMoveOut;\n }\n break;\n }\n case \"Insert\": {\n const lhsInsert = lhs;\n if (lhsInsert.id + lhsCount === rhs.id) {\n return lhsInsert;\n }\n break;\n }\n default:\n unreachableCase(type);\n }\n return undefined;\n}\n/**\n * Splits the `mark` into two marks such that the first returned mark has length `length`.\n * @param mark - The mark to split.\n * @param revision - The revision of the changeset the mark is part of.\n * @param length - The desired length for the first of the two returned marks.\n * @param genId - An ID allocator\n * @param moveEffects - The table in which to record splitting of move marks\n * @param recordMoveEffect - Whether when splitting a move an entry should be added to `moveEffects` indicating that the mark should be split (in case we process this mark again).\n * An entry is always added to `moveEffects` indicating that the opposite end of the move should be split.\n * @returns A pair of marks equivalent to the original `mark`\n * such that the first returned mark has input length `length`.\n */\nexport function splitMark(mark, length) {\n const markLength = mark.count;\n const remainder = markLength - length;\n if (length < 1 || remainder < 1) {\n fail(\"Unable to split mark due to lengths\");\n }\n const [effect1, effect2] = splitMarkEffect(mark, length);\n const mark1 = { ...mark, ...effect1, count: length };\n const mark2 = { ...mark, ...effect2, count: remainder };\n if (mark2.cellId !== undefined) {\n mark2.cellId = splitDetachEvent(mark2.cellId, length);\n }\n return [mark1, mark2];\n}\nexport function splitMarkEffect(effect, length) {\n const type = effect.type;\n switch (type) {\n case NoopMarkType:\n return [effect, effect];\n case \"Insert\": {\n const effect1 = {\n ...effect,\n };\n const effect2 = {\n ...effect,\n id: effect.id + length,\n };\n return [effect1, effect2];\n }\n case \"MoveIn\": {\n const effect2 = { ...effect, id: effect.id + length };\n const move2 = effect2;\n if (move2.finalEndpoint !== undefined) {\n move2.finalEndpoint = splitDetachEvent(move2.finalEndpoint, length);\n }\n return [effect, effect2];\n }\n case \"Remove\": {\n const effect1 = { ...effect };\n const id2 = brand(effect.id + length);\n const effect2 = { ...effect, id: id2 };\n const effect2Remove = effect2;\n if (effect2Remove.idOverride !== undefined) {\n effect2Remove.idOverride = splitDetachEvent(effect2Remove.idOverride, length);\n }\n return [effect1, effect2];\n }\n case \"Rename\": {\n const effect1 = { ...effect };\n const effect2 = { ...effect };\n const effect2Rename = effect2;\n if (effect2Rename.idOverride !== undefined) {\n effect2Rename.idOverride = splitDetachEvent(effect2Rename.idOverride, length);\n }\n return [effect1, effect2];\n }\n case \"MoveOut\": {\n const effect2 = {\n ...effect,\n id: effect.id + length,\n };\n const return2 = effect2;\n if (return2.idOverride !== undefined) {\n return2.idOverride = splitDetachEvent(return2.idOverride, length);\n }\n if (return2.finalEndpoint !== undefined) {\n return2.finalEndpoint = splitDetachEvent(return2.finalEndpoint, length);\n }\n return [effect, effect2];\n }\n case \"AttachAndDetach\": {\n const [attach1, attach2] = splitMarkEffect(effect.attach, length);\n const [detach1, detach2] = splitMarkEffect(effect.detach, length);\n const effect1 = {\n ...effect,\n attach: attach1,\n detach: detach1,\n };\n const effect2 = {\n ...effect,\n attach: attach2,\n detach: detach2,\n };\n return [effect1, effect2];\n }\n default:\n unreachableCase(type);\n }\n}\nfunction splitDetachEvent(detachEvent, length) {\n return { ...detachEvent, localId: brand(detachEvent.localId + length) };\n}\n// TODO: Refactor MarkEffect into a field of CellMark so this function isn't necessary.\nexport function extractMarkEffect(mark) {\n const { cellId: _cellId, count: _count, changes: _changes, ...effect } = mark;\n return effect;\n}\n// TODO: Refactor MarkEffect into a field of CellMark so this function isn't necessary.\nexport function omitMarkEffect(mark) {\n const { cellId, count, changes } = mark;\n const noopMark = { count };\n if (cellId !== undefined) {\n noopMark.cellId = cellId;\n }\n if (changes !== undefined) {\n noopMark.changes = changes;\n }\n return noopMark;\n}\nexport function withNodeChange(mark, changes) {\n const newMark = { ...mark };\n if (changes !== undefined) {\n newMark.changes = changes;\n }\n else {\n delete newMark.changes;\n }\n return newMark;\n}\nexport function withRevision(mark, revision) {\n if (revision === undefined) {\n return mark;\n }\n const cloned = cloneMark(mark);\n addRevision(cloned, revision);\n if (cloned.cellId !== undefined &&\n cloned.cellId.revision === undefined &&\n revision !== undefined) {\n cloned.cellId.revision = revision;\n }\n return cloned;\n}\nfunction addRevision(effect, revision) {\n if (effect.type === NoopMarkType || isRename(effect)) {\n return;\n }\n if (effect.type === \"AttachAndDetach\") {\n addRevision(effect.attach, revision);\n addRevision(effect.detach, revision);\n return;\n }\n assert(effect.revision === undefined || effect.revision === revision, 0x829 /* Should not overwrite mark revision */);\n effect.revision = revision;\n}\nexport function getEndpoint(effect) {\n return effect.finalEndpoint ?? { revision: effect.revision, localId: effect.id };\n}\nexport function getCrossFieldKeys(change) {\n const keys = [];\n for (const mark of change) {\n keys.push(...getCrossFieldKeysForMarkEffect(mark, mark.count));\n }\n return keys;\n}\nfunction getCrossFieldKeysForMarkEffect(effect, count) {\n switch (effect.type) {\n case \"Insert\":\n // An insert behaves like a move where the source and destination are at the same location.\n // An insert can become a move when after rebasing.\n return [\n [CrossFieldTarget.Source, effect.revision, effect.id, count],\n [CrossFieldTarget.Destination, effect.revision, effect.id, count],\n ];\n case \"MoveOut\":\n return [[CrossFieldTarget.Source, effect.revision, effect.id, count]];\n case \"MoveIn\":\n return [[CrossFieldTarget.Destination, effect.revision, effect.id, count]];\n case \"AttachAndDetach\":\n return [\n ...getCrossFieldKeysForMarkEffect(effect.attach, count),\n ...getCrossFieldKeysForMarkEffect(effect.detach, count),\n ];\n default:\n return [];\n }\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { brand } from \"../../util/index.js\";\nimport { CrossFieldTarget, } from \"../modular-schema/index.js\";\nimport { isAttachAndDetachEffect, splitMark, splitMarkEffect } from \"./utils.js\";\nexport var MoveEnd;\n(function (MoveEnd) {\n MoveEnd[MoveEnd[\"Source\"] = 0] = \"Source\";\n MoveEnd[MoveEnd[\"Dest\"] = 1] = \"Dest\";\n})(MoveEnd || (MoveEnd = {}));\nexport function setMoveEffect(moveEffects, target, revision, id, count, effect, invalidate = true) {\n effect.basis = id;\n moveEffects.set(target, revision, id, count, effect, invalidate);\n}\nexport function getMoveEffect(moveEffects, target, revision, id, count, addDependency = true) {\n const result = moveEffects.get(target, revision, id, count, addDependency);\n return result.value !== undefined\n ? { ...result, value: adjustMoveEffectBasis(result.value, id) }\n : result;\n}\nexport function isMoveMark(effect) {\n return isMoveOut(effect) || isMoveIn(effect);\n}\nexport function isMoveOut(effect) {\n return effect.type === \"MoveOut\";\n}\nexport function isMoveIn(effect) {\n return effect.type === \"MoveIn\";\n}\nexport function getMoveIn(effect) {\n switch (effect.type) {\n case \"MoveIn\":\n return effect;\n case \"AttachAndDetach\":\n return getMoveIn(effect.attach);\n default:\n return undefined;\n }\n}\nfunction adjustMoveEffectBasis(effect, newBasis) {\n if (effect.basis === newBasis) {\n return effect;\n }\n const adjusted = { ...effect, basis: newBasis };\n const basisShift = newBasis - effect.basis;\n assert(basisShift > 0, 0x812 /* Expected basis shift to be positive */);\n if (effect.endpoint !== undefined) {\n adjusted.endpoint = adjustChangeAtomId(effect.endpoint, basisShift);\n }\n if (effect.truncatedEndpoint !== undefined) {\n adjusted.truncatedEndpoint = adjustChangeAtomId(effect.truncatedEndpoint, basisShift);\n }\n if (effect.truncatedEndpointForInner !== undefined) {\n adjusted.truncatedEndpointForInner = adjustChangeAtomId(effect.truncatedEndpointForInner, basisShift);\n }\n if (effect.movedEffect !== undefined) {\n const [_mark1, mark2] = splitMarkEffect(effect.movedEffect, basisShift);\n adjusted.movedEffect = mark2;\n }\n return adjusted;\n}\nexport function splitMarkForMoveEffects(mark, effects) {\n const length = getFirstMoveEffectLength(mark, mark.count, effects);\n return length < mark.count ? splitMark(mark, length) : [mark];\n}\nfunction getFirstMoveEffectLength(markEffect, count, effects) {\n if (isMoveMark(markEffect)) {\n return getMoveEffect(effects, getCrossFieldTargetFromMove(markEffect), markEffect.revision, markEffect.id, count).length;\n }\n else if (isAttachAndDetachEffect(markEffect)) {\n return Math.min(getFirstMoveEffectLength(markEffect.attach, count, effects), getFirstMoveEffectLength(markEffect.detach, count, effects));\n }\n return count;\n}\nexport function getCrossFieldTargetFromMove(mark) {\n const type = mark.type;\n switch (type) {\n case \"MoveIn\":\n return CrossFieldTarget.Destination;\n case \"MoveOut\":\n return CrossFieldTarget.Source;\n default:\n unreachableCase(type);\n }\n}\nfunction adjustChangeAtomId(id, shift) {\n return {\n ...id,\n localId: brand(id.localId + shift),\n };\n}\n//# sourceMappingURL=moveEffectTable.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { offsetDetachId } from \"../../core/index.js\";\nimport { nodeIdFromChangeAtom } from \"../deltaUtils.js\";\nimport { isAttachAndDetachEffect, isDetachOfRemovedNodes, isInsert } from \"./utils.js\";\nexport function* relevantRemovedRoots(change, relevantRemovedRootsFromChild) {\n for (const mark of change) {\n if (refersToRelevantRemovedRoots(mark)) {\n assert(mark.cellId !== undefined, 0x81d /* marks referring to removed trees must have an assigned cell ID */);\n const nodeId = nodeIdFromChangeAtom(mark.cellId);\n for (let i = 0; i < mark.count; i += 1) {\n yield offsetDetachId(nodeId, i);\n }\n }\n if (mark.changes !== undefined) {\n yield* relevantRemovedRootsFromChild(mark.changes);\n }\n }\n}\nfunction refersToRelevantRemovedRoots(mark) {\n if (mark.cellId !== undefined) {\n const effect = isAttachAndDetachEffect(mark) ? mark.attach : mark;\n if (isInsert(effect)) {\n // This tree is being inserted or restored.\n return true;\n }\n else if (isDetachOfRemovedNodes(mark)) {\n // This removed tree is being restored as part of a detach.\n return true;\n }\n if (mark.changes !== undefined) {\n // This removed tree is being edited.\n // Note: there is a possibility that the child changes only affect a distant descendant\n // which may have been removed from this (removed) subtree. In such a case, this tree is not truly\n // relevant, but including it is the conservative thing to do.\n // In the future, we may represent changes to removed trees using the ID of the lowest removed\n // ancestor, which would allow us to avoid including such trees when they truly are not needed.\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=relevantRemovedRoots.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { isNoopMark, isTombstone, tryMergeMarks as tryMergeMarks } from \"./utils.js\";\n/**\n * Helper class for constructing an offset list of marks that...\n * - Does not insert offsets if there is no content after them\n * - Does not insert 0-sized offsets\n * - Merges runs of offsets together\n * - Merges marks together\n */\nexport class MarkListFactory {\n constructor() {\n this.offset = 0;\n this.list = [];\n }\n push(...marks) {\n for (const item of marks) {\n this.pushContent(item);\n }\n }\n pushOffset(offset) {\n this.offset += offset;\n }\n pushContent(mark) {\n if (isNoopMark(mark) && mark.changes === undefined && !isTombstone(mark)) {\n this.pushOffset(mark.count);\n return;\n }\n if (this.offset > 0) {\n this.list.push({ count: this.offset });\n this.offset = 0;\n }\n const prev = this.list[this.list.length - 1];\n if (prev !== undefined && prev.type === mark.type) {\n const merged = tryMergeMarks(prev, mark);\n if (merged !== undefined) {\n this.list.splice(this.list.length - 1, 1, merged);\n return;\n }\n }\n this.list.push(mark);\n }\n}\n//# sourceMappingURL=markListFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { splitMarkForMoveEffects } from \"./moveEffectTable.js\";\nimport { splitMark } from \"./utils.js\";\nexport class MarkQueue {\n constructor(list, moveEffects) {\n this.list = list;\n this.moveEffects = moveEffects;\n this.stack = [];\n this.index = 0;\n this.list = list;\n }\n isEmpty() {\n return this.peek() === undefined;\n }\n dequeue() {\n const output = this.tryDequeue();\n assert(output !== undefined, 0x4e2 /* Unexpected end of mark queue */);\n return output;\n }\n tryDequeue() {\n const mark = this.stack.length > 0 ? this.stack.pop() : this.list[this.index++];\n if (mark === undefined) {\n return undefined;\n }\n const splitMarks = splitMarkForMoveEffects(mark, this.moveEffects);\n for (let i = splitMarks.length - 1; i > 0; i--) {\n this.stack.push(splitMarks[i] ?? oob());\n }\n return splitMarks[0];\n }\n /**\n * Dequeues the first `length` sized portion of the next mark,\n * or the entire next mark if `length` is longer than the mark's length.\n * @param length - The length to dequeue, measured in the input context.\n */\n dequeueUpTo(length) {\n const mark = this.dequeue();\n if (mark.count <= length) {\n return mark;\n }\n const [mark1, mark2] = splitMark(mark, length);\n this.stack.push(mark2);\n return mark1;\n }\n peek() {\n const mark = this.tryDequeue();\n if (mark !== undefined) {\n this.stack.push(mark);\n }\n return mark;\n }\n}\n//# sourceMappingURL=markQueue.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { offsetChangeAtomId, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { CrossFieldTarget, } from \"../modular-schema/index.js\";\nimport { MarkListFactory } from \"./markListFactory.js\";\nimport { MarkQueue } from \"./markQueue.js\";\nimport { getCrossFieldTargetFromMove, getMoveEffect, getMoveIn, isMoveIn, isMoveMark, isMoveOut, setMoveEffect, } from \"./moveEffectTable.js\";\nimport { NoopMarkType, } from \"./types.js\";\nimport { CellOrder, areEqualCellIds, areInputCellsEmpty, areOutputCellsEmpty, asAttachAndDetach, cellSourcesFromMarks, compareCellPositionsUsingTombstones, extractMarkEffect, getEndpoint, getInputCellId, getOutputCellId, isAttach, isAttachAndDetachEffect, isDetach, isImpactfulCellRename, isNewAttach, isNoopMark, isRename, markEmptiesCells, markFillsCells, markHasCellEffect, normalizeCellRename, settleMark, withNodeChange, withRevision, } from \"./utils.js\";\n/**\n * Composes a sequence of changesets into a single changeset.\n * @param changes - The changesets to be applied.\n * Parts of the input may be reused in the output, but the input is not mutated.\n * Each changeset in the list is assumed to be applicable after the previous one.\n * @returns A changeset that is equivalent to applying each of the given `changes` in order.\n *\n * WARNING! This implementation is incomplete:\n * - Tombstone information is ignored.\n * - Support for moves is not implemented.\n * - Support for slices is not implemented.\n */\nexport function compose(change1, change2, composeChild, _genId, manager, revisionMetadata) {\n return composeMarkLists(change1, change2, composeChild, manager, revisionMetadata);\n}\nfunction composeMarkLists(baseMarkList, newMarkList, composeChild, moveEffects, revisionMetadata) {\n const factory = new MarkListFactory();\n const queue = new ComposeQueue(baseMarkList, newMarkList, moveEffects, revisionMetadata);\n while (!queue.isEmpty()) {\n const { baseMark, newMark } = queue.pop();\n if (newMark === undefined) {\n assert(baseMark !== undefined, 0x4db /* Non-empty queue should not return two undefined marks */);\n factory.push(composeMark(baseMark, moveEffects, (node) => composeChildChanges(node, undefined, composeChild)));\n }\n else {\n // We only compose changesets that will not be further rebased.\n // It is therefore safe to remove any intentions that have no impact in the context they apply to.\n const settledNewMark = settleMark(newMark);\n if (baseMark === undefined) {\n factory.push(composeMark(settledNewMark, moveEffects, (node) => composeChildChanges(undefined, node, composeChild)));\n }\n else {\n // Past this point, we are guaranteed that `settledNewMark` and `baseMark` have the same length and\n // start at the same location in the revision after the base changes.\n // They therefore refer to the same range for that revision.\n const settledBaseMark = settleMark(baseMark);\n const composedMark = composeMarks(settledBaseMark, settledNewMark, composeChild, moveEffects);\n factory.push(composedMark);\n }\n }\n }\n return factory.list;\n}\n/**\n * Composes two marks where `newMark` is based on the state produced by `baseMark`.\n * @param baseMark - The mark to compose with `newMark`.\n * Its output range should be the same as `newMark`'s input range.\n * @param newRev - The revision the new mark is part of.\n * @param newMark - The mark to compose with `baseMark`.\n * Its input range should be the same as `baseMark`'s output range.\n * @returns A mark that is equivalent to applying both `baseMark` and `newMark` successively.\n */\nfunction composeMarks(baseMark, newMark, composeChild, moveEffects) {\n const nodeChange = handleNodeChanges(baseMark, newMark, composeChild, moveEffects);\n return withUpdatedEndpoint(withNodeChange(composeMarksIgnoreChild(baseMark, newMark, moveEffects), nodeChange), baseMark.count, moveEffects);\n}\nfunction composeMarksIgnoreChild(baseMark, newMark, moveEffects) {\n if (isNoopMark(baseMark)) {\n return newMark;\n }\n else if (isNoopMark(newMark)) {\n return baseMark;\n }\n if (isRename(baseMark) && isRename(newMark)) {\n return { ...baseMark, idOverride: newMark.idOverride };\n }\n else if (isRename(baseMark)) {\n assert(isAttach(newMark) || isAttachAndDetachEffect(newMark), 0x9f1 /* Unexpected mark type */);\n return { ...newMark, cellId: baseMark.cellId };\n }\n else if (isRename(newMark)) {\n assert(isDetach(baseMark) || isAttachAndDetachEffect(baseMark), 0x9f2 /* Unexpected mark type */);\n return isDetach(baseMark)\n ? { ...baseMark, idOverride: newMark.idOverride }\n : { ...baseMark, detach: { ...baseMark.detach, idOverride: newMark.idOverride } };\n }\n if (isImpactfulCellRename(newMark)) {\n const newAttachAndDetach = asAttachAndDetach(newMark);\n assert(newAttachAndDetach.cellId !== undefined, 0x9f3 /* Impactful cell rename must target empty cell */);\n const newDetachRevision = newAttachAndDetach.detach.revision;\n if (markEmptiesCells(baseMark)) {\n // baseMark is a detach which cancels with the attach portion of the AttachAndDetach,\n // so we are just left with the detach portion of the AttachAndDetach.\n const newDetach = {\n ...newAttachAndDetach.detach,\n count: baseMark.count,\n };\n if (isMoveIn(newAttachAndDetach.attach) && isMoveOut(newAttachAndDetach.detach)) {\n assert(isMoveOut(baseMark), 0x808 /* Unexpected mark type */);\n // The base changeset and new changeset both move these nodes.\n // Call the original position of the nodes A, the position after the base changeset is applied B,\n // and the position after the new changeset is applied C.\n // The new changeset moves the nodes from B, temporarily returns them to A, and then moves them to C.\n // The composition of the base and new changesets will be a move directly from A to C,\n // since the move from A to B cancels out with the return from B to A.\n // This if-block is handling marks at A.\n // When we compose the marks at B we will link the start of the base move (A to B)\n // with the end of the new move (B to C).\n // Because we are replacing the mark representing the start of the move with the new changeset's\n // move-out from A, we update the base move-in at B to consider that its start point.\n const newDetachId = {\n revision: newDetachRevision,\n localId: newAttachAndDetach.detach.id,\n };\n setTruncatedEndpointForInner(moveEffects, CrossFieldTarget.Destination, getEndpoint(baseMark), baseMark.count, newDetachId);\n const newEndpoint = getComposedEndpoint(moveEffects, CrossFieldTarget.Source, baseMark.revision, baseMark.id, baseMark.count);\n if (newEndpoint !== undefined) {\n changeFinalEndpoint(newDetach, newEndpoint);\n setTruncatedEndpoint(moveEffects, CrossFieldTarget.Destination, newEndpoint, baseMark.count, newDetachId);\n }\n }\n return newDetach;\n }\n if (isImpactfulCellRename(baseMark)) {\n assert(baseMark.cellId !== undefined, 0x9f4 /* Impactful cell rename must target empty cell */);\n const baseAttachAndDetach = asAttachAndDetach(baseMark);\n const newOutputId = getOutputCellId(newAttachAndDetach);\n if (areEqualCellIds(newOutputId, baseAttachAndDetach.cellId)) {\n return { count: baseAttachAndDetach.count, cellId: baseAttachAndDetach.cellId };\n }\n // `newMark`'s attach portion cancels with `baseMark`'s detach portion.\n const originalAttach = { ...baseAttachAndDetach.attach };\n const finalDetach = { ...newAttachAndDetach.detach };\n const detachRevision = finalDetach.revision;\n if (detachRevision !== undefined) {\n finalDetach.revision = detachRevision;\n }\n return normalizeCellRename(baseMark.cellId, baseMark.count, originalAttach, finalDetach);\n }\n return normalizeCellRename(newAttachAndDetach.cellId, newAttachAndDetach.count, newAttachAndDetach.attach, newAttachAndDetach.detach);\n }\n if (isImpactfulCellRename(baseMark)) {\n const baseAttachAndDetach = asAttachAndDetach(baseMark);\n if (markFillsCells(newMark)) {\n const originalAttach = withRevision({\n ...baseAttachAndDetach.attach,\n cellId: baseAttachAndDetach.cellId,\n count: baseAttachAndDetach.count,\n }, baseAttachAndDetach.attach.revision);\n if (isMoveIn(baseAttachAndDetach.attach) && isMoveOut(baseAttachAndDetach.detach)) {\n assert(isMoveIn(newMark), 0x809 /* Unexpected mark type */);\n const originalAttachId = {\n revision: baseAttachAndDetach.attach.revision,\n localId: baseAttachAndDetach.attach.id,\n };\n setTruncatedEndpointForInner(moveEffects, CrossFieldTarget.Source, getEndpoint(newMark), baseAttachAndDetach.count, originalAttachId);\n const newEndpoint = getComposedEndpoint(moveEffects, CrossFieldTarget.Destination, newMark.revision, newMark.id, newMark.count);\n if (newEndpoint !== undefined) {\n changeFinalEndpoint(originalAttach, newEndpoint);\n setTruncatedEndpoint(moveEffects, CrossFieldTarget.Source, newEndpoint, baseMark.count, originalAttachId);\n }\n }\n return originalAttach;\n }\n else {\n // Other mark types have been handled by previous conditional branches.\n assert(newMark.type === NoopMarkType, 0x80a /* Unexpected mark type */);\n return baseMark;\n }\n }\n if (!markHasCellEffect(baseMark) && !markHasCellEffect(newMark)) {\n return createNoopMark(newMark.count, undefined, getInputCellId(baseMark));\n }\n else if (!markHasCellEffect(baseMark)) {\n return newMark;\n }\n else if (!markHasCellEffect(newMark)) {\n return baseMark;\n }\n else if (areInputCellsEmpty(baseMark)) {\n assert(isDetach(newMark), 0x71c /* Unexpected mark type */);\n assert(isAttach(baseMark), 0x71d /* Expected generative mark */);\n const attach = extractMarkEffect(baseMark);\n const detach = extractMarkEffect(newMark);\n if (isMoveIn(attach) && isMoveOut(detach)) {\n const finalSource = getEndpoint(attach);\n const finalDest = getEndpoint(detach);\n setEndpoint(moveEffects, CrossFieldTarget.Source, finalSource, baseMark.count, finalDest);\n const truncatedEndpoint1 = getTruncatedEndpointForInner(moveEffects, CrossFieldTarget.Destination, attach.revision, attach.id, baseMark.count);\n if (truncatedEndpoint1 !== undefined) {\n setTruncatedEndpoint(moveEffects, CrossFieldTarget.Destination, finalDest, baseMark.count, truncatedEndpoint1);\n }\n setEndpoint(moveEffects, CrossFieldTarget.Destination, finalDest, baseMark.count, finalSource);\n const truncatedEndpoint2 = getTruncatedEndpointForInner(moveEffects, CrossFieldTarget.Source, detach.revision, detach.id, baseMark.count);\n if (truncatedEndpoint2 !== undefined) {\n setTruncatedEndpoint(moveEffects, CrossFieldTarget.Source, finalSource, baseMark.count, truncatedEndpoint2);\n }\n // The `finalEndpoint` field of AttachAndDetach move effect pairs is not used,\n // so we remove it as a normalization.\n delete attach.finalEndpoint;\n delete detach.finalEndpoint;\n }\n if (areEqualCellIds(getOutputCellId(newMark), baseMark.cellId)) {\n // The output and input cell IDs are the same, so this mark has no effect.\n return { count: baseMark.count, cellId: baseMark.cellId };\n }\n return normalizeCellRename(baseMark.cellId, baseMark.count, attach, detach);\n }\n else {\n const length = baseMark.count;\n return createNoopMark(length, undefined);\n }\n}\nfunction createNoopMark(length, nodeChange, cellId) {\n const mark = { count: length };\n if (nodeChange !== undefined) {\n assert(length === 1, 0x692 /* A mark with a node change must have length one */);\n mark.changes = nodeChange;\n }\n if (cellId !== undefined) {\n mark.cellId = cellId;\n }\n return mark;\n}\nfunction handleNodeChanges(baseMark, newMark, composeChild, moveEffects) {\n if (newMark.changes !== undefined) {\n const baseSource = getMoveIn(baseMark);\n // TODO: Make sure composeChild is not called twice on the node changes.\n if (baseSource !== undefined) {\n setModifyAfter(moveEffects, getEndpoint(baseSource), newMark.changes);\n return undefined;\n }\n }\n return composeChildChanges(baseMark.changes, newMark.changes, composeChild);\n}\nfunction composeChildChanges(baseChange, newChange, composeChild) {\n if (baseChange === undefined && newChange === undefined) {\n return undefined;\n }\n return composeChild(baseChange, newChange);\n}\nfunction composeMark(mark, moveEffects, composeChild) {\n const nodeChanges = mark.changes !== undefined ? composeChild(mark.changes) : undefined;\n const updatedMark = withUpdatedEndpoint(mark, mark.count, moveEffects);\n return withNodeChange(updatedMark, nodeChanges);\n}\nexport class ComposeQueue {\n constructor(baseMarks, newMarks, moveEffects, revisionMetadata) {\n this.moveEffects = moveEffects;\n this.revisionMetadata = revisionMetadata;\n this.baseMarks = new MarkQueue(baseMarks, moveEffects);\n this.newMarks = new MarkQueue(newMarks, moveEffects);\n this.baseMarksCellSources = cellSourcesFromMarks(baseMarks, getOutputCellId);\n this.newMarksCellSources = cellSourcesFromMarks(newMarks, getInputCellId);\n }\n isEmpty() {\n return this.baseMarks.isEmpty() && this.newMarks.isEmpty();\n }\n pop() {\n const baseMark = this.baseMarks.peek();\n const newMark = this.newMarks.peek();\n if (baseMark === undefined && newMark === undefined) {\n return {};\n }\n else if (baseMark === undefined) {\n return this.dequeueNew();\n }\n else if (newMark === undefined) {\n return this.dequeueBase();\n }\n else if (areOutputCellsEmpty(baseMark) && areInputCellsEmpty(newMark)) {\n const baseCellId = getOutputCellId(baseMark) ?? fail(\"Expected defined output ID\");\n if (markEmptiesCells(baseMark) && baseCellId.revision === undefined) {\n // The base revision should always be defined except when squashing changes into a transaction.\n // In the future, we want to support reattaches in the new change here.\n // We will need to be able to order the base mark relative to the new mark\n // (which requires the local changes to have a revision tag))\n assert(isNewAttach(newMark), 0x695 /* TODO: Assign revision tags to each change in a transaction */);\n return this.dequeueNew();\n }\n const newCellId = getInputCellId(newMark);\n assert(newCellId !== undefined, 0x89d /* Both marks should have cell IDs */);\n const comparison = compareCellPositionsUsingTombstones(baseCellId, newCellId, this.baseMarksCellSources, this.newMarksCellSources, this.revisionMetadata);\n switch (comparison) {\n case CellOrder.SameCell:\n return this.dequeueBoth();\n case CellOrder.OldThenNew:\n return this.dequeueBase();\n case CellOrder.NewThenOld:\n return this.dequeueNew();\n default:\n unreachableCase(comparison);\n }\n }\n else if (areOutputCellsEmpty(baseMark)) {\n return this.dequeueBase();\n }\n else if (areInputCellsEmpty(newMark)) {\n return this.dequeueNew();\n }\n else {\n return this.dequeueBoth();\n }\n }\n dequeueBase(length = Infinity) {\n const baseMark = this.baseMarks.dequeueUpTo(length);\n const movedChanges = getMovedChangesFromMark(this.moveEffects, baseMark);\n const newMark = createNoopMark(baseMark.count, movedChanges, getOutputCellId(baseMark));\n return { baseMark, newMark };\n }\n dequeueNew(length = Infinity) {\n const newMark = this.newMarks.dequeueUpTo(length);\n const baseMark = createNoopMark(newMark.count, undefined, getInputCellId(newMark));\n return {\n baseMark,\n newMark,\n };\n }\n dequeueBoth() {\n const length = this.peekMinLength();\n const baseMark = this.baseMarks.dequeueUpTo(length);\n let newMark = this.newMarks.dequeueUpTo(length);\n const movedChanges = getMovedChangesFromMark(this.moveEffects, baseMark);\n if (movedChanges !== undefined) {\n assert(newMark.changes === undefined, 0x8da /* Unexpected node changeset collision */);\n newMark = withNodeChange(newMark, movedChanges);\n }\n return {\n baseMark,\n newMark,\n };\n }\n peekMinLength() {\n const baseMark = this.baseMarks.peek();\n const newMark = this.newMarks.peek();\n assert(baseMark !== undefined && newMark !== undefined, 0x8db /* Cannot peek length unless both mark queues are non-empty */);\n return Math.min(newMark.count, baseMark.count);\n }\n}\nfunction getMovedChangesFromMark(moveEffects, markEffect) {\n if (isAttachAndDetachEffect(markEffect)) {\n return getMovedChangesFromMark(moveEffects, markEffect.detach);\n }\n if (!isMoveOut(markEffect)) {\n return undefined;\n }\n return getModifyAfter(moveEffects, markEffect.revision, markEffect.id);\n}\n// It is expected that the range from `id` to `id + count - 1` has the same move effect.\n// The call sites to this function are making queries about a mark which has already been split by a `MarkQueue`\n// to match the ranges in `moveEffects`.\n// TODO: Reduce the duplication between this and other MoveEffect helpers\nfunction getModifyAfter(moveEffects, revision, id) {\n const target = CrossFieldTarget.Source;\n const effect = getMoveEffect(moveEffects, target, revision, id, 1);\n if (effect.value?.modifyAfter !== undefined) {\n return effect.value.modifyAfter;\n }\n return undefined;\n}\n// TODO: Reduce the duplication between this and other MoveEffect helpers\nfunction setModifyAfter(moveEffects, { revision, localId: id }, modifyAfter) {\n const target = CrossFieldTarget.Source;\n const count = 1;\n const effect = getMoveEffect(moveEffects, target, revision, id, count, false);\n const newEffect = effect.value !== undefined ? { ...effect.value, modifyAfter } : { modifyAfter };\n setMoveEffect(moveEffects, target, revision, id, count, newEffect);\n}\nfunction setEndpoint(moveEffects, target, id, count, endpoint) {\n const effect = getMoveEffect(moveEffects, target, id.revision, id.localId, count, false);\n const newEffect = effect.value !== undefined ? { ...effect.value, endpoint } : { endpoint };\n setMoveEffect(moveEffects, target, id.revision, id.localId, effect.length, newEffect);\n const remainingCount = count - effect.length;\n if (remainingCount > 0) {\n setEndpoint(moveEffects, target, offsetChangeAtomId(id, effect.length), remainingCount, offsetChangeAtomId(endpoint, effect.length));\n }\n}\nfunction setTruncatedEndpoint(moveEffects, target, id, count, truncatedEndpoint) {\n const effect = getMoveEffect(moveEffects, target, id.revision, id.localId, count);\n const newEffect = effect.value !== undefined\n ? { ...effect.value, truncatedEndpoint }\n : { truncatedEndpoint };\n setMoveEffect(moveEffects, target, id.revision, id.localId, effect.length, newEffect);\n const remainingCount = count - effect.length;\n if (remainingCount > 0) {\n setTruncatedEndpoint(moveEffects, target, offsetChangeAtomId(id, effect.length), remainingCount, offsetChangeAtomId(truncatedEndpoint, effect.length));\n }\n}\nfunction setTruncatedEndpointForInner(moveEffects, target, id, count, truncatedEndpointForInner) {\n const effect = getMoveEffect(moveEffects, target, id.revision, id.localId, count);\n const newEffect = effect.value !== undefined\n ? { ...effect.value, truncatedEndpointForInner }\n : { truncatedEndpointForInner };\n setMoveEffect(moveEffects, target, id.revision, id.localId, effect.length, newEffect);\n const remainingCount = count - effect.length;\n if (remainingCount > 0) {\n setTruncatedEndpointForInner(moveEffects, target, offsetChangeAtomId(id, effect.length), remainingCount, offsetChangeAtomId(truncatedEndpointForInner, effect.length));\n }\n}\nfunction withUpdatedEndpoint(mark, count, effects) {\n if (isAttachAndDetachEffect(mark)) {\n return {\n ...mark,\n attach: withUpdatedEndpoint(mark.attach, count, effects),\n detach: withUpdatedEndpoint(mark.detach, count, effects),\n };\n }\n if (!isMoveMark(mark)) {\n return mark;\n }\n const finalDest = getComposedEndpoint(effects, getCrossFieldTargetFromMove(mark), mark.revision, mark.id, count);\n if (finalDest === undefined) {\n return mark;\n }\n const output = { ...mark };\n changeFinalEndpoint(output, finalDest);\n return output;\n}\nfunction changeFinalEndpoint(mark, endpoint) {\n if (areEqualCellIds(endpoint, { revision: mark.revision, localId: mark.id })) {\n delete mark.finalEndpoint;\n }\n else {\n mark.finalEndpoint = endpoint;\n }\n}\nfunction getComposedEndpoint(moveEffects, target, revision, id, count) {\n const effect = getMoveEffect(moveEffects, target, revision, id, count);\n assert(effect.length === count, 0x815 /* Expected effect to cover entire mark */);\n return effect.value?.truncatedEndpoint ?? effect.value?.endpoint;\n}\nfunction getTruncatedEndpointForInner(moveEffects, target, revision, id, count) {\n const effect = getMoveEffect(moveEffects, target, revision, id, count);\n assert(effect.length === count, 0x934 /* Expected effect to cover entire mark */);\n return effect.value?.truncatedEndpointForInner;\n}\n//# sourceMappingURL=compose.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase, oob } from \"@fluidframework/core-utils/internal\";\nimport { fail } from \"../../util/index.js\";\nimport { CrossFieldTarget, } from \"../modular-schema/index.js\";\nimport { MarkListFactory } from \"./markListFactory.js\";\nimport { NoopMarkType, } from \"./types.js\";\nimport { extractMarkEffect, getDetachOutputCellId, getEndpoint, getInputCellId, getOutputCellId, isAttach, isDetach, isImpactful, normalizeCellRename, splitMark, withNodeChange, } from \"./utils.js\";\n/**\n * Inverts a given changeset.\n * @param change - The changeset to produce the inverse of.\n * @returns The inverse of the given `change` such that the inverse can be applied after `change`.\n *\n * WARNING! This implementation is incomplete:\n * - Support for slices is not implemented.\n */\nexport function invert(change, isRollback, genId, crossFieldManager) {\n return invertMarkList(change, isRollback, crossFieldManager);\n}\nfunction invertMarkList(markList, isRollback, crossFieldManager) {\n const inverseMarkList = new MarkListFactory();\n for (const mark of markList) {\n const inverseMarks = invertMark(mark, isRollback, crossFieldManager);\n inverseMarkList.push(...inverseMarks);\n }\n return inverseMarkList.list;\n}\nfunction invertMark(mark, isRollback, crossFieldManager) {\n if (!isImpactful(mark)) {\n const inputId = getInputCellId(mark);\n return [invertNodeChangeOrSkip(mark.count, mark.changes, inputId)];\n }\n const type = mark.type;\n switch (type) {\n case NoopMarkType: {\n return [mark];\n }\n case \"Rename\": {\n const inputId = getInputCellId(mark);\n assert(inputId !== undefined, 0x9f5 /* Rename mark must have cell ID */);\n const inverse = {\n type: \"Rename\",\n count: mark.count,\n cellId: mark.idOverride,\n // Unlike a remove or move-out, which follow a node, there is no way for this mark to assign the original input cell ID to another cell.\n // This means it should be safe to always restore the input cell ID (as opposed to only doing it on rollbacks).\n // Despite that, we still only do it on rollback for the sake of consistency: once a cell has been assigned an ID,\n // the only way for that cell to be assigned that ID again is if it is rolled back to that state.\n idOverride: isRollback ? inputId : { localId: inputId.localId },\n };\n return [withNodeChange(inverse, mark.changes)];\n }\n case \"Remove\": {\n assert(mark.revision !== undefined, 0x5a1 /* Unable to revert to undefined revision */);\n const outputId = getOutputCellId(mark);\n const inputId = getInputCellId(mark);\n let inverse;\n if (inputId === undefined) {\n inverse = {\n type: \"Insert\",\n id: mark.id,\n cellId: outputId,\n count: mark.count,\n };\n }\n else {\n inverse = {\n type: \"Remove\",\n id: mark.id,\n cellId: outputId,\n count: mark.count,\n };\n if (isRollback) {\n inverse.idOverride = inputId;\n }\n }\n return [withNodeChange(inverse, mark.changes)];\n }\n case \"Insert\": {\n const inputId = getInputCellId(mark);\n assert(inputId !== undefined, 0x80c /* Active inserts should target empty cells */);\n const removeMark = {\n type: \"Remove\",\n count: mark.count,\n id: inputId.localId,\n };\n if (isRollback) {\n removeMark.idOverride = inputId;\n }\n const inverse = withNodeChange(removeMark, mark.changes);\n return [inverse];\n }\n case \"MoveOut\": {\n if (mark.changes !== undefined) {\n assert(mark.count === 1, 0x6ed /* Mark with changes can only target a single cell */);\n const endpoint = getEndpoint(mark);\n crossFieldManager.set(CrossFieldTarget.Destination, endpoint.revision, endpoint.localId, mark.count, mark.changes, true);\n }\n const cellId = getDetachOutputCellId(mark) ?? {\n revision: mark.revision ?? fail(\"Revision must be defined\"),\n localId: mark.id,\n };\n const moveIn = {\n type: \"MoveIn\",\n id: mark.id,\n };\n if (mark.finalEndpoint !== undefined) {\n moveIn.finalEndpoint = { localId: mark.finalEndpoint.localId };\n }\n let effect = moveIn;\n const inputId = getInputCellId(mark);\n if (inputId !== undefined) {\n const detach = {\n type: \"Remove\",\n id: mark.id,\n };\n if (isRollback) {\n detach.idOverride = inputId;\n }\n effect = {\n type: \"AttachAndDetach\",\n attach: moveIn,\n detach,\n };\n }\n return [{ ...effect, count: mark.count, cellId }];\n }\n case \"MoveIn\": {\n const inputId = getInputCellId(mark);\n assert(inputId !== undefined, 0x89e /* Active move-ins should target empty cells */);\n const invertedMark = {\n type: \"MoveOut\",\n id: mark.id,\n count: mark.count,\n };\n if (isRollback) {\n invertedMark.idOverride = inputId;\n }\n if (mark.finalEndpoint) {\n invertedMark.finalEndpoint = { localId: mark.finalEndpoint.localId };\n }\n return applyMovedChanges(invertedMark, mark.revision, crossFieldManager);\n }\n case \"AttachAndDetach\": {\n const attach = {\n count: mark.count,\n cellId: mark.cellId,\n ...mark.attach,\n };\n const idAfterAttach = getOutputCellId(attach);\n // We put `mark.changes` on the detach so that if it is a move source\n // the changes can be sent to the endpoint.\n const detach = {\n count: mark.count,\n cellId: idAfterAttach,\n changes: mark.changes,\n ...mark.detach,\n };\n const attachInverses = invertMark(attach, isRollback, crossFieldManager);\n const detachInverses = invertMark(detach, isRollback, crossFieldManager);\n if (detachInverses.length === 0) {\n return attachInverses;\n }\n assert(detachInverses.length === 1, 0x80d /* Only expected MoveIn marks to be split when inverting */);\n let detachInverse = detachInverses[0] ?? oob();\n assert(isAttach(detachInverse), 0x80e /* Inverse of a detach should be an attach */);\n const inverses = [];\n for (const attachInverse of attachInverses) {\n let detachInverseCurr = detachInverse;\n if (attachInverse.count !== detachInverse.count) {\n [detachInverseCurr, detachInverse] = splitMark(detachInverse, attachInverse.count);\n }\n if (attachInverse.type === NoopMarkType) {\n if (attachInverse.changes !== undefined) {\n assert(detachInverseCurr.changes === undefined, 0x80f /* Unexpected node changes */);\n detachInverseCurr.changes = attachInverse.changes;\n }\n inverses.push(detachInverseCurr);\n continue;\n }\n assert(isDetach(attachInverse), 0x810 /* Inverse of an attach should be a detach */);\n assert(detachInverseCurr.cellId !== undefined, 0x9f6 /* Expected empty cell */);\n const inverted = normalizeCellRename(detachInverseCurr.cellId, attachInverse.count, extractMarkEffect(detachInverseCurr), extractMarkEffect(attachInverse));\n if (detachInverse.changes !== undefined) {\n inverted.changes = detachInverse.changes;\n }\n if (attachInverse.changes !== undefined) {\n assert(inverted.changes === undefined, 0x811 /* Unexpected node changes */);\n inverted.changes = attachInverse.changes;\n }\n inverses.push(inverted);\n }\n return inverses;\n }\n default:\n unreachableCase(type);\n }\n}\nfunction applyMovedChanges(mark, revision, manager) {\n // Although this is a source mark, we query the destination because this was a destination mark during the original invert pass.\n const entry = manager.get(CrossFieldTarget.Destination, revision, mark.id, mark.count, true);\n if (entry.length < mark.count) {\n const [mark1, mark2] = splitMark(mark, entry.length);\n const mark1WithChanges = entry.value !== undefined\n ? withNodeChange(mark1, entry.value)\n : mark1;\n return [mark1WithChanges, ...applyMovedChanges(mark2, revision, manager)];\n }\n if (entry.value !== undefined) {\n manager.onMoveIn(entry.value);\n return [withNodeChange(mark, entry.value)];\n }\n return [mark];\n}\nfunction invertNodeChangeOrSkip(count, changes, cellId) {\n if (changes !== undefined) {\n assert(count === 1, 0x66c /* A modify mark must have length equal to one */);\n const noop = {\n count,\n changes,\n };\n if (cellId !== undefined) {\n noop.cellId = cellId;\n }\n return noop;\n }\n if (cellId !== undefined) {\n return { count, cellId };\n }\n return { count };\n}\n//# sourceMappingURL=invert.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MarkListFactory } from \"./markListFactory.js\";\nimport { withNodeChange } from \"./utils.js\";\nexport function prune(changeset, pruneNode) {\n const pruned = new MarkListFactory();\n for (let mark of changeset) {\n if (mark.changes !== undefined) {\n mark = withNodeChange(mark, pruneNode(mark.changes));\n }\n pruned.push(mark);\n }\n return pruned.list;\n}\n//# sourceMappingURL=prune.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { brand } from \"../../util/index.js\";\nimport { CrossFieldTarget, NodeAttachState, } from \"../modular-schema/index.js\";\nimport { MarkListFactory } from \"./markListFactory.js\";\nimport { MarkQueue } from \"./markQueue.js\";\nimport { getMoveEffect, isMoveIn, isMoveMark, isMoveOut, setMoveEffect, } from \"./moveEffectTable.js\";\nimport { NoopMarkType, } from \"./types.js\";\nimport { CellOrder, areInputCellsEmpty, cellSourcesFromMarks, cloneCellId, cloneMark, compareCellPositionsUsingTombstones, extractMarkEffect, getDetachOutputCellId, getEndpoint, getInputCellId, isAttachAndDetachEffect, isDetach, isNewAttach, isRename, isTombstone, markEmptiesCells, markFillsCells, splitMarkEffect, withNodeChange, } from \"./utils.js\";\n/**\n * Rebases `change` over `base` assuming they both apply to the same initial state.\n * @param change - The changeset to rebase.\n * @param base - The changeset to rebase over.\n * @returns A changeset that performs the changes in `change` but does so assuming `base` has been applied first.\n */\nexport function rebase(change, base, rebaseChild, genId, manager, revisionMetadata) {\n return rebaseMarkList(change, base, revisionMetadata, rebaseChild, genId, manager);\n}\nfunction rebaseMarkList(currMarkList, baseMarkList, metadata, rebaseChild, genId, moveEffects) {\n const factory = new MarkListFactory();\n const queue = new RebaseQueue(baseMarkList, currMarkList, metadata, moveEffects);\n while (!queue.isEmpty()) {\n const { baseMark, newMark: currMark } = queue.pop();\n const rebasedMark = rebaseMark(currMark, baseMark, rebaseChild, moveEffects);\n factory.push(rebasedMark);\n }\n return factory.list;\n}\n/**\n * Generates a NoOp mark that targets the same cells as the input mark.\n * @param mark - The mark the NoOp should target.\n * @param revision - The revision, if available.\n * @returns A NoOp mark that targets the same cells as the input mark.\n */\nfunction generateNoOpWithCellId(mark) {\n const length = mark.count;\n const cellId = getInputCellId(mark);\n return cellId === undefined ? { count: length } : { count: length, cellId };\n}\nclass RebaseQueue {\n constructor(baseMarks, newMarks, metadata, moveEffects) {\n this.metadata = metadata;\n this.moveEffects = moveEffects;\n this.baseMarks = new MarkQueue(baseMarks, moveEffects);\n this.newMarks = new MarkQueue(newMarks, moveEffects);\n this.baseMarksCellSources = cellSourcesFromMarks(baseMarks, getInputCellId);\n this.newMarksCellSources = cellSourcesFromMarks(newMarks, getInputCellId);\n }\n isEmpty() {\n return this.baseMarks.isEmpty() && this.newMarks.isEmpty();\n }\n pop() {\n const baseMark = this.baseMarks.peek();\n const newMark = this.newMarks.peek();\n assert(!(baseMark === undefined && newMark === undefined), 0x722 /* Cannot pop from empty queue */);\n if (baseMark === undefined) {\n const dequeuedNewMark = this.newMarks.dequeue();\n return {\n baseMark: generateNoOpWithCellId(dequeuedNewMark),\n newMark: dequeuedNewMark,\n };\n }\n else if (newMark === undefined) {\n return this.dequeueBase();\n }\n else if (areInputCellsEmpty(baseMark) && areInputCellsEmpty(newMark)) {\n const baseId = getInputCellId(baseMark);\n const newId = getInputCellId(newMark);\n assert(baseId !== undefined && newId !== undefined, 0x89f /* Both marks should have cell IDs */);\n const comparison = compareCellPositionsUsingTombstones(baseId, newId, this.baseMarksCellSources, this.newMarksCellSources, this.metadata);\n switch (comparison) {\n case CellOrder.SameCell:\n return this.dequeueBoth();\n case CellOrder.OldThenNew:\n return this.dequeueBase();\n case CellOrder.NewThenOld:\n return this.dequeueNew();\n default:\n unreachableCase(comparison);\n }\n }\n else if (areInputCellsEmpty(newMark)) {\n return this.dequeueNew();\n }\n else if (areInputCellsEmpty(baseMark)) {\n return this.dequeueBase();\n }\n else {\n return this.dequeueBoth();\n }\n }\n dequeueBase(length) {\n const baseMark = length !== undefined ? this.baseMarks.dequeueUpTo(length) : this.baseMarks.dequeue();\n let newMark = generateNoOpWithCellId(baseMark);\n const movedEffect = getMovedEffectFromBaseMark(this.moveEffects, baseMark);\n if (movedEffect !== undefined) {\n newMark = addMovedMarkEffect(newMark, movedEffect);\n }\n return {\n baseMark,\n newMark,\n };\n }\n dequeueNew() {\n const newMark = this.newMarks.dequeue();\n return { newMark, baseMark: generateNoOpWithCellId(newMark) };\n }\n dequeueBoth() {\n const baseMark = this.baseMarks.peek();\n const newMark = this.newMarks.peek();\n assert(baseMark !== undefined && newMark !== undefined, 0x69c /* Cannot dequeue both unless both mark queues are non-empty */);\n const length = Math.min(newMark.count, baseMark.count);\n const sizedBaseMark = this.baseMarks.dequeueUpTo(length);\n const sizedNewMark = this.newMarks.dequeueUpTo(length);\n const movedMark = getMovedEffectFromBaseMark(this.moveEffects, sizedBaseMark);\n return {\n baseMark: sizedBaseMark,\n newMark: movedMark === undefined ? sizedNewMark : addMovedMarkEffect(sizedNewMark, movedMark),\n };\n }\n}\n/**\n * Combines `mark` and `effect` into a single mark.\n * This function is only intended to handle cases where `mark` is part of a changeset being rebased\n * and `effect` is an effect from the same changeset whose target has been moved by the base changeset.\n * @returns a mark which has the composite effect of `mark` and `effect`.\n */\nfunction addMovedMarkEffect(mark, effect) {\n if (isMoveIn(mark) && isMoveOut(effect)) {\n return { ...mark, type: \"Insert\" };\n }\n else if (isRename(mark) && isMoveOut(effect)) {\n return { ...effect, count: mark.count, idOverride: mark.idOverride };\n }\n else if (isAttachAndDetachEffect(mark) && isMoveIn(mark.attach) && isMoveOut(effect)) {\n return { ...mark.detach, count: mark.count };\n }\n else if (isTombstone(mark)) {\n return { ...mark, ...effect };\n }\n assert(false, 0x818 /* Unexpected combination of mark effects at source and destination */);\n}\nfunction rebaseMark(currMark, baseMark, rebaseChild, moveEffects) {\n const rebasedMark = rebaseNodeChange(cloneMark(currMark), baseMark, rebaseChild);\n const movedNodeChanges = getMovedChangesFromBaseMark(moveEffects, baseMark);\n if (movedNodeChanges !== undefined) {\n assert(rebasedMark.changes === undefined, 0x8dc /* Unexpected collision of new node changes */);\n rebasedMark.changes = movedNodeChanges;\n moveEffects.onMoveIn(movedNodeChanges);\n }\n return rebaseMarkIgnoreChild(rebasedMark, baseMark, moveEffects);\n}\nfunction rebaseMarkIgnoreChild(currMark, baseMark, moveEffects) {\n let rebasedMark;\n if (isDetach(baseMark)) {\n if (baseMark.cellId !== undefined) {\n // Detaches on empty cells have an implicit revive effect.\n delete currMark.cellId;\n }\n assert(!isNewAttach(currMark), 0x69d /* A new attach should not be rebased over its cell being emptied */);\n const baseCellId = getDetachOutputCellId(baseMark);\n if (isMoveOut(baseMark)) {\n assert(isMoveMark(baseMark), 0x6f0 /* Only move marks have move IDs */);\n assert(!isNewAttach(currMark), 0x819 /* New attaches should not be rebased over moves */);\n const { remains, follows } = separateEffectsForMove(extractMarkEffect(currMark));\n if (follows !== undefined) {\n sendEffectToDest(follows, moveEffects, getEndpoint(baseMark), baseMark.count);\n }\n if (currMark.changes !== undefined) {\n moveRebasedChanges(currMark.changes, moveEffects, getEndpoint(baseMark));\n }\n rebasedMark = { ...(remains ?? {}), count: baseMark.count };\n }\n else {\n rebasedMark = currMark;\n }\n rebasedMark = makeDetachedMark(rebasedMark, cloneCellId(baseCellId));\n }\n else if (markFillsCells(baseMark)) {\n rebasedMark = isAttachAndDetachEffect(currMark)\n ? withNodeChange({ ...currMark.detach, count: currMark.count }, currMark.changes)\n : withCellId(currMark, undefined);\n }\n else if (isAttachAndDetachEffect(baseMark)) {\n assert(baseMark.cellId !== undefined, 0x81a /* AttachAndDetach mark should target an empty cell */);\n const halfRebasedMark = rebaseMarkIgnoreChild(currMark, { ...baseMark.attach, cellId: cloneCellId(baseMark.cellId), count: baseMark.count }, moveEffects);\n rebasedMark = rebaseMarkIgnoreChild(halfRebasedMark, { ...baseMark.detach, count: baseMark.count }, moveEffects);\n }\n else if (isRename(baseMark)) {\n return withCellId(currMark, getDetachOutputCellId(baseMark));\n }\n else {\n rebasedMark = currMark;\n }\n return rebasedMark;\n}\n/**\n * @returns A pair of marks that represent the effects which should remain in place in the face of concurrent move,\n * and the effects that should be sent to the move destination.\n */\nfunction separateEffectsForMove(mark) {\n const type = mark.type;\n switch (type) {\n case \"Remove\":\n case \"MoveOut\": {\n // There are two scenarios that lead to a Detach mark having an idOverride:\n // 1. The detach is a rollback (the idOverride the original id that the cell had in the input context of the attach being rolled back).\n // 2. The detach has been composed with a Rename (the idOverride is the cell id in the output context of the rename).\n // Since rollbacks are never rebased, we can safely assume that the idOverride is due to a Rename (scenario #2).\n // While the detach must follow the node that it targets, the rename must remain in place because it targets the cell.\n if (mark.idOverride !== undefined) {\n const remains = { type: \"Rename\", idOverride: mark.idOverride };\n const follows = { ...mark };\n delete follows.idOverride;\n return { remains, follows };\n }\n return { follows: mark };\n }\n case \"AttachAndDetach\":\n return { follows: mark.detach, remains: mark.attach };\n case \"MoveIn\":\n case \"Rename\":\n return { remains: mark };\n case NoopMarkType:\n return {};\n case \"Insert\": {\n const follows = {\n type: \"MoveOut\",\n id: mark.id,\n };\n const remains = {\n type: \"MoveIn\",\n id: mark.id,\n };\n if (mark.revision !== undefined) {\n follows.revision = mark.revision;\n remains.revision = mark.revision;\n }\n return { remains, follows };\n }\n default:\n unreachableCase(type);\n }\n}\n// TODO: Reduce the duplication between this and other MoveEffect helpers\nfunction sendEffectToDest(markEffect, moveEffects, { revision, localId: id }, count) {\n const effect = getMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, count, false);\n if (effect.length < count) {\n const [markEffect1, markEffect2] = splitMarkEffect(markEffect, effect.length);\n const newEffect = effect.value !== undefined\n ? { ...effect.value, movedMark: markEffect1 }\n : { movedMark: markEffect1 };\n setMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, effect.length, newEffect);\n sendEffectToDest(markEffect2, moveEffects, { revision, localId: brand(id + effect.length) }, count - effect.length);\n }\n else {\n const newEffect = effect.value !== undefined\n ? { ...effect.value, movedEffect: markEffect }\n : { movedEffect: markEffect };\n setMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, count, newEffect);\n }\n}\nfunction moveRebasedChanges(nodeChange, moveEffects, { revision, localId: id }) {\n const effect = getMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, 1, false).value;\n const newEffect = effect !== undefined\n ? { ...effect, rebasedChanges: nodeChange }\n : { rebasedChanges: nodeChange };\n setMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, 1, newEffect);\n}\nfunction rebaseNodeChange(currMark, baseMark, nodeRebaser) {\n const baseChange = baseMark.changes;\n const currChange = currMark.changes;\n if (baseChange === undefined && currChange === undefined) {\n return currMark;\n }\n const nodeState = nodeStateAfterMark(baseMark);\n return withNodeChange(currMark, nodeRebaser(currChange, baseChange, nodeState));\n}\nfunction nodeStateAfterMark(mark) {\n if (markEmptiesCells(mark)) {\n return NodeAttachState.Detached;\n }\n else if (markFillsCells(mark)) {\n return NodeAttachState.Attached;\n }\n else {\n return mark.cellId === undefined ? NodeAttachState.Attached : NodeAttachState.Detached;\n }\n}\nfunction makeDetachedMark(mark, cellId) {\n assert(mark.cellId === undefined, 0x69f /* Expected mark to be attached */);\n return { ...mark, cellId };\n}\nfunction withCellId(mark, cellId) {\n const newMark = { ...mark, cellId };\n if (cellId === undefined) {\n delete newMark.cellId;\n }\n return newMark;\n}\nfunction getMovedEffectFromBaseMark(moveEffects, baseMark) {\n if (isMoveIn(baseMark)) {\n return getMovedEffect(moveEffects, baseMark.revision, baseMark.id, baseMark.count);\n }\n else if (isAttachAndDetachEffect(baseMark) && isMoveIn(baseMark.attach)) {\n return getMovedEffect(moveEffects, baseMark.attach.revision, baseMark.attach.id, baseMark.count);\n }\n else {\n return undefined;\n }\n}\n// It is expected that the range from `id` to `id + count - 1` has the same move effect.\n// The call sites to this function are making queries about a mark which has already been split by a `MarkQueue`\n// to match the ranges in `moveEffects`.\n// TODO: Reduce the duplication between this and other MoveEffect helpers\nfunction getMovedEffect(moveEffects, revision, id, count) {\n const effect = getMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, count);\n assert(effect.length === count, 0x6f3 /* Expected effect to cover entire mark */);\n const movedEffect = effect.value?.movedEffect;\n if (movedEffect === undefined) {\n return undefined;\n }\n if (isMoveOut(movedEffect)) {\n moveEffects.moveKey(CrossFieldTarget.Source, movedEffect.revision, movedEffect.id, count);\n }\n return movedEffect;\n}\nfunction getMovedChangesFromBaseMark(moveEffects, baseMark) {\n if (isMoveIn(baseMark)) {\n return getMovedNodeChanges(moveEffects, baseMark.revision, baseMark.id);\n }\n else if (isAttachAndDetachEffect(baseMark) && isMoveIn(baseMark.attach)) {\n return getMovedNodeChanges(moveEffects, baseMark.attach.revision, baseMark.attach.id);\n }\n else {\n return undefined;\n }\n}\nfunction getMovedNodeChanges(moveEffects, revision, id) {\n return getMoveEffect(moveEffects, CrossFieldTarget.Destination, revision, id, 1).value\n ?.rebasedChanges;\n}\n//# sourceMappingURL=rebase.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { replaceAtomRevisions } from \"../../core/index.js\";\nimport { MarkListFactory } from \"./markListFactory.js\";\nimport { NoopMarkType, } from \"./types.js\";\nimport { isDetach, isRename } from \"./utils.js\";\nexport function replaceRevisions(changeset, revisionsToReplace, newRevision) {\n const updatedMarks = new MarkListFactory();\n for (const mark of changeset) {\n const updatedMark = updateMark(mark, revisionsToReplace, newRevision);\n updatedMarks.push(updatedMark);\n }\n return updatedMarks.list;\n}\nfunction updateMark(mark, revisionsToReplace, newRevision) {\n const updatedMark = { ...updateEffect(mark, revisionsToReplace, newRevision) };\n if (mark.cellId !== undefined) {\n updatedMark.cellId = replaceAtomRevisions(mark.cellId, revisionsToReplace, newRevision);\n }\n if (mark.changes !== undefined) {\n updatedMark.changes = replaceAtomRevisions(mark.changes, revisionsToReplace, newRevision);\n }\n return updatedMark;\n}\nfunction updateEffect(input, revisionsToReplace, newRevision) {\n const mark = isDetach(input) || isRename(input)\n ? updateIdOverride(input, revisionsToReplace, newRevision)\n : input;\n const type = mark.type;\n switch (type) {\n case \"Rename\":\n case NoopMarkType:\n return mark;\n case \"AttachAndDetach\":\n return {\n ...mark,\n attach: updateEffect(mark.attach, revisionsToReplace, newRevision),\n detach: updateEffect(mark.detach, revisionsToReplace, newRevision),\n };\n case \"MoveIn\":\n case \"MoveOut\":\n return updateMoveEffect(\n // For some reason, TypeScript is not able to infer that `mark` cannot be a `NoopMark` here.\n mark, revisionsToReplace, newRevision);\n case \"Insert\":\n case \"Remove\":\n return updateRevision(mark, revisionsToReplace, newRevision);\n default:\n unreachableCase(type);\n }\n}\nfunction updateIdOverride(effect, revisionsToReplace, newRevision) {\n if (effect.idOverride !== undefined) {\n const idOverride = replaceAtomRevisions(effect.idOverride, revisionsToReplace, newRevision);\n return { ...effect, idOverride };\n }\n else {\n return effect;\n }\n}\nfunction updateMoveEffect(effect, revisionsToReplace, newRevision) {\n return effect.finalEndpoint !== undefined\n ? updateRevision({\n ...effect,\n finalEndpoint: updateRevision(effect.finalEndpoint, revisionsToReplace, newRevision),\n }, revisionsToReplace, newRevision)\n : updateRevision(effect, revisionsToReplace, newRevision);\n}\nfunction updateRevision(input, revisionsToReplace, newRevision) {\n return revisionsToReplace.has(input.revision) ? withRevision(input, newRevision) : input;\n}\nfunction withRevision(input, revision) {\n const updated = { ...input, revision };\n if (revision === undefined) {\n delete updated.revision;\n }\n return updated;\n}\n//# sourceMappingURL=replaceRevisions.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { compose } from \"./compose.js\";\nimport { invert } from \"./invert.js\";\nimport { prune } from \"./prune.js\";\nimport { rebase } from \"./rebase.js\";\nimport { replaceRevisions } from \"./replaceRevisions.js\";\nexport const sequenceFieldChangeRebaser = {\n compose,\n invert,\n rebase,\n prune,\n replaceRevisions,\n};\n//# sourceMappingURL=sequenceFieldChangeRebaser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport function makeChangeAtomIdCodec(revisionTagCodec) {\n return {\n encode(changeAtomId, context) {\n return changeAtomId.revision === undefined || changeAtomId.revision === context.revision\n ? changeAtomId.localId\n : [changeAtomId.localId, revisionTagCodec.encode(changeAtomId.revision, context)];\n },\n decode(changeAtomId, context) {\n return Array.isArray(changeAtomId)\n ? {\n localId: changeAtomId[0],\n revision: revisionTagCodec.decode(changeAtomId[1], context),\n }\n : { localId: changeAtomId, revision: context.revision };\n },\n };\n}\n//# sourceMappingURL=changeAtomIdCodec.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { DiscriminatedUnionDispatcher } from \"../../codec/index.js\";\nimport { brand, fail } from \"../../util/index.js\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport { Changeset as ChangesetSchema, DetachIdOverrideType, } from \"./formatV1.js\";\nimport { NoopMarkType, } from \"./types.js\";\nimport { isNoopMark, normalizeCellRename } from \"./utils.js\";\nimport { EncodedNodeChangeset } from \"../modular-schema/index.js\";\nexport function makeV1Codec(revisionTagCodec) {\n const changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n const markEffectCodec = {\n encode(effect, context) {\n function encodeRevision(revision) {\n if (revision === undefined || revision === context.revision) {\n return undefined;\n }\n return revisionTagCodec.encode(revision, context);\n }\n const type = effect.type;\n switch (type) {\n case \"MoveIn\":\n return {\n moveIn: {\n revision: encodeRevision(effect.revision),\n finalEndpoint: effect.finalEndpoint === undefined\n ? undefined\n : changeAtomIdCodec.encode(effect.finalEndpoint, context),\n id: effect.id,\n },\n };\n case \"Insert\":\n return {\n insert: {\n revision: encodeRevision(effect.revision),\n id: effect.id,\n },\n };\n case \"Remove\":\n return {\n delete: {\n revision: encodeRevision(effect.revision),\n idOverride: effect.idOverride === undefined\n ? undefined\n : {\n // An arbitrary override type is chosen here. It only had an impact on lineage logic which was not enabled in V1.\n type: DetachIdOverrideType.Unattach,\n id: cellIdCodec.encode(effect.idOverride, context),\n },\n id: effect.id,\n },\n };\n case \"MoveOut\":\n return {\n moveOut: {\n revision: encodeRevision(effect.revision),\n finalEndpoint: effect.finalEndpoint === undefined\n ? undefined\n : changeAtomIdCodec.encode(effect.finalEndpoint, context),\n idOverride: effect.idOverride === undefined\n ? undefined\n : {\n // An arbitrary override type is chosen here. It only had an impact on lineage logic which was not enabled in V1.\n type: DetachIdOverrideType.Unattach,\n id: cellIdCodec.encode(effect.idOverride, context),\n },\n id: effect.id,\n },\n };\n case \"AttachAndDetach\":\n return {\n attachAndDetach: {\n attach: markEffectCodec.encode(effect.attach, context),\n detach: markEffectCodec.encode(effect.detach, context),\n },\n };\n case \"Rename\":\n // In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n // renames are encoded as AttachAndDetach with a special id.\n // This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n return markEffectCodec.encode({\n type: \"AttachAndDetach\",\n attach: { type: \"MoveIn\", id: renameLocalId },\n detach: { type: \"MoveOut\", id: renameLocalId, idOverride: effect.idOverride },\n }, context);\n case NoopMarkType:\n fail(`Mark type: ${type} should not be encoded.`);\n default:\n unreachableCase(type);\n }\n },\n decode(encoded, context) {\n return decoderLibrary.dispatch(encoded, context);\n },\n };\n function decodeRevision(encodedRevision, context) {\n if (encodedRevision === undefined) {\n assert(context.revision !== undefined, 0x965 /* Implicit revision should be provided */);\n return context.revision;\n }\n return revisionTagCodec.decode(encodedRevision, context);\n }\n const decoderLibrary = new DiscriminatedUnionDispatcher({\n moveIn(encoded, context) {\n const { id, finalEndpoint, revision } = encoded;\n const mark = {\n type: \"MoveIn\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n if (finalEndpoint !== undefined) {\n mark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n }\n return mark;\n },\n insert(encoded, context) {\n const { id, revision } = encoded;\n const mark = {\n type: \"Insert\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n return mark;\n },\n delete(encoded, context) {\n const { id, revision, idOverride } = encoded;\n const mark = {\n type: \"Remove\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n if (idOverride !== undefined) {\n mark.idOverride = cellIdCodec.decode(idOverride.id, context);\n }\n return mark;\n },\n moveOut(encoded, context) {\n const { id, finalEndpoint, idOverride, revision } = encoded;\n const mark = {\n type: \"MoveOut\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n if (finalEndpoint !== undefined) {\n mark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n }\n if (idOverride !== undefined) {\n mark.idOverride = cellIdCodec.decode(idOverride.id, context);\n }\n return mark;\n },\n attachAndDetach(encoded, context) {\n const attach = decoderLibrary.dispatch(encoded.attach, context);\n const detach = decoderLibrary.dispatch(encoded.detach, context);\n // In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n // renames are encoded as AttachAndDetach with a special id.\n // This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n if (attach.id === renameLocalId) {\n assert(detach.idOverride !== undefined, 0x9f7 /* Rename must have idOverride */);\n return {\n type: \"Rename\",\n idOverride: detach.idOverride,\n };\n }\n return {\n type: \"AttachAndDetach\",\n attach,\n detach,\n };\n },\n });\n const cellIdCodec = {\n encode: (cellId, context) => {\n const encoded = {\n atom: changeAtomIdCodec.encode(cellId, context),\n };\n return encoded;\n },\n decode: ({ atom }, context) => {\n return changeAtomIdCodec.decode(atom, context);\n },\n };\n return {\n encode: (changeset, context) => {\n const jsonMarks = [];\n for (const mark of changeset) {\n const encodedMark = {\n count: mark.count,\n };\n if (!isNoopMark(mark)) {\n encodedMark.effect = markEffectCodec.encode(mark, context.baseContext);\n }\n if (mark.cellId !== undefined) {\n encodedMark.cellId = cellIdCodec.encode(mark.cellId, context.baseContext);\n }\n if (mark.changes !== undefined) {\n encodedMark.changes = context.encodeNode(mark.changes);\n }\n jsonMarks.push(encodedMark);\n }\n return jsonMarks;\n },\n decode: (changeset, context) => {\n const marks = [];\n for (const mark of changeset) {\n const decodedMark = {\n count: mark.count,\n };\n if (mark.effect !== undefined) {\n Object.assign(decodedMark, markEffectCodec.decode(mark.effect, context.baseContext));\n }\n if (mark.cellId !== undefined) {\n decodedMark.cellId = cellIdCodec.decode(mark.cellId, context.baseContext);\n }\n // Type deduction wrongly narrows the type of `decodedMark` to `NoopMark & HasMarkFields`.\n // We declare a new casted copy of `decodedMark` to recover the correct type.\n let decodedMark2 = decodedMark;\n if (decodedMark2.cellId !== undefined && decodedMark2.type === \"AttachAndDetach\") {\n // In documents generated by clients on release <=2.1 (i.e., not running the code from the PR that added this comment),\n // rename-like AttachAndDetach marks are not normalized to Rename marks thus requiring this normalization step.\n // This ensures backward compatibility with documents generated by clients on release <=2.1.\n decodedMark2 = normalizeCellRename(decodedMark2.cellId, decodedMark2.count, decodedMark2.attach, decodedMark2.detach);\n }\n if (mark.changes !== undefined) {\n decodedMark2.changes = context.decodeNode(mark.changes);\n }\n marks.push(decodedMark2);\n }\n return marks;\n },\n encodedSchema: ChangesetSchema(EncodedNodeChangeset),\n };\n}\n/**\n * Arbitrary ID that is used to indicate a Rename effect.\n */\nconst renameLocalId = brand(-1);\n//# sourceMappingURL=sequenceFieldCodecV1.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { unionOptions } from \"../../codec/index.js\";\nimport { RevisionTagSchema } from \"../../core/index.js\";\nimport { ChangesetLocalIdSchema, EncodedChangeAtomId } from \"../modular-schema/index.js\";\nconst noAdditionalProps = { additionalProperties: false };\nconst CellCount = Type.Number({ multipleOf: 1, minimum: 1 });\nconst MoveId = ChangesetLocalIdSchema;\nconst HasMoveId = Type.Object({ id: MoveId });\nconst IdRange = Type.Tuple([ChangesetLocalIdSchema, CellCount]);\nexport const CellId = EncodedChangeAtomId;\nconst HasRevisionTag = Type.Object({ revision: Type.Optional(RevisionTagSchema) });\nconst Insert = Type.Composite([HasMoveId, HasRevisionTag], noAdditionalProps);\nconst HasMoveFields = Type.Composite([\n HasMoveId,\n HasRevisionTag,\n Type.Object({ finalEndpoint: Type.Optional(EncodedChangeAtomId) }),\n]);\nconst MoveIn = Type.Composite([HasMoveFields], noAdditionalProps);\nconst DetachFields = Type.Object({\n idOverride: Type.Optional(CellId),\n});\nconst Remove = Type.Composite([\n Type.Object({\n id: ChangesetLocalIdSchema,\n }),\n HasRevisionTag,\n DetachFields,\n], noAdditionalProps);\nconst MoveOut = Type.Composite([HasMoveFields, DetachFields], noAdditionalProps);\nconst Attach = Type.Object({\n insert: Type.Optional(Insert),\n moveIn: Type.Optional(MoveIn),\n}, unionOptions);\nconst Detach = Type.Object({\n remove: Type.Optional(Remove),\n moveOut: Type.Optional(MoveOut),\n}, unionOptions);\nconst AttachAndDetach = Type.Object({\n attach: Attach,\n detach: Detach,\n});\nexport const MarkEffect = Type.Object({\n // Note: `noop` is encoded by omitting `effect` from the encoded cell mark, so is not included here.\n insert: Type.Optional(Insert),\n moveIn: Type.Optional(MoveIn),\n remove: Type.Optional(Remove),\n moveOut: Type.Optional(MoveOut),\n attachAndDetach: Type.Optional(AttachAndDetach),\n}, unionOptions);\nexport const CellMark = (tMark, tNodeChange) => Type.Object({\n // If undefined, indicates a Noop mark.\n effect: Type.Optional(tMark),\n cellId: Type.Optional(CellId),\n changes: Type.Optional(tNodeChange),\n count: CellCount,\n}, noAdditionalProps);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = (tNodeChange) => CellMark(MarkEffect, tNodeChange);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = (tNodeChange) => Type.Array(Mark(tNodeChange));\n//# sourceMappingURL=formatV2.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { DiscriminatedUnionDispatcher, } from \"../../codec/index.js\";\nimport { brand, fail } from \"../../util/index.js\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport { Changeset as ChangesetSchema } from \"./formatV2.js\";\nimport { NoopMarkType, } from \"./types.js\";\nimport { isNoopMark, normalizeCellRename } from \"./utils.js\";\nimport { EncodedNodeChangeset } from \"../modular-schema/index.js\";\nexport function makeV2CodecHelpers(revisionTagCodec) {\n const changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n const markEffectCodec = {\n encode(effect, context) {\n function encodeRevision(revision) {\n if (revision === undefined || revision === context.revision) {\n return undefined;\n }\n return revisionTagCodec.encode(revision, context);\n }\n const type = effect.type;\n switch (type) {\n case \"MoveIn\":\n return {\n moveIn: {\n revision: encodeRevision(effect.revision),\n finalEndpoint: effect.finalEndpoint === undefined\n ? undefined\n : changeAtomIdCodec.encode(effect.finalEndpoint, context),\n id: effect.id,\n },\n };\n case \"Insert\":\n return {\n insert: {\n revision: encodeRevision(effect.revision),\n id: effect.id,\n },\n };\n case \"Remove\":\n return {\n remove: {\n revision: encodeRevision(effect.revision),\n idOverride: effect.idOverride === undefined\n ? undefined\n : changeAtomIdCodec.encode(effect.idOverride, context),\n id: effect.id,\n },\n };\n case \"MoveOut\":\n return {\n moveOut: {\n revision: encodeRevision(effect.revision),\n finalEndpoint: effect.finalEndpoint === undefined\n ? undefined\n : changeAtomIdCodec.encode(effect.finalEndpoint, context),\n idOverride: effect.idOverride === undefined\n ? undefined\n : changeAtomIdCodec.encode(effect.idOverride, context),\n id: effect.id,\n },\n };\n case \"AttachAndDetach\":\n return {\n attachAndDetach: {\n attach: markEffectCodec.encode(effect.attach, context),\n detach: markEffectCodec.encode(effect.detach, context),\n },\n };\n case \"Rename\":\n // In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n // renames are encoded as AttachAndDetach with a special id.\n // This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n return markEffectCodec.encode({\n type: \"AttachAndDetach\",\n attach: { type: \"MoveIn\", id: renameLocalId },\n detach: { type: \"MoveOut\", id: renameLocalId, idOverride: effect.idOverride },\n }, context);\n case NoopMarkType:\n fail(`Mark type: ${type} should not be encoded.`);\n default:\n unreachableCase(type);\n }\n },\n decode(encoded, context) {\n return decoderDispatcher.dispatch(encoded, context);\n },\n };\n function decodeRevision(encodedRevision, context) {\n if (encodedRevision === undefined) {\n assert(context.revision !== undefined, 0x996 /* Implicit revision should be provided */);\n return context.revision;\n }\n return revisionTagCodec.decode(encodedRevision, context);\n }\n const decoderLibrary = {\n moveIn(encoded, context) {\n const { id, finalEndpoint, revision } = encoded;\n const mark = {\n type: \"MoveIn\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n if (finalEndpoint !== undefined) {\n mark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n }\n return mark;\n },\n insert(encoded, context) {\n const { id, revision } = encoded;\n const mark = {\n type: \"Insert\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n return mark;\n },\n remove(encoded, context) {\n const { id, revision, idOverride } = encoded;\n const mark = {\n type: \"Remove\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n if (idOverride !== undefined) {\n mark.idOverride = changeAtomIdCodec.decode(idOverride, context);\n }\n return mark;\n },\n moveOut(encoded, context) {\n const { id, finalEndpoint, idOverride, revision } = encoded;\n const mark = {\n type: \"MoveOut\",\n id,\n };\n mark.revision = decodeRevision(revision, context);\n if (finalEndpoint !== undefined) {\n mark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n }\n if (idOverride !== undefined) {\n mark.idOverride = changeAtomIdCodec.decode(idOverride, context);\n }\n return mark;\n },\n attachAndDetach(encoded, context) {\n const attach = decoderDispatcher.dispatch(encoded.attach, context);\n const detach = decoderDispatcher.dispatch(encoded.detach, context);\n // In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n // renames are encoded as AttachAndDetach with a special id.\n // This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n if (attach.id === renameLocalId) {\n assert(detach.idOverride !== undefined, 0x9f8 /* Rename must have idOverride */);\n return {\n type: \"Rename\",\n idOverride: detach.idOverride,\n };\n }\n return {\n type: \"AttachAndDetach\",\n attach,\n detach,\n };\n },\n };\n const decoderDispatcher = new DiscriminatedUnionDispatcher(decoderLibrary);\n return {\n changeAtomIdCodec,\n markEffectCodec,\n decoderLibrary,\n decodeRevision,\n };\n}\nexport function makeV2Codec(revisionTagCodec) {\n const { markEffectCodec, changeAtomIdCodec } = makeV2CodecHelpers(revisionTagCodec);\n return {\n encode: (changeset, context) => {\n const jsonMarks = [];\n for (const mark of changeset) {\n const encodedMark = {\n count: mark.count,\n };\n if (!isNoopMark(mark)) {\n encodedMark.effect = markEffectCodec.encode(mark, context.baseContext);\n }\n if (mark.cellId !== undefined) {\n encodedMark.cellId = changeAtomIdCodec.encode(mark.cellId, context.baseContext);\n }\n if (mark.changes !== undefined) {\n encodedMark.changes = context.encodeNode(mark.changes);\n }\n jsonMarks.push(encodedMark);\n }\n return jsonMarks;\n },\n decode: (changeset, context) => {\n const marks = [];\n for (const mark of changeset) {\n const decodedMark = {\n count: mark.count,\n };\n if (mark.effect !== undefined) {\n Object.assign(decodedMark, markEffectCodec.decode(mark.effect, context.baseContext));\n }\n if (mark.cellId !== undefined) {\n decodedMark.cellId = changeAtomIdCodec.decode(mark.cellId, context.baseContext);\n }\n // Type deduction wrongly narrows the type of `decodedMark` to `NoopMark & HasMarkFields`.\n // We declare a new casted copy of `decodedMark` to recover the correct type.\n let decodedMark2 = decodedMark;\n if (decodedMark2.cellId !== undefined && decodedMark2.type === \"AttachAndDetach\") {\n // In documents generated by clients on release <=2.1 (i.e., not running the code from the PR that added this comment),\n // rename-like AttachAndDetach marks are not normalized to Rename marks thus requiring this normalization step.\n // This ensures backward compatibility with documents generated by clients on release <=2.1.\n decodedMark2 = normalizeCellRename(decodedMark2.cellId, decodedMark2.count, decodedMark2.attach, decodedMark2.detach);\n }\n if (mark.changes !== undefined) {\n decodedMark2.changes = context.decodeNode(mark.changes);\n }\n marks.push(decodedMark2);\n }\n return marks;\n },\n encodedSchema: ChangesetSchema(EncodedNodeChangeset),\n };\n}\n/**\n * Arbitrary ID that is used to indicate a Rename effect.\n */\nconst renameLocalId = brand(-1);\n//# sourceMappingURL=sequenceFieldCodecV2.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { unionOptions } from \"../../codec/index.js\";\nimport { CellId, CellMark, MarkEffect as MarkEffectV2, } from \"./formatV2.js\";\nconst noAdditionalProps = { additionalProperties: false };\nconst Rename = Type.Object({\n idOverride: CellId,\n}, noAdditionalProps);\nconst MarkEffect = Type.Composite([MarkEffectV2, Type.Object({ rename: Type.Optional(Rename) })], unionOptions);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst Mark = (tNodeChange) => CellMark(MarkEffect, tNodeChange);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Changeset = (tNodeChange) => Type.Array(Mark(tNodeChange));\n//# sourceMappingURL=formatV3.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DiscriminatedUnionDispatcher } from \"../../codec/index.js\";\nimport { Changeset as ChangesetSchema } from \"./formatV3.js\";\nimport { isNoopMark } from \"./utils.js\";\nimport { EncodedNodeChangeset } from \"../modular-schema/index.js\";\nimport { makeV2CodecHelpers } from \"./sequenceFieldCodecV2.js\";\nexport function makeV3Codec(revisionTagCodec) {\n const { changeAtomIdCodec: atomIdCodec, markEffectCodec: markEffectV2Codec, decoderLibrary: decoderLibraryV2, } = makeV2CodecHelpers(revisionTagCodec);\n const markEffectCodec = {\n encode(effect, context) {\n const type = effect.type;\n switch (type) {\n case \"Rename\":\n return {\n rename: {\n idOverride: atomIdCodec.encode(effect.idOverride, context),\n },\n };\n default:\n return markEffectV2Codec.encode(effect, context);\n }\n },\n decode(encoded, context) {\n return decoderLibrary.dispatch(encoded, context);\n },\n };\n const decoderLibrary = new DiscriminatedUnionDispatcher({\n ...decoderLibraryV2,\n rename(encoded, context) {\n return {\n type: \"Rename\",\n idOverride: atomIdCodec.decode(encoded.idOverride, context),\n };\n },\n });\n return {\n encode: (changeset, context) => {\n const jsonMarks = [];\n for (const mark of changeset) {\n const encodedMark = {\n count: mark.count,\n };\n if (!isNoopMark(mark)) {\n encodedMark.effect = markEffectCodec.encode(mark, context.baseContext);\n }\n if (mark.cellId !== undefined) {\n encodedMark.cellId = atomIdCodec.encode(mark.cellId, context.baseContext);\n }\n if (mark.changes !== undefined) {\n encodedMark.changes = context.encodeNode(mark.changes);\n }\n jsonMarks.push(encodedMark);\n }\n return jsonMarks;\n },\n decode: (changeset, context) => {\n const marks = [];\n for (const mark of changeset) {\n const decodedMark = {\n count: mark.count,\n };\n if (mark.effect !== undefined) {\n Object.assign(decodedMark, markEffectCodec.decode(mark.effect, context.baseContext));\n }\n if (mark.cellId !== undefined) {\n decodedMark.cellId = atomIdCodec.decode(mark.cellId, context.baseContext);\n }\n if (mark.changes !== undefined) {\n decodedMark.changes = context.decodeNode(mark.changes);\n }\n marks.push(decodedMark);\n }\n return marks;\n },\n encodedSchema: ChangesetSchema(EncodedNodeChangeset),\n };\n}\n//# sourceMappingURL=sequenceFieldCodecV3.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeCodecFamily } from \"../../codec/index.js\";\nimport { makeV1Codec } from \"./sequenceFieldCodecV1.js\";\nimport { makeV2Codec } from \"./sequenceFieldCodecV2.js\";\nimport { makeV3Codec } from \"./sequenceFieldCodecV3.js\";\nexport const sequenceFieldChangeCodecFactory = (revisionTagCodec) => makeCodecFamily([\n [1, makeV1Codec(revisionTagCodec)],\n [2, makeV2Codec(revisionTagCodec)],\n [3, makeV3Codec(revisionTagCodec)],\n]);\n//# sourceMappingURL=sequenceFieldCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { MarkListFactory } from \"./markListFactory.js\";\nimport { splitMark } from \"./utils.js\";\nexport const sequenceFieldEditor = {\n buildChildChange: (index, change) => markAtIndex(index, { count: 1, changes: change }),\n insert: (index, count, firstId) => {\n const mark = {\n type: \"Insert\",\n id: firstId,\n count,\n cellId: { localId: firstId },\n };\n return markAtIndex(index, mark);\n },\n remove: (index, count, id) => count === 0 ? [] : markAtIndex(index, { type: \"Remove\", count, id }),\n revive: (index, count, detachEvent) => {\n assert(detachEvent.revision !== undefined, 0x724 /* Detach event must have a revision */);\n const mark = {\n type: \"Insert\",\n id: detachEvent.localId,\n count,\n cellId: detachEvent,\n };\n return count === 0 ? [] : markAtIndex(index, mark);\n },\n move(sourceIndex, count, destIndex, detachCellId, attachCellId) {\n const moveIn = {\n type: \"MoveIn\",\n id: detachCellId,\n count,\n cellId: { localId: attachCellId },\n };\n const moveOut = {\n type: \"MoveOut\",\n id: detachCellId,\n count,\n };\n return moveMarksToMarkList(sourceIndex, count, destIndex, moveOut, moveIn);\n },\n moveOut(sourceIndex, count, detachCellId) {\n const moveOut = {\n type: \"MoveOut\",\n id: detachCellId,\n count,\n };\n return markAtIndex(sourceIndex, moveOut);\n },\n moveIn(destIndex, count, moveId, attachCellId) {\n const moveIn = {\n type: \"MoveIn\",\n id: moveId,\n count,\n cellId: { localId: attachCellId },\n };\n return markAtIndex(destIndex, moveIn);\n },\n return(sourceIndex, count, destIndex, detachCellId, attachCellId) {\n const moveOut = {\n type: \"MoveOut\",\n id: attachCellId.localId,\n idOverride: detachCellId,\n count,\n };\n const returnTo = {\n type: \"MoveIn\",\n id: attachCellId.localId,\n count,\n cellId: attachCellId,\n };\n return moveMarksToMarkList(sourceIndex, count, destIndex, moveOut, returnTo);\n },\n};\nfunction moveMarksToMarkList(sourceIndex, count, destIndex, detach, attach) {\n if (count === 0) {\n return [];\n }\n const firstIndexBeyondMoveOut = sourceIndex + count;\n const marks = new MarkListFactory();\n marks.pushOffset(Math.min(sourceIndex, destIndex));\n if (destIndex <= sourceIndex) {\n // The destination is fully before the source\n marks.pushContent(attach);\n marks.pushOffset(sourceIndex - destIndex);\n marks.pushContent(detach);\n }\n else if (firstIndexBeyondMoveOut <= destIndex) {\n // The destination is fully after the source\n marks.pushContent(detach);\n marks.pushOffset(destIndex - firstIndexBeyondMoveOut);\n marks.pushContent(attach);\n }\n else {\n const firstSectionLength = destIndex - sourceIndex;\n // The destination is in the middle of the source\n const [detach1, detach2] = splitMark(detach, firstSectionLength);\n marks.pushContent(detach1);\n marks.pushContent(attach);\n marks.pushContent(detach2);\n }\n return marks.list;\n}\nfunction markAtIndex(index, mark) {\n return index === 0 ? [mark] : [{ count: index }, mark];\n}\n//# sourceMappingURL=sequenceFieldEditor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase, oob } from \"@fluidframework/core-utils/internal\";\nimport { areEqualChangeAtomIds, } from \"../../core/index.js\";\nimport { nodeIdFromChangeAtom } from \"../deltaUtils.js\";\nimport { isMoveIn, isMoveOut } from \"./moveEffectTable.js\";\nimport { NoopMarkType } from \"./types.js\";\nimport { areInputCellsEmpty, areOutputCellsEmpty, getDetachedNodeId, getEndpoint, getInputCellId, isAttachAndDetachEffect, } from \"./utils.js\";\nexport function sequenceFieldToDelta(change, deltaFromChild) {\n const local = [];\n const global = [];\n const rename = [];\n for (const mark of change) {\n const deltaMark = { count: mark.count };\n const inputCellId = getInputCellId(mark);\n const changes = mark.changes;\n if (changes !== undefined) {\n const nestedDelta = deltaFromChild(changes);\n if (nestedDelta.size > 0) {\n if (inputCellId === undefined) {\n deltaMark.fields = nestedDelta;\n }\n else {\n global.push({\n id: nodeIdFromChangeAtom(inputCellId),\n fields: nestedDelta,\n });\n }\n }\n }\n if (!areInputCellsEmpty(mark) && !areOutputCellsEmpty(mark)) {\n // Since each cell is associated with exactly one node,\n // the cell starting end ending populated means the cell content has not changed.\n local.push(deltaMark);\n }\n else if (isAttachAndDetachEffect(mark)) {\n assert(inputCellId !== undefined, 0x81e /* AttachAndDetach mark should have defined input cell ID */);\n // The cell starting and ending empty means the cell content has not changed,\n // unless transient content was inserted/attached.\n if (isMoveIn(mark.attach) && isMoveOut(mark.detach)) {\n assert(mark.changes === undefined, 0x81f /* AttachAndDetach moves should not have changes */);\n continue;\n }\n const outputId = getDetachedNodeId(mark.detach);\n assert(outputId !== undefined, 0x820 /* AttachAndDetach mark should have defined output cell ID */);\n const oldId = nodeIdFromChangeAtom(isMoveIn(mark.attach) ? getEndpoint(mark.attach) : inputCellId);\n if (!areEqualChangeAtomIds(inputCellId, outputId)) {\n rename.push({\n count: mark.count,\n oldId,\n newId: nodeIdFromChangeAtom(outputId),\n });\n }\n if (deltaMark.fields) {\n global.push({\n id: oldId,\n fields: deltaMark.fields,\n });\n }\n }\n else {\n const type = mark.type;\n // Inline into `switch(mark.type)` once we upgrade to TS 4.7\n switch (type) {\n case \"MoveIn\": {\n local.push({\n attach: nodeIdFromChangeAtom(getEndpoint(mark)),\n count: mark.count,\n });\n break;\n }\n case \"Remove\": {\n const newDetachId = getDetachedNodeId(mark);\n if (inputCellId === undefined) {\n deltaMark.detach = nodeIdFromChangeAtom(newDetachId);\n local.push(deltaMark);\n }\n else {\n const oldId = nodeIdFromChangeAtom(inputCellId);\n // Removal of already removed content is only a no-op if the detach IDs are different.\n if (!areEqualChangeAtomIds(inputCellId, newDetachId)) {\n rename.push({\n count: mark.count,\n oldId,\n newId: nodeIdFromChangeAtom(newDetachId),\n });\n }\n // In all cases, the nested changes apply\n if (deltaMark.fields) {\n global.push({\n id: oldId,\n fields: deltaMark.fields,\n });\n }\n }\n break;\n }\n case \"MoveOut\": {\n // The move destination will look for the detach ID of the source, so we can ignore `finalEndpoint`.\n const detachId = nodeIdFromChangeAtom(getDetachedNodeId(mark));\n if (inputCellId === undefined) {\n deltaMark.detach = detachId;\n local.push(deltaMark);\n }\n else {\n // Move sources implicitly restore their content\n rename.push({\n count: mark.count,\n oldId: nodeIdFromChangeAtom(inputCellId),\n newId: detachId,\n });\n }\n break;\n }\n case \"Insert\": {\n assert(inputCellId !== undefined, 0x821 /* Active Insert marks must have a CellId */);\n const buildId = nodeIdFromChangeAtom(inputCellId);\n deltaMark.attach = buildId;\n if (deltaMark.fields) {\n // Nested changes are represented on the node in its starting location\n global.push({ id: buildId, fields: deltaMark.fields });\n delete deltaMark.fields;\n }\n local.push(deltaMark);\n break;\n }\n case NoopMarkType:\n if (inputCellId === undefined) {\n local.push(deltaMark);\n }\n break;\n case \"Rename\":\n assert(mark.cellId !== undefined, 0x9f9 /* Renames should only target empty cells */);\n break;\n default:\n unreachableCase(type);\n }\n }\n }\n // Remove trailing no-op marks\n while (local.length > 0) {\n const lastMark = local[local.length - 1] ?? oob();\n if (lastMark.attach !== undefined ||\n lastMark.detach !== undefined ||\n lastMark.fields !== undefined) {\n break;\n }\n local.pop();\n }\n const delta = {};\n if (local.length > 0) {\n delta.local = local;\n }\n if (global.length > 0) {\n delta.global = global;\n }\n if (rename.length > 0) {\n delta.rename = rename;\n }\n return delta;\n}\n//# sourceMappingURL=sequenceFieldToDelta.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { relevantRemovedRoots } from \"./relevantRemovedRoots.js\";\nimport { sequenceFieldChangeRebaser } from \"./sequenceFieldChangeRebaser.js\";\nimport { sequenceFieldChangeCodecFactory } from \"./sequenceFieldCodecs.js\";\nimport { sequenceFieldEditor } from \"./sequenceFieldEditor.js\";\nimport { sequenceFieldToDelta } from \"./sequenceFieldToDelta.js\";\nimport { createEmpty, getCrossFieldKeys, getNestedChanges, isEmpty } from \"./utils.js\";\nexport const sequenceFieldChangeHandler = {\n rebaser: sequenceFieldChangeRebaser,\n codecsFactory: sequenceFieldChangeCodecFactory,\n editor: sequenceFieldEditor,\n intoDelta: sequenceFieldToDelta,\n relevantRemovedRoots,\n isEmpty,\n getNestedChanges,\n createEmpty,\n getCrossFieldKeys,\n};\n//# sourceMappingURL=sequenceFieldChangeHandler.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { EncodedChangeAtomId } from \"../modular-schema/index.js\";\nconst noAdditionalProps = { additionalProperties: false };\n// `null` signifies \"self\". Using undefined doesn't actually JSON round-trip conveniently, since\n// undefined is converted to null when inside an array (which happens in e.g. the moves array).\nexport const EncodedRegisterId = Type.Union([EncodedChangeAtomId, Type.Null()]);\nexport const EncodedBuild = Type.Tuple([EncodedChangeAtomId]);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const EncodedOptionalChangeset = (tNodeChange) => Type.Object({\n // Subtrees being created. They start as detached.\n b: Type.Optional(Type.Array(EncodedBuild)),\n // Subtrees being moved.\n m: EncodedMoves,\n // Nested changes\n c: EncodedChildChanges(tNodeChange),\n // Reserved ID for detaching the subtree from the field if it were to be populated.\n // Only specified when the field is empty.\n d: Type.Optional(EncodedRegisterId),\n}, noAdditionalProps);\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst EncodedChildChanges = (tNodeChange) => \n// Changes to the children of the node that is in the specified register in the input context of this change.\nType.Optional(Type.Array(Type.Tuple([EncodedRegisterId, tNodeChange])));\n// A list of triplets (source, destination, isNodeTargeting) each representing a move of a node\n// from its current source register to a new destination register.\n// If the move is node targeting then the intention is to move a specific node which happens to be in the source register.\n// Otherwise the intention is to move whatever node happens to be in the source register.\n// These entries should not be interpreted as \"applied one after the other\", but rather as \"applied simultaneously\".\n// As such, changesets should not contain duplicated src or dst entries.\nconst EncodedMoves = Type.Optional(Type.Array(Type.Tuple([EncodedRegisterId, EncodedRegisterId, Type.Optional(Type.Boolean())])));\n//# sourceMappingURL=optionalFieldChangeFormatV1.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport { EncodedNodeChangeset, } from \"../modular-schema/index.js\";\nimport { EncodedOptionalChangeset, EncodedRegisterId } from \"./optionalFieldChangeFormatV1.js\";\nfunction makeRegisterIdCodec(revisionTagCodec) {\n const changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n return {\n encode: (registerId, context) => {\n if (registerId === \"self\") {\n return null;\n }\n return changeAtomIdCodec.encode(registerId, context);\n },\n decode: (registerId, context) => {\n if (registerId === null) {\n return \"self\";\n }\n return changeAtomIdCodec.decode(registerId, context);\n },\n encodedSchema: EncodedRegisterId,\n };\n}\nexport function makeOptionalFieldCodec(revisionTagCodec) {\n const registerIdCodec = makeRegisterIdCodec(revisionTagCodec);\n return {\n encode: (change, context) => {\n const encoded = {};\n encoded.m = [];\n if (change.valueReplace !== undefined) {\n if (change.valueReplace.src !== undefined) {\n encoded.m.push([\n registerIdCodec.encode(change.valueReplace.src, context.baseContext),\n registerIdCodec.encode(\"self\", context.baseContext),\n true,\n ]);\n }\n // When the source of the replace is \"self\", the destination is a reserved ID that will only be used if\n // the tree in the field is concurrently replaced.\n if (change.valueReplace.isEmpty || change.valueReplace.src === \"self\") {\n encoded.d = registerIdCodec.encode(change.valueReplace.dst, context.baseContext);\n }\n else {\n encoded.m.push([\n registerIdCodec.encode(\"self\", context.baseContext),\n registerIdCodec.encode(change.valueReplace.dst, context.baseContext),\n false,\n ]);\n }\n }\n for (const [src, dst] of change.moves) {\n encoded.m.push([\n registerIdCodec.encode(src, context.baseContext),\n registerIdCodec.encode(dst, context.baseContext),\n true,\n ]);\n }\n if (encoded.m.length === 0) {\n delete encoded.m;\n }\n if (change.childChanges.length > 0) {\n encoded.c = [];\n for (const [id, childChange] of change.childChanges) {\n encoded.c.push([\n registerIdCodec.encode(id, context.baseContext),\n context.encodeNode(childChange),\n ]);\n }\n }\n return encoded;\n },\n decode: (encoded, context) => {\n // The register that the node in the optional field is moved to upon detach\n let detached;\n // The register that the node is moved from to upon attaching that node in the optional field\n let attached;\n const moves = [];\n if (encoded.m !== undefined) {\n for (const [encodedSrc, encodedDst] of encoded.m) {\n const src = registerIdCodec.decode(encodedSrc, context.baseContext);\n const dst = registerIdCodec.decode(encodedDst, context.baseContext);\n if (src === \"self\" || dst === \"self\") {\n if (src === \"self\") {\n assert(detached === undefined, 0x8d0 /* Multiple detached nodes */);\n detached = dst;\n }\n if (dst === \"self\") {\n assert(attached === undefined, 0x8d1 /* Multiple attached nodes */);\n attached = src;\n }\n }\n else {\n moves.push([src, dst]);\n }\n }\n }\n const decoded = {\n moves,\n childChanges: encoded.c?.map(([id, encodedChange]) => [\n registerIdCodec.decode(id, context.baseContext),\n context.decodeNode(encodedChange),\n ]) ?? [],\n };\n if (detached !== undefined && attached !== undefined) {\n if (detached === \"self\" || attached === \"self\") {\n assert(encoded.d !== undefined, 0x8d2 /* Invalid change: pin must have a reserved detach ID */);\n const reserved = registerIdCodec.decode(encoded.d, context.baseContext);\n assert(reserved !== \"self\", 0x8d3 /* Invalid reserved detach ID */);\n decoded.valueReplace = { isEmpty: false, dst: reserved, src: \"self\" };\n }\n else {\n assert(encoded.d === undefined, 0x8d4 /* Invalid change: unexpected reserved detach ID on a change that detaches a node from the field */);\n decoded.valueReplace = {\n isEmpty: false,\n dst: detached,\n src: attached,\n };\n }\n }\n else if (attached !== undefined) {\n assert(encoded.d !== undefined, 0x8d5 /* Invalid change: attach must have a reserved detach ID */);\n const reserved = registerIdCodec.decode(encoded.d, context.baseContext);\n assert(reserved !== \"self\", 0x8d6 /* Invalid reserved detach ID */);\n decoded.valueReplace = {\n isEmpty: true,\n dst: reserved,\n src: attached,\n };\n }\n else if (detached !== undefined) {\n assert(encoded.d === undefined, 0x8d7 /* Invalid change: unexpected reserved detach ID on a change that detaches a node from the field */);\n assert(detached !== \"self\", 0x8d8 /* Invalid detach ID */);\n decoded.valueReplace = {\n isEmpty: false,\n dst: detached,\n };\n }\n else if (encoded.d !== undefined) {\n const detachId = registerIdCodec.decode(encoded.d, context.baseContext);\n assert(detachId !== \"self\", 0x8d9 /* Invalid detach ID */);\n decoded.valueReplace = {\n isEmpty: true,\n dst: detachId,\n };\n }\n return decoded;\n },\n encodedSchema: EncodedOptionalChangeset(EncodedNodeChangeset),\n };\n}\n//# sourceMappingURL=optionalFieldCodecV1.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { EncodedChangeAtomId } from \"../modular-schema/index.js\";\nconst noAdditionalProps = { additionalProperties: false };\n// `null` signifies \"self\". Using undefined doesn't actually JSON round-trip conveniently, since\n// undefined is converted to null when inside an array (which happens in e.g. the moves array).\nexport const EncodedRegisterId = Type.Union([EncodedChangeAtomId, Type.Null()]);\n// Type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const EncodedOptionalChangeset = (tNodeChange) => Type.Object({\n // Moves between detached fields.\n // These entries should not be interpreted as \"applied one after the other\", but rather as\n // \"applied simultaneously\". As such, this list should not contain duplicated src or dst entries.\n m: Type.Optional(Type.Array(EncodedMove)),\n // Nested changes\n c: Type.Optional(EncodedChildChanges(tNodeChange)),\n // How to replace the current value of the field.\n r: Type.Optional(EncodedReplace),\n}, noAdditionalProps);\n// Type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst EncodedChildChanges = (tNodeChange) => \n// Changes to the children of the node that is in the specified register in the input context of this change.\nType.Array(Type.Tuple([EncodedRegisterId, tNodeChange]));\n// A list of triplets (source, destination, isNodeTargeting) each representing a move of a node\n// from its current source register to a new destination register.\n// If the move is node targeting then the intention is to move a specific node which happens to be in the source register.\n// Otherwise the intention is to move whatever node happens to be in the source register.\n// These entries should not be interpreted as \"applied one after the other\", but rather as \"applied simultaneously\".\n// As such, changesets should not contain duplicated src or dst entries.\nconst EncodedMove = Type.Tuple([EncodedChangeAtomId, EncodedChangeAtomId]);\nconst EncodedReplace = Type.Object({\n // Whether the field is empty in the input context of this change.\n e: Type.Boolean(),\n // The ID for the node to put in this field, or undefined if the field should be emptied.\n // Will be \"self\" when the intention is to keep the current node in this field.\n s: Type.Optional(EncodedRegisterId),\n // An ID to associate with the node (if any) which is detached by this edit.\n d: EncodedChangeAtomId,\n}, noAdditionalProps);\n//# sourceMappingURL=optionalFieldChangeFormatV2.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport { EncodedNodeChangeset, } from \"../modular-schema/index.js\";\nimport { EncodedOptionalChangeset, EncodedRegisterId } from \"./optionalFieldChangeFormatV2.js\";\nfunction makeRegisterIdCodec(changeAtomIdCodec) {\n return {\n encode: (registerId, context) => {\n if (registerId === \"self\") {\n return null;\n }\n return changeAtomIdCodec.encode(registerId, context);\n },\n decode: (registerId, context) => {\n if (registerId === null) {\n return \"self\";\n }\n return changeAtomIdCodec.decode(registerId, context);\n },\n encodedSchema: EncodedRegisterId,\n };\n}\nexport function makeOptionalFieldCodec(revisionTagCodec) {\n const changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n const registerIdCodec = makeRegisterIdCodec(changeAtomIdCodec);\n return {\n encode: (change, context) => {\n const encoded = {};\n if (change.moves.length > 0) {\n encoded.m = change.moves.map(([src, dst]) => [\n changeAtomIdCodec.encode(src, context.baseContext),\n changeAtomIdCodec.encode(dst, context.baseContext),\n ]);\n }\n if (change.valueReplace !== undefined) {\n encoded.r = {\n e: change.valueReplace.isEmpty,\n d: changeAtomIdCodec.encode(change.valueReplace.dst, context.baseContext),\n };\n if (change.valueReplace.src !== undefined) {\n encoded.r.s = registerIdCodec.encode(change.valueReplace.src, context.baseContext);\n }\n }\n if (change.childChanges.length > 0) {\n encoded.c = [];\n for (const [id, childChange] of change.childChanges) {\n encoded.c.push([\n registerIdCodec.encode(id, context.baseContext),\n context.encodeNode(childChange),\n ]);\n }\n }\n return encoded;\n },\n decode: (encoded, context) => {\n const decoded = {\n moves: encoded.m?.map(([encodedSrc, encodedDst]) => [\n changeAtomIdCodec.decode(encodedSrc, context.baseContext),\n changeAtomIdCodec.decode(encodedDst, context.baseContext),\n ]) ?? [],\n childChanges: encoded.c?.map(([id, encodedChange]) => [\n registerIdCodec.decode(id, context.baseContext),\n context.decodeNode(encodedChange),\n ]) ?? [],\n };\n if (encoded.r !== undefined) {\n const replace = {\n isEmpty: encoded.r.e,\n dst: changeAtomIdCodec.decode(encoded.r.d, context.baseContext),\n };\n if (encoded.r.s !== undefined) {\n replace.src = registerIdCodec.decode(encoded.r.s, context.baseContext);\n }\n decoded.valueReplace = replace;\n }\n return decoded;\n },\n encodedSchema: EncodedOptionalChangeset(EncodedNodeChangeset),\n };\n}\n//# sourceMappingURL=optionalFieldCodecV2.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeCodecFamily } from \"../../codec/index.js\";\nimport { makeOptionalFieldCodec as makeV1Codec } from \"./optionalFieldCodecV1.js\";\nimport { makeOptionalFieldCodec as makeV2Codec } from \"./optionalFieldCodecV2.js\";\nexport const makeOptionalFieldCodecFamily = (revisionTagCodec) => makeCodecFamily([\n [1, makeV1Codec(revisionTagCodec)],\n [2, makeV2Codec(revisionTagCodec)],\n]);\n//# sourceMappingURL=optionalFieldCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { areEqualChangeAtomIds, makeChangeAtomId, replaceAtomRevisions, taggedAtomId, } from \"../../core/index.js\";\nimport { SizedNestedMap, deleteFromNestedMap, setInNestedMap, tryGetFromNestedMap, } from \"../../util/index.js\";\nimport { nodeIdFromChangeAtom } from \"../deltaUtils.js\";\nimport { NodeAttachState, } from \"../modular-schema/index.js\";\nimport { makeOptionalFieldCodecFamily } from \"./optionalFieldCodecs.js\";\nexport class RegisterMap {\n constructor() {\n this.nestedMapData = new SizedNestedMap();\n }\n clone() {\n const clone = new RegisterMap();\n for (const [id, t] of this.entries()) {\n clone.set(id, t);\n }\n return clone;\n }\n set(id, childChange) {\n if (id === \"self\") {\n this.nestedMapData.set(\"self\", undefined, childChange);\n }\n else {\n this.nestedMapData.set(id.localId, id.revision, childChange);\n }\n }\n get(id) {\n return id === \"self\"\n ? this.nestedMapData.tryGet(id, undefined)\n : this.nestedMapData.tryGet(id.localId, id.revision);\n }\n has(id) {\n return this.get(id) !== undefined;\n }\n delete(id) {\n return id === \"self\"\n ? this.nestedMapData.delete(\"self\", undefined)\n : this.nestedMapData.delete(id.localId, id.revision);\n }\n keys() {\n const changeIds = [];\n for (const [localId, nestedMap] of this.nestedMapData) {\n if (localId === \"self\") {\n changeIds.push(\"self\");\n }\n else {\n for (const [revisionTag, _] of nestedMap) {\n changeIds.push(revisionTag === undefined ? { localId } : { localId, revision: revisionTag });\n }\n }\n }\n return changeIds;\n }\n values() {\n return this.nestedMapData.values();\n }\n entries() {\n const entries = [];\n for (const changeId of this.keys()) {\n if (changeId === \"self\") {\n const entry = this.nestedMapData.tryGet(\"self\", undefined);\n assert(entry !== undefined, 0x770 /* Entry should not be undefined when iterating keys. */);\n entries.push([\"self\", entry]);\n }\n else {\n const entry = this.nestedMapData.tryGet(changeId.localId, changeId.revision);\n assert(entry !== undefined, 0x771 /* Entry should not be undefined when iterating keys. */);\n entries.push([changeId, entry]);\n }\n }\n return entries;\n }\n get size() {\n return this.nestedMapData.size;\n }\n}\nexport const optionalChangeRebaser = {\n compose: (change1, change2, composeChild) => {\n const { srcToDst, dstToSrc } = getBidirectionalMaps(change1.moves);\n const change1FieldSrc = change1.valueReplace?.src;\n const change1FieldDst = getEffectfulDst(change1.valueReplace);\n const change2FieldSrc = change2.valueReplace?.src;\n let composedFieldSrc;\n if (change2FieldSrc !== undefined) {\n if (change2FieldSrc === \"self\") {\n composedFieldSrc = change1FieldSrc ?? change2FieldSrc;\n }\n else if (change1FieldDst !== undefined &&\n areEqualRegisterIds(change1FieldDst, change2FieldSrc)) {\n composedFieldSrc = \"self\";\n }\n else {\n composedFieldSrc =\n tryGetFromNestedMap(dstToSrc, change2FieldSrc.revision, change2FieldSrc.localId) ??\n change2FieldSrc;\n }\n }\n else if (change1FieldSrc !== undefined && change2.valueReplace === undefined) {\n composedFieldSrc = change1FieldSrc;\n }\n const childChanges2ByOriginalId = new RegisterMap();\n for (const [id, change] of change2.childChanges) {\n if (id === \"self\") {\n if (change1FieldSrc !== undefined) {\n childChanges2ByOriginalId.set(change1FieldSrc, change);\n }\n else {\n childChanges2ByOriginalId.set(\"self\", change);\n }\n }\n else {\n if (change1FieldDst !== undefined && areEqualChangeAtomIds(change1FieldDst, id)) {\n childChanges2ByOriginalId.set(\"self\", change);\n }\n else {\n const originalId = tryGetFromNestedMap(dstToSrc, id.revision, id.localId);\n childChanges2ByOriginalId.set(originalId ?? id, change);\n }\n }\n }\n const composedMoves = [];\n const composedChildChanges = [];\n const composed = {\n moves: composedMoves,\n childChanges: composedChildChanges,\n };\n for (const [id, childChange1] of change1.childChanges) {\n const childChange2 = childChanges2ByOriginalId.get(id);\n composedChildChanges.push([id, composeChild(childChange1, childChange2)]);\n childChanges2ByOriginalId.delete(id);\n }\n for (const [id, childChange2] of childChanges2ByOriginalId.entries()) {\n composedChildChanges.push([id, composeChild(undefined, childChange2)]);\n }\n for (const [leg2Src, leg2Dst] of change2.moves) {\n const leg1Src = tryGetFromNestedMap(dstToSrc, leg2Src.revision, leg2Src.localId);\n if (leg1Src !== undefined) {\n composedMoves.push([leg1Src, leg2Dst]);\n deleteFromNestedMap(srcToDst, leg1Src.revision, leg1Src.localId);\n deleteFromNestedMap(dstToSrc, leg2Src.revision, leg2Src.localId);\n }\n else if (change1FieldDst === undefined ||\n !areEqualChangeAtomIds(change1FieldDst, leg2Src)) {\n composedMoves.push([leg2Src, leg2Dst]);\n }\n }\n for (const [revision, innerMap] of srcToDst.entries()) {\n for (const [localId, dst] of innerMap.entries()) {\n const src = makeChangeAtomId(localId, revision);\n if (composedFieldSrc === undefined || !areEqualRegisterIds(src, composedFieldSrc)) {\n composedMoves.push([src, dst]);\n }\n }\n }\n if (change1FieldSrc !== undefined &&\n change1FieldSrc !== \"self\" &&\n change2.valueReplace !== undefined) {\n const change2FieldDst = change2.valueReplace.dst;\n if (isReplaceEffectful(change2.valueReplace) &&\n !areEqualChangeAtomIds(change1FieldSrc, change2FieldDst)) {\n composedMoves.push([change1FieldSrc, change2FieldDst]);\n }\n }\n const firstChange = change1.valueReplace ?? change2.valueReplace;\n if (firstChange === undefined) {\n return composed;\n }\n const replace = {\n isEmpty: firstChange.isEmpty,\n dst: getComposedReplaceDst(change1.valueReplace, change2),\n };\n if (composedFieldSrc !== undefined) {\n replace.src = composedFieldSrc;\n }\n composed.valueReplace = replace;\n return composed;\n },\n invert: (change, isRollback, genId) => {\n const { moves, childChanges } = change;\n const invertIdMap = new RegisterMap();\n const invertedMoves = [];\n for (const [src, dst] of moves) {\n invertIdMap.set(src, dst);\n invertedMoves.push([dst, src]);\n }\n if (change.valueReplace !== undefined) {\n const effectfulDst = getEffectfulDst(change.valueReplace);\n if (effectfulDst !== undefined) {\n invertIdMap.set(\"self\", change.valueReplace.dst);\n }\n if (change.valueReplace.src !== undefined) {\n invertIdMap.set(change.valueReplace.src, \"self\");\n }\n }\n const inverted = {\n moves: invertedMoves,\n childChanges: childChanges.map(([id, childChange]) => {\n return [invertIdMap.get(id) ?? id, childChange];\n }),\n };\n if (change.valueReplace !== undefined) {\n if (isReplaceEffectful(change.valueReplace)) {\n const replace = change.valueReplace.src === undefined\n ? {\n isEmpty: true,\n dst: makeChangeAtomId(genId.allocate()),\n }\n : {\n isEmpty: false,\n dst: isRollback ? change.valueReplace.src : makeChangeAtomId(genId.allocate()),\n };\n if (change.valueReplace.isEmpty === false) {\n replace.src = change.valueReplace.dst;\n }\n inverted.valueReplace = replace;\n }\n else if (!isRollback && change.valueReplace.src === \"self\") {\n inverted.valueReplace = {\n isEmpty: false,\n src: \"self\",\n dst: makeChangeAtomId(genId.allocate()),\n };\n }\n }\n return inverted;\n },\n rebase: (change, overChange, rebaseChild) => {\n const { moves, childChanges, valueReplace: field } = change;\n // TODO: avoid computing the dstToSrc map if it's not needed.\n // TODO: de-dupe overSrcToDst and forwardMap\n const { srcToDst: overSrcToDst } = getBidirectionalMaps(overChange.moves);\n const forwardMap = new RegisterMap();\n for (const [src, dst] of overChange.moves) {\n forwardMap.set(src, dst);\n }\n if (overChange.valueReplace !== undefined) {\n const effectfulDst = getEffectfulDst(overChange.valueReplace);\n if (effectfulDst !== undefined) {\n forwardMap.set(\"self\", overChange.valueReplace.dst);\n }\n if (overChange.valueReplace.src !== undefined) {\n forwardMap.set(overChange.valueReplace.src, \"self\");\n }\n }\n const rebasedMoves = [];\n for (const [src, dst] of moves) {\n const newDst = tryGetFromNestedMap(overSrcToDst, src.revision, src.localId);\n rebasedMoves.push([src, newDst ?? dst]);\n }\n const overChildChangesBySrc = new RegisterMap();\n for (const [id, childChange] of overChange.childChanges) {\n overChildChangesBySrc.set(id, childChange);\n }\n const rebasedChildChanges = [];\n for (const [id, childChange] of childChanges) {\n const overChildChange = overChildChangesBySrc.get(id);\n if (overChildChange !== undefined) {\n overChildChangesBySrc.delete(id);\n }\n const rebasedId = forwardMap.get(id) ?? id;\n const rebasedChildChange = rebaseChild(childChange, overChildChange, rebasedId === \"self\" ? NodeAttachState.Attached : NodeAttachState.Detached);\n if (rebasedChildChange !== undefined) {\n rebasedChildChanges.push([rebasedId, rebasedChildChange]);\n }\n }\n for (const [id, overChildChange] of overChildChangesBySrc.entries()) {\n const rebasedId = forwardMap.get(id) ?? id;\n const rebasedChildChange = rebaseChild(undefined, overChildChange, rebasedId === \"self\" ? NodeAttachState.Attached : NodeAttachState.Detached);\n if (rebasedChildChange !== undefined) {\n rebasedChildChanges.push([rebasedId, rebasedChildChange]);\n }\n }\n const rebased = {\n moves: rebasedMoves,\n childChanges: rebasedChildChanges,\n };\n if (field !== undefined) {\n const replace = {\n isEmpty: overChange.valueReplace === undefined\n ? field.isEmpty\n : overChange.valueReplace.src === undefined,\n dst: field.dst,\n };\n if (field.src !== undefined) {\n replace.src = forwardMap.get(field.src) ?? field.src;\n }\n rebased.valueReplace = replace;\n }\n return rebased;\n },\n prune: (change, pruneChild) => {\n const childChanges = [];\n const prunedChange = {\n moves: change.moves,\n childChanges,\n };\n if (change.valueReplace !== undefined) {\n prunedChange.valueReplace = change.valueReplace;\n }\n for (const [id, childChange] of change.childChanges) {\n const prunedChildChange = pruneChild(childChange);\n if (prunedChildChange !== undefined) {\n childChanges.push([id, prunedChildChange]);\n }\n }\n return prunedChange;\n },\n replaceRevisions: (change, oldRevisions, newRevision) => {\n const valueReplace = replaceReplaceRevisions(change.valueReplace, oldRevisions, newRevision);\n const childChanges = [];\n for (const [id, childChange] of change.childChanges) {\n childChanges.push([\n replaceRegisterRevisions(id, oldRevisions, newRevision),\n replaceAtomRevisions(childChange, oldRevisions, newRevision),\n ]);\n }\n const moves = [];\n for (const [src, dst] of change.moves) {\n moves.push([\n replaceAtomRevisions(src, oldRevisions, newRevision),\n replaceAtomRevisions(dst, oldRevisions, newRevision),\n ]);\n }\n const updated = { childChanges, moves };\n if (valueReplace !== undefined) {\n updated.valueReplace = valueReplace;\n }\n return updated;\n },\n};\nfunction replaceReplaceRevisions(replace, oldRevisions, newRevision) {\n if (replace === undefined) {\n return undefined;\n }\n const updated = {\n ...replace,\n dst: replaceAtomRevisions(replace.dst, oldRevisions, newRevision),\n };\n if (replace.src !== undefined) {\n updated.src = replaceRegisterRevisions(replace.src, oldRevisions, newRevision);\n }\n return updated;\n}\nfunction replaceRegisterRevisions(register, oldRevisions, newRevision) {\n return register === \"self\"\n ? register\n : replaceAtomRevisions(register, oldRevisions, newRevision);\n}\nfunction getComposedReplaceDst(change1, change2) {\n const dst1 = change1?.dst;\n if (change2.valueReplace === undefined) {\n assert(dst1 !== undefined, 0x8ce /* Both replace replaces should not be undefined */);\n return getIdAfterMoves(dst1, change2.moves);\n }\n if (dst1 === undefined ||\n change1?.src === \"self\" ||\n (change2.valueReplace.src !== undefined &&\n areEqualRegisterIds(change2.valueReplace.src, dst1))) {\n assert(change2.valueReplace !== undefined, 0x8cf /* Both replace replaces should not be undefined */);\n return change2.valueReplace.dst;\n }\n else {\n return getIdAfterMoves(dst1, change2.moves);\n }\n}\nfunction getIdAfterMoves(id, moves) {\n for (const [src, dst] of moves) {\n if (areEqualChangeAtomIds(id, src)) {\n return dst;\n }\n }\n return id;\n}\nfunction areEqualRegisterIds(id1, id2) {\n return id1 === \"self\" || id2 === \"self\" ? id1 === id2 : areEqualChangeAtomIds(id1, id2);\n}\nfunction getBidirectionalMaps(moves) {\n const srcToDst = new Map();\n const dstToSrc = new Map();\n for (const [src, dst] of moves) {\n setInNestedMap(srcToDst, src.revision, src.localId, dst);\n setInNestedMap(dstToSrc, dst.revision, dst.localId, src);\n }\n return { srcToDst, dstToSrc };\n}\nfunction isReplaceEffectful(replace) {\n if (replace.src === \"self\") {\n return false;\n }\n return !replace.isEmpty || replace.src !== undefined;\n}\nfunction getEffectfulDst(replace) {\n return replace === undefined || replace.isEmpty || replace.src === \"self\"\n ? undefined\n : replace.dst;\n}\nexport function taggedRegister(id, revision) {\n if (id === \"self\") {\n return id;\n }\n return taggedAtomId(id, revision);\n}\nexport const optionalFieldEditor = {\n set: (wasEmpty, ids) => ({\n moves: [],\n childChanges: [],\n valueReplace: {\n isEmpty: wasEmpty,\n src: { localId: ids.fill },\n dst: { localId: ids.detach },\n },\n }),\n clear: (wasEmpty, detachId) => ({\n moves: [],\n childChanges: [],\n valueReplace: {\n isEmpty: wasEmpty,\n dst: { localId: detachId },\n },\n }),\n buildChildChange: (index, childChange) => {\n assert(index === 0, 0x404 /* Optional fields only support a single child node */);\n return {\n moves: [],\n childChanges: [[\"self\", childChange]],\n };\n },\n};\nexport function optionalFieldIntoDelta(change, deltaFromChild) {\n const delta = {};\n let markIsANoop = true;\n const mark = { count: 1 };\n if (change.valueReplace !== undefined && isReplaceEffectful(change.valueReplace)) {\n if (!change.valueReplace.isEmpty) {\n mark.detach = nodeIdFromChangeAtom(change.valueReplace.dst);\n }\n if (change.valueReplace.src !== undefined) {\n mark.attach = nodeIdFromChangeAtom(change.valueReplace.src);\n }\n markIsANoop = false;\n }\n if (change.moves.length > 0) {\n delta.rename = change.moves.map(([src, dst]) => ({\n count: 1,\n oldId: nodeIdFromChangeAtom(src),\n newId: nodeIdFromChangeAtom(dst),\n }));\n }\n if (change.childChanges.length > 0) {\n const globals = [];\n for (const [id, childChange] of change.childChanges) {\n const childDelta = deltaFromChild(childChange);\n if (id !== \"self\") {\n const fields = childDelta;\n globals.push({\n id: { major: id.revision, minor: id.localId },\n fields,\n });\n }\n else {\n mark.fields = childDelta;\n markIsANoop = false;\n }\n }\n if (globals.length > 0) {\n delta.global = globals;\n }\n }\n if (!markIsANoop) {\n delta.local = [mark];\n }\n return delta;\n}\nexport const optionalChangeHandler = {\n rebaser: optionalChangeRebaser,\n codecsFactory: makeOptionalFieldCodecFamily,\n editor: optionalFieldEditor,\n intoDelta: optionalFieldIntoDelta,\n relevantRemovedRoots,\n isEmpty: (change) => change.childChanges.length === 0 &&\n change.moves.length === 0 &&\n change.valueReplace === undefined,\n getNestedChanges,\n createEmpty: () => ({ moves: [], childChanges: [] }),\n getCrossFieldKeys: (_change) => [],\n};\nfunction getNestedChanges(change) {\n return change.childChanges.map(([register, nodeId]) => [\n nodeId,\n register === \"self\" ? 0 : undefined,\n ]);\n}\nfunction* relevantRemovedRoots(change, relevantRemovedRootsFromChild) {\n const alreadyYielded = new RegisterMap();\n for (const [src] of change.moves) {\n if (!alreadyYielded.has(src)) {\n alreadyYielded.set(src, true);\n yield nodeIdFromChangeAtom(src);\n }\n }\n for (const [id, childChange] of change.childChanges) {\n // Child changes make the tree they apply to relevant unless that tree existed in the starting context of\n // of this change.\n if (id !== \"self\" && !alreadyYielded.has(id)) {\n alreadyYielded.set(id, true);\n yield nodeIdFromChangeAtom(id);\n }\n yield* relevantRemovedRootsFromChild(childChange);\n }\n const selfSrc = change.valueReplace?.src;\n if (selfSrc !== undefined && selfSrc !== \"self\" && !alreadyYielded.has(selfSrc)) {\n yield nodeIdFromChangeAtom(selfSrc);\n }\n}\n//# sourceMappingURL=optionalField.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeCodecFamily, unitCodec } from \"../../codec/index.js\";\nexport const noChangeCodecFamily = makeCodecFamily([[1, unitCodec]]);\n//# sourceMappingURL=noChangeCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { forbiddenFieldKindIdentifier, Multiplicity, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { FieldKindWithEditor, allowsTreeSchemaIdentifierSuperset, referenceFreeFieldChangeRebaser, } from \"../modular-schema/index.js\";\nimport { optionalChangeHandler, optionalFieldEditor, } from \"../optional-field/index.js\";\nimport { sequenceFieldChangeHandler } from \"../sequence-field/index.js\";\nimport { noChangeCodecFamily } from \"./noChangeCodecs.js\";\n/**\n * ChangeHandler that only handles no-op / identity changes.\n */\nexport const noChangeHandler = {\n rebaser: referenceFreeFieldChangeRebaser({\n compose: (change1, change2) => 0,\n invert: (changes) => 0,\n rebase: (change, over) => 0,\n }),\n codecsFactory: () => noChangeCodecFamily,\n editor: { buildChildChange: (index, change) => fail(\"Child changes not supported\") },\n intoDelta: (change, deltaFromChild) => ({}),\n relevantRemovedRoots: (change) => [],\n isEmpty: (change) => true,\n getNestedChanges: (change) => [],\n createEmpty: () => 0,\n getCrossFieldKeys: () => [],\n};\nconst optionalIdentifier = \"Optional\";\n/**\n * 0 or 1 items.\n */\nexport const optional = new FieldKindWithEditor(optionalIdentifier, Multiplicity.Optional, optionalChangeHandler, (types, other) => (other.kind === sequence.identifier || other.kind === optionalIdentifier) &&\n allowsTreeSchemaIdentifierSuperset(types, other.types), new Set([]));\nexport const valueFieldEditor = {\n ...optionalFieldEditor,\n set: (ids) => optionalFieldEditor.set(false, ids),\n};\nexport const valueChangeHandler = {\n ...optional.changeHandler,\n editor: valueFieldEditor,\n};\nconst requiredIdentifier = \"Value\";\n/**\n * Exactly one item.\n */\nexport const required = new FieldKindWithEditor(requiredIdentifier, Multiplicity.Single, valueChangeHandler, (types, other) => (other.kind === sequence.identifier ||\n other.kind === requiredIdentifier ||\n other.kind === optional.identifier ||\n other.kind === nodeKey.identifier) &&\n allowsTreeSchemaIdentifierSuperset(types, other.types), new Set());\nconst sequenceIdentifier = \"Sequence\";\n/**\n * 0 or more items.\n */\nexport const sequence = new FieldKindWithEditor(sequenceIdentifier, Multiplicity.Sequence, sequenceFieldChangeHandler, (types, other) => other.kind === sequenceIdentifier &&\n allowsTreeSchemaIdentifierSuperset(types, other.types), \n// TODO: add normalizer/importers for handling ops from other kinds.\nnew Set([]));\nconst nodeKeyIdentifier = \"NodeKey\";\n/**\n * Exactly one identifier.\n */\nexport const nodeKey = new FieldKindWithEditor(nodeKeyIdentifier, Multiplicity.Single, noChangeHandler, (types, other) => (other.kind === sequence.identifier ||\n other.kind === requiredIdentifier ||\n other.kind === optional.identifier ||\n other.kind === nodeKeyIdentifier) &&\n allowsTreeSchemaIdentifierSuperset(types, other.types), new Set());\nconst identifierFieldIdentifier = \"Identifier\";\n/**\n * Exactly one identifier.\n */\nexport const identifier = new FieldKindWithEditor(identifierFieldIdentifier, Multiplicity.Single, noChangeHandler, (types, other) => (other.kind === sequence.identifier ||\n other.kind === requiredIdentifier ||\n other.kind === optional.identifier ||\n other.kind === identifierFieldIdentifier) &&\n allowsTreeSchemaIdentifierSuperset(types, other.types), new Set());\n/**\n * Exactly 0 items.\n *\n * Using Forbidden makes what types are listed for allowed in a field irrelevant\n * since the field will never have values in it.\n *\n * Using Forbidden is equivalent to picking a kind that permits empty (like sequence or optional)\n * and having no allowed types (or only never types).\n * Because of this, its possible to express everything constraint wise without Forbidden,\n * but using Forbidden can be more semantically clear than optional with no allowed types.\n *\n * For view schema, this can be useful if you need to:\n * - run a specific out of schema handler when a field is present,\n * but otherwise are ignoring or tolerating (ex: via extra fields) unmentioned fields.\n * - prevent a specific field from being used as an extra field\n * (perhaps for some past of future compatibility reason)\n * - keep a field in a schema for metadata purposes\n * (ex: for improved error messaging, error handling or documentation)\n * that is not used in this specific version of the schema (ex: to document what it was or will be used for).\n *\n * For stored schema, this can be useful if you need to:\n * - have a field which can have its schema updated to Optional or Sequence of any type.\n * - to exclude a field from extra fields\n * - for the schema system to use as a default for fields which aren't declared\n * (ex: when updating a field that did not exist into one that does)\n *\n * See {@link emptyField} for a constant, reusable field using Forbidden.\n */\nexport const forbidden = new FieldKindWithEditor(forbiddenFieldKindIdentifier, Multiplicity.Forbidden, noChangeHandler, \n// All multiplicities other than Value support empty.\n(types, other) => fieldKinds.get(other.kind)?.multiplicity !== Multiplicity.Single, new Set());\nexport const fieldKindConfigurations = new Map([\n [\n 1,\n new Map([\n [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],\n [required.identifier, { kind: required, formatVersion: 1 }],\n [optional.identifier, { kind: optional, formatVersion: 1 }],\n [sequence.identifier, { kind: sequence, formatVersion: 1 }],\n [forbidden.identifier, { kind: forbidden, formatVersion: 1 }],\n [identifier.identifier, { kind: identifier, formatVersion: 1 }],\n ]),\n ],\n [\n 2,\n new Map([\n [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],\n [required.identifier, { kind: required, formatVersion: 2 }],\n [optional.identifier, { kind: optional, formatVersion: 2 }],\n [sequence.identifier, { kind: sequence, formatVersion: 1 }],\n [forbidden.identifier, { kind: forbidden, formatVersion: 1 }],\n [identifier.identifier, { kind: identifier, formatVersion: 1 }],\n ]),\n ],\n [\n 3,\n new Map([\n [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],\n [required.identifier, { kind: required, formatVersion: 2 }],\n [optional.identifier, { kind: optional, formatVersion: 2 }],\n [sequence.identifier, { kind: sequence, formatVersion: 2 }],\n [forbidden.identifier, { kind: forbidden, formatVersion: 1 }],\n [identifier.identifier, { kind: identifier, formatVersion: 1 }],\n ]),\n ],\n [\n 4,\n new Map([\n [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],\n [required.identifier, { kind: required, formatVersion: 2 }],\n [optional.identifier, { kind: optional, formatVersion: 2 }],\n [sequence.identifier, { kind: sequence, formatVersion: 3 }],\n [forbidden.identifier, { kind: forbidden, formatVersion: 1 }],\n [identifier.identifier, { kind: identifier, formatVersion: 1 }],\n ]),\n ],\n]);\n/**\n * All supported field kinds.\n *\n * @privateRemarks\n * Before making a SharedTree format change which impacts which set of field kinds are allowed,\n * code which uses this should be audited for compatibility considerations.\n */\nexport const fieldKinds = new Map([required, optional, sequence, nodeKey, identifier, forbidden].map((s) => [s.identifier, s]));\n/**\n * Default FieldKinds with their editor types erased.\n */\nexport const FieldKinds = { required, optional, sequence, identifier, forbidden };\n//# sourceMappingURL=defaultFieldKinds.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { oob } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { compareFieldUpPaths, topDownPath, } from \"../../core/index.js\";\nimport { brand } from \"../../util/index.js\";\nimport { ModularChangeFamily, ModularEditBuilder, intoDelta as intoModularDelta, relevantRemovedRoots as relevantModularRemovedRoots, } from \"../modular-schema/index.js\";\nimport { fieldKinds, optional, sequence, required as valueFieldKind, } from \"./defaultFieldKinds.js\";\n/**\n * Implementation of {@link ChangeFamily} based on the default set of supported field kinds.\n *\n * @sealed\n */\nexport class DefaultChangeFamily {\n constructor(codecs) {\n this.modularFamily = new ModularChangeFamily(fieldKinds, codecs);\n }\n get rebaser() {\n return this.modularFamily.rebaser;\n }\n get codecs() {\n return this.modularFamily.codecs;\n }\n buildEditor(changeReceiver) {\n return new DefaultEditBuilder(this, changeReceiver);\n }\n}\n/**\n * @param change - The change to convert into a delta.\n */\nexport function intoDelta(taggedChange) {\n return intoModularDelta(taggedChange, fieldKinds);\n}\n/**\n * Returns the set of removed roots that should be in memory for the given change to be applied.\n * A removed root is relevant if any of the following is true:\n * - It is being inserted\n * - It is being restored\n * - It is being edited\n * - The ID it is associated with is being changed\n *\n * May be conservative by returning more removed roots than strictly necessary.\n *\n * Will never return IDs for non-root trees, even if they are removed.\n *\n * @param change - The change to be applied.\n */\nexport function relevantRemovedRoots(change) {\n return relevantModularRemovedRoots(change, fieldKinds);\n}\n/**\n * Implementation of {@link IDefaultEditBuilder} based on the default set of supported field kinds.\n * @sealed\n */\nexport class DefaultEditBuilder {\n constructor(family, changeReceiver) {\n this.modularBuilder = new ModularEditBuilder(family, fieldKinds, changeReceiver);\n }\n enterTransaction() {\n this.modularBuilder.enterTransaction();\n }\n exitTransaction() {\n this.modularBuilder.exitTransaction();\n }\n addNodeExistsConstraint(path) {\n this.modularBuilder.addNodeExistsConstraint(path);\n }\n valueField(field) {\n return {\n set: (newContent) => {\n const fillId = this.modularBuilder.generateId();\n const build = this.modularBuilder.buildTrees(fillId, newContent);\n const change = brand(valueFieldKind.changeHandler.editor.set({\n fill: fillId,\n detach: this.modularBuilder.generateId(),\n }));\n const edit = {\n type: \"field\",\n field,\n fieldKind: valueFieldKind.identifier,\n change,\n };\n this.modularBuilder.submitChanges([build, edit]);\n },\n };\n }\n optionalField(field) {\n return {\n set: (newContent, wasEmpty) => {\n const detachId = this.modularBuilder.generateId();\n let fillId;\n const edits = [];\n let optionalChange;\n if (newContent !== undefined) {\n fillId = this.modularBuilder.generateId();\n const build = this.modularBuilder.buildTrees(fillId, newContent);\n edits.push(build);\n optionalChange = optional.changeHandler.editor.set(wasEmpty, {\n fill: fillId,\n detach: detachId,\n });\n }\n else {\n optionalChange = optional.changeHandler.editor.clear(wasEmpty, detachId);\n }\n const change = brand(optionalChange);\n const edit = {\n type: \"field\",\n field,\n fieldKind: optional.identifier,\n change,\n };\n edits.push(edit);\n this.modularBuilder.submitChanges(edits);\n },\n };\n }\n move(sourceField, sourceIndex, count, destinationField, destIndex) {\n if (count === 0) {\n return;\n }\n else if (count < 0 || !Number.isSafeInteger(count)) {\n throw new UsageError(`Expected non-negative integer count, got ${count}.`);\n }\n const detachId = this.modularBuilder.generateId(count);\n const attachId = this.modularBuilder.generateId(count);\n if (compareFieldUpPaths(sourceField, destinationField)) {\n const change = sequence.changeHandler.editor.move(sourceIndex, count, destIndex, detachId, attachId);\n this.modularBuilder.submitChange(sourceField, sequence.identifier, brand(change));\n }\n else {\n const detachPath = topDownPath(sourceField.parent);\n const attachPath = topDownPath(destinationField.parent);\n const sharedDepth = getSharedPrefixLength(detachPath, attachPath);\n let adjustedAttachField = destinationField;\n // After the above loop, `sharedDepth` is the number of elements, starting from the root,\n // that both paths have in common.\n if (sharedDepth === detachPath.length) {\n const attachField = attachPath[sharedDepth]?.parentField ?? destinationField.field;\n if (attachField === sourceField.field) {\n // The detach occurs in an ancestor field of the field where the attach occurs.\n let attachAncestorIndex = attachPath[sharedDepth]?.parentIndex ?? sourceIndex;\n if (attachAncestorIndex < sourceIndex) {\n // The attach path runs through a node located before the detached nodes.\n // No need to adjust the attach path.\n }\n else if (sourceIndex + count <= attachAncestorIndex) {\n // The attach path runs through a node located after the detached nodes.\n // adjust the index for the node at that depth of the path, so that it is interpreted correctly\n // in the composition performed by `submitChanges`.\n attachAncestorIndex -= count;\n let parent = attachPath[sharedDepth - 1];\n const parentField = attachPath[sharedDepth] ?? oob();\n parent = {\n parent,\n parentIndex: attachAncestorIndex,\n parentField: parentField.parentField,\n };\n for (let i = sharedDepth + 1; i < attachPath.length; i += 1) {\n parent = {\n ...(attachPath[i] ?? oob()),\n parent,\n };\n }\n adjustedAttachField = { parent, field: destinationField.field };\n }\n else {\n throw new UsageError(\"Invalid move operation: the destination is located under one of the moved elements. Consider using the Tree.contains API to detect this.\");\n }\n }\n }\n const moveOut = sequence.changeHandler.editor.moveOut(sourceIndex, count, detachId);\n const moveIn = sequence.changeHandler.editor.moveIn(destIndex, count, detachId, attachId);\n this.modularBuilder.submitChanges([\n {\n type: \"field\",\n field: sourceField,\n fieldKind: sequence.identifier,\n change: brand(moveOut),\n },\n {\n type: \"field\",\n field: adjustedAttachField,\n fieldKind: sequence.identifier,\n change: brand(moveIn),\n },\n ]);\n }\n }\n sequenceField(field) {\n return {\n insert: (index, content) => {\n const length = content.mode === 1 /* CursorLocationType.Fields */ ? content.getFieldLength() : 1;\n if (length === 0) {\n return;\n }\n const firstId = this.modularBuilder.generateId(length);\n const build = this.modularBuilder.buildTrees(firstId, content);\n const change = brand(sequence.changeHandler.editor.insert(index, length, firstId));\n const attach = {\n type: \"field\",\n field,\n fieldKind: sequence.identifier,\n change,\n };\n // The changes have to be submitted together, otherwise they will be assigned different revisions,\n // which will prevent the build ID and the insert ID from matching.\n this.modularBuilder.submitChanges([build, attach]);\n },\n remove: (index, count) => {\n if (count === 0) {\n return;\n }\n const id = this.modularBuilder.generateId(count);\n const change = brand(sequence.changeHandler.editor.remove(index, count, id));\n this.modularBuilder.submitChange(field, sequence.identifier, change);\n },\n };\n }\n}\n/**\n * @returns The number of path elements that both paths share, starting at index 0.\n */\nfunction getSharedPrefixLength(pathA, pathB) {\n const minDepth = Math.min(pathA.length, pathB.length);\n let sharedDepth = 0;\n while (sharedDepth < minDepth) {\n const detachStep = pathA[sharedDepth] ?? oob();\n const attachStep = pathB[sharedDepth] ?? oob();\n if (detachStep !== attachStep) {\n if (detachStep.parentField !== attachStep.parentField ||\n detachStep.parentIndex !== attachStep.parentIndex) {\n break;\n }\n }\n sharedDepth += 1;\n }\n return sharedDepth;\n}\n//# sourceMappingURL=defaultEditBuilder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { LeafNodeStoredSchema, ObjectNodeStoredSchema, MapNodeStoredSchema, Multiplicity, } from \"../../core/index.js\";\nimport { allowsValue } from \"../valueUtilities.js\";\nimport { fail } from \"../../util/index.js\";\nexport var SchemaValidationErrors;\n(function (SchemaValidationErrors) {\n SchemaValidationErrors[SchemaValidationErrors[\"NoError\"] = 0] = \"NoError\";\n SchemaValidationErrors[SchemaValidationErrors[\"Field_KindNotInSchemaPolicy\"] = 1] = \"Field_KindNotInSchemaPolicy\";\n SchemaValidationErrors[SchemaValidationErrors[\"Field_IncorrectMultiplicity\"] = 2] = \"Field_IncorrectMultiplicity\";\n SchemaValidationErrors[SchemaValidationErrors[\"Field_NodeTypeNotAllowed\"] = 3] = \"Field_NodeTypeNotAllowed\";\n SchemaValidationErrors[SchemaValidationErrors[\"LeafNode_InvalidValue\"] = 4] = \"LeafNode_InvalidValue\";\n SchemaValidationErrors[SchemaValidationErrors[\"LeafNode_FieldsNotAllowed\"] = 5] = \"LeafNode_FieldsNotAllowed\";\n SchemaValidationErrors[SchemaValidationErrors[\"ObjectNode_FieldNotInSchema\"] = 6] = \"ObjectNode_FieldNotInSchema\";\n SchemaValidationErrors[SchemaValidationErrors[\"NonLeafNode_ValueNotAllowed\"] = 7] = \"NonLeafNode_ValueNotAllowed\";\n SchemaValidationErrors[SchemaValidationErrors[\"Node_MissingSchema\"] = 8] = \"Node_MissingSchema\";\n SchemaValidationErrors[SchemaValidationErrors[\"UnknownError\"] = 9] = \"UnknownError\";\n})(SchemaValidationErrors || (SchemaValidationErrors = {}));\n/**\n * Deeply checks that the provided node complies with the schema based on its identifier.\n */\nexport function isNodeInSchema(node, schemaAndPolicy) {\n // If the stored schema is completely empty it _probably_ (in almost all cases?) means the tree is brand new and we\n // shouldn't validate the data.\n // TODO: AB#8197\n // See https://github.com/microsoft/FluidFramework/pull/21305#discussion_r1626595991 for further discussion.\n if (schemaAndPolicy.schema.nodeSchema.size === 0) {\n return 0 /* SchemaValidationErrors.NoError */;\n }\n // Validate the schema declared by the node exists\n const schema = schemaAndPolicy.schema.nodeSchema.get(node.type);\n if (schema === undefined) {\n return 8 /* SchemaValidationErrors.Node_MissingSchema */;\n }\n // Validate the node is well formed according to its schema\n if (schema instanceof LeafNodeStoredSchema) {\n if (node.fields.size !== 0) {\n return 5 /* SchemaValidationErrors.LeafNode_FieldsNotAllowed */;\n }\n if (!allowsValue(schema.leafValue, node.value)) {\n return 4 /* SchemaValidationErrors.LeafNode_InvalidValue */;\n }\n }\n else if (schema instanceof ObjectNodeStoredSchema) {\n if (node.value !== undefined) {\n return 7 /* SchemaValidationErrors.NonLeafNode_ValueNotAllowed */;\n }\n const uncheckedFieldsFromNode = new Set(node.fields.keys());\n for (const [fieldKey, fieldSchema] of schema.objectNodeFields) {\n const nodeField = node.fields.get(fieldKey) ?? [];\n const fieldInSchemaResult = isFieldInSchema(nodeField, fieldSchema, schemaAndPolicy);\n if (fieldInSchemaResult !== 0 /* SchemaValidationErrors.NoError */) {\n return fieldInSchemaResult;\n }\n uncheckedFieldsFromNode.delete(fieldKey);\n }\n // The node has fields that we did not check as part of looking at every field defined in the node's schema\n if (uncheckedFieldsFromNode.size !== 0) {\n return 6 /* SchemaValidationErrors.ObjectNode_FieldNotInSchema */;\n }\n }\n else if (schema instanceof MapNodeStoredSchema) {\n if (node.value !== undefined) {\n return 7 /* SchemaValidationErrors.NonLeafNode_ValueNotAllowed */;\n }\n for (const field of node.fields.values()) {\n const fieldInSchemaResult = isFieldInSchema(field, schema.mapFields, schemaAndPolicy);\n if (fieldInSchemaResult !== 0 /* SchemaValidationErrors.NoError */) {\n return fieldInSchemaResult;\n }\n }\n }\n else {\n fail(\"Unknown TreeNodeStoredSchema type\");\n }\n return 0 /* SchemaValidationErrors.NoError */;\n}\n/**\n * Deeply checks that the nodes comply with the field schema and included schema.\n */\nexport function isFieldInSchema(childNodes, schema, schemaAndPolicy) {\n // Validate that the field kind is handled by the schema policy\n const kind = schemaAndPolicy.policy.fieldKinds.get(schema.kind);\n if (kind === undefined) {\n return 1 /* SchemaValidationErrors.Field_KindNotInSchemaPolicy */;\n }\n // Validate that the field doesn't contain more nodes than its type supports\n if (!compliesWithMultiplicity(childNodes.length, kind.multiplicity)) {\n return 2 /* SchemaValidationErrors.Field_IncorrectMultiplicity */;\n }\n for (const node of childNodes) {\n // Validate the type declared by the node is allowed in this field\n if (schema.types !== undefined && !schema.types.has(node.type)) {\n return 3 /* SchemaValidationErrors.Field_NodeTypeNotAllowed */;\n }\n // Validate the node complies with the type it declares to be.\n const nodeInSchemaResult = isNodeInSchema(node, schemaAndPolicy);\n if (nodeInSchemaResult !== 0 /* SchemaValidationErrors.NoError */) {\n return nodeInSchemaResult;\n }\n }\n return 0 /* SchemaValidationErrors.NoError */;\n}\n/**\n * Validates that a given number of items complies with the specified {@link Multiplicity | multiplicity}.\n * @param numberOfItems - Number of items.\n * @param multiplicity - Kind of multiplicity to validate against.\n * @returns `true` if the specified number of items complies with the specified multiplicity; otherwise, `false`.\n */\nexport function compliesWithMultiplicity(numberOfItems, multiplicity) {\n switch (multiplicity) {\n case Multiplicity.Single:\n return numberOfItems === 1;\n case Multiplicity.Optional:\n return numberOfItems <= 1;\n case Multiplicity.Sequence:\n return true;\n case Multiplicity.Forbidden:\n return numberOfItems === 0;\n default:\n unreachableCase(multiplicity);\n }\n}\n//# sourceMappingURL=schemaChecker.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fieldKinds } from \"./defaultFieldKinds.js\";\n/**\n * FullSchemaPolicy with the default field kinds.\n */\nexport const defaultSchemaPolicy = {\n fieldKinds,\n validateSchema: false,\n};\n//# sourceMappingURL=defaultSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { objectToMap } from \"../../util/index.js\";\n// TODO: test + document\nexport function objectToMapTyped(objectMap) {\n return objectToMap(objectMap);\n}\n//# sourceMappingURL=typeUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Lazy } from \"@fluidframework/core-utils/internal\";\nimport { LeafNodeStoredSchema, MapNodeStoredSchema, ObjectNodeStoredSchema, identifierFieldKindIdentifier, } from \"../../core/index.js\";\nimport { compareSets, mapIterable, oneFromSet, filterIterable, } from \"../../util/index.js\";\nimport { FieldKinds } from \"../default-schema/index.js\";\nimport { objectToMapTyped } from \"./typeUtils.js\";\n{\n}\n/**\n * T must extend TreeSchemaSpecification.\n * This can not be enforced using TypeScript since doing so breaks recursive type support.\n * See note on SchemaBuilder.fieldRecursive.\n */\nexport class TreeNodeSchemaBase {\n constructor(builder, name, info, stored) {\n this.builder = builder;\n this.name = name;\n this.info = info;\n this.stored = stored;\n }\n}\n/**\n */\nexport class FlexMapNodeSchema extends TreeNodeSchemaBase {\n get mapFields() {\n return this.info;\n }\n static create(builder, name, specification) {\n return new FlexMapNodeSchema(builder, name, specification, new MapNodeStoredSchema(specification.stored));\n }\n getFieldSchema(field) {\n return this.info;\n }\n}\n/**\n */\nexport class LeafNodeSchema extends TreeNodeSchemaBase {\n get leafValue() {\n return this.info;\n }\n static create(builder, name, specification) {\n return new LeafNodeSchema(builder, name, specification, new LeafNodeStoredSchema(specification));\n }\n getFieldSchema(field) {\n return FlexFieldSchema.empty;\n }\n}\n/**\n */\nexport class FlexObjectNodeSchema extends TreeNodeSchemaBase {\n static create(builder, name, specification) {\n const objectNodeFieldsObject = normalizeStructFields(specification);\n const objectNodeFields = objectToMapTyped(objectNodeFieldsObject);\n return new FlexObjectNodeSchema(builder, name, specification, objectNodeFieldsObject, objectNodeFields);\n }\n constructor(builder, name, info, objectNodeFieldsObject, \n // Allows reading fields through the normal map.\n // Stricter typing caused Specification to no longer be covariant, so has been removed.\n objectNodeFields) {\n const fields = mapIterable(objectNodeFields, ([k, v]) => [k, v.stored]);\n super(builder, name, info, new ObjectNodeStoredSchema(new Map(fields)));\n this.objectNodeFieldsObject = objectNodeFieldsObject;\n this.objectNodeFields = objectNodeFields;\n this.identifierFieldKeys = [];\n this.identifierFieldKeys = Array.from(filterIterable(objectNodeFields.entries(), ([k, f]) => f.kind.identifier === identifierFieldKindIdentifier), ([k]) => k);\n }\n getFieldSchema(field) {\n return this.objectNodeFields.get(field) ?? FlexFieldSchema.empty;\n }\n}\nfunction normalizeStructFields(fields) {\n const out = {};\n // eslint-disable-next-line no-restricted-syntax\n for (const key in fields) {\n if (Object.prototype.hasOwnProperty.call(fields, key)) {\n const element = fields[key];\n out[key] = normalizeField(element);\n }\n }\n return out;\n}\nfunction normalizeField(t) {\n if (t === undefined) {\n return FlexFieldSchema.empty;\n }\n assert(t instanceof FlexFieldSchema, 0x6ae /* invalid TreeFieldSchema */);\n return t;\n}\n/**\n * Allow any node (as long as it meets the schema for its own type).\n */\nexport const Any = \"Any\";\n/**\n * Checks if an {@link FlexAllowedTypes} is {@link (Any:type)}.\n */\nexport function allowedTypesIsAny(t) {\n return t.length === 1 && t[0] === Any;\n}\n/**\n * All policy for a specific field,\n * including functionality that does not have to be kept consistent across versions or deterministic.\n *\n * This can include policy for how to use this schema for \"view\" purposes, and well as how to expose editing APIs.\n *\n * @remarks\n * `Types` here must extend `AllowedTypes`, but this cannot be enforced with an \"extends\" clause: see {@link Unenforced} for details.\n *\n * @typeParam TKind - The kind of field.\n * @typeParam TTypes - The types allowed by the field.\n *\n * @sealed\n */\nexport class FlexFieldSchema {\n /**\n * Constructs a TreeFieldSchema.\n * @privateRemarks\n * Alias for the constructor, but with extends clause for the `Types` parameter that {@link FlexFieldSchema} can not have (due to recursive type issues).\n */\n static create(kind, allowedTypes) {\n return new FlexFieldSchema(kind, allowedTypes);\n }\n /**\n * Constructs a TreeFieldSchema, but missing the extends clause which breaks most recursive types.\n * @remarks\n * `Types` here must extend `AllowedTypes`, but this cannot be enforced with an \"extends\" clause: see {@link Unenforced} for details.\n * Prefer {@link FlexFieldSchema.create} when possible.\n */\n static createUnsafe(kind, allowedTypes) {\n return new FlexFieldSchema(kind, allowedTypes);\n }\n /**\n * @param kind - The {@link https://en.wikipedia.org/wiki/Kind_(type_theory) | kind} of this field.\n * Determine the multiplicity, viewing and editing APIs as well as the merge resolution policy.\n * @param allowedTypes - What types of tree nodes are allowed in this field.\n */\n constructor(kind, allowedTypes) {\n this.kind = kind;\n this.allowedTypes = allowedTypes;\n // Since this class can't have the desired extends clause, do some extra runtime validation:\n assert(Array.isArray(allowedTypes), 0x7bc /* Invalid allowedTypes */);\n for (const allowedType of allowedTypes) {\n if (allowedType === Any) {\n assert(allowedTypes.length === 1, 0x7bd /* Invalid Any in allowedTypes */);\n }\n else if (typeof allowedType !== \"function\") {\n assert(allowedType instanceof TreeNodeSchemaBase, 0x7be /* Invalid entry in allowedTypes */);\n }\n }\n const lazy = new Lazy(() => {\n const input = this.allowedTypes;\n const schema = allowedTypesSchemaSet(input);\n return {\n names: allowedTypesToTypeSet(input),\n schema,\n monomorphicChildType: schema !== Any ? oneFromSet(schema) : undefined,\n };\n });\n this.lazyTypes = lazy;\n this.stored = {\n kind: this.kind.identifier,\n get types() {\n return lazy.value.names;\n },\n };\n }\n /**\n * Types which are allowed in this field (by {@link TreeNodeSchemaIdentifier}), in a format optimized for stored schema.\n * This is the same set of types in {@link FlexFieldSchema.allowedTypes}, just in a different format.\n */\n get types() {\n return this.lazyTypes.value.names;\n }\n /**\n * Types which are allowed in this field.\n * This is the same set of types in {@link FlexFieldSchema.allowedTypes}, just as a set with laziness removed.\n * @privateRemarks\n * TODO:\n * 3 ways to access the allowed types are now exposed.\n * Reducing this and/or renaming the more friendly options to take the shorter name (`types`)\n * would be a good idea.\n */\n get allowedTypeSet() {\n return this.lazyTypes.value.schema;\n }\n /**\n * If exactly one type of child is allowed in this field, it is provided here.\n * @remarks\n * Some code paths (like unboxing and compressed tree encoding) special case schema with exactly one allowed type.\n * This field allows for simple and optimized handling of this case.\n */\n get monomorphicChildType() {\n return this.lazyTypes.value.monomorphicChildType;\n }\n /**\n * Compare this schema to another.\n *\n * @returns true iff the schema are identical.\n */\n equals(other) {\n if (other.kind !== this.kind) {\n return false;\n }\n if (other.types === undefined) {\n return this.types === undefined;\n }\n if (this.types === undefined) {\n return false;\n }\n return compareSets({\n a: this.types,\n b: other.types,\n aExtra: () => false,\n bExtra: () => false,\n });\n }\n}\n/**\n * Schema for a field which must always be empty.\n */\nFlexFieldSchema.empty = FlexFieldSchema.create(FieldKinds.forbidden, []);\n/**\n * Convert {@link FlexAllowedTypes} to {@link TreeTypeSet}.\n */\nexport function allowedTypesSchemaSet(t) {\n if (allowedTypesIsAny(t)) {\n return Any;\n }\n const list = t.map((value) => {\n if (typeof value === \"function\") {\n return value();\n }\n return value;\n });\n return new Set(list);\n}\n/**\n * Convert {@link FlexAllowedTypes} to {@link TreeTypeSet}.\n */\nexport function allowedTypesToTypeSet(t) {\n const list = allowedTypesSchemaSet(t);\n if (list === Any) {\n return undefined;\n }\n const names = Array.from(list, (type) => {\n assert(type instanceof TreeNodeSchemaBase, 0x7bf /* invalid allowed type */);\n return type.name;\n });\n return new Set(names);\n}\n/**\n * Converts a {@link FlexTreeSchema} into a {@link TreeStoredSchema}.\n */\nexport function intoStoredSchema(treeSchema) {\n return {\n rootFieldSchema: treeSchema.rootFieldSchema.stored,\n ...intoStoredSchemaCollection(treeSchema),\n };\n}\n/**\n * Converts a {@link SchemaCollection} into a {@link StoredSchemaCollection}.\n */\nexport function intoStoredSchemaCollection(treeSchema) {\n return {\n nodeSchema: new Map(mapIterable(treeSchema.nodeSchema.entries(), ([k, v]) => [k, v.stored])),\n };\n}\n// These schema type narrowing functions are preferred over `instanceof` due to being easier to migrate to class based schema.\n/**\n * Checks if a {@link FlexTreeNodeSchema} is a {@link FlexMapNodeSchema}.\n */\nexport function schemaIsMap(schema) {\n return schema instanceof FlexMapNodeSchema;\n}\n/**\n * Checks if a {@link FlexTreeNodeSchema} is a {@link LeafNodeSchema}.\n */\nexport function schemaIsLeaf(schema) {\n return schema instanceof LeafNodeSchema;\n}\n/**\n * Checks if a {@link FlexTreeNodeSchema} is a {@link FlexObjectNodeSchema}.\n */\nexport function schemaIsObjectNode(schema) {\n return schema instanceof FlexObjectNodeSchema;\n}\n//# sourceMappingURL=typedTreeSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AdaptedViewSchema, Compatibility, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { allowsRepoSuperset, isNeverTree, } from \"../modular-schema/index.js\";\nimport { intoStoredSchema, } from \"./typedTreeSchema.js\";\n/**\n * A collection of View information for schema, including policy.\n */\nexport class ViewSchema {\n constructor(policy, adapters, schema) {\n this.policy = policy;\n this.adapters = adapters;\n this.schema = schema;\n this.storedSchema = intoStoredSchema(schema);\n }\n /**\n * Determines the compatibility of a stored document\n * (based on its stored schema) with a viewer (based on its view schema).\n *\n * Adapters can be provided to handle differences between the two schema.\n * Adapters should only use to types in the `view` SchemaRepository.\n *\n * TODO: this API violates the parse don't validate design philosophy.\n * It should be wrapped with (or replaced by) a parse style API.\n */\n checkCompatibility(stored) {\n // TODO: support adapters\n // const adapted = this.adaptRepo(stored);\n const read = allowsRepoSuperset(this.policy, stored, this.storedSchema)\n ? Compatibility.Compatible\n : // TODO: support adapters\n // : allowsRepoSuperset(this.policy, adapted.adaptedForViewSchema, this.storedSchema)\n // ? Compatibility.RequiresAdapters\n Compatibility.Incompatible;\n // TODO: Extract subset of adapters that are valid to use on stored\n // TODO: separate adapters from schema updates\n const write = allowsRepoSuperset(this.policy, this.storedSchema, stored)\n ? Compatibility.Compatible\n : // TODO: support adapters\n // : allowsRepoSuperset(this.policy, this.storedSchema, adapted.adaptedForViewSchema)\n // TODO: IThis assumes adapters are bidirectional.\n // Compatibility.RequiresAdapters\n Compatibility.Incompatible;\n // TODO: compute this properly (and maybe include the set of schema changes needed for it?).\n // Maybe updates would happen lazily when needed to store data?\n // When willingness to updates can avoid need for some adapters,\n // how should it be decided if the adapter should be used to avoid the update?\n // TODO: is this case actually bi-variant, making this correct if we did it for each schema independently?\n let writeAllowingStoredSchemaUpdates = \n // TODO: This should consider just the updates needed\n // (ex: when view covers a subset of stored after stored has a update to that subset).\n allowsRepoSuperset(this.policy, stored, this.storedSchema)\n ? Compatibility.Compatible\n : // TODO: this assumes adapters can translate in both directions. In general this will not be true.\n // TODO: this also assumes that schema updates to the adapted repo would translate to\n // updates on the stored schema, which is also likely untrue.\n // // TODO: support adapters\n // allowsRepoSuperset(this.policy, adapted.adaptedForViewSchema, this.storedSchema)\n // ? Compatibility.RequiresAdapters // Requires schema updates. TODO: consider adapters that can update writes.\n Compatibility.Incompatible;\n // Since the above does not consider partial updates,\n // we can improve the tolerance a bit by considering the op-op update:\n writeAllowingStoredSchemaUpdates = Math.max(writeAllowingStoredSchemaUpdates, write);\n return { read, write, writeAllowingStoredSchemaUpdates };\n }\n /**\n * Compute a schema that `original` could be viewed as using adapters as needed.\n *\n * TODO: have a way for callers to get invalidated on schema updates.\n */\n adaptRepo(stored) {\n // Sanity check on adapters:\n // it's probably a bug it they use the never types,\n // since there never is a reason to have a never type as an adapter input,\n // and its impossible for an adapter to be correctly implemented if its output type is never\n // (unless its input is also never).\n for (const adapter of this.adapters?.tree ?? []) {\n if (isNeverTree(this.policy, this.storedSchema, this.storedSchema.nodeSchema.get(adapter.output))) {\n fail(\"tree adapter for stored adapter.output should not be never\");\n }\n }\n const adapted = {\n rootFieldSchema: this.adaptField(stored.rootFieldSchema),\n nodeSchema: new Map(),\n };\n for (const [key, schema] of stored.nodeSchema) {\n const adapatedTree = this.adaptTree(schema);\n adapted.nodeSchema.set(key, adapatedTree);\n }\n // TODO: subset these adapters to the ones that were needed/used.\n return new AdaptedViewSchema(this.adapters, adapted);\n }\n /**\n * Adapt original such that it allows member types which can be adapted to its specified types.\n */\n adaptField(original) {\n if (original.types !== undefined) {\n const types = new Set(original.types);\n for (const treeAdapter of this.adapters?.tree ?? []) {\n if (types.has(treeAdapter.input)) {\n types.delete(treeAdapter.input);\n types.add(treeAdapter.output);\n }\n }\n return { kind: original.kind, types };\n }\n return original;\n }\n adaptTree(original) {\n // TODO: support adapters like missing field adapters.\n return original;\n }\n}\n//# sourceMappingURL=view.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/** A symbol used to identify a `MarkedEager`. */\nconst flexListEager = Symbol(\"FlexList Eager\");\n/** Returns true iff the given item is a function and is not a `MarkedEager`. */\nexport function isLazy(item) {\n return typeof item === \"function\" && item[flexListEager] !== true;\n}\n/**\n * Mark the given object as an eager item in a `FlexList`.\n * @remarks\n * This only has an effect on function objects that would otherwise be considered to be lazy items in a `FlexList`.\n * @param t - The object to mark as eager.\n * @returns `t`, marked as eager if applicable.\n */\nexport function markEager(t) {\n return isLazy(t)\n ? Object.defineProperty(t, flexListEager, {\n value: true,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n : t;\n}\n/**\n * Given a `FlexList` of eager and lazy items, return an equivalent list where all items are lazy.\n */\nexport function normalizeFlexListLazy(t) {\n return t.map((value) => {\n if (isLazy(value)) {\n return value;\n }\n return () => value;\n });\n}\n/**\n * Given a `FlexList` of eager and lazy items, return an equivalent list where all items are eager.\n */\nexport function normalizeFlexListEager(t) {\n const data = t.map((value) => {\n if (isLazy(value)) {\n return value();\n }\n return value;\n });\n return data;\n}\n//# sourceMappingURL=flexList.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { Multiplicity, } from \"../../core/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { FieldKinds, defaultSchemaPolicy } from \"../default-schema/index.js\";\nimport { normalizeFlexListEager } from \"./flexList.js\";\nimport { FlexMapNodeSchema, FlexObjectNodeSchema, LeafNodeSchema, allowedTypesIsAny, } from \"./typedTreeSchema.js\";\n{\n}\nexport const schemaLintDefault = {\n rejectForbidden: true,\n rejectEmpty: true,\n};\n/**\n * Build and validate a SchemaCollection.\n *\n * As much as possible tries to detect anything that might be a mistake made by the schema author.\n * This will error on some valid but probably never intended to be used patterns\n * (like libraries with the same name, nodes which are impossible to create etc).\n *\n * @param name - Name of the resulting library.\n * @param lintConfiguration - configuration for what errors to generate.\n * @param libraries - Data to aggregate into the SchemaCollection.\n * @param rootFieldSchema - Only validated: not included in the result.\n *\n * @privateRemarks\n * This checks that input works with defaultSchemaPolicy.\n * If support fo other policies is added, this will need to take in the policy.\n */\nexport function aggregateSchemaLibraries(name, lintConfiguration, libraries, rootFieldSchema) {\n const nodeSchema = new Map();\n const adapters = { tree: [] };\n const errors = [];\n const librarySet = new Set();\n const libraryNames = new Set();\n for (const library of libraries) {\n if (librarySet.has(library)) {\n // SchemaBuilder should ensure this doesn't happen, but include it here for completeness.\n errors.push(`Duplicate library named \"${library.name}\"`);\n continue;\n }\n librarySet.add(library);\n if (libraryNames.has(library.name)) {\n // This wouldn't break anything, but could make error messages confusing, so its better to avoid duplicates.\n errors.push(`Found another library with name \"${library.name}\"`);\n }\n for (const [key, tree] of library.nodeSchema) {\n // This check is an assert since if it fails, the other error messages would be incorrect.\n assert(tree.builder.name === library.name, 0x6a9 /* tree must be part by the library its in */);\n const existing = nodeSchema.get(key);\n if (existing !== undefined) {\n errors.push(`Multiple tree schema for identifier \"${key}\". One from library \"${existing.builder.name}\" and one from \"${tree.builder.name}\"`);\n }\n else {\n nodeSchema.set(key, tree);\n }\n }\n for (const _adapter of library.adapters.tree ?? []) {\n fail(\"Adapters not yet supported\");\n }\n }\n if (errors.length !== 0) {\n fail(errors.join(\"\\n\"));\n }\n const result = { rootFieldSchema, nodeSchema, adapters, policy: defaultSchemaPolicy };\n const errors2 = validateSchemaCollection(lintConfiguration, result, rootFieldSchema);\n if (errors2.length !== 0) {\n fail(errors2.join(\"\\n\"));\n }\n return {\n name,\n nodeSchema,\n adapters,\n };\n}\n/**\n * Returns an array of descriptions of errors in the collection.\n *\n * As much as possible tries to detect anything that might be a mistake made by the schema author.\n * This will error on some valid but probably never intended to be used patterns (like never nodes).\n */\nexport function validateSchemaCollection(lintConfiguration, collection, rootFieldSchema) {\n const errors = [];\n // TODO: make this check specific to document schema. Replace check here for no tre or field schema (empty library).\n if (collection.nodeSchema.size === 0 && lintConfiguration.rejectEmpty) {\n errors.push(\"No tree schema are included, meaning no data can possibly be stored.\");\n }\n // Validate that all schema referenced are included, and none are \"never\".\n if (rootFieldSchema !== undefined) {\n validateRootField(lintConfiguration, collection, rootFieldSchema, errors);\n }\n for (const [identifier, tree] of collection.nodeSchema) {\n if (tree instanceof FlexMapNodeSchema) {\n validateField(lintConfiguration, collection, tree.info, () => `Map fields of \"${identifier}\" schema from library \"${tree.builder.name}\"`, errors);\n if (tree.info.kind.multiplicity === Multiplicity.Single) {\n errors.push(`Map fields of \"${identifier}\" schema from library \"${tree.builder.name}\" has kind with multiplicity \"Single\". This is invalid since it requires all possible field keys to have a value under them.`);\n }\n }\n else if (tree instanceof LeafNodeSchema) {\n // No validation for now.\n }\n else if (tree instanceof FlexObjectNodeSchema) {\n for (const [key, field] of tree.objectNodeFields) {\n const description = () => `Object node field \"${key}\" of \"${identifier}\" schema from library \"${tree.builder.name}\"`;\n validateField(lintConfiguration, collection, field, description, errors);\n }\n }\n else {\n // TODO: there should be a common fallback that works for cases without a specialized implementation.\n fail(\"unrecognized node kind\");\n }\n }\n // TODO: validate adapters\n return errors;\n}\nexport function validateRootField(lintConfiguration, collection, field, errors) {\n const describeField = () => `Root field schema`;\n validateField(lintConfiguration, collection, field, describeField, errors);\n}\nexport function validateField(lintConfiguration, collection, field, describeField, errors) {\n const types = field.allowedTypes;\n if (!allowedTypesIsAny(types)) {\n const normalizedTypes = normalizeFlexListEager(types);\n for (const type of normalizedTypes) {\n const referenced = collection.nodeSchema.get(type.name);\n if (referenced === undefined) {\n errors.push(`${describeField()} references type \"${type.name}\" from library \"${type.builder.name}\" which is not defined. Perhaps another type was intended, or that library needs to be added.`);\n }\n }\n if (types.length === 0 && lintConfiguration.rejectEmpty) {\n errors.push(`${describeField()} requires children to have a type from a set of zero types. This means the field must always be empty.`);\n }\n }\n const kind = field.kind;\n const kindFromPolicy = defaultSchemaPolicy.fieldKinds.get(kind.identifier);\n if (kindFromPolicy === undefined) {\n errors.push(`\"${describeField()}\" has unknown field kind \"${kind.identifier}\".`);\n }\n else if (kindFromPolicy !== kind) {\n errors.push(`${describeField()} has field kind \"${kind.identifier}\" which isn't a reference to the default kind with that identifier.`);\n }\n else if (kind === FieldKinds.forbidden) {\n if (lintConfiguration.rejectForbidden) {\n errors.push(`${describeField()} explicitly uses \"forbidden\" kind, which is not recommended.`);\n }\n } // else if (kind !== counter) {\n // \terrors.push(\n // \t\t`${describeField()} explicitly uses \"counter\" kind, which is finished.`,\n // \t);\n // }\n}\n//# sourceMappingURL=schemaCollection.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { transformObjectMap, } from \"../util/index.js\";\nimport { defaultSchemaPolicy } from \"./default-schema/index.js\";\nimport { Any, FlexFieldSchema, FlexMapNodeSchema, FlexObjectNodeSchema, TreeNodeSchemaBase, aggregateSchemaLibraries, schemaLintDefault, } from \"./typed-schema/index.js\";\n/**\n * Builds schema libraries, and the schema within them.\n * *\n * @privateRemarks\n * This class does not directly depend on any specific field kinds,\n * or bake in any defaults that might have compatibility implications.\n * All use of such implicit defaults is done by subclasses, which thus get versioning implications.\n */\nexport class SchemaBuilderBase {\n /**\n * @param defaultKind - The default field kind to use when inferring a {@link FlexFieldSchema} from {@link FlexImplicitAllowedTypes}.\n */\n constructor(defaultKind, options) {\n this.defaultKind = defaultKind;\n this.finalized = false;\n this.treeNodeSchema = new Map();\n this.adapters = {};\n this.name = options.name ?? options.scope;\n this.lintConfiguration = { ...schemaLintDefault, ...options.lint };\n this.libraries = new Set();\n this.addLibraries(...(options.libraries ?? []));\n this.scope = options.scope;\n }\n scoped(name) {\n return `${this.scope}.${name}`;\n }\n /**\n * Adds more libraries to this one.\n *\n * Unlike adding of individual schema, adding of libraries is idempotent.\n * If a single library is added multiple times (even indirectly via libraries it was added into),\n * only a single copy will be included, so they will not conflict.\n * This allows adding any library this one depends on without risk of conflicts for users of this library.\n * Contents within the added libraries can still conflict however.\n * Such errors will be reported when finalizing this builder into a library of document schema.\n */\n addLibraries(...libraries) {\n for (const libs of libraries) {\n for (const lib of libs.libraries) {\n this.libraries.add(lib);\n }\n }\n }\n addNodeSchema(schema) {\n assert(!this.treeNodeSchema.has(schema.name), 0x799 /* Conflicting TreeNodeSchema names */);\n this.treeNodeSchema.set(schema.name, schema);\n }\n finalizeCommon(field) {\n assert(!this.finalized, 0x79a /* SchemaBuilder can only be finalized once. */);\n this.finalized = true;\n this.libraries.add({\n name: this.name,\n nodeSchema: this.treeNodeSchema,\n adapters: this.adapters,\n });\n // Check for errors and aggregate data\n return aggregateSchemaLibraries(this.name, this.lintConfiguration, this.libraries, field);\n }\n /**\n * Produce SchemaLibraries which capture the content added to this builder, as well as any additional SchemaLibraries that were added to it.\n * May only be called once after adding content to builder is complete.\n */\n intoLibrary() {\n const aggregated = this.finalizeCommon();\n // Full library set (instead of just aggregated) is kept since it is required to handle deduplication of libraries included through different paths.\n return { nodeSchema: aggregated.nodeSchema, libraries: this.libraries };\n }\n /**\n * Produce a TreeSchema which captures the content added to this builder, any additional SchemaLibraries that were added to it and a root field.\n * Can be used with schematize to provide schema aware access to document content.\n *\n * @remarks\n * May only be called once after adding content to builder is complete.\n */\n intoSchema(root) {\n // return this.toDocumentSchemaInternal(normalizeField(root, DefaultFieldKind));\n const field = this.normalizeField(root);\n const library = this.finalizeCommon(field);\n const typed = {\n nodeSchema: library.nodeSchema,\n adapters: library.adapters,\n rootFieldSchema: field,\n policy: defaultSchemaPolicy,\n };\n return typed;\n }\n /**\n * Define (and add to this library) a {@link FlexObjectNodeSchema}.\n *\n * The name must be unique among all TreeNodeSchema in the the document schema.\n */\n object(name, t) {\n const schema = FlexObjectNodeSchema.create(this, this.scoped(name), transformObjectMap(t, (field) => this.normalizeField(field)));\n this.addNodeSchema(schema);\n return schema;\n }\n /**\n * Same as `object` but with less type safety and works for recursive objects.\n * Reduced type safety is a side effect of a workaround for a TypeScript limitation.\n *\n * See {@link Unenforced} for details.\n *\n * TODO: Make this work with ImplicitFieldSchema.\n */\n objectRecursive(name, t) {\n return this.object(name, t);\n }\n /**\n * Define (and add to this library) a {@link FlexMapNodeSchema}.\n */\n map(name, fieldSchema) {\n const schema = FlexMapNodeSchema.create(this, this.scoped(name), fieldSchema);\n this.addNodeSchema(schema);\n return schema;\n }\n /**\n * Same as `map` but with less type safety and works for recursive objects.\n * Reduced type safety is a side effect of a workaround for a TypeScript limitation.\n *\n * See {@link Unenforced} for details.\n *\n * TODO: Make this work with ImplicitFieldSchema.\n */\n mapRecursive(name, t) {\n return this.map(name, t);\n }\n /**\n * Define a {@link FlexFieldSchema}.\n *\n * @param kind - The [kind](https://en.wikipedia.org/wiki/Kind_(type_theory)) of this field.\n * Determine the multiplicity, viewing and editing APIs as well as the merge resolution policy.\n * @param allowedTypes - What types of children are allowed in this field.\n * @returns a {@link FlexFieldSchema} which can be used as a object field (see {@link SchemaBuilderBase.object}),\n * a map field (see {@link SchemaBuilderBase.map}), a field node (see {@link SchemaBuilderBase.fieldNode}) or the root field (see {@link SchemaBuilderBase.intoSchema}).\n *\n * @privateRemarks\n * TODO:\n * If a solution to TreeFieldSchema not being able to have extends clauses gets found,\n * consider just having users do `new TreeFieldSchema` instead?\n */\n static field(kind, allowedTypes) {\n return FlexFieldSchema.create(kind, normalizeAllowedTypes(allowedTypes));\n }\n /**\n * Define a schema for a field.\n * Same as {@link SchemaBuilderBase.field} but is less type safe and supports recursive types.\n * This API is less safe to work around a [limitation of TypeScript](https://github.com/microsoft/TypeScript/issues/55758).\n *\n * T must extends `AllowedTypes`: This cannot be enforced via TypeScript since such an \"extends\" clauses cause recursive types to error with:\n * \"'theSchema' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.\"\n *\n * TODO: Try and find a way to provide a more specific type without triggering the above error.\n */\n static fieldRecursive(kind, ...allowedTypes) {\n return FlexFieldSchema.createUnsafe(kind, allowedTypes);\n }\n /**\n * Normalizes an {@link FlexImplicitFieldSchema} into a {@link FlexFieldSchema} using this schema builder's `defaultKind`.\n */\n normalizeField(schema) {\n return normalizeField(schema, this.defaultKind);\n }\n}\n/**\n * Normalizes an {@link FlexImplicitAllowedTypes} into {@link FlexAllowedTypes}.\n */\nexport function normalizeAllowedTypes(schema) {\n if (schema === Any) {\n return [Any];\n }\n if (schema instanceof TreeNodeSchemaBase) {\n return [schema];\n }\n assert(Array.isArray(schema), 0x7c6 /* invalid ImplicitAllowedTypes */);\n return schema;\n}\n/**\n * Normalizes an {@link FlexImplicitFieldSchema} into a {@link FlexFieldSchema}.\n */\nexport function normalizeField(schema, defaultKind) {\n if (schema instanceof FlexFieldSchema) {\n return schema;\n }\n const allowedTypes = normalizeAllowedTypes(schema);\n return FlexFieldSchema.create(defaultKind, allowedTypes);\n}\n//# sourceMappingURL=schemaBuilderBase.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FieldKinds } from \"./default-schema/index.js\";\nimport { SchemaBuilderBase } from \"./schemaBuilderBase.js\";\nimport { LeafNodeSchema } from \"./typed-schema/index.js\";\n/**\n * Extends {@link SchemaBuilderBase} with functionality only used to create built in special libraries.\n * Defaults to \"required\" fields.\n * @privateRemarks Should not be package exported.\n */\nexport class SchemaBuilderInternal extends SchemaBuilderBase {\n constructor(options) {\n super(FieldKinds.required, options);\n }\n /**\n * Define (and add to this library) a {@link TreeNodeSchema} for a node that wraps a value.\n * Such nodes will be implicitly unwrapped to the value in some APIs.\n *\n * The name must be unique among all TreeNodeSchema in the the document schema.\n *\n * In addition to the normal properties of all nodes (having a schema for example),\n * Leaf nodes only contain a value.\n * Leaf nodes cannot have fields.\n *\n * TODO: Maybe ban undefined from allowed values here.\n * TODO: Decide and document how unwrapping works for non-primitive terminals.\n */\n leaf(name, t) {\n const schema = LeafNodeSchema.create(this, this.scoped(name), t);\n this.addNodeSchema(schema);\n return schema;\n }\n}\n//# sourceMappingURL=schemaBuilder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { assertIsStableId, isStableId } from \"@fluidframework/id-compressor/internal\";\nimport { brand, extractFromOpaque } from \"../../util/index.js\";\n/**\n * Creates a {@link NodeKeyManager} from the given {@link IIdCompressor}.\n * @param idCompressor - the compressor to use for key generation, compression, and decompression.\n * If undefined, then attempts to generate or convert keys will throw an error.\n */\nexport function createNodeKeyManager(idCompressor) {\n return {\n generateLocalNodeKey: () => {\n assert(idCompressor !== undefined, 0x6e4 /* Runtime IdCompressor must be available to generate local node keys */);\n return brand(idCompressor.generateCompressedId());\n },\n localizeNodeKey: (key) => {\n assert(idCompressor !== undefined, 0x6e5 /* Runtime IdCompressor must be available to convert node keys */);\n return brand(idCompressor.recompress(key));\n },\n stabilizeNodeKey: (key) => {\n assert(idCompressor !== undefined, 0x6e6 /* Runtime IdCompressor must be available to convert node keys */);\n return brand(\n // TODO: The assert below is required for type safety but is maybe slow\n assertIsStableId(idCompressor.decompress(extractFromOpaque(key))));\n },\n tryLocalizeNodeKey: (key) => {\n assert(idCompressor !== undefined, 0x6e9 /* Runtime IdCompressor must be available to convert node keys */);\n if (isStableNodeKey(key)) {\n const compressedKey = idCompressor.tryRecompress(key);\n if (compressedKey !== undefined) {\n return brand(compressedKey);\n }\n }\n },\n };\n}\nexport function isStableNodeKey(key) {\n return isStableId(key);\n}\n//# sourceMappingURL=nodeKeyManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { brand } from \"../../util/index.js\";\n/**\n * Compares two {@link LocalNodeKey}s.\n * All {@link LocalNodeKey}s retrieved from a single SharedTree client can be totally ordered using this comparator.\n * @param a - the first key to compare\n * @param b - the second key to compare\n * @returns `0` if `a` and `b` are the same key, otherwise `-1` if `a` is ordered before `b` or `1` if `a` is ordered after `b`.\n */\nexport function compareLocalNodeKeys(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\n/**\n * The TreeNodeSchemaIdentifier for node keys.\n * @privateRemarks TODO: Come up with a unified and collision-resistant naming schema for types defined by the system.\n * For now, we'll use `__` to reduce the change of collision, since this is what other internal properties use in Fluid.\n */\nexport const nodeKeyTreeIdentifier = brand(\"com.fluidframework.nodeKey.NodeKey\");\n//# sourceMappingURL=nodeKey.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { anchorSlot, } from \"../../core/index.js\";\n/**\n * An anchor slot which records the {@link FlexTreeNode} associated with that anchor, if there is one.\n * @remarks This always points to a \"real\" {@link FlexTreeNode} (i.e. a `LazyTreeNode`), never to a \"raw\" node.\n */\nexport const flexTreeSlot = anchorSlot();\n/**\n * Indicates that an object is a flex tree.\n */\nexport const flexTreeMarker = Symbol(\"flexTreeMarker\");\nexport function isFlexTreeEntity(t) {\n return typeof t === \"object\" && t !== null && flexTreeMarker in t;\n}\nexport function isFlexTreeNode(t) {\n return isFlexTreeEntity(t) && t[flexTreeMarker] === FlexTreeEntityKind.Node;\n}\n/**\n */\nexport var FlexTreeEntityKind;\n(function (FlexTreeEntityKind) {\n FlexTreeEntityKind[FlexTreeEntityKind[\"Node\"] = 0] = \"Node\";\n FlexTreeEntityKind[FlexTreeEntityKind[\"Field\"] = 1] = \"Field\";\n})(FlexTreeEntityKind || (FlexTreeEntityKind = {}));\n/**\n * Status of the tree that a particular node belongs to.\n * @public\n */\nexport var TreeStatus;\n(function (TreeStatus) {\n /**\n * Is parented under the root field.\n */\n TreeStatus[TreeStatus[\"InDocument\"] = 0] = \"InDocument\";\n /**\n * Is not parented under the root field, but can be added back to the original document tree.\n */\n TreeStatus[TreeStatus[\"Removed\"] = 1] = \"Removed\";\n /**\n * Is removed and cannot be added back to the original document tree.\n */\n TreeStatus[TreeStatus[\"Deleted\"] = 2] = \"Deleted\";\n /**\n * Is created but has not yet been inserted into the tree.\n */\n TreeStatus[TreeStatus[\"New\"] = 3] = \"New\";\n})(TreeStatus || (TreeStatus = {}));\n/**\n * Reserved object node field property names to avoid collisions with the rest of the object node API.\n */\nexport const reservedObjectNodeFieldPropertyNames = [\n \"anchorNode\",\n \"constructor\",\n \"context\",\n \"is\",\n \"parentField\",\n \"schema\",\n \"tryGetField\",\n \"type\",\n \"value\",\n \"boxedIterator\",\n \"iterator\",\n \"getBoxed\",\n];\n/**\n * Reserved object node field property names prefixes.\n * These are reserved to avoid collisions with properties derived from field other field names.\n *\n * Field names starting with these must be followed by a lowercase letter, or be escaped.\n */\nexport const reservedObjectNodeFieldPropertyNamePrefixes = [\n \"set\",\n \"boxed\",\n \"field\",\n \"Field\",\n];\n// #endregion\n//# sourceMappingURL=flexTreeTypes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport const Skip = Symbol(\"Skip\");\n/**\n * Visit iterable tree.\n *\n * @remarks\n * Non-recursive depth first traversal.\n */\nexport function visitIterableTree(root, iterator, visitor) {\n const queue = [[root]];\n let next;\n while ((next = queue.pop())) {\n for (const child of next) {\n if (visitor(child) !== Skip) {\n queue.push(iterator(child));\n }\n }\n }\n}\n/**\n * Visit iterable tree.\n * Allows state to be computed in parents and passed to children.\n *\n * @remarks\n * Non-recursive depth first traversal.\n */\nexport function visitIterableTreeWithState(root, initial, visitor) {\n const queue = [[initial, root]];\n let next;\n while ((next = queue.pop())) {\n const [state, nestItem] = next;\n for (const child of nestItem) {\n const result = visitor(child, state);\n if (result !== Skip) {\n queue.push([result, child]);\n }\n }\n }\n}\n/**\n * Visit bipartite iterable tree.\n *\n * @remarks\n * Non-recursive depth first traversal.\n *\n * Particularly useful for processing trees with their alternating node and field levels.\n */\nexport function visitBipartiteIterableTree(root, visitorA, visitorB) {\n const queueA = [root];\n let nextA;\n while ((nextA = queueA.pop())) {\n if (visitorA(nextA) !== Skip) {\n for (const nextB of nextA) {\n if (visitorB(nextB) !== Skip) {\n for (const child of nextB) {\n queueA.push(child);\n }\n }\n }\n }\n }\n}\n/**\n * Visit bipartite iterable tree.\n * Allows state to be computed in parents and passed to children.\n *\n * @remarks\n * Non-recursive depth first traversal.\n *\n * Particularly useful for processing trees with their alternating node and field levels.\n *\n * @privateRemarks\n * Other traversal cases, like ones passing data up (via map or reduce patterns) could be supported by extending this or adding more utilities.\n * Such utility functions really only provide an improvement of hand coding each cases if the non-recessiveness is required.\n * Since supporting very deeps trees hasn't been a priority, such visitors are also not a priority, and are thus not included here for now.\n */\nexport function visitBipartiteIterableTreeWithState(root, fromAbove, iterateA, iterateB, visitorA, visitorB) {\n const queueA = [[root, fromAbove]];\n let next;\n while ((next = queueA.pop())) {\n const result = visitorA(...next);\n if (result !== Skip) {\n for (const nextB of iterateA(next[0])) {\n const resultB = visitorB(nextB, result);\n if (resultB !== Skip) {\n for (const child of iterateB(nextB)) {\n queueA.push([child, resultB]);\n }\n }\n }\n }\n }\n}\n//# sourceMappingURL=navigation.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LazyEntity_lazyCursor;\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { ITreeSubscriptionCursorState, } from \"../../core/index.js\";\nimport { disposeSymbol } from \"../../util/index.js\";\nimport { flexTreeMarker, } from \"./flexTreeTypes.js\";\nexport const prepareForEditSymbol = Symbol(\"prepareForEdit\");\nexport const isFreedSymbol = Symbol(\"isFreed\");\nexport const tryMoveCursorToAnchorSymbol = Symbol(\"tryMoveCursorToAnchor\");\nexport const forgetAnchorSymbol = Symbol(\"forgetAnchor\");\nexport const cursorSymbol = Symbol(\"cursor\");\n/**\n * Symbol used to access the (generic) anchor of a {@link LazyEntity}.\n */\nexport const anchorSymbol = Symbol(\"anchor\");\n/**\n * Assert `entity` is not deleted.\n * @privateRemarks\n * This can be faster than getting the tree status and checking that since that can require computing removed vs deleted.\n * TODO: provide a non implementation dependent way to leverage this optimization.\n */\nexport function assertFlexTreeEntityNotFreed(entity) {\n assert(entity instanceof LazyEntity, 0x8c9 /* unexpected implementation */);\n assert(!entity[isFreedSymbol](), 0x8ca /* Use after free */);\n}\n/**\n * This is a base class for lazy (cursor based) UntypedEntity implementations, which uniformly handles cursors and anchors.\n */\nexport class LazyEntity {\n constructor(context, schema, cursor, anchor) {\n this.context = context;\n this.schema = schema;\n _LazyEntity_lazyCursor.set(this, void 0);\n this[anchorSymbol] = anchor;\n __classPrivateFieldSet(this, _LazyEntity_lazyCursor, cursor.fork(\"LazyEntity Fork\"), \"f\");\n context.withCursors.add(this);\n this.context.withAnchors.add(this);\n }\n [(_LazyEntity_lazyCursor = new WeakMap(), disposeSymbol)]() {\n __classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\").free();\n this.context.withCursors.delete(this);\n this[forgetAnchorSymbol]();\n this.context.withAnchors.delete(this);\n }\n [prepareForEditSymbol]() {\n __classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\").clear();\n this.context.withCursors.delete(this);\n }\n [isFreedSymbol]() {\n return __classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\").state === ITreeSubscriptionCursorState.Freed;\n }\n get [cursorSymbol]() {\n if (__classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\").state !== ITreeSubscriptionCursorState.Current) {\n assert(__classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\").state === ITreeSubscriptionCursorState.Cleared, 0x778 /* Unset cursor should be in cleared state */);\n assert(this[anchorSymbol] !== undefined, 0x779 /* FlexTree should have an anchor if it does not have a cursor */);\n const result = this[tryMoveCursorToAnchorSymbol](__classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\"));\n assert(result === 1 /* TreeNavigationResult.Ok */, 0x77a /* It is invalid to access a FlexTree node which no longer exists */);\n this.context.withCursors.add(this);\n }\n return __classPrivateFieldGet(this, _LazyEntity_lazyCursor, \"f\");\n }\n}\n/**\n * Prevent Entities from inheriting members from Object.prototype including:\n * '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', '__proto__',\n * 'hasOwnProperty', 'isPrototypeOf', 'valueOf', 'propertyIsEnumerable', 'toLocaleString' and 'toString'.\n *\n * This opens up more options for field names on struct nodes.\n */\nObject.setPrototypeOf(LazyEntity.prototype, null);\n//# sourceMappingURL=lazyEntity.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { inCursorNode } from \"../../core/index.js\";\nimport { FieldKinds } from \"../default-schema/index.js\";\nimport { schemaIsLeaf, } from \"../typed-schema/index.js\";\nimport { makeField } from \"./lazyField.js\";\nimport { makeTree } from \"./lazyNode.js\";\n/**\n * See {@link FlexTreeUnboxNode} for documentation on what unwrapping this performs.\n */\nexport function unboxedTree(context, schema, cursor) {\n if (schemaIsLeaf(schema)) {\n return cursor.value;\n }\n return makeTree(context, cursor);\n}\n/**\n * See {@link FlexTreeUnboxNodeUnion} for documentation on what unwrapping this performs.\n */\nexport function unboxedUnion(context, schema, cursor) {\n const type = schema.monomorphicChildType;\n if (type !== undefined) {\n return unboxedTree(context, type, cursor);\n }\n return makeTree(context, cursor);\n}\n/**\n * @param context - the common context of the field.\n * @param schema - the TreeFieldStoredSchema of the field.\n * @param cursor - the cursor, which must point to the field being proxified.\n */\nexport function unboxedField(context, schema, cursor) {\n const kind = schema.kind;\n if (kind === FieldKinds.required) {\n return inCursorNode(cursor, 0, (innerCursor) => unboxedUnion(context, schema, innerCursor));\n }\n if (kind === FieldKinds.optional) {\n if (cursor.getFieldLength() === 0) {\n return undefined;\n }\n return inCursorNode(cursor, 0, (innerCursor) => unboxedUnion(context, schema, innerCursor));\n }\n // TODO: forbidden and nodeKey\n return makeField(context, schema, cursor);\n}\n//# sourceMappingURL=unboxed.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LazyTreeNode_removeDeleteCallback;\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { inCursorField, mapCursorFields, rootFieldKey, } from \"../../core/index.js\";\nimport { brand, capitalize, disposeSymbol, fail, getOrCreate } from \"../../util/index.js\";\nimport { FieldKinds } from \"../default-schema/index.js\";\nimport { Any, FlexFieldSchema, schemaIsLeaf, schemaIsMap, schemaIsObjectNode, } from \"../typed-schema/index.js\";\nimport { FlexTreeEntityKind, flexTreeMarker, flexTreeSlot, reservedObjectNodeFieldPropertyNamePrefixes, reservedObjectNodeFieldPropertyNames, } from \"./flexTreeTypes.js\";\nimport { LazyEntity, anchorSymbol, cursorSymbol, forgetAnchorSymbol, tryMoveCursorToAnchorSymbol, } from \"./lazyEntity.js\";\nimport { makeField } from \"./lazyField.js\";\nimport { unboxedField } from \"./unboxed.js\";\n/**\n * @param cursor - This does not take ownership of this cursor: Node will fork it as needed.\n */\nexport function makeTree(context, cursor) {\n const anchor = cursor.buildAnchor();\n const anchorNode = context.checkout.forest.anchors.locate(anchor) ??\n fail(\"cursor should point to a node that is not the root of the AnchorSet\");\n const cached = anchorNode.slots.get(flexTreeSlot);\n if (cached !== undefined) {\n context.checkout.forest.anchors.forget(anchor);\n assert(cached.context === context, 0x782 /* contexts must match */);\n assert(cached instanceof LazyTreeNode, 0x92c /* Expected LazyTreeNode */);\n return cached;\n }\n const schema = context.schema.nodeSchema.get(cursor.type) ?? fail(\"missing schema\");\n return buildSubclass(context, schema, cursor, anchorNode, anchor);\n}\nfunction cleanupTree(anchor) {\n const cached = anchor.slots.get(flexTreeSlot) ?? fail(\"tree should only be cleaned up once\");\n assert(cached instanceof LazyTreeNode, 0x92d /* Expected LazyTreeNode */);\n cached[disposeSymbol]();\n}\nfunction buildSubclass(context, schema, cursor, anchorNode, anchor) {\n if (schemaIsMap(schema)) {\n return new LazyMap(context, schema, cursor, anchorNode, anchor);\n }\n if (schemaIsLeaf(schema)) {\n return new LazyLeaf(context, schema, cursor, anchorNode, anchor);\n }\n if (schemaIsObjectNode(schema)) {\n return buildLazyObjectNode(context, schema, cursor, anchorNode, anchor);\n }\n // TODO: there should be a common fallback that works for cases without a specialized implementation.\n fail(\"unrecognized node kind\");\n}\n/**\n * Lazy implementation of {@link FlexTreeNode}.\n */\nexport class LazyTreeNode extends LazyEntity {\n get [(_LazyTreeNode_removeDeleteCallback = new WeakMap(), flexTreeMarker)]() {\n return FlexTreeEntityKind.Node;\n }\n constructor(context, schema, cursor, anchorNode, anchor) {\n super(context, schema, cursor, anchor);\n this.anchorNode = anchorNode;\n // Using JS private here prevents it from showing up as a enumerable own property, or conflicting with struct fields.\n _LazyTreeNode_removeDeleteCallback.set(this, void 0);\n assert(cursor.mode === 0 /* CursorLocationType.Nodes */, 0x783 /* must be in nodes mode */);\n anchorNode.slots.set(flexTreeSlot, this);\n __classPrivateFieldSet(this, _LazyTreeNode_removeDeleteCallback, anchorNode.on(\"afterDestroy\", cleanupTree), \"f\");\n assert(this.context.schema.nodeSchema.get(this.schema.name) !== undefined, 0x784 /* There is no explicit schema for this node type. Ensure that the type is correct and the schema for it was added to the TreeStoredSchema */);\n this.type = schema.name;\n }\n is(schema) {\n assert(this.context.schema.nodeSchema.get(schema.name) === schema, 0x785 /* Narrowing must be done to a schema that exists in this context */);\n return this.schema === schema;\n }\n [tryMoveCursorToAnchorSymbol](cursor) {\n return this.context.checkout.forest.tryMoveCursorToNode(this[anchorSymbol], cursor);\n }\n [forgetAnchorSymbol]() {\n // This type unconditionally has an anchor, so `forgetAnchor` is always called and cleanup can be done here:\n // After this point this node will not be usable,\n // so remove it from the anchor incase a different context (or the same context later) uses this AnchorSet.\n this.anchorNode.slots.delete(flexTreeSlot);\n __classPrivateFieldGet(this, _LazyTreeNode_removeDeleteCallback, \"f\").call(this);\n this.context.checkout.forest.anchors.forget(this[anchorSymbol]);\n }\n get value() {\n return this[cursorSymbol].value;\n }\n tryGetField(fieldKey) {\n const schema = this.schema.getFieldSchema(fieldKey);\n return inCursorField(this[cursorSymbol], fieldKey, (cursor) => {\n if (cursor.getFieldLength() === 0) {\n return undefined;\n }\n return makeField(this.context, schema, cursor);\n });\n }\n getBoxed(key) {\n return getBoxedField(this, key, this.schema.getFieldSchema(key));\n }\n boxedIterator() {\n return mapCursorFields(this[cursorSymbol], (cursor) => makeField(this.context, this.schema.getFieldSchema(cursor.getFieldKey()), cursor)).values();\n }\n get parentField() {\n const cursor = this[cursorSymbol];\n const index = this.anchorNode.parentIndex;\n assert(cursor.fieldIndex === index, 0x786 /* mismatched indexes */);\n const key = this.anchorNode.parentField;\n cursor.exitNode();\n assert(key === cursor.getFieldKey(), 0x787 /* mismatched keys */);\n let fieldSchema;\n // Check if the current node is in a detached sequence.\n if (this.anchorNode.parent === undefined) {\n // Parent field is a detached sequence, and thus needs special handling for its schema.\n // eslint-disable-next-line unicorn/prefer-ternary\n if (key === rootFieldKey) {\n fieldSchema = this.context.schema.rootFieldSchema;\n }\n else {\n // All fields (in the flex tree API) have a schema.\n // Since currently there is no known schema for detached field other than the special default root:\n // give all other detached fields a schema of sequence of any.\n // That schema is the only one that is safe since its the only field schema that allows any possible field content.\n //\n // TODO:\n // if any of the following are done this schema will need to be more specific:\n // 1. Editing APIs start exposing user created detached sequences.\n // 2. Remove (and its inverse) start working on subsequences or fields contents (like everything in a sequence or optional field) and not just single nodes.\n // 3. Possibly other unknown cases.\n // Additionally this approach makes it possible for a user to take a FlexTree node, get its parent, check its schema, down cast based on that, then edit that detached field (ex: removing the node in it).\n // This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before s3ending the op).\n // Issues like replacing a node in the a removed sequenced then undoing the remove could easily violate schema if not everything works exactly right!\n fieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [Any]);\n }\n }\n else {\n cursor.exitField();\n const parentType = cursor.type;\n cursor.enterField(key);\n const nodeSchema = this.context.schema.nodeSchema.get(parentType) ??\n fail(\"requested schema that does not exist\");\n fieldSchema = nodeSchema.getFieldSchema(key);\n }\n const proxifiedField = makeField(this.context, fieldSchema, cursor);\n cursor.enterNode(index);\n return { parent: proxifiedField, index };\n }\n}\nexport class LazyMap extends LazyTreeNode {\n constructor(context, schema, cursor, anchorNode, anchor) {\n super(context, schema, cursor, anchorNode, anchor);\n }\n keys() {\n return mapCursorFields(this[cursorSymbol], (cursor) => cursor.getFieldKey()).values();\n }\n values() {\n return mapCursorFields(this[cursorSymbol], (cursor) => unboxedField(this.context, this.schema.info, cursor)).values();\n }\n entries() {\n return mapCursorFields(this[cursorSymbol], (cursor) => {\n const entry = [\n cursor.getFieldKey(),\n unboxedField(this.context, this.schema.info, cursor),\n ];\n return entry;\n }).values();\n }\n forEach(callbackFn, thisArg) {\n const fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;\n for (const [key, value] of this.entries()) {\n fn(value, key, this);\n }\n }\n getBoxed(key) {\n return super.getBoxed(brand(key));\n }\n boxedIterator() {\n return super.boxedIterator();\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\nexport class LazyLeaf extends LazyTreeNode {\n constructor(context, schema, cursor, anchorNode, anchor) {\n super(context, schema, cursor, anchorNode, anchor);\n }\n get value() {\n return super.value;\n }\n}\n/**\n * {@link reservedObjectNodeFieldPropertyNames} but as a set.\n */\nexport const reservedObjectNodeFieldPropertyNameSet = new Set(reservedObjectNodeFieldPropertyNames);\nexport function propertyNameFromFieldKey(key) {\n if (reservedObjectNodeFieldPropertyNameSet.has(key)) {\n return `field${capitalize(key)}`;\n }\n for (const prefix of reservedObjectNodeFieldPropertyNamePrefixes) {\n if (key.startsWith(prefix)) {\n const afterPrefix = key.slice(prefix.length);\n if (afterPrefix === capitalize(afterPrefix)) {\n return `field${capitalize(key)}`;\n }\n }\n }\n return key;\n}\nexport function buildLazyObjectNode(context, schema, cursor, anchorNode, anchor) {\n const objectNodeClass = getOrCreate(cachedStructClasses, schema, () => buildStructClass(schema));\n return new objectNodeClass(context, cursor, anchorNode, anchor);\n}\nconst cachedStructClasses = new WeakMap();\nfunction getBoxedField(objectNode, key, fieldSchema) {\n return inCursorField(objectNode[cursorSymbol], key, (cursor) => {\n return makeField(objectNode.context, fieldSchema, cursor);\n });\n}\nfunction buildStructClass(schema) {\n const propertyDescriptorMap = {};\n for (const [key, fieldSchema] of schema.objectNodeFields) {\n const escapedKey = propertyNameFromFieldKey(key);\n let setter;\n switch (fieldSchema.kind) {\n case FieldKinds.optional: {\n setter = function (newContent) {\n const field = getBoxedField(this, key, fieldSchema);\n field.editor.set(newContent, field.length === 0);\n };\n break;\n }\n case FieldKinds.required: {\n setter = function (newContent) {\n const field = getBoxedField(this, key, fieldSchema);\n field.editor.set(newContent);\n };\n break;\n }\n default:\n setter = undefined;\n break;\n }\n // Create getter and setter (when appropriate) for property\n propertyDescriptorMap[escapedKey] = {\n enumerable: true,\n get() {\n return inCursorField(this[cursorSymbol], key, (cursor) => unboxedField(this.context, fieldSchema, cursor));\n },\n set: setter,\n };\n // Create set method for property (when appropriate)\n if (setter !== undefined) {\n propertyDescriptorMap[`set${capitalize(escapedKey)}`] = {\n enumerable: false,\n get() {\n return setter;\n },\n };\n }\n propertyDescriptorMap[`boxed${capitalize(escapedKey)}`] = {\n enumerable: false,\n get() {\n return getBoxedField(this, key, fieldSchema);\n },\n };\n }\n // This must implement `StructTyped`, but TypeScript can't constrain it to do so.\n class CustomStruct extends LazyTreeNode {\n constructor(context, cursor, anchorNode, anchor) {\n super(context, schema, cursor, anchorNode, anchor);\n }\n }\n Object.defineProperties(CustomStruct.prototype, propertyDescriptorMap);\n return CustomStruct;\n}\n//# sourceMappingURL=lazyNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { anchorSlot, getDetachedFieldContainingPath, rootField, } from \"../../core/index.js\";\nimport { TreeStatus } from \"./flexTreeTypes.js\";\n/**\n * Checks the detached field and returns the TreeStatus based on whether or not the detached field is a root field.\n * @param detachedField - the detached field you want to check.\n * @returns the {@link TreeStatus} from the detached field provided.\n */\nexport function treeStatusFromDetachedField(detachedField) {\n return detachedField === rootField ? TreeStatus.InDocument : TreeStatus.Removed;\n}\n/**\n * Determines the tree status based on the anchor cache.\n *\n * Checks the anchorNode's cache to get the tree status.\n * If the cache is undefined or stale, it is updated and the treeStatus based on its detachedField is returned.\n *\n * @param anchors - the {@link AnchorSet} to compare your anchorNode cache to.\n * @param anchorNode - the {@link AnchorNode} to get the {@link TreeStatus} of.\n * @returns - the {@link TreeStatus} of the anchorNode provided.\n */\nexport function treeStatusFromAnchorCache(anchorNode) {\n const cache = anchorNode.slots.get(detachedFieldSlot);\n const { generationNumber } = anchorNode.anchorSet;\n if (cache === undefined) {\n // If the cache is undefined, set the cache and return the treeStatus based on the detached field.\n return treeStatusFromDetachedField(getCachedUpdatedDetachedField(anchorNode, generationNumber));\n }\n else {\n // If the cache is up to date, return the treeStatus based on the cached detached field.\n if (cache.generationNumber === generationNumber) {\n return treeStatusFromDetachedField(cache.detachedField);\n }\n // If the cache is not up to date, update the cache and return the treeStatus based on the updated detached field.\n return treeStatusFromDetachedField(getCachedUpdatedDetachedField(anchorNode, generationNumber));\n }\n}\n/**\n * Updates the anchorNode cache with the provided generation number, and returns its detachedField.\n */\nfunction getCachedUpdatedDetachedField(anchorNode, generationNumber) {\n const detachedField = getDetachedFieldContainingPath(anchorNode);\n anchorNode.slots.set(detachedFieldSlot, {\n generationNumber,\n detachedField,\n });\n return detachedField;\n}\nexport const detachedFieldSlot = anchorSlot();\n/**\n * Utility function to get a {@link SchemaAndPolicy} object from a {@link FlexTreeNode} or {@link FlexTreeField}.\n * @param nodeOrField - {@link FlexTreeNode} or {@link FlexTreeField} to get the schema and policy from.\n * @returns A {@link SchemaAndPolicy} object with the stored schema and policy from the node or field provided.\n * If the schema information is not available on the given node or field (e.g. because it is an unhydrated node), returns `undefined`.\n */\nexport function getSchemaAndPolicy(nodeOrField) {\n if (nodeOrField.context === undefined) {\n return undefined;\n }\n return {\n schema: nodeOrField.context.checkout.storedSchema,\n policy: nodeOrField.context.schema.policy,\n };\n}\n/**\n * Indexing for {@link FlexTreeField.boxedAt} and {@link FlexTreeSequenceField.at} supports the\n * usage of negative indices, which regular indexing using `[` and `]` does not.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at\n * for additional context on the semantics.\n *\n * @returns A positive index that can be used in regular indexing. Returns\n * undefined if that index would be out-of-bounds.\n */\nexport function indexForAt(index, length) {\n let finalIndex = Math.trunc(+index);\n if (isNaN(finalIndex)) {\n finalIndex = 0;\n }\n if (finalIndex < -length || finalIndex >= length) {\n return undefined;\n }\n if (finalIndex < 0) {\n finalIndex = finalIndex + length;\n }\n return finalIndex;\n}\n//# sourceMappingURL=utilities.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { inCursorNode, iterateCursorField, rootFieldKey, } from \"../../core/index.js\";\nimport { disposeSymbol, fail, getOrCreate } from \"../../util/index.js\";\nimport { FieldKinds, } from \"../default-schema/index.js\";\nimport { FlexTreeEntityKind, TreeStatus, flexTreeMarker, flexTreeSlot, } from \"./flexTreeTypes.js\";\nimport { LazyEntity, anchorSymbol, cursorSymbol, forgetAnchorSymbol, isFreedSymbol, tryMoveCursorToAnchorSymbol, } from \"./lazyEntity.js\";\nimport { makeTree } from \"./lazyNode.js\";\nimport { unboxedUnion } from \"./unboxed.js\";\nimport { indexForAt, treeStatusFromAnchorCache } from \"./utilities.js\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { cursorForMapTreeField, cursorForMapTreeNode } from \"../mapTreeCursor.js\";\n/**\n * Reuse fields.\n * Since field currently own cursors and register themselves for disposal when the node hit end of life,\n * not reusing them results in memory leaks every time the field is accessed.\n * Since the fields stay alive until the node is end of life reusing them this way is safe.\n *\n * This ins't a perfect solution:\n *\n * - This can cause leaks, like map nodes will keep all accessed field objects around. Since other things cause this same leak already, its not too bad.\n * - This does not cache the root.\n * - Finding the parent anchor to do the caching on has significant cost.\n *\n * Despite these limitations, this cache provides a large performance win in some common cases (over 10x), especially with how simple tree requests far more field objects than necessary currently.\n */\nconst fieldCache = new WeakMap();\nexport function makeField(context, schema, cursor) {\n const fieldAnchor = cursor.buildFieldAnchor();\n let usedAnchor = false;\n const makeFlexTreeField = () => {\n usedAnchor = true;\n const field = new (kindToClass.get(schema.kind) ?? fail(\"missing field implementation\"))(context, schema, cursor, fieldAnchor);\n return field;\n };\n if (fieldAnchor.parent === undefined) {\n return makeFlexTreeField();\n }\n // For the common case (all but roots), cache field associated with its node's anchor and field key.\n const anchorNode = context.checkout.forest.anchors.locate(fieldAnchor.parent) ?? fail(\"missing anchor\");\n // Since anchor-set could be reused across a flex tree context getting disposed, key off the flex tree node not the anchor.\n const cacheKey = anchorNode.slots.get(flexTreeSlot);\n // If there is no flex tree parent node, skip caching: this is not expected to be a hot path, but should probably be fixed at some point.\n if (cacheKey === undefined) {\n return makeFlexTreeField();\n }\n const innerCache = getOrCreate(fieldCache, cacheKey, () => new Map());\n const result = getOrCreate(innerCache, fieldAnchor.fieldKey, makeFlexTreeField);\n if (!usedAnchor) {\n // The anchor must be disposed to avoid leaking. In the case of a cache hit,\n // we are not transferring ownership to a new FlexTreeField, so it must be disposed of here to avoid the leak.\n context.checkout.forest.anchors.forget(fieldAnchor.parent);\n }\n return result;\n}\n/**\n * Base type for fields implementing {@link FlexTreeField} using cursors.\n */\nexport class LazyField extends LazyEntity {\n get [flexTreeMarker]() {\n return FlexTreeEntityKind.Field;\n }\n constructor(context, schema, cursor, fieldAnchor) {\n super(context, schema, cursor, fieldAnchor);\n assert(cursor.mode === 1 /* CursorLocationType.Fields */, 0x77b /* must be in fields mode */);\n this.key = cursor.getFieldKey();\n // Fields currently live as long as their parent does.\n // For root fields, this means forever, but other cases can be cleaned up when their parent anchor is deleted.\n if (fieldAnchor.parent !== undefined) {\n const anchorNode = context.checkout.forest.anchors.locate(fieldAnchor.parent) ??\n fail(\"parent anchor node should always exist since field is under a node\");\n this.offAfterDestroy = anchorNode.on(\"afterDestroy\", () => {\n this[disposeSymbol]();\n });\n }\n }\n is(schema) {\n assert(this.context.schema.policy.fieldKinds.get(schema.kind.identifier) === schema.kind, 0x77c /* Narrowing must be done to a kind that exists in this context */);\n return this.schema.equals(schema);\n }\n get parent() {\n if (this[anchorSymbol].parent === undefined) {\n return undefined;\n }\n const cursor = this[cursorSymbol];\n cursor.exitField();\n const output = makeTree(this.context, cursor);\n cursor.enterField(this.key);\n return output;\n }\n [tryMoveCursorToAnchorSymbol](cursor) {\n return this.context.checkout.forest.tryMoveCursorToField(this[anchorSymbol], cursor);\n }\n [forgetAnchorSymbol]() {\n this.offAfterDestroy?.();\n if (this[anchorSymbol].parent === undefined)\n return;\n this.context.checkout.forest.anchors.forget(this[anchorSymbol].parent);\n }\n get length() {\n return this[cursorSymbol].getFieldLength();\n }\n atIndex(index) {\n return inCursorNode(this[cursorSymbol], index, (cursor) => unboxedUnion(this.context, this.schema, cursor));\n }\n boxedAt(index) {\n const finalIndex = indexForAt(index, this.length);\n if (finalIndex === undefined) {\n return undefined;\n }\n return inCursorNode(this[cursorSymbol], finalIndex, (cursor) => makeTree(this.context, cursor));\n }\n map(callbackfn) {\n return Array.from(this, callbackfn);\n }\n mapBoxed(callbackfn) {\n return Array.from(this.boxedIterator(), callbackfn);\n }\n boxedIterator() {\n return iterateCursorField(this[cursorSymbol], (cursor) => makeTree(this.context, cursor));\n }\n [Symbol.iterator]() {\n return iterateCursorField(this[cursorSymbol], (cursor) => unboxedUnion(this.context, this.schema, cursor));\n }\n getFieldPath() {\n return this[cursorSymbol].getFieldPath();\n }\n /**\n * Returns the path to this field to use for editing. Throws iff this path is not {@link TreeStatus#InDocument}.\n * This path is not valid to hold onto across edits: this must be recalled for each edit.\n */\n getFieldPathForEditing() {\n if (!this[isFreedSymbol]()) {\n if (\n // Only allow editing if we are the root document field...\n (this.parent === undefined && this[anchorSymbol].fieldKey === rootFieldKey) ||\n // ...or are under a node in the document\n (this.parent !== undefined &&\n treeStatusFromAnchorCache(this.parent.anchorNode) === TreeStatus.InDocument)) {\n return this.getFieldPath();\n }\n }\n throw new UsageError(\"Editing only allowed on fields with TreeStatus.InDocument status\");\n }\n}\nexport class LazySequence extends LazyField {\n constructor(context, schema, cursor, fieldAnchor) {\n super(context, schema, cursor, fieldAnchor);\n this.editor = {\n insert: (index, newContent) => {\n this.sequenceEditor().insert(index, cursorForMapTreeField(newContent));\n },\n remove: (index, count) => {\n this.sequenceEditor().remove(index, count);\n },\n };\n }\n at(index) {\n const finalIndex = indexForAt(index, this.length);\n if (finalIndex === undefined) {\n return undefined;\n }\n return inCursorNode(this[cursorSymbol], finalIndex, (cursor) => unboxedUnion(this.context, this.schema, cursor));\n }\n get asArray() {\n return this.map((x) => x);\n }\n sequenceEditor() {\n const fieldPath = this.getFieldPathForEditing();\n return this.context.checkout.editor.sequenceField(fieldPath);\n }\n}\nexport class ReadonlyLazyValueField extends LazyField {\n constructor(context, schema, cursor, fieldAnchor) {\n super(context, schema, cursor, fieldAnchor);\n this.editor = {\n set: (newContent) => {\n assert(false, 0xa0c /* Unexpected set of readonly field */);\n },\n };\n }\n get content() {\n return this.atIndex(0);\n }\n}\nexport class LazyValueField extends ReadonlyLazyValueField {\n constructor(context, schema, cursor, fieldAnchor) {\n super(context, schema, cursor, fieldAnchor);\n this.editor = {\n set: (newContent) => {\n this.valueFieldEditor().set(cursorForMapTreeNode(newContent));\n },\n };\n }\n valueFieldEditor() {\n const fieldPath = this.getFieldPathForEditing();\n const fieldEditor = this.context.checkout.editor.valueField(fieldPath);\n return fieldEditor;\n }\n get content() {\n return this.atIndex(0);\n }\n}\nexport class LazyIdentifierField extends ReadonlyLazyValueField {\n constructor(context, schema, cursor, fieldAnchor) {\n super(context, schema, cursor, fieldAnchor);\n }\n}\nexport class LazyOptionalField extends LazyField {\n constructor(context, schema, cursor, fieldAnchor) {\n super(context, schema, cursor, fieldAnchor);\n this.editor = {\n set: (newContent, wasEmpty) => {\n this.optionalEditor().set(newContent !== undefined ? cursorForMapTreeNode(newContent) : newContent, wasEmpty);\n },\n };\n }\n optionalEditor() {\n const fieldPath = this.getFieldPathForEditing();\n const fieldEditor = this.context.checkout.editor.optionalField(fieldPath);\n return fieldEditor;\n }\n get content() {\n return this.length === 0 ? undefined : this.atIndex(0);\n }\n}\nexport class LazyForbiddenField extends LazyField {\n}\nconst builderList = [\n [FieldKinds.forbidden, LazyForbiddenField],\n [FieldKinds.optional, LazyOptionalField],\n [FieldKinds.sequence, LazySequence],\n [FieldKinds.required, LazyValueField],\n [FieldKinds.identifier, LazyIdentifierField],\n];\nconst kindToClass = new Map(builderList);\n//# sourceMappingURL=lazyField.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { anchorSlot, moveToDetachedField, } from \"../../core/index.js\";\nimport { disposeSymbol } from \"../../util/index.js\";\nimport { prepareForEditSymbol } from \"./lazyEntity.js\";\nimport { makeField } from \"./lazyField.js\";\n/**\n * Creating multiple flex tree contexts for the same branch, and thus with the same underlying AnchorSet does not work due to how TreeNode caching works.\n * This slot is used to detect if one already exists and error if creating a second.\n *\n * TODO:\n * 1. API docs need to reflect this limitation or the limitation has to be removed.\n */\nexport const ContextSlot = anchorSlot();\n/**\n * Implementation of `FlexTreeContext`.\n *\n * @remarks An editor is required to edit the FlexTree.\n */\nexport class Context {\n /**\n * @param schema - Schema to use when working with the tree.\n * @param checkout - The checkout.\n * @param nodeKeyManager - An object which handles node key generation and conversion\n */\n constructor(schema, checkout, nodeKeyManager) {\n this.schema = schema;\n this.checkout = checkout;\n this.nodeKeyManager = nodeKeyManager;\n this.withCursors = new Set();\n this.withAnchors = new Set();\n this.disposed = false;\n this.eventUnregister = [\n this.checkout.forest.on(\"beforeChange\", () => {\n this.prepareForEdit();\n }),\n ];\n assert(!this.checkout.forest.anchors.slots.has(ContextSlot), 0x92b /* Cannot create second flex-tree from checkout */);\n this.checkout.forest.anchors.slots.set(ContextSlot, this);\n }\n /**\n * Called before editing.\n * Clears all cursors so editing can proceed.\n */\n prepareForEdit() {\n assert(this.disposed === false, 0x802 /* use after dispose */);\n for (const target of this.withCursors) {\n target[prepareForEditSymbol]();\n }\n assert(this.withCursors.size === 0, 0x773 /* prepareForEdit should remove all cursors */);\n }\n [disposeSymbol]() {\n assert(this.disposed === false, 0x803 /* double dispose */);\n this.disposed = true;\n this.clear();\n for (const unregister of this.eventUnregister) {\n unregister();\n }\n this.eventUnregister.length = 0;\n const deleted = this.checkout.forest.anchors.slots.delete(ContextSlot);\n assert(deleted, 0x8c4 /* unexpected dispose */);\n }\n /**\n * Release any cursors and anchors held by tree entities created in this context.\n * Ensures the cashed references to those entities on the Anchors are also cleared.\n * The tree entities are invalid to use after this, but the context may still be used\n * to create new trees starting from the root.\n */\n clear() {\n for (const target of this.withAnchors) {\n target[disposeSymbol]();\n }\n assert(this.withCursors.size === 0, 0x774 /* free should remove all cursors */);\n assert(this.withAnchors.size === 0, 0x775 /* free should remove all anchors */);\n }\n get root() {\n assert(this.disposed === false, 0x804 /* use after dispose */);\n const cursor = this.checkout.forest.allocateCursor(\"root\");\n moveToDetachedField(this.checkout.forest, cursor);\n const field = makeField(this, this.schema.rootFieldSchema, cursor);\n cursor.free();\n return field;\n }\n on(eventName, listener) {\n return this.checkout.forest.on(eventName, listener);\n }\n}\n/**\n * A simple API for a Forest to interact with the tree.\n *\n * @param forest - the Forest\n * @param editor - an editor that makes changes to the forest.\n * @param nodeKeyManager - an object which handles node key generation and conversion.\n * @returns {@link FlexTreeContext} which is used to manage the cursors and anchors within the FlexTrees:\n * This is necessary for supporting using this tree across edits to the forest, and not leaking memory.\n */\nexport function getTreeContext(schema, checkout, nodeKeyManager) {\n return new Context(schema, checkout, nodeKeyManager);\n}\n//# sourceMappingURL=context.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString } from \"@fluid-internal/client-utils\";\nimport { createSingleBlobSummary } from \"@fluidframework/shared-object-base/internal\";\n/**\n * The storage key for the blob in the summary containing schema data\n */\nconst detachedFieldIndexBlobKey = \"DetachedFieldIndexBlob\";\n/**\n * Provides methods for summarizing and loading a tree index.\n */\nexport class DetachedFieldIndexSummarizer {\n constructor(detachedFieldIndex) {\n this.detachedFieldIndex = detachedFieldIndex;\n this.key = \"DetachedFieldIndex\";\n }\n getAttachSummary(stringify, fullTree, trackState, telemetryContext) {\n const data = this.detachedFieldIndex.encode();\n return createSingleBlobSummary(detachedFieldIndexBlobKey, stringify(data));\n }\n async summarize(stringify, fullTree, trackState, telemetryContext) {\n return this.getAttachSummary(stringify, fullTree, trackState, telemetryContext);\n }\n getGCData(fullGC) {\n // TODO: Properly implement garbage collection. Right now, garbage collection is performed automatically\n // by the code in SharedObject (from which SharedTreeCore extends). The `runtime.uploadBlob` API delegates\n // to the `BlobManager`, which automatically populates the summary with ISummaryAttachment entries for each\n // blob.\n return {\n gcNodes: {},\n };\n }\n async load(services, parse) {\n if (await services.contains(detachedFieldIndexBlobKey)) {\n const detachedFieldIndexBuffer = await services.readBlob(detachedFieldIndexBlobKey);\n const treeBufferString = bufferToString(detachedFieldIndexBuffer, \"utf8\");\n const parsed = parse(treeBufferString);\n this.detachedFieldIndex.loadData(parsed);\n }\n }\n}\n//# sourceMappingURL=detachedFieldIndexSummarizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { Format } from \"../schema-index/index.js\";\nexport const EncodedSchemaChange = Type.Object({\n new: Format,\n old: Format,\n});\n//# sourceMappingURL=schemaChangeFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { makeCodecFamily, withSchemaValidation, } from \"../../codec/index.js\";\nimport { makeSchemaCodec } from \"../schema-index/index.js\";\nimport { EncodedSchemaChange } from \"./schemaChangeFormat.js\";\nexport function makeSchemaChangeCodecs(options) {\n return makeCodecFamily([[1, makeSchemaChangeCodec(options)]]);\n}\nfunction makeSchemaChangeCodec({ jsonValidator: validator, }) {\n const schemaCodec = makeSchemaCodec({ jsonValidator: validator });\n const schemaChangeCodec = {\n encode: (schemaChange) => {\n assert(!schemaChange.isInverse, 0x933 /* Inverse schema changes should never be transmitted */);\n return {\n new: schemaCodec.encode(schemaChange.schema.new),\n old: schemaCodec.encode(schemaChange.schema.old),\n };\n },\n decode: (encoded) => {\n return {\n schema: {\n new: schemaCodec.decode(encoded.new),\n old: schemaCodec.decode(encoded.old),\n },\n isInverse: false,\n };\n },\n encodedSchema: EncodedSchemaChange,\n };\n return withSchemaValidation(EncodedSchemaChange, schemaChangeCodec, validator);\n}\n//# sourceMappingURL=schemaChangeCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Makes a given `ChangeFamily` safer to use by wrapping some of its functions in try-catch blocks.\n *\n * Mitigated functions:\n * - {@link ChangeFamily.intoDelta} (an empty Delta is returned instead)\n * - {@link ChangeRebaser.rebase} (the given `fallbackChange` is returned instead)\n * - {@link ChangeRebaser.invert} (the given `fallbackChange` is returned instead)\n * - {@link ChangeRebaser.compose} (the given `fallbackChange` is returned instead)\n *\n * @param unmitigatedChangeFamily - The change family to mitigate.\n * @param fallbackChange - A changeset to use as a fallback when one of the mitigated functions throws.\n * @param onError - A callback invoked for each error thrown.\n * @returns a mitigated change family.\n */\nexport function makeMitigatedChangeFamily(unmitigatedChangeFamily, fallbackChange, onError) {\n return {\n buildEditor: (changeReceiver) => {\n return unmitigatedChangeFamily.buildEditor(changeReceiver);\n },\n rebaser: makeMitigatedRebaser(unmitigatedChangeFamily.rebaser, fallbackChange, onError),\n codecs: unmitigatedChangeFamily.codecs,\n };\n}\nexport function makeMitigatedRebaser(unmitigatedRebaser, fallbackChange, onError) {\n const withFallback = (fn) => {\n try {\n return fn();\n }\n catch (error) {\n onError(error);\n return fallbackChange;\n }\n };\n return {\n compose: (changes) => {\n return withFallback(() => unmitigatedRebaser.compose(changes));\n },\n invert: (changes, isRollback) => {\n return withFallback(() => unmitigatedRebaser.invert(changes, isRollback));\n },\n rebase: (change, over, revisionMetadata) => {\n return withFallback(() => unmitigatedRebaser.rebase(change, over, revisionMetadata));\n },\n changeRevision: (change, newRevision, rollbackOf) => withFallback(() => unmitigatedRebaser.changeRevision(change, newRevision, rollbackOf)),\n };\n}\n//# sourceMappingURL=mitigatedChangeFamily.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _a, _b;\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { EmptyKey, } from \"../../core/index.js\";\nimport { brand, fail, getOrCreate, mapIterable } from \"../../util/index.js\";\nimport { FlexTreeEntityKind, flexTreeMarker, indexForAt, } from \"../flex-tree/index.js\";\nimport { FlexFieldSchema, isLazy, schemaIsLeaf, schemaIsMap, schemaIsObjectNode, } from \"../typed-schema/index.js\";\nimport { normalizeAllowedTypes } from \"../schemaBuilderBase.js\";\nimport { FieldKinds } from \"../default-schema/index.js\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Checks if the given {@link FlexTreeNode} is a {@link MapTreeNode}.\n */\nexport function isMapTreeNode(flexNode) {\n return flexNode instanceof EagerMapTreeNode;\n}\n/**\n * Checks if the given {@link FlexTreeField} is a {@link MapTreeSequenceField}.\n */\nexport function isMapTreeSequenceField(field) {\n return field instanceof EagerMapTreeSequenceField;\n}\n/**\n * A readonly implementation of {@link FlexTreeNode} which wraps a {@link MapTree}.\n * @remarks Any methods that would mutate the node will fail,\n * as will the querying of data specific to the {@link LazyTreeNode} implementation (e.g. {@link FlexTreeNode.context}).\n * MapTreeNodes are unconditionally cached -\n * when retrieved via {@link getOrCreateNode}, the same {@link MapTree} object will always produce the same `MapTreeNode` object.\n */\nexport class EagerMapTreeNode {\n /**\n * Create a new MapTreeNode.\n * @param location - the parentage of this node, if it is being created underneath an existing node and field, or undefined if not\n * @remarks This class (and its subclasses) should not be directly constructed outside of this module.\n * Instead, use {@link getOrCreateNode} to create a MapTreeNode from a {@link MapTree}.\n * A `MapTreeNode` may never be constructed more than once for the same {@link MapTree} object.\n * Instead, it should always be acquired via {@link getOrCreateNode}.\n */\n constructor(schema, \n /** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */\n mapTree, location = unparentedLocation) {\n this.schema = schema;\n this.mapTree = mapTree;\n this.location = location;\n this[_a] = FlexTreeEntityKind.Node;\n this.context = undefined;\n assert(!nodeCache.has(mapTree), 0x98b /* A node already exists for the given MapTree */);\n nodeCache.set(mapTree, this);\n // Fully demand the tree to ensure that parent pointers are present and accurate on all nodes.\n // When a MapTreeNode is constructed, its MapTree may contain nodes (anywhere below) that map (via the `nodeCache`) to pre-existing MapTreeNodes.\n // Put another way, for a given MapTree, some ancestor MapTreeNode can be created after any number of its descendant MapTreeNodes already exist.\n // In such a case, the spine of nodes between the descendant and ancestor need to exist in order for the ancestor to be able to walk upwards via the `parentField` property.\n // This needs to happen for all MapTreeNodes that are descendants of the ancestor MapTreeNode.\n // Demanding the entire tree is overkill to solve this problem since not all descendant MapTree nodes will have corresponding MapTreeNodes.\n // However, demanding the full tree also lets us eagerly validate that there are no duplicate MapTrees (i.e. same MapTree object) anywhere in the tree.\n this.walkTree();\n }\n get type() {\n return this.schema.name;\n }\n adoptBy(parent, index) {\n if (parent !== undefined) {\n assert(this.location === unparentedLocation, 0x98c /* Node may not be adopted if it already has a parent */);\n assert(index !== undefined, 0xa08 /* Expected index */);\n this.location = { parent, index };\n }\n else {\n assert(this.location !== unparentedLocation, 0xa09 /* Node may not be un-adopted if it does not have a parent */);\n this.location = unparentedLocation;\n }\n }\n /**\n * The field this tree is in, and the index within that field.\n * @remarks If this node is unparented, this method will return the special {@link unparentedLocation} as the parent.\n */\n get parentField() {\n return this.location;\n }\n is(schema) {\n return schema === this.schema;\n }\n tryGetField(key) {\n const field = this.mapTree.fields.get(key);\n // Only return the field if it is not empty, in order to fulfill the contract of `tryGetField`.\n if (field !== undefined && field.length > 0) {\n return getOrCreateField(this, key, this.schema.getFieldSchema(key));\n }\n }\n getBoxed(key) {\n const fieldKey = brand(key);\n return getOrCreateField(this, fieldKey, this.schema.getFieldSchema(fieldKey));\n }\n boxedIterator() {\n return mapIterable(this.mapTree.fields.entries(), ([key]) => getOrCreateField(this, key, this.schema.getFieldSchema(key)));\n }\n get value() {\n return this.mapTree.value;\n }\n get anchorNode() {\n // This API is relevant to `LazyTreeNode`s, but not `MapTreeNode`s.\n // TODO: Refactor the FlexTreeNode interface so that stubbing this out isn't necessary.\n return fail(\"MapTreeNode does not implement anchorNode\");\n }\n walkTree() {\n for (const [key, mapTrees] of this.mapTree.fields) {\n const field = getOrCreateField(this, key, this.schema.getFieldSchema(key));\n for (let index = 0; index < field.length; index++) {\n const child = getOrCreateChild(mapTrees[index] ?? oob(), this.schema.getFieldSchema(key).allowedTypes, { parent: field, index });\n // These next asserts detect the case where `getOrCreateChild` gets a cache hit of a different node than the one we're trying to create\n assert(child.location !== undefined, 0x98d /* Expected node to have parent */);\n assert(child.location.parent.parent === this, 0x98e /* Node may not be multi-parented */);\n assert(child.location.index === index, 0x98f /* Node may not be multi-parented */);\n child.walkTree();\n }\n }\n }\n}\n_a = flexTreeMarker;\n/**\n * The implementation of a map node created by {@link getOrCreateNode}.\n */\nexport class EagerMapTreeMapNode extends EagerMapTreeNode {\n keys() {\n return this.mapTree.fields.keys();\n }\n values() {\n return mapIterable(this.mapTree.fields.keys(), (key) => unboxedField(this.tryGetField(key) ?? fail(\"Unexpected empty map field\"), key, this.mapTree, this));\n }\n entries() {\n return mapIterable(this.mapTree.fields.keys(), (key) => [\n key,\n unboxedField(this.tryGetField(key) ?? fail(\"Unexpected empty map field\"), key, this.mapTree, this),\n ]);\n }\n forEach(callbackFn, thisArg) {\n const fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;\n for (const [key, value] of this.entries()) {\n fn(value, key, this);\n }\n }\n getBoxed(key) {\n return super.getBoxed(key);\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n boxedIterator() {\n return super.boxedIterator();\n }\n}\nclass EagerMapTreeLeafNode extends EagerMapTreeNode {\n get value() {\n return super.value;\n }\n}\n/**\n * A special singleton that is the implicit {@link LocationInField} of all un-parented {@link EagerMapTreeNode}s.\n * @remarks This exists because {@link EagerMapTreeNode.parentField} must return a field.\n * If a {@link EagerMapTreeNode} is created without a parent, its {@link EagerMapTreeNode.parentField} property will point to this object.\n * However, this field cannot be used in any practical way because it is empty, i.e. it does not actually contain the children that claim to be parented under it.\n * It has the \"empty\" schema and it will always contain zero children if queried.\n * Any nodes with this location will have a dummy parent index of `-1`.\n */\nconst unparentedLocation = {\n parent: {\n [flexTreeMarker]: FlexTreeEntityKind.Field,\n length: 0,\n key: EmptyKey,\n parent: undefined,\n is(schema) {\n return schema === FlexFieldSchema.empty;\n },\n boxedIterator() {\n return [].values();\n },\n boxedAt(index) {\n return undefined;\n },\n schema: FlexFieldSchema.empty,\n context: undefined,\n mapTrees: [],\n },\n index: -1,\n};\nclass EagerMapTreeField {\n constructor(schema, key, parent) {\n this.schema = schema;\n this.key = key;\n this.parent = parent;\n this[_b] = FlexTreeEntityKind.Field;\n const fieldKeyCache = getFieldKeyCache(parent);\n assert(!fieldKeyCache.has(key), 0x990 /* A field already exists for the given MapTrees */);\n fieldKeyCache.set(key, this);\n // When this field is created (which only happens one time, because it is cached), all the children become parented for the first time.\n // \"Adopt\" each child by updating its parent information to point to this field.\n for (const [i, mapTree] of this.mapTrees.entries()) {\n const mapTreeNodeChild = nodeCache.get(mapTree);\n if (mapTreeNodeChild !== undefined) {\n if (mapTreeNodeChild.parentField !== unparentedLocation) {\n throw new UsageError(\"A node may not be in more than one place in the tree\");\n }\n mapTreeNodeChild.adoptBy(this, i);\n }\n }\n }\n get mapTrees() {\n return this.parent.mapTree.fields.get(this.key) ?? [];\n }\n get length() {\n return this.mapTrees.length;\n }\n is(schema) {\n return this.schema.equals(schema);\n }\n boxedIterator() {\n return this.mapTrees\n .map((m, index) => getOrCreateChild(m, this.schema.allowedTypes, {\n parent: this,\n index,\n }))\n .values();\n }\n boxedAt(index) {\n const i = indexForAt(index, this.length);\n if (i === undefined) {\n return undefined;\n }\n const m = this.mapTrees[i];\n if (m !== undefined) {\n return getOrCreateChild(m, this.schema.allowedTypes, {\n parent: this,\n index: i,\n });\n }\n }\n /**\n * Mutate this field.\n * @param edit - A function which receives the current `MapTree`s that comprise the contents of the field so that it may be mutated.\n * The function may mutate the array in place or return a new array.\n * If a new array is returned then it will be used as the new contents of the field, otherwise the original array will be continue to be used.\n * @remarks All edits to the field (i.e. mutations of the field's MapTrees) should be directed through this function.\n * This function ensures that the parent MapTree has no empty fields (which is an invariant of `MapTree`) after the mutation.\n */\n edit(edit) {\n const oldMapTrees = this.parent.mapTree.fields.get(this.key) ?? [];\n const newMapTrees = edit(oldMapTrees) ?? oldMapTrees;\n if (newMapTrees.length > 0) {\n this.parent.mapTree.fields.set(this.key, newMapTrees);\n }\n else {\n this.parent.mapTree.fields.delete(this.key);\n }\n }\n}\n_b = flexTreeMarker;\nclass EagerMapTreeOptionalField extends EagerMapTreeField {\n constructor() {\n super(...arguments);\n this.editor = {\n set: (newContent) => {\n // If the new content is a MapTreeNode, it needs to have its parent pointer updated\n if (newContent !== undefined) {\n nodeCache.get(newContent)?.adoptBy(this, 0);\n }\n // If the old content is a MapTreeNode, it needs to have its parent pointer unset\n const oldContent = this.mapTrees[0];\n if (oldContent !== undefined) {\n nodeCache.get(oldContent)?.adoptBy(undefined);\n }\n this.edit((mapTrees) => {\n if (newContent !== undefined) {\n mapTrees[0] = newContent;\n }\n else {\n mapTrees.length = 0;\n }\n });\n },\n };\n }\n get content() {\n const value = this.mapTrees[0];\n if (value !== undefined) {\n return unboxedUnion(this.schema, value, {\n parent: this,\n index: 0,\n });\n }\n return undefined;\n }\n}\nclass EagerMapTreeRequiredField extends EagerMapTreeOptionalField {\n get content() {\n return super.content ?? fail(\"Expected EagerMapTree required field to have a value\");\n }\n}\nclass EagerMapTreeSequenceField extends EagerMapTreeField {\n constructor() {\n super(...arguments);\n this.editor = {\n insert: (index, newContent) => {\n for (let i = 0; i < newContent.length; i++) {\n const c = newContent[i];\n assert(c !== undefined, 0xa0a /* Unexpected sparse array content */);\n nodeCache.get(c)?.adoptBy(this, index + i);\n }\n this.edit((mapTrees) => {\n if (newContent.length < 1000) {\n // For \"smallish arrays\" (`1000` is not empirically derived), the `splice` function is appropriate...\n mapTrees.splice(index, 0, ...newContent);\n }\n else {\n // ...but we avoid using `splice` + spread for very large input arrays since there is a limit on how many elements can be spread (too many will overflow the stack).\n return mapTrees.slice(0, index).concat(newContent, mapTrees.slice(index));\n }\n });\n },\n remove: (index, count) => {\n for (let i = index; i < index + count; i++) {\n const c = this.mapTrees[i];\n assert(c !== undefined, 0xa0b /* Unexpected sparse array */);\n nodeCache.get(c)?.adoptBy(undefined);\n }\n let removed;\n this.edit((mapTrees) => {\n removed = mapTrees.splice(index, count);\n });\n return removed ?? fail(\"Expected removed to be set by edit\");\n },\n };\n }\n at(index) {\n const i = indexForAt(index, this.length);\n if (i === undefined) {\n return undefined;\n }\n return unboxedUnion(this.schema, this.mapTrees[i] ?? oob(), { parent: this, index: i });\n }\n map(callbackfn) {\n return Array.from(this, callbackfn);\n }\n mapBoxed(callbackfn) {\n return Array.from(this.boxedIterator(), callbackfn);\n }\n *[Symbol.iterator]() {\n for (const [i, mapTree] of this.mapTrees.entries()) {\n yield unboxedUnion(this.schema, mapTree, { parent: this, index: i });\n }\n }\n getFieldPath() {\n throw unsupportedUsageError(\"Editing an array\");\n }\n}\n// #endregion Fields\n// #region Caching and unboxing utilities\nconst nodeCache = new WeakMap();\n/** Node Parent -\\> Field Key -\\> Field */\nconst fieldCache = new WeakMap();\nfunction getFieldKeyCache(parent) {\n return getOrCreate(fieldCache, parent, () => new Map());\n}\n/**\n * If there exists a {@link EagerMapTreeNode} for the given {@link MapTree}, returns it, otherwise returns `undefined`.\n * @remarks {@link EagerMapTreeNode | MapTreeNodes} are created via {@link getOrCreateNode}.\n */\nexport function tryGetMapTreeNode(mapTree) {\n return nodeCache.get(mapTree);\n}\n/**\n * Create a {@link EagerMapTreeNode} that wraps the given {@link MapTree}, or get the node that already exists for that {@link MapTree} if there is one.\n * @param nodeSchema - the {@link FlexTreeNodeSchema | schema} that the node conforms to\n * @param mapTree - the {@link MapTree} containing the data for this node.\n * @remarks It must conform to the `nodeSchema`.\n */\nexport function getOrCreateMapTreeNode(nodeSchema, mapTree) {\n return nodeCache.get(mapTree) ?? createNode(nodeSchema, mapTree, undefined);\n}\n/** Helper for creating a `MapTreeNode` given the parent field (e.g. when \"walking down\") */\nfunction getOrCreateChild(mapTree, implicitAllowedTypes, parent) {\n const cached = nodeCache.get(mapTree);\n if (cached !== undefined) {\n return cached;\n }\n const allowedTypes = normalizeAllowedTypes(implicitAllowedTypes);\n const nodeSchema = allowedTypes\n .map((t) => (isLazy(t) ? t() : t))\n .find((t) => {\n assert(t !== \"Any\", 0x993 /* 'Any' type is not supported */);\n return t.name === mapTree.type;\n }) ?? fail(\"Unsupported node schema\");\n return createNode(nodeSchema, mapTree, parent);\n}\n/** Always constructs a new node, therefore may not be called twice for the same `MapTree`. */\nfunction createNode(nodeSchema, mapTree, parentField) {\n if (schemaIsLeaf(nodeSchema)) {\n return new EagerMapTreeLeafNode(nodeSchema, mapTree, parentField);\n }\n if (schemaIsMap(nodeSchema)) {\n return new EagerMapTreeMapNode(nodeSchema, mapTree, parentField);\n }\n if (schemaIsObjectNode(nodeSchema)) {\n return new EagerMapTreeNode(nodeSchema, mapTree, parentField);\n }\n assert(false, 0x994 /* Unrecognized node kind */);\n}\n/** Creates a field with the given attributes, or returns a cached field if there is one */\nfunction getOrCreateField(parent, key, schema) {\n const cached = getFieldKeyCache(parent).get(key);\n if (cached !== undefined) {\n return cached;\n }\n if (schema.kind.identifier === FieldKinds.required.identifier ||\n schema.kind.identifier === FieldKinds.identifier.identifier) {\n return new EagerMapTreeRequiredField(schema, key, parent);\n }\n if (schema.kind.identifier === FieldKinds.optional.identifier) {\n return new EagerMapTreeOptionalField(schema, key, parent);\n }\n if (schema.kind.identifier === FieldKinds.sequence.identifier) {\n return new EagerMapTreeSequenceField(schema, key, parent);\n }\n return new EagerMapTreeField(schema, key, parent);\n}\n/** Unboxes non-polymorphic leaf nodes to their values, if applicable */\nfunction unboxedUnion(schema, mapTree, parent) {\n const type = schema.monomorphicChildType;\n if (type !== undefined) {\n if (schemaIsLeaf(type)) {\n return mapTree.value;\n }\n return getOrCreateChild(mapTree, type, parent);\n }\n return getOrCreateChild(mapTree, schema.allowedTypes, parent);\n}\n/** Unboxes non-polymorphic required and optional fields holding leaf nodes to their values, if applicable */\nfunction unboxedField(field, key, mapTree, parentNode) {\n const fieldSchema = field.schema;\n const mapTrees = mapTree.fields.get(key) ?? fail(\"Key does not exist in unhydrated map tree\");\n if (fieldSchema.kind === FieldKinds.required) {\n return unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {\n parent: field,\n index: 0,\n });\n }\n if (fieldSchema.kind === FieldKinds.optional) {\n return (mapTrees.length > 0\n ? unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {\n parent: field,\n index: 0,\n })\n : undefined);\n }\n return getOrCreateField(parentNode, key, fieldSchema);\n}\n// #endregion Caching and unboxing utilities\nexport function unsupportedUsageError(message) {\n return new UsageError(`${message ?? \"Operation\"} is not supported for content that has not yet been inserted into the tree`);\n}\n//# sourceMappingURL=mapTreeNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { fail } from \"../util/index.js\";\n/**\n * A helper class that organizes the state needed for managing nesting transactions.\n */\nexport class TransactionStack {\n constructor() {\n this.stack = [];\n }\n /**\n * The number of transactions currently ongoing.\n */\n get size() {\n return this.stack.length;\n }\n /**\n * Pushes a new transaction onto the stack. That transaction becomes the current transaction.\n * @param startRevision - the revision of the latest commit when this transaction begins\n * @param disposables - an optional collection of disposable data to release after finishing a transaction\n */\n push(startRevision, dispose) {\n this.stack.push({ startRevision, dispose });\n }\n /**\n * Ends the current transaction. Fails if there is currently no ongoing transaction.\n * @returns The revision that the closed transaction began on.\n */\n pop() {\n const transaction = this.stack.pop() ?? fail(\"No transaction is currently in progress\");\n transaction.dispose();\n return transaction;\n }\n}\n//# sourceMappingURL=transactionStack.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { measure } from \"@fluidframework/telemetry-utils/internal\";\nimport { CommitKind, findAncestor, makeAnonChange, mintCommit, rebaseBranch, tagChange, tagRollbackInverse, } from \"../core/index.js\";\nimport { EventEmitter } from \"../events/index.js\";\nimport { TransactionStack } from \"./transactionStack.js\";\nimport { fail } from \"../util/index.js\";\n/**\n * Returns the operation that caused the given {@link SharedTreeBranchChange}.\n */\nexport function getChangeReplaceType(change) {\n // The \"replace\" variant of the change event is emitted by two operations: committing a transaction and doing a rebase.\n // Committing a transaction will always remove one or more commits (the commits that were squashed),\n // and will add exactly one new commit (the squash commit).\n if (change.removedCommits.length === 0 || change.newCommits.length !== 1) {\n return \"rebase\";\n }\n // There is only one case in which a rebase both removes commits and adds exactly one new commit.\n // This occurs when there is exactly one divergent, but equivalent, commit on each branch:\n //\n // A ─ B (branch X)\t -- rebase Y onto X --> A ─ B (branch X)\n // └─ B' (branch Y) └─ (branch Y)\n //\n // B' is removed and replaced by B because both have the same revision.\n assert(change.removedCommits[0] !== undefined, 0x9e4 /* This wont run due to the length check above */);\n assert(change.newCommits[0] !== undefined, 0x9e5 /* This wont run because a replace operation always has new commits */);\n if (change.removedCommits.length === 1 &&\n change.removedCommits[0].revision === change.newCommits[0].revision) {\n return \"rebase\";\n }\n return \"transactionCommit\";\n}\n/**\n * A branch of changes that can be applied to a SharedTree.\n */\nexport class SharedTreeBranch extends EventEmitter {\n /**\n * Construct a new branch.\n * @param head - the head of the branch\n * @param changeFamily - determines the set of changes that this branch can commit\n * @param branchTrimmer - an optional event emitter that informs the branch it has been trimmed. If this is not supplied, then the branch must\n * never be trimmed. See {@link BranchTrimmingEvents} for details on trimming.\n */\n constructor(head, changeFamily, mintRevisionTag, branchTrimmer, telemetryEventBatcher) {\n super();\n this.head = head;\n this.changeFamily = changeFamily;\n this.mintRevisionTag = mintRevisionTag;\n this.branchTrimmer = branchTrimmer;\n this.telemetryEventBatcher = telemetryEventBatcher;\n this.transactions = new TransactionStack();\n /**\n * After pushing a starting revision to the transaction stack, this branch might be rebased\n * over commits which are children of that starting revision. When the transaction is committed,\n * those rebased-over commits should not be included in the transaction's squash commit, even though\n * they exist between the starting revision and the final commit within the transaction.\n *\n * Whenever `rebaseOnto` is called during a transaction, this map is augmented with an entry from the\n * original merge-base to the new merge-base.\n *\n * This state need only be retained for the lifetime of the transaction.\n *\n * TODO: This strategy might need to be revisited when adding better support for async transactions.\n * Since:\n *\n * 1. Transactionality is guaranteed primarily by squashing at commit time\n * 2. Branches may be rebased with an ongoing transaction\n *\n * a rebase operation might invalidate only a portion of a transaction's commits, thus defeating the\n * purpose of transactionality.\n *\n * AB#6483 and children items track this work.\n */\n this.initialTransactionRevToRebasedRev = new Map();\n this.disposed = false;\n this.editor = this.changeFamily.buildEditor((change) => this.apply(change, mintRevisionTag()));\n this.unsubscribeBranchTrimmer = branchTrimmer?.on(\"ancestryTrimmed\", (commit) => {\n this.emit(\"ancestryTrimmed\", commit);\n });\n }\n /**\n * Sets the head of this branch. Emits no change events.\n */\n setHead(head) {\n this.assertNotDisposed();\n assert(!this.isTransacting(), 0x685 /* Cannot set head during a transaction */);\n this.head = head;\n }\n /**\n * Apply a change to this branch.\n * @param change - the change to apply\n * @param revision - the revision of the new head commit of the branch that contains `change`\n * @param changeKind - the kind of change to apply\n * @returns the change that was applied and the new head commit of the branch\n */\n apply(change, revision, changeKind = CommitKind.Default) {\n this.assertNotDisposed();\n // TODO: This should not be necessary when receiving changes from other clients.\n const changeWithRevision = this.changeFamily.rebaser.changeRevision(change, revision);\n const newHead = mintCommit(this.head, {\n revision,\n change: changeWithRevision,\n });\n const changeEvent = {\n type: \"append\",\n change: tagChange(changeWithRevision, revision),\n newCommits: [newHead],\n };\n this.emit(\"beforeChange\", changeEvent);\n this.head = newHead;\n // If this is not part of a transaction, emit a commitApplied event\n if (!this.isTransacting()) {\n this.emit(\"commitApplied\", { isLocal: true, kind: changeKind });\n }\n this.emit(\"afterChange\", changeEvent);\n return [changeWithRevision, newHead];\n }\n /**\n * @returns the commit at the head of this branch.\n */\n getHead() {\n return this.head;\n }\n /**\n * Begin a transaction on this branch. If the transaction is committed via {@link commitTransaction},\n * all commits made since this call will be squashed into a single head commit.\n */\n startTransaction() {\n this.assertNotDisposed();\n const forks = new Set();\n const onDisposeUnSubscribes = [];\n const onForkUnSubscribe = onForkTransitive(this, (fork) => {\n forks.add(fork);\n onDisposeUnSubscribes.push(fork.on(\"dispose\", () => forks.delete(fork)));\n });\n this.transactions.push(this.head.revision, () => {\n forks.forEach((fork) => fork.dispose());\n onDisposeUnSubscribes.forEach((unsubscribe) => unsubscribe());\n onForkUnSubscribe();\n });\n this.editor.enterTransaction();\n this.emit(\"transactionStarted\", this.transactions.size === 1);\n }\n /**\n * Commit the current transaction. There must be a transaction in progress that was begun via {@link startTransaction}.\n * If there are commits in the current transaction, they will be squashed into a new single head commit.\n * @returns the commits that were squashed and the new squash commit if a squash occurred, otherwise `undefined`.\n * @remarks If the transaction had no changes applied during its lifetime, then no squash occurs (i.e. this method is a no-op).\n * Even if the transaction contained only one change, it will still be replaced with an (equivalent) squash change.\n */\n commitTransaction() {\n this.assertNotDisposed();\n const [startCommit, commits] = this.popTransaction();\n this.editor.exitTransaction();\n this.emit(\"transactionCommitted\", this.transactions.size === 0);\n if (commits.length === 0) {\n return undefined;\n }\n // Squash the changes and make the squash commit the new head of this branch\n const squashedChange = this.changeFamily.rebaser.compose(commits);\n const revision = this.mintRevisionTag();\n const newHead = mintCommit(startCommit, {\n revision,\n change: this.changeFamily.rebaser.changeRevision(squashedChange, revision),\n });\n const changeEvent = {\n type: \"replace\",\n change: undefined,\n removedCommits: commits,\n newCommits: [newHead],\n };\n this.emit(\"beforeChange\", changeEvent);\n this.head = newHead;\n // If this transaction is not nested, emit a commitApplied event\n if (!this.isTransacting()) {\n this.emit(\"commitApplied\", { isLocal: true, kind: CommitKind.Default });\n }\n this.emit(\"afterChange\", changeEvent);\n return [commits, newHead];\n }\n /**\n * Cancel the current transaction. There must be a transaction in progress that was begun via\n * {@link startTransaction}. All commits made during the transaction will be removed.\n * @returns the change to this branch resulting in the removal of the commits, and a list of the\n * commits that were removed.\n */\n abortTransaction() {\n this.assertNotDisposed();\n const [startCommit, commits] = this.popTransaction();\n this.editor.exitTransaction();\n this.emit(\"transactionAborted\", this.transactions.size === 0);\n if (commits.length === 0) {\n this.emit(\"transactionRolledBack\", this.transactions.size === 0);\n return [undefined, []];\n }\n const inverses = [];\n for (let i = commits.length - 1; i >= 0; i--) {\n const revision = this.mintRevisionTag();\n const commit = commits[i] ?? fail(\"This wont run because we are iterating through commits\");\n const inverse = this.changeFamily.rebaser.changeRevision(this.changeFamily.rebaser.invert(commit, false), revision, commit.revision);\n inverses.push(tagRollbackInverse(inverse, revision, commit.revision));\n }\n const change = inverses.length > 0 ? this.changeFamily.rebaser.compose(inverses) : undefined;\n const changeEvent = {\n type: \"remove\",\n change: change === undefined ? undefined : makeAnonChange(change),\n removedCommits: commits,\n };\n this.emit(\"beforeChange\", changeEvent);\n this.head = startCommit;\n this.emit(\"afterChange\", changeEvent);\n this.emit(\"transactionRolledBack\", this.transactions.size === 0);\n return [change, commits];\n }\n /**\n * True iff this branch is in the middle of a transaction that was begin via {@link startTransaction}\n */\n isTransacting() {\n return this.transactions.size !== 0;\n }\n popTransaction() {\n const { startRevision: startRevisionOriginal } = this.transactions.pop();\n let startRevision = startRevisionOriginal;\n while (this.initialTransactionRevToRebasedRev.has(startRevision)) {\n startRevision = this.initialTransactionRevToRebasedRev.get(startRevision) ?? oob();\n }\n if (!this.isTransacting()) {\n this.initialTransactionRevToRebasedRev.clear();\n }\n const commits = [];\n const startCommit = findAncestor([this.head, commits], (c) => c.revision === startRevision);\n assert(startCommit !== undefined, 0x593 /* Expected branch to be ahead of transaction start revision */);\n return [startCommit, commits];\n }\n /**\n * Spawn a new branch that is based off of the current state of this branch.\n * Changes made to the new branch will not be applied to this branch until the new branch is merged back in.\n *\n * @remarks Forks created during a transaction will be disposed when the transaction ends.\n */\n fork() {\n this.assertNotDisposed();\n const fork = new SharedTreeBranch(this.head, this.changeFamily, this.mintRevisionTag, this.branchTrimmer);\n this.emit(\"fork\", fork);\n return fork;\n }\n /**\n * Rebase the changes that have been applied to this branch over divergent changes in the given branch.\n * After this operation completes, this branch will be based off of `branch`.\n *\n * @param branch - the branch to rebase onto\n * @param upTo - the furthest commit on `branch` over which to rebase (inclusive). Defaults to the head commit of `branch`.\n * @returns the result of the rebase or undefined if nothing changed\n */\n rebaseOnto(branch, upTo = branch.getHead()) {\n this.assertNotDisposed();\n // Rebase this branch onto the given branch\n const rebaseResult = this.rebaseBranch(this, branch, upTo);\n if (rebaseResult === undefined) {\n return undefined;\n }\n // The net change to this branch is provided by the `rebaseBranch` API\n const { newSourceHead, commits } = rebaseResult;\n const { deletedSourceCommits, targetCommits, sourceCommits } = commits;\n const newCommits = targetCommits.concat(sourceCommits);\n if (this.isTransacting()) {\n const firstCommit = targetCommits[0] ?? oob();\n const lastCommit = targetCommits[targetCommits.length - 1] ?? oob();\n const src = firstCommit.parent?.revision;\n const dst = lastCommit.revision;\n if (src !== undefined && dst !== undefined) {\n this.initialTransactionRevToRebasedRev.set(src, dst);\n }\n }\n const changeEvent = {\n type: \"replace\",\n get change() {\n const change = rebaseResult.sourceChange;\n return change === undefined ? undefined : makeAnonChange(change);\n },\n removedCommits: deletedSourceCommits,\n newCommits,\n };\n this.emit(\"beforeChange\", changeEvent);\n this.head = newSourceHead;\n this.emit(\"afterChange\", changeEvent);\n return rebaseResult;\n }\n /**\n * Apply all the divergent changes on the given branch to this branch.\n *\n * @param branch - the branch to merge into this branch\n * @returns the net change to this branch and the commits that were added to this branch by the merge,\n * or undefined if nothing changed\n */\n merge(branch) {\n this.assertNotDisposed();\n branch.assertNotDisposed();\n assert(!branch.isTransacting(), 0x597 /* Branch may not be merged while transaction is in progress */);\n // Rebase the given branch onto this branch\n const rebaseResult = this.rebaseBranch(branch, this);\n if (rebaseResult === undefined) {\n return undefined;\n }\n // Compute the net change to this branch\n const sourceCommits = rebaseResult.commits.sourceCommits;\n const change = this.changeFamily.rebaser.compose(sourceCommits);\n const taggedChange = makeAnonChange(change);\n const changeEvent = {\n type: \"append\",\n get change() {\n return taggedChange;\n },\n newCommits: sourceCommits,\n };\n this.emit(\"beforeChange\", changeEvent);\n this.head = rebaseResult.newSourceHead;\n this.emit(\"afterChange\", changeEvent);\n return [change, sourceCommits];\n }\n /** Rebase `branchHead` onto `onto`, but return undefined if nothing changed */\n rebaseBranch(branch, onto, upTo = onto.getHead()) {\n const { head } = branch;\n if (head === upTo) {\n return undefined;\n }\n const { duration, output } = measure(() => rebaseBranch(this.mintRevisionTag, this.changeFamily.rebaser, head, upTo, onto.getHead()));\n this.telemetryEventBatcher?.accumulateAndLog({ duration, ...output.telemetryProperties });\n if (this.head === output.newSourceHead) {\n return undefined;\n }\n return output;\n }\n /**\n * Dispose this branch, freezing its state.\n *\n * @remarks\n * Attempts to further mutate the branch will error.\n * Any transactions in progress will be aborted.\n * Calling dispose more than once has no effect.\n */\n dispose() {\n if (this.disposed) {\n return;\n }\n while (this.isTransacting()) {\n this.abortTransaction();\n }\n this.unsubscribeBranchTrimmer?.();\n this.disposed = true;\n this.emit(\"dispose\");\n }\n assertNotDisposed() {\n assert(!this.disposed, 0x66e /* Branch is disposed */);\n }\n}\n/**\n * Registers an event listener that fires when the given forkable object forks.\n * The listener will also fire when any of those forks fork, and when those forks of forks fork, and so on.\n * @param forkable - an object that emits an event when it is forked\n * @param onFork - the fork event listener\n * @returns a function which when called will deregister all registrations (including transitive) created by this function.\n * The deregister function has undefined behavior if called more than once.\n */\nexport function onForkTransitive(forkable, onFork) {\n const offs = [];\n offs.push(forkable.on(\"fork\", (fork) => {\n offs.push(onForkTransitive(fork, onFork));\n onFork(fork);\n }));\n return () => offs.forEach((off) => off());\n}\n//# sourceMappingURL=branch.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { brand } from \"../util/index.js\";\nexport const sequenceIdComparator = (a, b) => a.sequenceNumber !== b.sequenceNumber\n ? a.sequenceNumber - b.sequenceNumber\n : (a.indexInBatch ?? 0) - (b.indexInBatch ?? 0);\nexport const equalSequenceIds = (a, b) => sequenceIdComparator(a, b) === 0;\nexport const minSequenceId = (a, b) => sequenceIdComparator(a, b) < 0 ? a : b;\nexport const maxSequenceId = (a, b) => sequenceIdComparator(a, b) > 0 ? a : b;\nexport const decrementSequenceId = (sequenceId) => {\n return sequenceId.indexInBatch !== undefined\n ? {\n sequenceNumber: brand(sequenceId.sequenceNumber),\n indexInBatch: sequenceId.indexInBatch - 1,\n }\n : { sequenceNumber: brand(sequenceId.sequenceNumber - 1) };\n};\n//# sourceMappingURL=sequenceIdUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { roundToDecimalPlaces } from \"./mathTools.js\";\n/**\n * Telemetry class that accumulates measurements which are eventually logged in a telemetry event through the provided\n * {@link TelemetryEventBatcher.logger | logger} when the number of calls to the function reaches the specified {@link TelemetryEventBatcher.threshold | threshold}.\n *\n * @remarks It is expected to be used for a single event type. If different properties should be logged at different times, a separate `TelemetryEventBatcher` should be created with separate `TMetrics` type.\n * @typeparam TMetrics - The set of keys that should be logged.\n * E.g., `keyof Foo` for logging properties `bar` and `baz` from `type Foo = { bar: number, baz: number }`.\n *\n * @sealed\n * @internal\n */\nexport class TelemetryEventBatcher {\n constructor(\n /**\n * Custom properties to include in the telemetry performance event when it is written.\n */\n eventBase, \n /**\n * The logger to use to write the telemetry performance event.\n */\n logger, \n /**\n * The number of logs to accumulate before sending the data to the logger.\n */\n threshold) {\n this.eventBase = eventBase;\n this.logger = logger;\n this.threshold = threshold;\n /**\n * Stores the sum of the custom data passed into the logger.\n */\n this.dataSums = {};\n /**\n * Stores the maximum value of the custom data passed into the logger.\n */\n this.dataMaxes = {};\n /**\n * Counter to keep track of the number of times the log function is called.\n */\n this.counter = 0;\n }\n /**\n * Accumulates the custom data and sends it to the logger every {@link TelemetryEventBatcher.threshold} calls.\n *\n * @param customData -\n * A record storing the custom data to be accumulated and eventually logged.\n */\n accumulateAndLog(customData) {\n for (const key of Object.keys(customData)) {\n this.dataSums[key] = (this.dataSums[key] ?? 0) + customData[key];\n this.dataMaxes[key] = Math.max(this.dataMaxes[key] ?? Number.NEGATIVE_INFINITY, customData[key]);\n }\n this.counter++;\n if (this.counter >= this.threshold) {\n this.sendData();\n }\n }\n sendData() {\n const telemetryEvent = {\n ...this.eventBase,\n };\n for (const key of Object.keys(this.dataSums)) {\n if (this.dataSums[key] !== undefined) {\n telemetryEvent[`avg_${key}`] = roundToDecimalPlaces(this.dataSums[key] / this.counter, 6);\n }\n if (this.dataMaxes[key] !== undefined) {\n telemetryEvent[`max_${key}`] = this.dataMaxes[key];\n }\n }\n this.logger.sendPerformanceEvent(telemetryEvent);\n // Reset the counter and the data.\n this.counter = 0;\n this.dataSums = {};\n this.dataMaxes = {};\n }\n}\n//# sourceMappingURL=telemetryEventBatcher.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\nimport { findAncestor, findCommonAncestor, mintCommit, rebaseChange, } from \"../core/index.js\";\nimport { brand, fail, getOrCreate, mapIterable } from \"../util/index.js\";\nimport { SharedTreeBranch, getChangeReplaceType, onForkTransitive, } from \"./branch.js\";\nimport { decrementSequenceId, equalSequenceIds, maxSequenceId, minSequenceId, sequenceIdComparator, } from \"./sequenceIdUtils.js\";\nimport { createEmitter } from \"../events/index.js\";\nimport { TelemetryEventBatcher, measure, } from \"@fluidframework/telemetry-utils/internal\";\nexport const minimumPossibleSequenceNumber = brand(Number.MIN_SAFE_INTEGER);\nconst minimumPossibleSequenceId = {\n sequenceNumber: minimumPossibleSequenceNumber,\n};\n/**\n * Max number of telemetry log call that may be aggregated before being sent.\n */\nconst maxRebaseStatsAggregationCount = 1000;\n/**\n * Represents a local branch of a document and interprets the effect on the document of adding sequenced changes,\n * which were based on a given session's branch, to the document history\n */\n// TODO: Try to reduce this to a single type parameter\nexport class EditManager {\n /**\n * @param changeFamily - the change family of changes on the trunk and local branch\n * @param localSessionId - the id of the local session that will be used for local commits\n */\n constructor(changeFamily, localSessionId, mintRevisionTag, logger) {\n this.changeFamily = changeFamily;\n this.localSessionId = localSessionId;\n this.mintRevisionTag = mintRevisionTag;\n this._events = createEmitter();\n /**\n * Records extra data associated with commits in the {@link trunk}.\n * This does not include an entry for the {@link trunkBase}.\n */\n this.trunkMetadata = new Map();\n /**\n * A map from a sequence id to the commit in the {@link trunk} which has that sequence id.\n * This also includes an entry for the {@link trunkBase} which always has the lowest key in the map.\n */\n this.sequenceMap = new BTree(undefined, sequenceIdComparator);\n /**\n * Branches are maintained to represent the local change list that the issuing client had\n * at the time of submitting the latest known edit on the branch.\n * This means the head commit of each branch is always in its original (non-rebased) form.\n */\n this.peerLocalBranches = new Map();\n /**\n * Tracks where on the trunk all registered branches are based. Each key is the sequence id of a commit on\n * the trunk, and the value is the set of all branches who have that commit as their common ancestor with the trunk.\n *\n * @remarks\n * This does not include the local branch.\n */\n this.trunkBranches = new BTree(undefined, sequenceIdComparator);\n /**\n * The sequence number of the newest commit on the trunk that has been received by all peers.\n * Defaults to {@link minimumPossibleSequenceNumber} if no commits have been received.\n *\n * @remarks If there are more than one commit with the same sequence number we assume this refers to the last commit in the batch.\n */\n this.minimumSequenceNumber = minimumPossibleSequenceNumber;\n /**\n * The list of commits (from oldest to most recent) that are on the local branch but not on the trunk.\n * When a local commit is sequenced, the first commit in this list shifted onto the tip of the trunk.\n */\n this.localCommits = [];\n this.trunkBase = {\n revision: \"root\",\n change: changeFamily.rebaser.compose([]),\n };\n this.sequenceMap.set(minimumPossibleSequenceId, this.trunkBase);\n if (logger !== undefined) {\n this.telemetryEventBatcher = new TelemetryEventBatcher({\n eventName: \"rebaseProcessing\",\n category: \"performance\",\n }, logger, maxRebaseStatsAggregationCount);\n }\n this.trunk = new SharedTreeBranch(this.trunkBase, changeFamily, mintRevisionTag, this._events, this.telemetryEventBatcher);\n this.localBranch = new SharedTreeBranch(this.trunk.getHead(), changeFamily, mintRevisionTag, this._events, this.telemetryEventBatcher);\n this.localBranch.on(\"afterChange\", (event) => {\n if (event.type === \"append\") {\n for (const commit of event.newCommits) {\n this.localCommits.push(commit);\n }\n }\n else {\n this.localCommits.length = 0;\n findCommonAncestor([this.localBranch.getHead(), this.localCommits], this.trunk.getHead());\n }\n });\n // Track all forks of the local branch for purposes of trunk eviction. Unlike the local branch, they have\n // an unknown lifetime and rebase frequency, so we can not make any assumptions about which trunk commits\n // they require and therefore we monitor them explicitly.\n onForkTransitive(this.localBranch, (fork) => this.registerBranch(fork));\n }\n /**\n * Make the given branch known to the `EditManager`. The `EditManager` will ensure that all registered\n * branches remain usable even as the minimum sequence number advances.\n *\n * TODO#AB6926: Refactor local branch management into a separate class that encapsulates `trunkBranches` and everything\n * that touches it.\n * TODO#AB6925: Maintain the divergence point between each branch and the trunk so that we don't have to recompute\n * it so often.\n */\n registerBranch(branch) {\n this.trackBranch(branch);\n // Whenever the branch is rebased, update our record of its base trunk commit\n const offBeforeRebase = branch.on(\"beforeChange\", (args) => {\n if (args.type === \"replace\" && getChangeReplaceType(args) === \"rebase\") {\n this.untrackBranch(branch);\n }\n });\n const offAfterRebase = branch.on(\"afterChange\", (args) => {\n if (args.type === \"replace\" && getChangeReplaceType(args) === \"rebase\") {\n this.trackBranch(branch);\n this.trimTrunk();\n }\n });\n // When the branch is disposed, update our branch set and trim the trunk\n const offDispose = branch.on(\"dispose\", () => {\n this.untrackBranch(branch);\n this.trimTrunk();\n offBeforeRebase();\n offAfterRebase();\n offDispose();\n });\n }\n trackBranch(b) {\n const trunkCommit = findCommonAncestor(this.trunk.getHead(), b.getHead()) ??\n fail(\"Expected branch to be related to trunk\");\n const sequenceId = this.getCommitSequenceId(trunkCommit);\n const branches = getOrCreate(this.trunkBranches, sequenceId, () => new Set());\n assert(!branches.has(b), 0x670 /* Branch was registered more than once */);\n branches.add(b);\n }\n untrackBranch(b) {\n const trunkCommit = findCommonAncestor(this.trunk.getHead(), b.getHead()) ??\n fail(\"Expected branch to be related to trunk\");\n const sequenceId = this.getCommitSequenceId(trunkCommit);\n const branches = this.trunkBranches.get(sequenceId) ?? fail(\"Expected branch to be tracked\");\n assert(branches.delete(b), 0x671 /* Expected branch to be tracked */);\n if (branches.size === 0) {\n this.trunkBranches.delete(sequenceId);\n }\n }\n /**\n * Updates the `trunkBranches` map to reflect the fact that a new local commit was fast-forwarded to the trunk.\n * @param priorTrunkCommit - The trunk head prior to the fast-forward.\n * @param newId - The ID of the new trunk head.\n */\n fastForwardBranches(priorTrunkCommit, newId) {\n const currentId = this.getCommitSequenceId(priorTrunkCommit);\n const currentBranches = this.trunkBranches.get(currentId);\n if (currentBranches !== undefined) {\n const newBranches = getOrCreate(this.trunkBranches, newId, () => new Set());\n for (const branch of currentBranches) {\n if (branch.getHead() !== priorTrunkCommit) {\n newBranches.add(branch);\n currentBranches.delete(branch);\n }\n }\n if (currentBranches.size === 0) {\n this.trunkBranches.delete(currentId);\n }\n }\n }\n /**\n * Advances the minimum sequence number, and removes all commits from the trunk which lie outside the collaboration window,\n * if they are not retained by revertibles or local branches.\n * @param minimumSequenceNumber - the sequence number of the newest commit that all peers (including this one) have received and applied to their trunks.\n *\n * @remarks If there are more than one commit with the same sequence number we assume this refers to the last commit in the batch.\n */\n advanceMinimumSequenceNumber(minimumSequenceNumber) {\n if (minimumSequenceNumber === this.minimumSequenceNumber) {\n return;\n }\n assert(minimumSequenceNumber > this.minimumSequenceNumber, 0x476 /* number must be larger or equal to current minimumSequenceNumber. */);\n this.minimumSequenceNumber = minimumSequenceNumber;\n this.trimTrunk();\n }\n /**\n * Examines the latest known minimum sequence number and the trunk bases of any registered branches to determine\n * if any commits on the trunk are unreferenced and unneeded for future computation; those found are evicted from the trunk.\n * @returns the number of commits that were removed from the trunk\n */\n trimTrunk() {\n /** The sequence id of the oldest commit on the trunk that will be retained */\n let trunkTailSequenceId = {\n sequenceNumber: this.minimumSequenceNumber,\n indexInBatch: Number.POSITIVE_INFINITY,\n };\n // If there are any outstanding registered branches, get the one that is the oldest (has the \"most behind\" trunk base)\n const minimumBranchBaseSequenceId = this.trunkBranches.minKey();\n if (minimumBranchBaseSequenceId !== undefined) {\n // If that branch is behind the minimum sequence id, we only want to evict commits older than it,\n // even if those commits are behind the minimum sequence id\n const sequenceIdBeforeMinimumBranchBase = decrementSequenceId(minimumBranchBaseSequenceId);\n trunkTailSequenceId = minSequenceId(trunkTailSequenceId, sequenceIdBeforeMinimumBranchBase);\n }\n const [sequenceId, latestEvicted] = this.getClosestTrunkCommit(maxSequenceId(trunkTailSequenceId, this.sequenceMap.minKey() ?? minimumPossibleSequenceId));\n // Don't do any work if the commit found by the search is already the tail of the trunk\n if (latestEvicted !== this.trunkBase) {\n // The minimum sequence number informs us that all peer branches are at least caught up to the tail commit,\n // so rebase them accordingly. This is necessary to prevent peer branches from referencing any evicted commits.\n for (const [, branch] of this.peerLocalBranches) {\n branch.rebaseOnto(this.trunk, latestEvicted);\n }\n // This mutation is a performance hack. If commits are truly immutable, then changing the trunk's tail requires\n // regenerating the entire commit graph. Instead, we can simply chop off the tail like this if we're certain\n // that there are no outstanding references to any of the commits being removed (other than the references via\n // the trunk). The peer branches have been rebased to the head of the trunk, the local branch is already rebased\n // to the head of the trunk, and all other branches are tracked by `trunkBranches` and known to be ahead of or at\n // `newTrunkBase`. Therefore, no branches should have unique references to any of the commits being evicted here.\n // We mutate the most recent of the evicted commits to become the new trunk base. That way, any other commits that\n // have parent pointers to the latest evicted commit will stay linked, even though that it is no longer part of the trunk.\n const newTrunkBase = latestEvicted;\n // The metadata for new trunk base revision needs to be deleted before modifying it.\n this.trunkMetadata.delete(newTrunkBase.revision);\n // collect the revisions that will be trimmed to send as part of the branch trimmed event\n const trimmedRevisions = getPathFromBase(newTrunkBase, this.trunkBase).map((c) => c.revision);\n // Copying the revision of the old trunk base into the new trunk base means we don't need to write out the original\n // revision to summaries. All clients agree that the trunk base always has the same hardcoded revision.\n newTrunkBase.revision = this.trunkBase.revision;\n // Overwriting the change is not strictly necessary, but done here for consistency (so all trunk bases are deeply equal).\n newTrunkBase.change = this.trunkBase.change;\n // Dropping the parent field removes (transitively) all references to the evicted commits so they can be garbage collected.\n delete newTrunkBase.parent;\n this.trunkBase = newTrunkBase;\n // Update any state that is derived from trunk commits\n this.sequenceMap.editRange(minimumPossibleSequenceId, sequenceId, true, (s, { revision }) => {\n // Cleanup look-aside data for each evicted commit\n this.trunkMetadata.delete(revision);\n // Delete all evicted commits from `sequenceMap` except for the latest one, which is the new `trunkBase`\n if (equalSequenceIds(s, sequenceId)) {\n assert(revision === newTrunkBase.revision, 0x729 /* Expected last evicted commit to be new trunk base */);\n }\n else {\n return { delete: true };\n }\n });\n const trunkSize = getPathFromBase(this.trunk.getHead(), this.trunkBase).length;\n assert(this.sequenceMap.size === trunkSize + 1, 0x744 /* The size of the sequenceMap must have one element more than the trunk */);\n assert(this.trunkMetadata.size === trunkSize, 0x745 /* The size of the trunkMetadata must be the same as the trunk */);\n this._events.emit(\"ancestryTrimmed\", trimmedRevisions);\n }\n }\n isEmpty() {\n return (this.trunk.getHead() === this.trunkBase &&\n this.peerLocalBranches.size === 0 &&\n this.localBranch.getHead() === this.trunk.getHead() &&\n this.minimumSequenceNumber === minimumPossibleSequenceNumber);\n }\n getSummaryData() {\n // The assert below is acceptable at present because summarization only ever occurs on a client with no\n // local/in-flight changes.\n // In the future we may wish to relax this constraint. For that to work, the current implementation of\n // `EditManager` would have to be amended in one of two ways:\n // A) Changes made by the local session should be represented by a branch in `EditManager.branches`.\n // B) The contents of such a branch should be computed on demand based on the trunk.\n // Note that option (A) would be a simple change to `addSequencedChange` whereas (B) would likely require\n // rebasing trunk changes over the inverse of trunk changes.\n assert(this.localBranch.getHead() === this.trunk.getHead(), 0x428 /* Clients with local changes cannot be used to generate summaries */);\n let oldestCommitInCollabWindow = this.getClosestTrunkCommit(this.minimumSequenceNumber)[1];\n assert(oldestCommitInCollabWindow.parent !== undefined ||\n oldestCommitInCollabWindow === this.trunkBase, 0x8c7 /* Expected oldest commit in collab window to have a parent or be the trunk base */);\n // Path construction is exclusive, so we need to use the parent of the oldest commit in the window if it exists\n oldestCommitInCollabWindow =\n oldestCommitInCollabWindow.parent ?? oldestCommitInCollabWindow;\n const trunk = getPathFromBase(this.trunk.getHead(), oldestCommitInCollabWindow).map((c) => {\n const metadata = this.trunkMetadata.get(c.revision) ?? fail(\"Expected metadata for trunk commit\");\n const commit = {\n change: c.change,\n revision: c.revision,\n sequenceNumber: metadata.sequenceId.sequenceNumber,\n sessionId: metadata.sessionId,\n };\n if (metadata.sequenceId.indexInBatch !== undefined) {\n commit.indexInBatch = metadata.sequenceId.indexInBatch;\n }\n return commit;\n });\n const peerLocalBranches = new Map(mapIterable(this.peerLocalBranches.entries(), ([sessionId, branch]) => {\n const branchPath = [];\n const ancestor = findCommonAncestor([branch.getHead(), branchPath], this.trunk.getHead()) ??\n fail(\"Expected branch to be based on trunk\");\n return [\n sessionId,\n {\n base: ancestor.revision,\n commits: branchPath.map((c) => {\n const commit = {\n change: c.change,\n revision: c.revision,\n sessionId,\n };\n return commit;\n }),\n },\n ];\n }));\n return { trunk, peerLocalBranches };\n }\n loadSummaryData(data) {\n assert(this.isEmpty(), 0x68a /* Attempted to load from summary after edit manager was already mutated */);\n // Record the tags of each trunk commit as we generate the trunk so they can be looked up quickly\n // when hydrating the peer branches below\n const trunkRevisionCache = new Map();\n trunkRevisionCache.set(this.trunkBase.revision, this.trunkBase);\n this.trunk.setHead(data.trunk.reduce((base, c) => {\n const sequenceId = c.indexInBatch === undefined\n ? {\n sequenceNumber: c.sequenceNumber,\n }\n : {\n sequenceNumber: c.sequenceNumber,\n indexInBatch: c.indexInBatch,\n };\n const commit = mintCommit(base, c);\n this.sequenceMap.set(sequenceId, commit);\n this.trunkMetadata.set(c.revision, {\n sequenceId,\n sessionId: c.sessionId,\n });\n trunkRevisionCache.set(c.revision, commit);\n return commit;\n }, this.trunkBase));\n this.localBranch.setHead(this.trunk.getHead());\n for (const [sessionId, branch] of data.peerLocalBranches) {\n const commit = trunkRevisionCache.get(branch.base) ??\n fail(\"Expected summary branch to be based off of a revision in the trunk\");\n this.peerLocalBranches.set(sessionId, new SharedTreeBranch(branch.commits.reduce(mintCommit, commit), this.changeFamily, this.mintRevisionTag));\n }\n }\n getCommitSequenceId(commit) {\n return this.trunkMetadata.get(commit.revision)?.sequenceId ?? minimumPossibleSequenceId;\n }\n getTrunkChanges() {\n return this.getTrunkCommits().map((c) => c.change);\n }\n getTrunkCommits() {\n return getPathFromBase(this.trunk.getHead(), this.trunkBase);\n }\n getTrunkHead() {\n return this.trunk.getHead();\n }\n getLocalChanges() {\n return this.getLocalCommits().map((c) => c.change);\n }\n getLocalCommits() {\n return this.localCommits;\n }\n /**\n * @returns The length of the longest branch maintained by this EditManager.\n * This may be the length of a peer branch or the local branch.\n * The length is counted from the lowest common ancestor with the trunk such that a fully sequenced branch would\n * have length zero.\n */\n getLongestBranchLength() {\n let max = 0;\n const trunkHead = this.trunk.getHead();\n for (const branch of this.peerLocalBranches.values()) {\n const branchPath = getPathFromBase(branch.getHead(), trunkHead);\n if (branchPath.length > max) {\n max = branchPath.length;\n }\n }\n const localPath = getPathFromBase(this.localBranch.getHead(), trunkHead);\n return Math.max(max, localPath.length);\n }\n addSequencedChange(newCommit, sequenceNumber, referenceSequenceNumber) {\n assert(sequenceNumber > this.minimumSequenceNumber, 0x713 /* Expected change sequence number to exceed the last known minimum sequence number */);\n const commitsSequenceNumber = this.getBatch(sequenceNumber);\n const sequenceId = commitsSequenceNumber.length === 0\n ? {\n sequenceNumber,\n }\n : {\n sequenceNumber,\n indexInBatch: commitsSequenceNumber.length,\n };\n if (newCommit.sessionId === this.localSessionId) {\n const headTrunkCommit = this.trunk.getHead();\n const firstLocalCommit = this.localCommits.shift();\n assert(firstLocalCommit !== undefined, 0x6b5 /* Received a sequenced change from the local session despite having no local changes */);\n // The first local branch commit is already rebased over the trunk, so we can push it directly to the trunk.\n this.pushGraphCommitToTrunk(sequenceId, firstLocalCommit, this.localSessionId);\n this.fastForwardBranches(headTrunkCommit, sequenceId);\n return;\n }\n // Get the revision that the remote change is based on\n const [, baseRevisionInTrunk] = this.getClosestTrunkCommit(referenceSequenceNumber);\n // Rebase that branch over the part of the trunk up to the base revision\n // This will be a no-op if the sending client has not advanced since the last time we received an edit from it\n const peerLocalBranch = getOrCreate(this.peerLocalBranches, newCommit.sessionId, () => new SharedTreeBranch(baseRevisionInTrunk, this.changeFamily, this.mintRevisionTag));\n peerLocalBranch.rebaseOnto(this.trunk, baseRevisionInTrunk);\n if (peerLocalBranch.getHead() === this.trunk.getHead()) {\n // If the branch is fully caught up and empty after being rebased, then push to the trunk directly\n this.pushCommitToTrunk(sequenceId, newCommit);\n peerLocalBranch.setHead(this.trunk.getHead());\n }\n else {\n // Otherwise, rebase the change over the trunk and append it, and append the original change to the peer branch.\n const { duration, output: newChangeFullyRebased } = measure(() => rebaseChange(this.changeFamily.rebaser, newCommit, peerLocalBranch.getHead(), this.trunk.getHead(), this.mintRevisionTag));\n this.telemetryEventBatcher?.accumulateAndLog({\n duration,\n ...newChangeFullyRebased.telemetryProperties,\n });\n peerLocalBranch.apply(newCommit.change, newCommit.revision);\n this.pushCommitToTrunk(sequenceId, {\n ...newCommit,\n change: newChangeFullyRebased.change,\n });\n }\n this.localBranch.rebaseOnto(this.trunk);\n }\n findLocalCommit(revision) {\n const commits = [];\n const commit = findAncestor([this.localBranch.getHead(), commits], (c) => c.revision === revision);\n assert(commit !== undefined, 0x599 /* Expected local branch to contain revision */);\n return [commit, commits];\n }\n pushCommitToTrunk(sequenceId, commit, local = false) {\n const mintedCommit = mintCommit(this.trunk.getHead(), commit);\n this.pushGraphCommitToTrunk(sequenceId, mintedCommit, commit.sessionId);\n }\n pushGraphCommitToTrunk(sequenceId, graphCommit, sessionId) {\n this.trunk.setHead(graphCommit);\n const trunkHead = this.trunk.getHead();\n this.sequenceMap.set(sequenceId, trunkHead);\n this.trunkMetadata.set(trunkHead.revision, { sequenceId, sessionId });\n }\n getClosestTrunkCommit(searchBy) {\n const sequenceId = typeof searchBy === \"number\"\n ? {\n // This is to make sure that the correct commit is selected in this 2 scenarios:\n // 1) The commit is unique for that sequence number\n // 2) There are more than one commit for the same sequence number, in this case we need to select the last one.\n sequenceNumber: searchBy,\n indexInBatch: Number.POSITIVE_INFINITY,\n }\n : searchBy;\n const commit = this.sequenceMap.getPairOrNextLower(sequenceId);\n assert(commit !== undefined, 0x746 /* sequence id has been evicted */);\n return commit;\n }\n getBatch(sequenceNumber) {\n const startSequenceId = {\n sequenceNumber,\n };\n const endSequenceId = {\n sequenceNumber: brand(sequenceNumber + 1),\n };\n return this.sequenceMap.getRange(startSequenceId, endSequenceId, false);\n }\n}\n/**\n * @returns the path from the base of a branch to its head\n */\nfunction getPathFromBase(branchHead, baseBranchHead) {\n const path = [];\n assert(findCommonAncestor([branchHead, path], baseBranchHead) !== undefined, 0x573 /* Expected branches to be related */);\n return path;\n}\n//# sourceMappingURL=editManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { RevisionTagSchema, SessionIdSchema, } from \"../core/index.js\";\nimport { brandedNumberType } from \"../util/index.js\";\nconst noAdditionalProps = { additionalProperties: false };\n// Many of the return types in this module are intentionally derived, rather than explicitly specified.\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nconst CommitBase = (tChange) => Type.Object({\n revision: RevisionTagSchema,\n change: tChange,\n sessionId: SessionIdSchema,\n});\n/**\n * @privateRemarks Commits are generally encoded from `GraphCommit`s, which often contain extra data.\n * This `noAdditionalProps` is especially important in that light.\n */\nconst Commit = (tChange) => Type.Composite([CommitBase(tChange)], noAdditionalProps);\nconst SeqNumber = brandedNumberType({ multipleOf: 1 });\nconst SequenceId = Type.Object({\n sequenceNumber: SeqNumber,\n indexInBatch: Type.Optional(Type.Number({ multipleOf: 1, minimum: 0 })),\n});\nconst SequencedCommit = (tChange) => Type.Composite([CommitBase(tChange), SequenceId], noAdditionalProps);\nconst SummarySessionBranch = (tChange) => Type.Object({\n base: RevisionTagSchema,\n commits: Type.Array(Commit(tChange)),\n}, noAdditionalProps);\nexport const EncodedEditManager = (tChange) => Type.Object({\n version: Type.Union([\n Type.Literal(1),\n Type.Literal(2),\n Type.Literal(3),\n Type.Literal(4),\n ]),\n trunk: Type.Array(SequencedCommit(tChange)),\n branches: Type.Array(Type.Tuple([SessionIdSchema, SummarySessionBranch(tChange)])),\n}, noAdditionalProps);\n/* eslint-enable @typescript-eslint/explicit-function-return-type */\n//# sourceMappingURL=editManagerFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { makeCodecFamily, withSchemaValidation, } from \"../codec/index.js\";\nimport { makeVersionDispatchingCodec } from \"../codec/index.js\";\nimport { JsonCompatibleReadOnlySchema, mapIterable, } from \"../util/index.js\";\nimport { EncodedEditManager, } from \"./editManagerFormat.js\";\nexport function makeEditManagerCodec(changeCodecs, revisionTagCodec, options, writeVersion) {\n const family = makeEditManagerCodecs(changeCodecs, revisionTagCodec, options);\n return makeVersionDispatchingCodec(family, { ...options, writeVersion });\n}\nexport function makeEditManagerCodecs(changeCodecs, revisionTagCodec, options) {\n return makeCodecFamily([\n [1, makeV1CodecWithVersion(changeCodecs.resolve(1), revisionTagCodec, options, 1)],\n [2, makeV1CodecWithVersion(changeCodecs.resolve(2), revisionTagCodec, options, 2)],\n [3, makeV1CodecWithVersion(changeCodecs.resolve(3), revisionTagCodec, options, 3)],\n [4, makeV1CodecWithVersion(changeCodecs.resolve(4), revisionTagCodec, options, 4)],\n ]);\n}\nfunction makeV1CodecWithVersion(changeCodec, revisionTagCodec, options, version) {\n const format = EncodedEditManager(changeCodec.json.encodedSchema ?? JsonCompatibleReadOnlySchema);\n const encodeCommit = (commit, context) => ({\n ...commit,\n revision: revisionTagCodec.encode(commit.revision, {\n originatorId: commit.sessionId,\n idCompressor: context.idCompressor,\n revision: undefined,\n }),\n change: changeCodec.json.encode(commit.change, { ...context, revision: commit.revision }),\n });\n const decodeCommit = (commit, context) => {\n const revision = revisionTagCodec.decode(commit.revision, {\n originatorId: commit.sessionId,\n idCompressor: context.idCompressor,\n revision: undefined,\n });\n return {\n ...commit,\n revision,\n change: changeCodec.json.decode(commit.change, { ...context, revision }),\n };\n };\n const codec = withSchemaValidation(format, {\n encode: (data, context) => {\n const json = {\n trunk: data.trunk.map((commit) => encodeCommit(commit, {\n originatorId: commit.sessionId,\n idCompressor: context.idCompressor,\n schema: context.schema,\n revision: undefined,\n })),\n branches: Array.from(data.peerLocalBranches.entries(), ([sessionId, branch]) => [\n sessionId,\n {\n base: revisionTagCodec.encode(branch.base, {\n originatorId: sessionId,\n idCompressor: context.idCompressor,\n revision: undefined,\n }),\n commits: branch.commits.map((commit) => encodeCommit(commit, {\n originatorId: commit.sessionId,\n idCompressor: context.idCompressor,\n schema: context.schema,\n revision: undefined,\n })),\n },\n ]),\n version,\n };\n return json;\n },\n decode: (json, context) => {\n // TODO: sort out EncodedCommit vs Commit, and make this type check without `any`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const trunk = json.trunk;\n return {\n trunk: trunk.map((commit) => \n // TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n decodeCommit(commit, {\n originatorId: commit.sessionId,\n idCompressor: context.idCompressor,\n revision: undefined,\n })),\n peerLocalBranches: new Map(mapIterable(json.branches, ([sessionId, branch]) => [\n sessionId,\n {\n base: revisionTagCodec.decode(branch.base, {\n originatorId: sessionId,\n idCompressor: context.idCompressor,\n revision: undefined,\n }),\n commits: branch.commits.map((commit) => \n // TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.\n decodeCommit(commit, {\n originatorId: commit.sessionId,\n idCompressor: context.idCompressor,\n revision: undefined,\n })),\n },\n ])),\n };\n },\n }, options.jsonValidator);\n // TODO: makeVersionedValidatedCodec and withSchemaValidation should allow the codec to decode JsonCompatibleReadOnly, or Versioned or something like that,\n // and not leak the internal encoded format in the API surface.\n // Fixing that would remove the need for this cast.\n return codec;\n}\n//# sourceMappingURL=editManagerCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createSingleBlobSummary } from \"@fluidframework/shared-object-base/internal\";\nconst stringKey = \"String\";\n/**\n * Provides methods for summarizing and loading an `EditManager`\n */\nexport class EditManagerSummarizer {\n constructor(editManager, codec, idCompressor, schemaAndPolicy) {\n this.editManager = editManager;\n this.codec = codec;\n this.idCompressor = idCompressor;\n this.schemaAndPolicy = schemaAndPolicy;\n this.key = \"EditManager\";\n }\n getAttachSummary(stringify, fullTree, trackState, telemetryContext) {\n return this.summarizeCore(stringify);\n }\n async summarize(stringify, fullTree, trackState, telemetryContext) {\n return this.summarizeCore(stringify);\n }\n summarizeCore(stringify) {\n const context = this.schemaAndPolicy !== undefined\n ? { schema: this.schemaAndPolicy, idCompressor: this.idCompressor }\n : { idCompressor: this.idCompressor };\n const jsonCompatible = this.codec.encode(this.editManager.getSummaryData(), context);\n const dataString = stringify(jsonCompatible);\n return createSingleBlobSummary(stringKey, dataString);\n }\n getGCData(fullGC) {\n // TODO: Properly implement garbage collection. Right now, garbage collection is performed automatically\n // by the code in SharedObject (from which SharedTreeCore extends). The `runtime.uploadBlob` API delegates\n // to the `BlobManager`, which automatically populates the summary with ISummaryAttachment entries for each\n // blob.\n return {\n gcNodes: {},\n };\n }\n async load(services, parse) {\n const schemaBuffer = await services.readBlob(stringKey);\n // After the awaits, validate that the data is in a clean state.\n // This detects any data that could have been accidentally added through\n // invalid means and is about to be overwritten.\n assert(this.editManager.isEmpty(), 0x42c /* There should not already be stored EditManager data when loading from summary */);\n const summary = parse(bufferToString(schemaBuffer, \"utf-8\"));\n const data = this.codec.decode(summary, { idCompressor: this.idCompressor });\n this.editManager.loadSummaryData(data);\n }\n}\n//# sourceMappingURL=editManagerSummarizer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { RevisionTagSchema, SessionIdSchema } from \"../core/index.js\";\n// Return type is intentionally derived.\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const Message = (tChange) => Type.Object({\n revision: RevisionTagSchema,\n originatorId: SessionIdSchema,\n changeset: tChange,\n version: Type.Optional(Type.Number()),\n});\n//# sourceMappingURL=messageFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { makeCodecFamily, makeVersionDispatchingCodec, withSchemaValidation, } from \"../codec/index.js\";\nimport { Message } from \"./messageFormat.js\";\nexport function makeMessageCodec(changeCodecs, revisionTagCodec, options, writeVersion) {\n const family = makeMessageCodecs(changeCodecs, revisionTagCodec, options);\n return makeVersionDispatchingCodec(family, { ...options, writeVersion });\n}\n/**\n * @privateRemarks - Exported for testing.\n */\nexport function makeMessageCodecs(changeCodecs, revisionTagCodec, options) {\n const v1Codec = makeV1CodecWithVersion(changeCodecs.resolve(1).json, revisionTagCodec, options, 1);\n return makeCodecFamily([\n // Back-compat: messages weren't always written with an explicit version field.\n [undefined, v1Codec],\n [1, v1Codec],\n [2, makeV1CodecWithVersion(changeCodecs.resolve(2).json, revisionTagCodec, options, 2)],\n [3, makeV1CodecWithVersion(changeCodecs.resolve(3).json, revisionTagCodec, options, 3)],\n [4, makeV1CodecWithVersion(changeCodecs.resolve(4).json, revisionTagCodec, options, 4)],\n ]);\n}\nfunction makeV1CodecWithVersion(changeCodec, revisionTagCodec, options, version) {\n return withSchemaValidation(Message(changeCodec.encodedSchema ?? Type.Any()), {\n encode: ({ commit, sessionId: originatorId }, context) => {\n const message = {\n revision: revisionTagCodec.encode(commit.revision, {\n originatorId,\n idCompressor: context.idCompressor,\n revision: undefined,\n }),\n originatorId,\n changeset: changeCodec.encode(commit.change, {\n originatorId,\n schema: context.schema,\n idCompressor: context.idCompressor,\n revision: commit.revision,\n }),\n version,\n };\n return message;\n },\n decode: (encoded, context) => {\n const { revision: encodedRevision, originatorId, changeset, } = encoded;\n const revision = revisionTagCodec.decode(encodedRevision, {\n originatorId,\n revision: undefined,\n idCompressor: context.idCompressor,\n });\n return {\n commit: {\n revision,\n change: changeCodec.decode(changeset, {\n originatorId,\n revision,\n idCompressor: context.idCompressor,\n }),\n },\n sessionId: originatorId,\n };\n },\n }, options.jsonValidator);\n}\n//# sourceMappingURL=messageCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { disposeSymbol } from \"../util/index.js\";\nexport class NoOpChangeEnricher {\n applyTipChange(change, revision) { }\n updateChangeEnrichments(change, revision) {\n return change;\n }\n fork() {\n return new NoOpChangeEnricher();\n }\n [disposeSymbol]() { }\n}\n//# sourceMappingURL=changeEnricher.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { disposeSymbol } from \"../util/index.js\";\n/**\n * Default implementation of {@link ResubmitMachine}.\n */\nexport class DefaultResubmitMachine {\n constructor(\n /**\n * A function that can invert a change.\n */\n inverter, \n /**\n * Change enricher that represent the tip of the top-level local branch (i.e., the branch on which in-flight\n * commits are applied and automatically rebased).\n */\n tip) {\n this.inverter = inverter;\n this.tip = tip;\n /**\n * The list of commits (from oldest to most recent) that have been submitted but not sequenced.\n */\n this.inFlightQueue = [];\n /**\n * The list of commits (from oldest to most recent) that should be resubmitted.\n */\n this.resubmitQueue = [];\n /**\n * Represents the index in the `inFlightQueue` array of the most recent in flight commit that has\n * undergone rebasing but whose enrichments have not been updated.\n * All in-flight commits with an index inferior or equal to this number have stale enrichments.\n *\n * Is -1 when *any* of the following is true:\n * - There are no in-flight commits (i.e., no local commits have been made or they have all been sequenced)\n * - None of the in-flight commits have been rebased\n * - In-flight commits that have been rebased have all had their enrichments updated\n */\n this.latestInFlightCommitWithStaleEnrichments = -1;\n }\n onCommitSubmitted(commit) {\n if (this.isInResubmitPhase) {\n const toResubmit = this.resubmitQueue.shift();\n assert(toResubmit === commit, 0x981 /* Unexpected commit submitted during resubmit phase */);\n }\n this.inFlightQueue.push(commit);\n }\n prepareForResubmit(toResubmit) {\n assert(!this.isInResubmitPhase, 0x957 /* Invalid resubmit phase start during incomplete resubmit phase */);\n assert(toResubmit.length === this.inFlightQueue.length, 0x958 /* Unexpected resubmit of more or fewer commits than are in flight */);\n if (this.latestInFlightCommitWithStaleEnrichments === -1) {\n // No in-flight commits have stale enrichments, so we can resubmit them as is\n this.resubmitQueue = this.inFlightQueue;\n this.inFlightQueue = [];\n }\n else {\n const checkout = this.tip.fork();\n // Roll back the checkout to the state before the oldest commit\n for (let iCommit = toResubmit.length - 1; iCommit >= 0; iCommit -= 1) {\n const commit = toResubmit[iCommit] ?? oob();\n const rollback = this.inverter(commit, true);\n // WARNING: it's not currently possible to roll back past a schema change (see AB#7265).\n // Either we have to make it possible to do so, or this logic will have to change to work\n // forwards from an earlier fork instead of backwards.\n checkout.applyTipChange(rollback);\n }\n // Update the enrichments of the stale commits\n for (let iCommit = 0; iCommit <= this.latestInFlightCommitWithStaleEnrichments; iCommit += 1) {\n const commit = toResubmit[iCommit] ?? oob();\n const enrichedChange = checkout.updateChangeEnrichments(commit.change, commit.revision);\n const enrichedCommit = { ...commit, change: enrichedChange };\n this.resubmitQueue.push(enrichedCommit);\n if (iCommit < this.latestInFlightCommitWithStaleEnrichments) {\n checkout.applyTipChange(enrichedChange, commit.revision);\n }\n this.inFlightQueue.shift();\n }\n checkout[disposeSymbol]();\n // Whatever commits are left do not have stale enrichments\n for (const commit of this.inFlightQueue) {\n this.resubmitQueue.push(commit);\n }\n this.inFlightQueue.length = 0;\n }\n this.latestInFlightCommitWithStaleEnrichments = -1;\n }\n peekNextCommit() {\n assert(this.isInResubmitPhase, 0x982 /* No available commit to resubmit outside of resubmit phase */);\n return this.resubmitQueue[0] ?? oob();\n }\n get isInResubmitPhase() {\n return this.resubmitQueue.length !== 0;\n }\n onSequencedCommitApplied(isLocal) {\n if (isLocal) {\n // The oldest in-flight commit has been sequenced\n assert(this.inFlightQueue.length > 0, 0x959 /* Sequencing of unknown local commit */);\n this.inFlightQueue.shift();\n if (this.latestInFlightCommitWithStaleEnrichments >= 0) {\n this.latestInFlightCommitWithStaleEnrichments -= 1;\n }\n }\n else {\n // A peer commit has been sequenced\n this.latestInFlightCommitWithStaleEnrichments = this.inFlightQueue.length - 1;\n }\n }\n}\n//# sourceMappingURL=defaultResubmitMachine.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Utility for producing an enriched commit out of multiple transaction steps\n */\nexport class TransactionEnricher {\n constructor(rebaser, enricher) {\n this.transactionCommits = [];\n /**\n * The number of commits before the start of each active transaction scope.\n * For a stack of `n` transaction scopes, the array will contain `n` integers,\n * where the integer at index `i` is the number of commits made before the start of the `i`th transaction scope\n * (therefore, the first element in the array, if present, is always 0)\n */\n this.transactionScopesStart = [];\n this.rebaser = rebaser;\n this.enricher = enricher;\n }\n startNewTransaction() {\n this.transactionScopesStart.push(this.transactionCommits.length);\n }\n commitCurrentTransaction() {\n const commitsCommitted = this.transactionScopesStart.pop();\n assert(commitsCommitted !== undefined, 0x985 /* No transaction to commit */);\n }\n abortCurrentTransaction() {\n const scopeStart = this.transactionScopesStart.pop();\n assert(scopeStart !== undefined, 0x986 /* No transaction to abort */);\n this.transactionCommits.length = scopeStart;\n }\n addTransactionStep(commit) {\n assert(this.transactionScopesStart.length !== 0, 0x987 /* No transaction to add a step to */);\n const change = this.enricher.updateChangeEnrichments(commit.change, commit.revision);\n this.transactionCommits.push({ ...commit, change });\n }\n getComposedChange(revision) {\n assert(this.transactionScopesStart.length === 0, 0x988 /* Transaction not committed */);\n const squashed = this.rebaser.compose(this.transactionCommits);\n const tagged = this.rebaser.changeRevision(squashed, revision);\n this.transactionCommits.length = 0;\n return tagged;\n }\n}\n//# sourceMappingURL=transactionEnricher.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { replaceChange } from \"../core/index.js\";\nimport { TransactionEnricher } from \"./transactionEnricher.js\";\n/**\n * Utility for enriching commits from a {@link Branch} before these commits are applied and submitted.\n */\nexport class BranchCommitEnricher {\n constructor(rebaser, enricher) {\n /**\n * Maps each local commit to the corresponding enriched commit.\n * Entries are added when the commits are prepared (before being applied and submitted).\n * Entries are removed when the commits are retrieved for submission (after being applied).\n * It's possible an entry will linger in the map indefinitely if it is never retrieved for submission.\n * This would happen if applying a commit were to fail and the commit were not retrieved/purged after the failure.\n */\n this.preparedCommits = new Map();\n this.enricher = enricher;\n this.transactionEnricher = new TransactionEnricher(rebaser, this.enricher);\n }\n /**\n * @returns The number of commits that have been prepared but not yet retrieved.\n */\n get preparedCommitsCount() {\n return this.preparedCommits.size;\n }\n startNewTransaction() {\n this.transactionEnricher.startNewTransaction();\n }\n commitCurrentTransaction() {\n this.transactionEnricher.commitCurrentTransaction();\n }\n abortCurrentTransaction() {\n this.transactionEnricher.abortCurrentTransaction();\n }\n /**\n * Adds a commit to the enricher.\n * @param commit - A commit that is part of a transaction.\n */\n ingestTransactionCommit(commit) {\n // We do not submit ops for changes that are part of a transaction.\n // But we need to enrich the commits that will be sent if the transaction is committed.\n this.transactionEnricher.addTransactionStep(commit);\n }\n /**\n * Prepares an enriched commit for later submission (see {@link BranchCommitEnricher.getPreparedCommit}).\n * @param commit - The commit to prepare an enriched version of.\n * @param concludesOuterTransaction - Whether the commit concludes an outer transaction.\n *\n * Each call to this method must be followed by a call to {@link BranchCommitEnricher.getPreparedCommit} or\n * {@link BranchCommitEnricher.purgePreparedCommits}. Failing to do so will result in a memory leak.\n */\n prepareCommit(commit, concludesOuterTransaction) {\n let enrichedChange;\n if (concludesOuterTransaction) {\n assert(this.transactionEnricher !== undefined, 0x97f /* Unexpected transaction commit without transaction steps */);\n enrichedChange = this.transactionEnricher.getComposedChange(commit.revision);\n }\n else {\n enrichedChange = this.enricher.updateChangeEnrichments(commit.change, commit.revision);\n }\n this.preparedCommits.set(commit, replaceChange(commit, enrichedChange));\n }\n /**\n * @param commit - A commit previously passed to {@link BranchCommitEnricher.prepareCommit}.\n * @returns The enriched commit corresponds to the given commit.\n */\n getPreparedCommit(commit) {\n const prepared = this.preparedCommits.get(commit);\n assert(prepared !== undefined, 0x980 /* Unknown commit */);\n this.preparedCommits.delete(commit);\n return prepared;\n }\n /**\n * Purges all commits that have been prepared but not been retrieved.\n * This should be called to avoid memory leaks if the prepared commits are no longer needed.\n *\n * Does not affect ingested transaction commits.\n */\n purgePreparedCommits() {\n this.preparedCommits.clear();\n }\n}\n//# sourceMappingURL=branchCommitEnricher.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nvar __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\nimport { SharedObject, } from \"@fluidframework/shared-object-base/internal\";\nimport { RevisionTagCodec, } from \"../core/index.js\";\nimport { brand, Breakable, throwIfBroken, breakingClass, } from \"../util/index.js\";\nimport { getChangeReplaceType } from \"./branch.js\";\nimport { EditManager, minimumPossibleSequenceNumber } from \"./editManager.js\";\nimport { makeEditManagerCodec } from \"./editManagerCodecs.js\";\nimport { EditManagerSummarizer } from \"./editManagerSummarizer.js\";\nimport { makeMessageCodec } from \"./messageCodecs.js\";\nimport { NoOpChangeEnricher } from \"./changeEnricher.js\";\nimport { DefaultResubmitMachine } from \"./defaultResubmitMachine.js\";\nimport { BranchCommitEnricher } from \"./branchCommitEnricher.js\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\n// TODO: Organize this to be adjacent to persisted types.\nconst summarizablesTreeKey = \"indexes\";\n/**\n * Generic shared tree, which needs to be configured with indexes, field kinds and other configuration.\n */\nlet SharedTreeCore = (() => {\n let _classDecorators = [breakingClass];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = SharedObject;\n let _instanceExtraInitializers = [];\n let _summarizeCore_decorators;\n var SharedTreeCore = _classThis = class extends _classSuper {\n /**\n * Used to edit the state of the tree. Edits will be immediately applied locally to the tree.\n * If there is no transaction currently ongoing, then the edits will be submitted to Fluid immediately as well.\n */\n get editor() {\n return this.getLocalBranch().editor;\n }\n /**\n * Gets the revision at the head of the trunk.\n */\n get trunkHeadRevision() {\n return this.editManager.getTrunkHead().revision;\n }\n /**\n * @param summarizables - Summarizers for all indexes used by this tree\n * @param changeFamily - The change family\n * @param editManager - The edit manager\n * @param id - The id of the shared object\n * @param runtime - The IFluidDataStoreRuntime which contains the shared object\n * @param attributes - Attributes of the shared object\n * @param telemetryContextPrefix - The property prefix for telemetry pertaining to this object. See {@link ITelemetryContext}\n */\n constructor(summarizables, changeFamily, options, formatOptions, \n // Base class arguments\n id, runtime, attributes, telemetryContextPrefix, schema, schemaPolicy, resubmitMachine, enricher) {\n super(id, runtime, attributes, telemetryContextPrefix);\n this.breaker = (__runInitializers(this, _instanceExtraInitializers), new Breakable(\"Shared Tree\"));\n /**\n * The sequence number that this instance is at.\n * This number is artificial in that it is made up by this instance as opposed to being provided by the runtime.\n * Is `undefined` after (and only after) this instance is attached.\n */\n this.detachedRevision = minimumPossibleSequenceNumber;\n this.schemaAndPolicy = {\n schema,\n policy: schemaPolicy,\n };\n const rebaseLogger = createChildLogger({\n logger: this.logger,\n namespace: \"Rebase\",\n });\n assert(runtime.idCompressor !== undefined, 0x886 /* IdCompressor must be enabled to use SharedTree */);\n this.idCompressor = runtime.idCompressor;\n this.mintRevisionTag = () => this.idCompressor.generateCompressedId();\n /**\n * A random ID that uniquely identifies this client in the collab session.\n * This is sent alongside every op to identify which client the op originated from.\n * This is used rather than the Fluid client ID because the Fluid client ID is not stable across reconnections.\n */\n const localSessionId = runtime.idCompressor.localSessionId;\n this.editManager = new EditManager(changeFamily, localSessionId, this.mintRevisionTag, rebaseLogger);\n this.editManager.localBranch.on(\"transactionStarted\", () => {\n this.commitEnricher.startNewTransaction();\n });\n this.editManager.localBranch.on(\"transactionAborted\", () => {\n this.commitEnricher.abortCurrentTransaction();\n });\n this.editManager.localBranch.on(\"transactionCommitted\", () => {\n this.commitEnricher.commitCurrentTransaction();\n });\n this.editManager.localBranch.on(\"beforeChange\", (change) => {\n // Ensure that any previously prepared commits that have not been sent are purged.\n this.commitEnricher.purgePreparedCommits();\n if (this.detachedRevision !== undefined) {\n // Edits submitted before the first attach do not need enrichment because they will not be applied by peers.\n }\n else if (change.type === \"append\") {\n if (this.getLocalBranch().isTransacting()) {\n for (const newCommit of change.newCommits) {\n this.commitEnricher.ingestTransactionCommit(newCommit);\n }\n }\n else {\n for (const newCommit of change.newCommits) {\n this.commitEnricher.prepareCommit(newCommit, false);\n }\n }\n }\n else if (change.type === \"replace\" &&\n getChangeReplaceType(change) === \"transactionCommit\" &&\n !this.getLocalBranch().isTransacting()) {\n assert(change.newCommits.length === 1, 0x983 /* Unexpected number of commits when committing transaction */);\n this.commitEnricher.prepareCommit(change.newCommits[0] ?? oob(), true);\n }\n });\n this.editManager.localBranch.on(\"afterChange\", (change) => {\n if (this.getLocalBranch().isTransacting()) {\n // We do not submit ops for changes that are part of a transaction.\n return;\n }\n if (change.type === \"append\" ||\n (change.type === \"replace\" && getChangeReplaceType(change) === \"transactionCommit\")) {\n if (this.detachedRevision !== undefined) {\n for (const newCommit of change.newCommits) {\n this.submitCommit(newCommit, this.schemaAndPolicy);\n }\n }\n else {\n for (const newCommit of change.newCommits) {\n const prepared = this.commitEnricher.getPreparedCommit(newCommit);\n this.submitCommit(prepared, this.schemaAndPolicy);\n }\n }\n }\n });\n const revisionTagCodec = new RevisionTagCodec(runtime.idCompressor);\n const editManagerCodec = makeEditManagerCodec(this.editManager.changeFamily.codecs, revisionTagCodec, options, formatOptions.editManager);\n this.summarizables = [\n new EditManagerSummarizer(this.editManager, editManagerCodec, this.idCompressor, this.schemaAndPolicy),\n ...summarizables,\n ];\n assert(new Set(this.summarizables.map((e) => e.key)).size === this.summarizables.length, 0x350 /* Index summary element keys must be unique */);\n this.messageCodec = makeMessageCodec(changeFamily.codecs, new RevisionTagCodec(runtime.idCompressor), options, formatOptions.message);\n const changeEnricher = enricher ?? new NoOpChangeEnricher();\n this.resubmitMachine =\n resubmitMachine ??\n new DefaultResubmitMachine(changeFamily.rebaser.invert.bind(changeFamily.rebaser), changeEnricher);\n this.commitEnricher = new BranchCommitEnricher(changeFamily.rebaser, changeEnricher);\n }\n // TODO: SharedObject's merging of the two summary methods into summarizeCore is not what we want here:\n // We might want to not subclass it, or override/reimplement most of its functionality.\n summarizeCore(serializer, telemetryContext, incrementalSummaryContext) {\n const builder = new SummaryTreeBuilder();\n const summarizableBuilder = new SummaryTreeBuilder();\n // Merge the summaries of all summarizables together under a single ISummaryTree\n for (const s of this.summarizables) {\n summarizableBuilder.addWithStats(s.key, s.getAttachSummary((contents) => serializer.stringify(contents, this.handle), undefined, undefined, telemetryContext, incrementalSummaryContext));\n }\n builder.addWithStats(summarizablesTreeKey, summarizableBuilder.getSummaryTree());\n return builder.getSummaryTree();\n }\n async loadCore(services) {\n const loadSummaries = this.summarizables.map(async (summaryElement) => summaryElement.load(scopeStorageService(services, summarizablesTreeKey, summaryElement.key), (contents) => this.serializer.parse(contents)));\n await Promise.all(loadSummaries);\n }\n /**\n * Submits an op to the Fluid runtime containing the given commit\n * @param commit - the commit to submit\n * @returns the submitted commit. This is undefined if the underlying `SharedObject` is not attached,\n * and may differ from `commit` due to enrichments like detached tree refreshers.\n */\n submitCommit(commit, schemaAndPolicy, isResubmit = false) {\n assert(\n // Edits should not be submitted until all transactions finish\n !this.getLocalBranch().isTransacting() || isResubmit, 0x68b /* Unexpected edit submitted during transaction */);\n assert(this.isAttached() === (this.detachedRevision === undefined), 0x95a /* Detached revision should only be set when not attached */);\n // Edits submitted before the first attach are treated as sequenced because they will be included\n // in the attach summary that is uploaded to the service.\n // Until this attach workflow happens, this instance essentially behaves as a centralized data structure.\n if (this.detachedRevision !== undefined) {\n const newRevision = brand(this.detachedRevision + 1);\n this.detachedRevision = newRevision;\n this.editManager.addSequencedChange({ ...commit, sessionId: this.editManager.localSessionId }, newRevision, this.detachedRevision);\n this.editManager.advanceMinimumSequenceNumber(newRevision);\n return undefined;\n }\n const message = this.messageCodec.encode({\n commit,\n sessionId: this.editManager.localSessionId,\n }, {\n idCompressor: this.idCompressor,\n schema: schemaAndPolicy,\n });\n this.submitLocalMessage(message, {\n // Clone the schema to ensure that during resubmit the schema has not been mutated by later changes\n schema: schemaAndPolicy.schema.clone(),\n policy: schemaAndPolicy.policy,\n });\n this.resubmitMachine.onCommitSubmitted(commit);\n }\n processCore(message, local, localOpMetadata) {\n // Empty context object is passed in, as our decode function is schema-agnostic.\n const { commit, sessionId } = this.messageCodec.decode(message.contents, {\n idCompressor: this.idCompressor,\n });\n this.editManager.addSequencedChange({ ...commit, sessionId }, brand(message.sequenceNumber), brand(message.referenceSequenceNumber));\n this.resubmitMachine.onSequencedCommitApplied(local);\n this.editManager.advanceMinimumSequenceNumber(brand(message.minimumSequenceNumber));\n }\n /**\n * @returns the head commit of the root local branch\n */\n getLocalBranch() {\n return this.editManager.localBranch;\n }\n onDisconnect() { }\n didAttach() {\n if (this.detachedRevision !== undefined) {\n this.detachedRevision = undefined;\n }\n }\n reSubmitCore(content, localOpMetadata) {\n // Empty context object is passed in, as our decode function is schema-agnostic.\n const { commit: { revision }, } = this.messageCodec.decode(this.serializer.decode(content), {\n idCompressor: this.idCompressor,\n });\n const [commit] = this.editManager.findLocalCommit(revision);\n // If a resubmit phase is not already in progress, then this must be the first commit of a new resubmit phase.\n if (this.resubmitMachine.isInResubmitPhase === false) {\n const toResubmit = this.editManager.getLocalCommits();\n assert(commit === toResubmit[0], 0x95d /* Resubmit phase should start with the oldest local commit */);\n this.resubmitMachine.prepareForResubmit(toResubmit);\n }\n assert(isClonableSchemaPolicy(localOpMetadata), 0x95e /* Local metadata must contain schema and policy. */);\n assert(this.resubmitMachine.isInResubmitPhase !== false, 0x984 /* Invalid resubmit outside of resubmit phase */);\n const enrichedCommit = this.resubmitMachine.peekNextCommit();\n this.submitCommit(enrichedCommit, localOpMetadata, true);\n }\n applyStashedOp(content) {\n assert(!this.getLocalBranch().isTransacting(), 0x674 /* Unexpected transaction is open while applying stashed ops */);\n // Empty context object is passed in, as our decode function is schema-agnostic.\n const { commit: { revision, change }, } = this.messageCodec.decode(content, { idCompressor: this.idCompressor });\n this.editManager.localBranch.apply(change, revision);\n }\n getGCData(fullGC) {\n const gcNodes = super.getGCData(fullGC).gcNodes;\n for (const s of this.summarizables) {\n for (const [id, routes] of Object.entries(s.getGCData(fullGC).gcNodes)) {\n gcNodes[id] ?? (gcNodes[id] = []);\n for (const route of routes) {\n // Non null asserting here because we are creating an array at gcNodes[id] if it is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n gcNodes[id].push(route);\n }\n }\n }\n return {\n gcNodes,\n };\n }\n };\n __setFunctionName(_classThis, \"SharedTreeCore\");\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _summarizeCore_decorators = [throwIfBroken];\n __esDecorate(_classThis, null, _summarizeCore_decorators, { kind: \"method\", name: \"summarizeCore\", static: false, private: false, access: { has: obj => \"summarizeCore\" in obj, get: obj => obj.summarizeCore }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n SharedTreeCore = _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n })();\n return SharedTreeCore = _classThis;\n})();\nexport { SharedTreeCore };\nfunction isClonableSchemaPolicy(maybeSchemaPolicy) {\n const schemaAndPolicy = maybeSchemaPolicy;\n return schemaAndPolicy.schema !== undefined && schemaAndPolicy.policy !== undefined;\n}\n/**\n * Compose an {@link IChannelStorageService} which prefixes all paths before forwarding them to the original service\n */\nfunction scopeStorageService(service, ...pathElements) {\n const scope = `${pathElements.join(\"/\")}/`;\n return {\n async readBlob(path) {\n return service.readBlob(`${scope}${path}`);\n },\n async contains(path) {\n return service.contains(`${scope}${path}`);\n },\n async list(path) {\n return service.list(`${scope}${path}`);\n },\n };\n}\n//# sourceMappingURL=sharedTreeCore.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _TreeNodeKernel_hydrated, _TreeNodeKernel_events;\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { createEmitter } from \"../../events/index.js\";\nimport { flexTreeSlot, isFreedSymbol, LazyEntity, TreeStatus, treeStatusFromAnchorCache, } from \"../../feature-libraries/index.js\";\nconst treeNodeToKernel = new WeakMap();\nexport function getKernel(node) {\n const kernel = treeNodeToKernel.get(node);\n assert(kernel !== undefined, 0x9b1 /* Expected tree node to have kernel */);\n return kernel;\n}\n/**\n * Detects if the given 'candidate' is a TreeNode.\n *\n * @remarks\n * Supports both Hydrated and {@link Unhydrated} TreeNodes, both of which return true.\n *\n * Because the common usage is to check if a value being inserted/set is a TreeNode,\n * this function permits calling with primitives as well as objects.\n *\n * Primitives will always return false (as they are copies of data, not references to nodes).\n *\n * @param candidate - Value which may be a TreeNode\n * @returns true if the given 'candidate' is a hydrated TreeNode.\n */\nexport function isTreeNode(candidate) {\n return treeNodeToKernel.has(candidate);\n}\n/**\n * Returns a schema for a value if the value is a {@link TreeNode}.\n *\n * Returns undefined for other values.\n * @remarks\n * Does not give schema for a {@link TreeLeafValue}.\n */\nexport function tryGetTreeNodeSchema(value) {\n const kernel = treeNodeToKernel.get(value);\n return kernel?.schema;\n}\n/**\n * Contains state and an internal API for managing {@link TreeNode}s.\n * @remarks All {@link TreeNode}s have an associated kernel object.\n * The kernel has the same lifetime as the node and spans both its unhydrated and hydrated states.\n * When hydration occurs, the kernel is notified via the {@link TreeNodeKernel.hydrate | hydrate} method.\n */\nexport class TreeNodeKernel {\n /**\n * Create a TreeNodeKernel which can be looked up with {@link getKernel}.\n * @remarks\n * Exactly one kernel per TreeNode should be created.\n */\n constructor(node, schema) {\n this.node = node;\n this.schema = schema;\n _TreeNodeKernel_hydrated.set(this, void 0);\n _TreeNodeKernel_events.set(this, createEmitter());\n assert(!treeNodeToKernel.has(node), 0xa1a /* only one kernel per node can be made */);\n treeNodeToKernel.set(node, this);\n }\n hydrate(anchorNode) {\n const offChildrenChanged = anchorNode.on(\"childrenChangedAfterBatch\", () => {\n __classPrivateFieldGet(this, _TreeNodeKernel_events, \"f\").emit(\"nodeChanged\");\n });\n const offSubtreeChanged = anchorNode.on(\"subtreeChangedAfterBatch\", () => {\n __classPrivateFieldGet(this, _TreeNodeKernel_events, \"f\").emit(\"treeChanged\");\n });\n const offAfterDestroy = anchorNode.on(\"afterDestroy\", () => this.dispose());\n __classPrivateFieldSet(this, _TreeNodeKernel_hydrated, {\n anchorNode,\n offAnchorNode: () => {\n offChildrenChanged();\n offSubtreeChanged();\n offAfterDestroy();\n },\n }, \"f\");\n }\n dehydrate() {\n __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, \"f\")?.offAnchorNode?.();\n __classPrivateFieldSet(this, _TreeNodeKernel_hydrated, undefined, \"f\");\n }\n isHydrated() {\n return __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, \"f\") !== undefined;\n }\n getStatus() {\n if (__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, \"f\")?.anchorNode === undefined) {\n return TreeStatus.New;\n }\n // TODO: Replace this check with the proper check against the cursor state when the cursor becomes part of the kernel\n const flex = __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, \"f\").anchorNode.slots.get(flexTreeSlot);\n if (flex !== undefined) {\n assert(flex instanceof LazyEntity, 0x9b4 /* Unexpected flex node implementation */);\n if (flex[isFreedSymbol]()) {\n return TreeStatus.Deleted;\n }\n }\n return treeStatusFromAnchorCache(__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, \"f\").anchorNode);\n }\n on(eventName, listener) {\n return __classPrivateFieldGet(this, _TreeNodeKernel_events, \"f\").on(eventName, listener);\n }\n dispose() {\n this.dehydrate();\n // TODO: go to the context and remove myself from withAnchors\n }\n}\n_TreeNodeKernel_hydrated = new WeakMap(), _TreeNodeKernel_events = new WeakMap();\n//# sourceMappingURL=treeNodeKernel.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The type of a {@link TreeNode}.\n * For more information about the type, use `Tree.schema(theNode)` instead.\n * @remarks\n * This symbol mainly exists on nodes to allow TypeScript to provide more accurate type checking.\n * `Tree.is` and `Tree.schema` provide a superset of this information in more friendly ways.\n *\n * This symbol should not manually be added to objects as doing so allows the object to be invalidly used where nodes are expected.\n * Instead construct a real node of the desired type using its constructor.\n * @privateRemarks\n * This prevents non-nodes from being accidentally used as nodes, as well as allows the type checker to distinguish different node types.\n * @deprecated External code should use `Tree.schema(theNode)` for schema related runtime data access. For type narrowing, use `WithType` instead of the symbols directly.\n * @system @public\n */\nexport const typeNameSymbol = Symbol(\"TreeNode Type\");\n/**\n * The type of a {@link TreeNode}.\n * For more information about the type, use `Tree.schema(theNode)` instead.\n * @remarks\n * This symbol mainly exists on nodes to allow TypeScript to provide more accurate type checking.\n * `Tree.is` and `Tree.schema` provide a superset of this information in more friendly ways.\n *\n * This symbol should not manually be added to objects as doing so allows the object to be invalidly used where specific nodes are expected.\n * Instead construct a real node of the desired type using its constructor.\n *\n * This symbol should not be used directly for type narrowing. Instead use {@link WithType}.\n * @privateRemarks\n * This prevents non-nodes from being accidentally used as nodes and allows the type-checker to distinguish different node types.\n * @system @public\n */\nexport const typeSchemaSymbol = Symbol(\"TreeNode Schema\");\n//# sourceMappingURL=withType.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Kind of tree node.\n * @remarks\n * More kinds may be added over time, so do not assume this is an exhaustive set.\n * @public\n */\nexport var NodeKind;\n(function (NodeKind) {\n /**\n * A node which serves as a map, storing children under string keys.\n */\n NodeKind[NodeKind[\"Map\"] = 0] = \"Map\";\n /**\n * A node which serves as an array, storing children in an ordered sequence.\n */\n NodeKind[NodeKind[\"Array\"] = 1] = \"Array\";\n /**\n * A node which stores a heterogenous collection of children in named fields.\n * @remarks\n * Each field gets its own schema.\n */\n NodeKind[NodeKind[\"Object\"] = 2] = \"Object\";\n /**\n * A node which stores a single leaf value.\n */\n NodeKind[NodeKind[\"Leaf\"] = 3] = \"Leaf\";\n})(NodeKind || (NodeKind = {}));\n//# sourceMappingURL=treeNodeSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _TreeNode_brand;\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { NodeKind } from \"./treeNodeSchema.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { typeNameSymbol } from \"./withType.js\";\nimport { tryGetTreeNodeSchema } from \"./treeNodeKernel.js\";\nimport { isFlexTreeNode } from \"../../feature-libraries/index.js\";\n/**\n * A non-{@link NodeKind.Leaf|leaf} SharedTree node. Includes objects, arrays, and maps.\n *\n * @remarks\n * Base type which all nodes implement.\n *\n * This can be used as a type to indicate/document values which should be tree nodes.\n * Runtime use of this class object (for example when used with `instanceof` or extending it), is not currently supported.\n *\n * Instances of tree nodes must be created by opening an existing document, inserting values into the document,\n * or by using the constructors and create functions of {@link TreeNodeSchema} produced by {@link SchemaFactory}.\n * @privateRemarks\n * This is a class not an interface to enable stricter type checking (see {@link TreeNode.#brand})\n * and some runtime enforcement of schema class policy (see the the validation in the constructor).\n * This class is however only `type` exported not value exported, preventing the class object from being used,\n * similar to how interfaces work.\n *\n * Not all node implementations include this in their prototype chain (some hide it with a proxy),\n * and thus cause the default/built in `instanceof` to return false despite our type checking and all other APIs treating them as TreeNodes.\n * This class provides a custom `Symbol.hasInstance` to fix `instanceof` for this class and all classes extending it.\n * For now the type-only export prevents use of `instanceof` on this class (but allows it in subclasses like schema classes).\n * @sealed @public\n */\nexport class TreeNode {\n static [(_TreeNode_brand = new WeakMap(), Symbol.hasInstance)](value) {\n const schema = tryGetTreeNodeSchema(value);\n if (schema === undefined || schema.kind === NodeKind.Leaf) {\n return false;\n }\n assert(\"prototype\" in schema, 0x98a /* expected class based schema */);\n return inPrototypeChain(schema.prototype, this.prototype);\n }\n /**\n * TreeNodes must extend schema classes created by SchemaFactory, and therefore this constructor should not be invoked directly by code outside this package.\n * @privateRemarks\n * `token` must be the {@link privateToken} value, which is not package exported.\n * This is used to detect invalid subclasses.\n *\n * All valid subclass should use {@link TreeNodeValid}, but this code doesn't directly reference it to avoid cyclic dependencies.\n */\n constructor(token) {\n /**\n * This is added to prevent TypeScript from implicitly allowing non-TreeNode types to be used as TreeNodes.\n * @remarks\n * This field forces TypeScript to use nominal instead of structural typing,\n * preventing compiler error messages and tools like \"add missing properties\"\n * from adding the [type] field as a solution when using a non-TreeNode object where a TreeNode is required.\n * Instead TreeNodes must be created through the appropriate APIs, see the documentation on {@link TreeNode} for details.\n *\n * @privateRemarks\n * This is a JavaScript private field, so is not accessible from outside this class.\n * This prevents it from having name collisions with object fields.\n * Since this is private, the type of this field is stripped in the d.ts file.\n * To get matching type checking within and from outside the package, the least informative type (`unknown`) is used.\n * To avoid this having any runtime impact, the field is uninitialized.\n *\n * Making this field optional results in different type checking within this project than outside of it, since the d.ts file drops the optional aspect of the field.\n * This is extra confusing since since the tests get in-project typing for intellisense and separate project checking at build time.\n * To avoid all this mess, this field is required, not optional.\n *\n * Another option would be to use a symbol (possibly as a private field).\n * That approach ran into some strange difficulties causing SchemaFactory to fail to compile, and was not investigated further.\n *\n * The [type] symbol provides a lot of the value this private brand does, but is not all of it:\n * someone could manually (or via Intellisense auto-implement completion, or in response to a type error)\n * make an object literal with the [type] field and pass it off as a node: this private brand prevents that.\n */\n _TreeNode_brand.set(this, void 0);\n if (token !== privateToken) {\n throw new UsageError(\"TreeNodes must extend schema classes created by SchemaFactory\");\n }\n }\n}\n/**\n * `token` to pass to {@link TreeNode}'s constructor used to detect invalid subclasses.\n */\nexport const privateToken = {};\n/**\n * Check if the prototype derived's prototype chain contains `base`.\n * @param derived - prototype to check\n * @param base - prototype to search for\n * @returns true iff `base` is in the prototype chain starting at `derived`.\n */\n// eslint-disable-next-line @rushstack/no-new-null\nexport function inPrototypeChain(derived, base) {\n let checking = derived;\n while (checking !== null) {\n if (base === checking) {\n return true;\n }\n checking = Reflect.getPrototypeOf(checking);\n }\n return false;\n}\nexport function toFlexTreeNode(node) {\n assert(isFlexTreeNode(node), 0x963 /* Invalid InternalTreeNode */);\n return node;\n}\n//# sourceMappingURL=types.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { fail } from \"../../util/index.js\";\n/**\n * A symbol for storing FlexTreeSchema on TreeNodeSchema.\n * Eagerly set on leaves, and lazily set for other cases.\n */\nconst flexSchemaSymbol = Symbol(`flexSchema`);\n/**\n * A symbol for storing TreeNodeSchema on FlexTreeNode's schema.\n */\nconst simpleNodeSchemaSymbol = Symbol(`simpleNodeSchema`);\nexport function cachedFlexSchemaFromClassSchema(schema) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return schema[flexSchemaSymbol];\n}\nexport function setFlexSchemaFromClassSchema(simple, flex) {\n assert(!(flexSchemaSymbol in simple), 0x91f /* simple schema already marked */);\n assert(!(simpleNodeSchemaSymbol in flex), 0x920 /* flex schema already marked */);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n simple[flexSchemaSymbol] = flex;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n flex[simpleNodeSchemaSymbol] = simple;\n}\n/**\n * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.\n * Returns `undefined` if no cached value is found.\n */\nexport function tryGetSimpleNodeSchema(flexSchema) {\n if (simpleNodeSchemaSymbol in flexSchema) {\n return flexSchema[simpleNodeSchemaSymbol];\n }\n return undefined;\n}\n/**\n * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.\n * Fails if no cached value is found.\n */\nexport function getSimpleNodeSchema(flexSchema) {\n return tryGetSimpleNodeSchema(flexSchema) ?? fail(\"missing simple schema\");\n}\n//# sourceMappingURL=schemaCaching.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Lazy } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { isLazy, } from \"../feature-libraries/index.js\";\nimport { brand, isReadonlyArray } from \"../util/index.js\";\n/**\n * Returns true if the given schema is a {@link TreeNodeSchemaClass}, or otherwise false if it is a {@link TreeNodeSchemaNonClass}.\n */\nexport function isTreeNodeSchemaClass(schema) {\n return schema.constructor !== undefined;\n}\n/**\n * Kind of a field on a node.\n * @remarks\n * More kinds may be added over time, so do not assume this is an exhaustive set.\n * @public\n */\nexport var FieldKind;\n(function (FieldKind) {\n /**\n * A field which can be empty or filled.\n * @remarks\n * Allows 0 or one child.\n */\n FieldKind[FieldKind[\"Optional\"] = 0] = \"Optional\";\n /**\n * A field which must always be filled.\n * @remarks\n * Only allows exactly one child.\n */\n FieldKind[FieldKind[\"Required\"] = 1] = \"Required\";\n /**\n * A special field used for node identifiers.\n * @remarks\n * Only allows exactly one child.\n */\n FieldKind[FieldKind[\"Identifier\"] = 2] = \"Identifier\";\n})(FieldKind || (FieldKind = {}));\n/**\n * Maps from a view key to its corresponding {@link FieldProps.key | stored key} for the provided\n * {@link ImplicitFieldSchema | field schema}.\n *\n * @remarks\n * If an explicit stored key was specified in the schema, it will be used.\n * Otherwise, the stored key is the same as the view key.\n */\nexport function getStoredKey(viewKey, fieldSchema) {\n return brand(getExplicitStoredKey(fieldSchema) ?? viewKey);\n}\n/**\n * Gets the {@link FieldProps.key | stored key} specified by the schema, if one was explicitly specified.\n * Otherwise, returns undefined.\n */\nexport function getExplicitStoredKey(fieldSchema) {\n return fieldSchema instanceof FieldSchema ? fieldSchema.props?.key : undefined;\n}\n/**\n * Returns true if the given {@link FieldProvider} is a {@link ConstantFieldProvider}\n */\nexport function isConstant(fieldProvider) {\n return fieldProvider.length === 0;\n}\nexport function extractFieldProvider(input) {\n return input;\n}\nexport function getDefaultProvider(input) {\n return input;\n}\n/**\n * Package internal construction API.\n */\nexport let createFieldSchema;\n/**\n * All policy for a specific field,\n * including functionality that does not have to be kept consistent across versions or deterministic.\n *\n * This can include policy for how to use this schema for \"view\" purposes, and well as how to expose editing APIs.\n * Use {@link SchemaFactory} to create the FieldSchema instances, for example {@link SchemaFactory.optional}.\n * @privateRemarks\n * Public access to the constructor is removed to prevent creating expressible but unsupported (or not stable) configurations.\n * {@link createFieldSchema} can be used internally to create instances.\n * @sealed @public\n */\nexport class FieldSchema {\n /**\n * What types of tree nodes are allowed in this field.\n * @remarks Counterpart to {@link FieldSchema.allowedTypes}, with any lazy definitions evaluated.\n */\n get allowedTypeSet() {\n return this.lazyTypes.value;\n }\n constructor(\n /**\n * The {@link https://en.wikipedia.org/wiki/Kind_(type_theory) | kind } of this field.\n * Determines the multiplicity, viewing and editing APIs as well as the merge resolution policy.\n */\n kind, \n /**\n * What types of tree nodes are allowed in this field.\n */\n allowedTypes, \n /**\n * Optional properties associated with the field.\n */\n props) {\n this.kind = kind;\n this.allowedTypes = allowedTypes;\n this.props = props;\n this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes));\n // TODO: optional fields should (by default) get a default provider that returns undefined, removing the need to special case them here:\n this.requiresValue =\n this.props?.defaultProvider === undefined && this.kind !== FieldKind.Optional;\n }\n}\n(() => {\n createFieldSchema = (kind, allowedTypes, props) => new FieldSchema(kind, allowedTypes, props);\n})();\n/**\n * Normalizes a {@link ImplicitFieldSchema} to a {@link FieldSchema}.\n */\nexport function normalizeFieldSchema(schema) {\n return schema instanceof FieldSchema\n ? schema\n : createFieldSchema(FieldKind.Required, schema);\n}\n/**\n * Normalizes a {@link ImplicitAllowedTypes} to a set of {@link TreeNodeSchema}s, by eagerly evaluating any\n * lazy schema declarations.\n *\n * @remarks Note: this must only be called after all required schemas have been declared, otherwise evaluation of\n * recursive schemas may fail.\n */\nexport function normalizeAllowedTypes(types) {\n const normalized = new Set();\n if (isReadonlyArray(types)) {\n for (const lazyType of types) {\n normalized.add(evaluateLazySchema(lazyType));\n }\n }\n else {\n normalized.add(evaluateLazySchema(types));\n }\n return normalized;\n}\nfunction evaluateLazySchema(value) {\n const evaluatedSchema = isLazy(value) ? value() : value;\n if (evaluatedSchema === undefined) {\n throw new UsageError(`Encountered an undefined schema. This could indicate that some referenced schema has not yet been instantiated.`);\n }\n return evaluatedSchema;\n}\n//# sourceMappingURL=schemaTypes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable import/no-internal-modules */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { EmptyKey } from \"../core/index.js\";\nimport { FieldKinds, FlexFieldSchema, FlexMapNodeSchema, FlexObjectNodeSchema, TreeNodeSchemaBase, defaultSchemaPolicy, schemaIsLeaf, } from \"../feature-libraries/index.js\";\nimport { normalizeFlexListEager } from \"../feature-libraries/typed-schema/flexList.js\";\nimport { brand, fail, isReadonlyArray, mapIterable } from \"../util/index.js\";\nimport { cachedFlexSchemaFromClassSchema, setFlexSchemaFromClassSchema, tryGetSimpleNodeSchema, NodeKind, } from \"./core/index.js\";\nimport { FieldKind, FieldSchema, getStoredKey, } from \"./schemaTypes.js\";\n/**\n * Generate a {@link FlexTreeSchema} with `root` as the root field.\n *\n * This also has the side effect of populating the cached view schema on the class-based schema.\n */\nexport function toFlexSchema(root) {\n const schemaMap = new Map();\n const field = convertField(schemaMap, root);\n const nodeSchema = new Map(mapIterable(schemaMap, ([key, value]) => {\n const schema = value.toFlex();\n const classSchema = tryGetSimpleNodeSchema(schema);\n if (classSchema === undefined) {\n assert(schemaIsLeaf(schema), 0x83e /* invalid leaf */);\n }\n else {\n assert(cachedFlexSchemaFromClassSchema(classSchema) === schema, 0x83f /* mismatched schema */);\n }\n return [key, schema];\n }));\n const typed = {\n nodeSchema,\n adapters: {},\n rootFieldSchema: field,\n policy: defaultSchemaPolicy,\n };\n return typed;\n}\n/**\n * Return a flex schema for the provided class schema.\n *\n * This also has the side effect of populating the cached view schema on the class based schema.\n */\nexport function getFlexSchema(root) {\n const treeSchema = toFlexSchema(root);\n return treeSchema.rootFieldSchema.monomorphicChildType ?? fail(\"root should be monomorphic\");\n}\n/**\n * Normalizes an {@link ImplicitFieldSchema} into a {@link TreeFieldSchema}.\n */\nexport function convertField(schemaMap, schema) {\n let kind;\n let types;\n if (schema instanceof FieldSchema) {\n kind = convertFieldKind.get(schema.kind) ?? fail(\"Invalid field kind\");\n types = schema.allowedTypes;\n }\n else {\n kind = FieldKinds.required;\n types = schema;\n }\n const allowedTypes = convertAllowedTypes(schemaMap, types);\n return FlexFieldSchema.create(kind, allowedTypes);\n}\nconst convertFieldKind = new Map([\n [FieldKind.Optional, FieldKinds.optional],\n [FieldKind.Required, FieldKinds.required],\n [FieldKind.Identifier, FieldKinds.identifier],\n]);\n/**\n * Normalizes an {@link ImplicitAllowedTypes} into an {@link AllowedTypes}.\n */\nexport function convertAllowedTypes(schemaMap, schema) {\n if (isReadonlyArray(schema)) {\n return normalizeFlexListEager(schema).map((item) => convertNodeSchema(schemaMap, item));\n }\n return [convertNodeSchema(schemaMap, schema)];\n}\nconst builder = { name: \"simple schema\" };\n/**\n * Converts a {@link TreeNodeSchema} into a {@link FlexTreeNodeSchema}.\n * Ensures all types reachable from `schema` are included in `schemaMap`.\n *\n * Return value (and entries in map) are lazy to allow recursive types to work.\n * This laziness does NOT extend to adding entries to `schemaMap`:\n * all referenced types are added to it before this function returns.\n */\nexport function convertNodeSchema(schemaMap, schema) {\n const fromMap = schemaMap.get(brand(schema.identifier));\n if (fromMap !== undefined) {\n if (fromMap.original !== schema) {\n // Use JSON.stringify to quote and escape identifier string.\n throw new UsageError(`Multiple schema encountered with the identifier ${JSON.stringify(schema.identifier)}. Remove or rename them to avoid the collision.`);\n }\n return fromMap.toFlex;\n }\n const toFlex = () => {\n let out;\n const kind = schema.kind;\n switch (kind) {\n case NodeKind.Leaf: {\n const cached = cachedFlexSchemaFromClassSchema(schema) ?? fail(\"leaf schema should be pre-cached\");\n assert(schemaIsLeaf(cached), 0x840 /* expected leaf */);\n return cached;\n }\n case NodeKind.Map: {\n const fieldInfo = schema.info;\n const field = FlexFieldSchema.create(FieldKinds.optional, convertAllowedTypes(schemaMap, fieldInfo));\n // Lookup of cached schema is done here instead of before since walking the schema recursively to populate schemaMap is still required.\n const cached = cachedFlexSchemaFromClassSchema(schema);\n out = cached ?? FlexMapNodeSchema.create(builder, brand(schema.identifier), field);\n break;\n }\n case NodeKind.Array: {\n const fieldInfo = schema.info;\n const field = FlexFieldSchema.create(FieldKinds.sequence, convertAllowedTypes(schemaMap, fieldInfo));\n const cached = cachedFlexSchemaFromClassSchema(schema);\n out =\n cached ??\n FlexObjectNodeSchema.create(builder, brand(schema.identifier), {\n [EmptyKey]: field,\n });\n break;\n }\n case NodeKind.Object: {\n const info = schema.info;\n const fields = Object.create(null);\n for (const [viewKey, implicitFieldSchema] of Object.entries(info)) {\n // If a `stored key` was provided, use it as the key in the flex schema.\n // Otherwise, use the view key.\n const flexKey = getStoredKey(viewKey, implicitFieldSchema);\n // This code has to be careful to avoid assigning to __proto__ or similar built-in fields.\n Object.defineProperty(fields, flexKey, {\n enumerable: true,\n configurable: false,\n writable: false,\n value: convertField(schemaMap, implicitFieldSchema),\n });\n }\n const cached = cachedFlexSchemaFromClassSchema(schema);\n out = cached ?? FlexObjectNodeSchema.create(builder, brand(schema.identifier), fields);\n break;\n }\n default:\n unreachableCase(kind);\n }\n assert(out instanceof TreeNodeSchemaBase, 0x841 /* invalid schema produced */);\n {\n const cached = cachedFlexSchemaFromClassSchema(schema);\n if (cached !== undefined) {\n assert(cachedFlexSchemaFromClassSchema(schema) === out, 0x842 /* incorrect flexSchemaSymbol */);\n }\n else {\n setFlexSchemaFromClassSchema(schema, out);\n }\n }\n return out;\n };\n schemaMap.set(brand(schema.identifier), { original: schema, toFlex });\n return toFlex;\n}\n//# sourceMappingURL=toFlexSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ValueSchema } from \"../core/index.js\";\nimport { SchemaBuilderInternal } from \"../feature-libraries/index.js\";\n/**\n * Names in this domain follow https://en.wikipedia.org/wiki/Reverse_domain_name_notation\n */\nconst builder = new SchemaBuilderInternal({ scope: \"com.fluidframework.leaf\" });\nconst number = builder.leaf(\"number\", ValueSchema.Number);\nconst boolean = builder.leaf(\"boolean\", ValueSchema.Boolean);\nconst string = builder.leaf(\"string\", ValueSchema.String);\nconst handle = builder.leaf(\"handle\", ValueSchema.FluidHandle);\nconst nullSchema = builder.leaf(\"null\", ValueSchema.Null);\nconst primitives = [number, boolean, string];\nconst all = [handle, nullSchema, ...primitives];\nconst library = builder.intoLibrary();\n/**\n * Built-in {@link LeafNodeSchema}.\n */\nexport const leaf = {\n /**\n * {@link LeafNodeSchema} for holding a JavaScript `number`.\n *\n * @remarks\n * The number is a [double-precision 64-bit binary format IEEE 754](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) value, however there are some exceptions:\n * - `NaN`, and the infinities should not be used.\n * - `-0` may be converted to `0` in some cases.\n *\n * These limitations match the limitations of JSON.\n * @privateRemarks\n * TODO:\n * We should be much more clear about what happens if you use problematic values.\n * We should validate and/or normalize them when inserting content.\n */\n number,\n /**\n * {@link LeafNodeSchema} for holding a boolean.\n */\n boolean,\n /**\n * {@link LeafNodeSchema} for holding a JavaScript `string`.\n *\n * @remarks\n * Strings containing unpaired UTF-16 surrogate pair code units may not be handled correctly.\n *\n * These limitations come from the use of UTF-8 encoding of the strings, which requires them to be valid unicode.\n * JavaScript does not make this requirement for its strings so not all possible JavaScript strings are supported.\n * @privateRemarks\n * TODO:\n * We should be much more clear about what happens if you use problematic values.\n * We should validate and/or normalize them when inserting content.\n */\n string,\n /**\n * {@link LeafNodeSchema} for holding an {@link @fluidframework/core-interfaces#(IFluidHandle:interface)}.\n */\n handle,\n /**\n * {@link LeafNodeSchema} for JavaScript `null`.\n *\n * @remarks\n * There are good [reasons to avoid using null](https://www.npmjs.com/package/%40rushstack/eslint-plugin#rushstackno-new-null) in JavaScript, however sometimes it is desired.\n * This {@link LeafNodeSchema} node provides the option to include nulls in trees when desired.\n * Unless directly inter-operating with existing data using null, consider other approaches, like wrapping the value in an optional field, or using a more specifically named empty object node.\n */\n null: nullSchema,\n /**\n * The set of {@link LeafNodeSchema} which correspond to JavaScript primitive (non-object) types.\n */\n primitives,\n /**\n * All {@link LeafNodeSchema} defined in this library..\n */\n all,\n /**\n * {@link SchemaLibrary} of the {@link LeafNodeSchema}.\n *\n * @privateRemarks\n * This is included by default in schema produced with {@link SchemaBuilder}.\n */\n library,\n};\n//# sourceMappingURL=leafDomain.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FieldKinds, SchemaBuilderBase, } from \"../feature-libraries/index.js\";\nimport { leaf } from \"./leafDomain.js\";\n/**\n * Builds schema libraries, and the schema within them.\n *\n * @remarks\n * Fields, when inferred from {@link FlexImplicitFieldSchema}, default to the `Required` {@link FlexFieldKind} (except for in Maps, which default to `Optional`).\n * Implicitly includes `leaf` schema library by default.\n *\n * This type has some built in defaults which impact compatibility.\n * This includes which {@link FlexFieldKind}s it uses.\n * To ensure that these defaults can be updated without compatibility issues,\n * this class is versioned: the number in its name indicates its compatibility,\n * and if its defaults are changed to ones that would not be compatible with a version of the application using the previous versions,\n * this number will be updated to make it impossible for an app to implicitly do a compatibility breaking change by updating this package.\n * Major package version updates are allowed to break API compatibility, but must not break content compatibility unless a corresponding code change is made in the app to opt in.\n *\n * @privateRemarks\n * TODO: Maybe rename to DefaultSchemaBuilder1 because of the versioning implications above.\n * Same applies to SchemaBuilder.\n * TODO: figure out a way to link `leaf` above without breaking API Extractor.\n * @sealed\n * @deprecated Users of this class should either use {@link SchemaBuilderBase} and explicitly work with {@link FlexFieldSchema}, or use SchemaFactory and work at its higher level of abstraction.\n */\nexport class SchemaBuilder extends SchemaBuilderBase {\n constructor(options) {\n super(FieldKinds.required, {\n ...options,\n libraries: [...(options.libraries ?? []), leaf.library],\n });\n /**\n * Define a schema for an {@link FieldKinds.optional|optional field}.\n * @remarks\n * Shorthand for passing `FieldKinds.optional` to {@link FlexFieldSchema.create}.\n *\n * Since this creates a {@link FlexFieldSchema} (and not a {@link FlexTreeNodeSchema}), the resulting schema is structurally typed, and not impacted by the {@link SchemaBuilderBase.scope}:\n * therefore this method is the same as the static version.\n */\n this.optional = SchemaBuilder.optional;\n /**\n * Define a schema for a {@link FieldKinds.required|required field}.\n * @remarks\n * Shorthand for passing `FieldKinds.required` to {@link FlexFieldSchema.create}.\n * Note that `FieldKinds.required` is the current default field kind, so APIs accepting {@link FlexImplicitFieldSchema}\n * can be passed the `allowedTypes` and will implicitly wrap it up in a {@link FieldKinds.required|required field}.\n *\n * Since this creates a {@link FlexFieldSchema} (and not a {@link FlexTreeNodeSchema}), the resulting schema is structurally typed, and not impacted by the {@link SchemaBuilderBase.scope}:\n * therefore this method is the same as the static version.\n */\n this.required = SchemaBuilder.required;\n /**\n * Define a schema for a {@link FieldKinds.sequence|sequence field}.\n * @remarks\n * Shorthand for passing `FieldKinds.sequence` to {@link FlexFieldSchema.create}.\n *\n * Since this creates a {@link FlexFieldSchema} (and not a {@link FlexTreeNodeSchema}), the resulting schema is structurally typed, and not impacted by the {@link SchemaBuilderBase.scope}:\n * therefore this method is the same as the static version.\n */\n this.sequence = SchemaBuilder.sequence;\n /**\n * Define a schema for a {@link FieldKinds.identifier|identifier field}.\n * @remarks\n * Shorthand for passing `FieldKinds.identifier` to {@link TreeFieldSchema.create}.\n *\n * Since this creates a {@link TreeFieldSchema} (and not a {@link FlexTreeNodeSchema}), the resulting schema is structurally typed, and not impacted by the {@link SchemaBuilderBase.scope}:\n * therefore this method is the same as the static version.\n */\n this.identifier = SchemaBuilder.identifier;\n }\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n objectRecursive(name, t) {\n return this.object(name, t);\n }\n}\n/**\n * Define a schema for an {@link FieldKinds.optional|optional field}.\n * @remarks\n * Shorthand for passing `FieldKinds.optional` to {@link FlexFieldSchema.create}.\n *\n * This method is also available as an instance method on {@link SchemaBuilder}.\n */\nSchemaBuilder.optional = fieldHelper(FieldKinds.optional);\n/**\n * Define a schema for a {@link FieldKinds.required|required field}.\n * @remarks\n * Shorthand for passing `FieldKinds.required` to {@link FlexFieldSchema.create}.\n *\n * This method is also available as an instance method on {@link SchemaBuilder}.\n */\nSchemaBuilder.required = fieldHelper(FieldKinds.required);\n/**\n * Define a schema for a {@link FieldKinds.sequence|sequence field}.\n * @remarks\n * Shorthand for passing `FieldKinds.sequence` to {@link FlexFieldSchema.create}.\n *\n * This method is also available as an instance method on {@link SchemaBuilder}\n */\nSchemaBuilder.sequence = fieldHelper(FieldKinds.sequence);\n/**\n * Define a schema for an {@link FieldKinds.identifier|identifier field}.\n * @remarks\n * Shorthand for passing `FieldKinds.identifier` to {@link TreeFieldSchema.create}.\n *\n * This method is also available as an instance method on {@link SchemaBuilder}\n */\nSchemaBuilder.identifier = fieldHelper(FieldKinds.identifier);\n/**\n * Returns a wrapper around SchemaBuilder.field for a specific FieldKind.\n */\nfunction fieldHelper(kind) {\n return (allowedTypes) => SchemaBuilder.field(kind, allowedTypes);\n}\n//# sourceMappingURL=schemaBuilder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n// Adding this unused import makes the generated d.ts file produced by TypeScript stop breaking API-Extractor's rollup generation.\n// Without this import, TypeScript generates inline `import(\"../..\")` statements in the d.ts file,\n// which API-Extractor leaves as is when generating the rollup, leaving them pointing at the wrong directory.\n// API-Extractor issue: https://github.com/microsoft/rushstack/issues/4507\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-imports\nimport { EmptyKey } from \"../../core/index.js\";\nimport { FieldKinds, FlexFieldSchema, SchemaBuilderInternal, } from \"../../feature-libraries/index.js\";\nimport { leaf } from \"../leafDomain.js\";\nconst builder = new SchemaBuilderInternal({\n scope: \"com.fluidframework.json\",\n libraries: [leaf.library],\n});\nconst jsonPrimitives = [...leaf.primitives, leaf.null];\n/**\n * Types allowed as roots of Json content.\n */\nexport const jsonRoot = [() => jsonObject, () => jsonArray, ...jsonPrimitives];\n{\n}\nexport const jsonObject = builder.mapRecursive(\"object\", FlexFieldSchema.createUnsafe(FieldKinds.optional, jsonRoot));\nexport const jsonArray = builder.objectRecursive(\"array\", {\n [EmptyKey]: FlexFieldSchema.createUnsafe(FieldKinds.sequence, jsonRoot),\n});\nexport const jsonSchema = builder.intoLibrary();\n//# sourceMappingURL=jsonDomainSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { EmptyKey, mapCursorField, mapCursorFields, } from \"../../core/index.js\";\nimport { stackTreeNodeCursor, TreeNodeSchemaBase, } from \"../../feature-libraries/index.js\";\nimport { brand, isReadonlyArray } from \"../../util/index.js\";\nimport { leaf } from \"../leafDomain.js\";\nimport { jsonArray, jsonObject } from \"./jsonDomainSchema.js\";\nimport { isFluidHandle } from \"@fluidframework/runtime-utils/internal\";\nconst adapter = {\n value: (node) => node !== null && typeof node === \"object\"\n ? undefined // arrays and objects have no defined value\n : node, // null, boolean, numbers, and strings are their own values\n type: (node) => {\n const type = typeof node;\n switch (type) {\n case \"number\":\n return leaf.number.name;\n case \"string\":\n return leaf.string.name;\n case \"boolean\":\n return leaf.boolean.name;\n default:\n if (node === null) {\n return leaf.null.name;\n }\n else if (isReadonlyArray(node)) {\n return jsonArray.name;\n }\n else {\n return jsonObject.name;\n }\n }\n },\n keysFromNode: (node) => {\n switch (typeof node) {\n case \"object\":\n if (node === null) {\n return [];\n }\n else if (isReadonlyArray(node)) {\n return node.length === 0 ? [] : [EmptyKey];\n }\n else {\n return Object.keys(node);\n }\n default:\n return [];\n }\n },\n getFieldFromNode: (node, key) => {\n // Object.prototype.hasOwnProperty can return true for strings (ex: with key \"0\"), so we have to filter them out.\n // Rather than just special casing strings, we can handle them with an early return for all primitives.\n if (typeof node !== \"object\") {\n return [];\n }\n if (node === null) {\n return [];\n }\n if (isReadonlyArray(node)) {\n return key === EmptyKey ? node : [];\n }\n if (Object.prototype.hasOwnProperty.call(node, key)) {\n const field = node[key];\n assert(field !== undefined, 0x41e /* explicit undefined fields should not be preserved in JSON */);\n return [field];\n }\n return [];\n },\n};\n/**\n * Used to read generic json compatible data as a tree in the JSON domain.\n * The returned tree will have a schema in the json domain as defined by {@link jsonRoot}.\n *\n * @returns an {@link ITreeCursorSynchronous} for a single {@link JsonCompatible}.\n */\nexport function singleJsonCursor(root) {\n return stackTreeNodeCursor(adapter, root);\n}\n/**\n * Extract a JS object tree from the contents of the given ITreeCursor.\n * Assumes that ITreeCursor contains only unaugmented JsonTypes.\n */\nexport function cursorToJsonObject(reader) {\n const type = reader.type;\n switch (type) {\n case leaf.number.name:\n case leaf.boolean.name:\n case leaf.string.name:\n assert(reader.value !== undefined, 0x84f /* out of schema: missing value */);\n assert(!isFluidHandle(reader.value), 0x850 /* out of schema: unexpected FluidHandle */);\n return reader.value;\n case jsonArray.name: {\n reader.enterField(EmptyKey);\n const result = mapCursorField(reader, cursorToJsonObject);\n reader.exitField();\n return result;\n }\n case jsonObject.name: {\n const result = {};\n mapCursorFields(reader, (cursor) => {\n const key = cursor.getFieldKey();\n assert(cursor.firstNode(), 0x420 /* expected non-empty field */);\n // like `result[key] = cursorToJsonObject(reader);` except safe when keyString == \"__proto__\".\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cursorToJsonObject(reader),\n });\n assert(!cursor.nextNode(), 0x421 /* expected exactly one node */);\n });\n return result;\n }\n default: {\n assert(type === leaf.null.name, 0x422 /* unexpected type */);\n return null;\n }\n }\n}\nconst typedJsonSymbol = Symbol(\"JSON Cursor Type\");\nfunction isObject(json) {\n if (typeof json === \"object\" && json !== null) {\n const typed = json;\n return typed[typedJsonSymbol] !== undefined;\n }\n return false;\n}\nconst typedAdapter = {\n value: (node) => {\n if (isFluidHandle(node)) {\n return node;\n }\n // TODO: Get rid of this cast by combining TypedJsonCompatible and JsonCompatible into a single cursor with flags to configure behavior.\n // This cast is necessary because TypedJsonCompatible can have Fluid handles underneath it, however, `adapter` only cares if `node` itself is a FluidHandle, which it is not.\n return adapter.value(node);\n },\n type: (node) => {\n if (isFluidHandle(node)) {\n return leaf.handle.name;\n }\n if (isObject(node)) {\n const type = node[typedJsonSymbol];\n return type instanceof TreeNodeSchemaBase ? type.name : brand(type);\n }\n return adapter.type(node);\n },\n keysFromNode: (node) => {\n if (isFluidHandle(node)) {\n return [];\n }\n return adapter.keysFromNode(node);\n },\n getFieldFromNode: (node, key) => {\n if (isFluidHandle(node)) {\n return [];\n }\n const field = adapter.getFieldFromNode(node, key);\n if (isReadonlyArray(field) && field.length === 1 && isReadonlyArray(field[0])) {\n // If the field is an array wrapping another array, then unbox to the inner array\n return field[0];\n }\n return field;\n },\n};\n/**\n * A variant of {@link singleJsonCursor} which allows types to be provided for nodes.\n *\n * @remarks Types are optional, but if present will be used to derive the type of the node when the cursor is read.\n *\n * This cursor differs from singleJsonCursor in that it inlines arrays, (arrays are not boxed into an \"array node\" but are directly interpreted as sequence fields).\n *\n * It also allows Fluid handles as input.\n *\n * @example\n * ```ts\n * const cursor = typedJsonCursor({\n * [typedJsonCursor.type]: Point,\n * x: 3,\n * y: 42\n * });\n * ```\n */\nconst singleTypedJsonCursor = function (root) {\n return stackTreeNodeCursor(typedAdapter, root);\n};\nsingleTypedJsonCursor.type = typedJsonSymbol;\nexport { singleTypedJsonCursor as typedJsonCursor };\n// #endregion TypedJsonCursor\n//# sourceMappingURL=jsonCursor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { leaf } from \"../domains/index.js\";\nimport { isFlexTreeNode, valueSchemaAllows, } from \"../feature-libraries/index.js\";\nimport { setFlexSchemaFromClassSchema, NodeKind, } from \"./core/index.js\";\n/**\n * Instances of this class are schema for leaf nodes.\n * @remarks\n * Unlike other schema, leaf schema are class instances instead of classes themselves.\n * This is because the instance type (the tree node type) for leaves are not objects,\n * so those instances can't be instances of a schema based class.\n * @privateRemarks\n * This class refers to the underlying flex tree schema in its constructor, so this class can't be included in the package API.\n */\nexport class LeafNodeSchema {\n create(data) {\n if (isFlexTreeNode(data)) {\n const value = data.value;\n assert(valueSchemaAllows(this.info, value), 0x916 /* invalid value */);\n return value;\n }\n return data;\n }\n constructor(schema) {\n this.kind = NodeKind.Leaf;\n this.implicitlyConstructable = true;\n setFlexSchemaFromClassSchema(this, schema);\n this.identifier = schema.name;\n this.info = schema.info;\n }\n}\n/**\n * Wrapper around LeafNodeSchema's constructor that provides the return type that is desired in the package public API.\n */\nfunction makeLeaf(schema) {\n return new LeafNodeSchema(schema);\n}\n// Leaf schema shared between all SchemaFactory instances.\nexport const stringSchema = makeLeaf(leaf.string);\nexport const numberSchema = makeLeaf(leaf.number);\nexport const booleanSchema = makeLeaf(leaf.boolean);\nexport const nullSchema = makeLeaf(leaf.null);\nexport const handleSchema = makeLeaf(leaf.handle);\n//# sourceMappingURL=leafNodeSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { NodeKind } from \"./core/index.js\";\nexport const ObjectNodeSchema = {\n // instanceof-based narrowing support for Javascript and TypeScript 5.3 or newer.\n [Symbol.hasInstance](value) {\n return isObjectNodeSchema(value);\n },\n};\nexport function isObjectNodeSchema(schema) {\n return schema.kind === NodeKind.Object;\n}\n//# sourceMappingURL=objectNodeTypes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { anchorSlot } from \"../core/index.js\";\nimport { ContextSlot, assertFlexTreeEntityNotFreed, flexTreeSlot, isMapTreeNode, } from \"../feature-libraries/index.js\";\nimport { fail } from \"../util/index.js\";\n// TODO: decide how to deal with dependencies on flex-tree implementation.\n// eslint-disable-next-line import/no-internal-modules\nimport { makeTree } from \"../feature-libraries/flex-tree/lazyNode.js\";\nimport { getKernel } from \"./core/index.js\";\n// This file contains various maps and helpers for supporting associating simple TreeNodes with their InnerNodes, and swapping those InnerNodes as part of hydration.\n// See ./ProxyBinding.md for a high-level overview of the process.\n/**\n * An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.\n * @remarks\n * For this to work, we have to require that there is at most a single view using a given AnchorSet.\n * FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.\n */\nconst proxySlot = anchorSlot();\n// The following records are maintained as WeakMaps, rather than a private symbol (e.g. like `targetSymbol`) on the TreeNode.\n// The map behaves essentially the same, except that performing a lookup in the map will not perform a property read/get on the key object (as is the case with a symbol).\n// Since `SharedTreeNodes` are proxies with non-trivial `get` traps, this choice is meant to prevent the confusion of the lookup passing through multiple objects\n// via the trap, or the trap not properly handling the special symbol, etc.\n/**\n * A reverse mapping of {@link proxySlot} that is updated at the same time.\n *\n * @remarks\n * Nodes in this map are hydrated (and thus \"marinated\" or \"cooked\").\n * Nodes not in this map are known to be {@link Unhydrated}.\n * Thus this map can be used to check if a node is hydrated.\n *\n * Any node not in this map must be in {@link proxyToMapTreeNode} since it contains all unhydrated nodes.\n * It also contains \"marinated\" nodes which are in both.\n */\nconst proxyToAnchorNode = new WeakMap();\n/**\n * Map {@link Unhydrated} nodes and \"marinated\" nodes to and from their underlying MapTreeNode.\n * These maps are populated by the TreeNode's constructor when called by a user before the node is inserted into the tree and queried.\n */\nconst proxyToMapTreeNode = new WeakMap();\n/**\n * {@inheritdoc proxyToMapTreeNode}\n */\nconst mapTreeNodeToProxy = new WeakMap();\n/**\n * Used by {@link anchorProxy} as an optimization to ensure that only one anchor is remembered at a time for a given anchor node\n */\nconst anchorForgetters = new WeakMap();\n/**\n * Creates an anchor node and associates it with the given proxy.\n * @privateRemarks\n * Use `forgetters` to cleanup the anchor allocated by this function once the anchor is no longer needed.\n * In practice, this happens when either the anchor node is destroyed, or another anchor to the same node is created by a new flex node.\n *\n * The FlexTreeNode holds a reference to the same anchor, and has a lifetime at least as long as the simple-tree,\n * so this would be unnecessary except for the case of \"marinated\" nodes, which have an anchor,\n * but might not have a FlexTreeNode.\n * Handling this case is an optimization assuming that this extra anchor reference is cheaper than eagerly creating FlexTreeNodes.\n */\nexport function anchorProxy(anchors, path, proxy) {\n assert(!anchorForgetters.has(proxy), 0x91c /* Proxy anchor should not be set twice */);\n const anchor = anchors.track(path);\n const anchorNode = anchors.locate(anchor) ?? fail(\"Expected anchor node to be present\");\n bindHydratedNodeToAnchor(proxy, anchorNode);\n const forget = () => {\n if (anchors.locate(anchor)) {\n anchors.forget(anchor);\n }\n anchorForgetters.delete(proxy);\n off();\n };\n anchorForgetters.set(proxy, forget);\n const off = anchorNode.on(\"afterDestroy\", forget);\n return anchorNode;\n}\nexport function getOrCreateInnerNode(treeNode, allowFreed = false) {\n const anchorNode = proxyToAnchorNode.get(treeNode);\n if (anchorNode !== undefined) {\n // The proxy is bound to an anchor node, but it may or may not have an actual flex node yet\n const flexNode = anchorNode.slots.get(flexTreeSlot);\n if (flexNode !== undefined) {\n return flexNode; // If it does have a flex node, return it...\n } // ...otherwise, the flex node must be created\n const context = anchorNode.anchorSet.slots.get(ContextSlot) ?? fail(\"missing context\");\n const cursor = context.checkout.forest.allocateCursor(\"getFlexNode\");\n context.checkout.forest.moveCursorToPath(anchorNode, cursor);\n const newFlexNode = makeTree(context, cursor);\n cursor.free();\n // Calling this is a performance improvement, however, do this only after demand to avoid momentarily having no anchors to anchorNode\n anchorForgetters?.get(treeNode)?.();\n if (!allowFreed) {\n assertFlexTreeEntityNotFreed(newFlexNode);\n }\n return newFlexNode;\n }\n // Unhydrated case\n return proxyToMapTreeNode.get(treeNode) ?? fail(\"Expected raw tree node for proxy\");\n}\n/**\n * Retrieves the InnerNode associated with the given target via {@link setInnerNode}, if any.\n * @remarks\n * If `target` is a unhydrated node, returns its MapTreeNode.\n * If `target` is a cooked node (or marinated but a FlexTreeNode exists) returns the FlexTreeNode.\n * If the target is not a node, or a marinated node with no FlexTreeNode for its anchor, returns undefined.\n */\nexport function tryGetInnerNode(target) {\n // Calling 'WeakMap.get()' with primitives (numbers, strings, etc.) will return undefined.\n // This is in contrast to 'WeakMap.set()', which will throw a TypeError if given a non-object key.\n const anchorNode = proxyToAnchorNode.get(target);\n // Hydrated node case\n if (anchorNode !== undefined) {\n const flex = anchorNode.slots.get(flexTreeSlot);\n if (flex !== undefined) {\n // Cooked, or possible Marinated but something else cased the flex tree node to exist.\n return flex;\n }\n // Marinated case\n assert(proxyToMapTreeNode.get(target) === undefined, 0xa05 /* marinated nodes should not have MapTreeNodes */);\n return undefined;\n }\n // Unhydrated node or not a node case:\n return proxyToMapTreeNode.get(target);\n}\n/**\n * Retrieves the proxy associated with the given flex node via {@link setInnerNode}, if any.\n */\nexport function tryGetCachedTreeNode(flexNode) {\n if (isMapTreeNode(flexNode)) {\n // Unhydrated case\n return mapTreeNodeToProxy.get(flexNode);\n }\n // Hydrated case\n return flexNode.anchorNode.slots.get(proxySlot);\n}\n/**\n * Associate the given TreeNode and the given flex node.\n * @returns The node.\n * @remarks\n * This creates a 1:1 mapping between the tree node and InnerNode.\n * Either can be retrieved from the other via {@link getOrCreateInnerNode}/{@link tryGetInnerNode} or {@link tryGetCachedTreeNode}.\n * If the given proxy is already mapped to an flex node, the existing mapping will be overwritten.\n * If the given flex node is already mapped to a different proxy, this function will fail.\n */\nexport function setInnerNode(node, innerNode) {\n const existingFlexNode = proxyToAnchorNode.get(node)?.slots.get(flexTreeSlot);\n assert(existingFlexNode === undefined, 0x91d /* Cannot associate a flex node with multiple targets */);\n if (isMapTreeNode(innerNode)) {\n // Unhydrated case\n proxyToMapTreeNode.set(node, innerNode);\n mapTreeNodeToProxy.set(innerNode, node);\n }\n else {\n // Hydrated case\n assert(tryGetCachedTreeNode(innerNode) === undefined, 0x7f5 /* Cannot associate an flex node with multiple targets */);\n bindHydratedNodeToAnchor(node, innerNode.anchorNode);\n }\n return node;\n}\n/**\n * Bi-directionally associates the given hydrated TreeNode to the given anchor node.\n * @remarks Cleans up mappings to {@link MapTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.\n */\nfunction bindHydratedNodeToAnchor(node, anchorNode) {\n // If the proxy currently has a raw node, forget it\n const mapTreeNode = proxyToMapTreeNode.get(node);\n if (mapTreeNode !== undefined) {\n proxyToMapTreeNode.delete(node);\n mapTreeNodeToProxy.delete(mapTreeNode);\n }\n // Once a proxy has been associated with an anchor node, it should never change to another anchor node\n assert(!proxyToAnchorNode.has(node), 0x91e /* Proxy has already been bound to a different anchor node */);\n proxyToAnchorNode.set(node, anchorNode);\n // However, it's fine for an anchor node to rotate through different proxies when the content at that place in the tree is replaced.\n anchorNode.slots.set(proxySlot, node);\n getKernel(node).hydrate(anchorNode);\n}\nexport function tryDisposeTreeNode(anchorNode) {\n const treeNode = anchorNode.slots.get(proxySlot);\n if (treeNode !== undefined) {\n const kernel = getKernel(treeNode);\n kernel.dispose();\n }\n}\n//# sourceMappingURL=proxyBinding.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { EmptyKey, } from \"../core/index.js\";\nimport { FieldKinds, tryGetMapTreeNode, isFlexTreeNode, } from \"../feature-libraries/index.js\";\nimport { fail, isReadonlyArray } from \"../util/index.js\";\nimport { anchorProxy, tryGetCachedTreeNode } from \"./proxyBinding.js\";\nimport { tryGetSimpleNodeSchema } from \"./core/index.js\";\n/**\n * Retrieve the associated {@link TreeNode} for the given field's content.\n */\nexport function getTreeNodeForField(field) {\n function tryToUnboxLeaves(flexField) {\n const maybeContent = flexField.content;\n return isFlexTreeNode(maybeContent)\n ? getOrCreateNodeFromFlexTreeNode(maybeContent)\n : maybeContent;\n }\n switch (field.schema.kind) {\n case FieldKinds.required: {\n const typedField = field;\n return tryToUnboxLeaves(typedField);\n }\n case FieldKinds.optional: {\n const typedField = field;\n return tryToUnboxLeaves(typedField);\n }\n case FieldKinds.identifier: {\n // Identifier fields are just value fields that hold strings\n return field\n .content;\n }\n default:\n fail(\"invalid field kind\");\n }\n}\nexport function getOrCreateNodeFromFlexTreeNode(flexNode) {\n const cachedProxy = tryGetCachedTreeNode(flexNode);\n if (cachedProxy !== undefined) {\n return cachedProxy;\n }\n const schema = flexNode.schema;\n const classSchema = tryGetSimpleNodeSchema(schema);\n assert(classSchema !== undefined, 0x91b /* node without schema */);\n if (typeof classSchema === \"function\") {\n const simpleSchema = classSchema;\n return new simpleSchema(flexNode);\n }\n else {\n return classSchema.create(flexNode);\n }\n}\n/**\n * Records any proxies in the given content tree and does the necessary bookkeeping to ensure they are synchronized with subsequent reads of the tree.\n * @remarks If the content tree contains any proxies, this function must be called just prior to inserting the content into the tree.\n * Specifically, no other content may be inserted into the tree between the invocation of this function and the insertion of `content`.\n * The insertion of `content` must occur or else this function will cause memory leaks.\n * @param content - the tree of content to be inserted, of which any of its object/map/array nodes might be a proxy\n * @param anchors - the {@link AnchorSet} for the tree\n * @returns The content after having all proxies replaced inline with plain javascript objects.\n * See {@link extractFactoryContent} for more details.\n */\nexport function prepareContentForHydration(content, forest) {\n if (isReadonlyArray(content)) {\n return prepareArrayContentForHydration(content, forest);\n }\n if (content !== undefined) {\n const proxies = {\n rootPath: { parent: undefined, parentField: EmptyKey, parentIndex: 0 },\n proxyPaths: [],\n };\n walkMapTree(content, proxies.rootPath, (p, proxy) => {\n proxies.proxyPaths.push({ path: p, proxy });\n });\n bindProxies([proxies], forest);\n }\n}\nfunction prepareArrayContentForHydration(content, forest) {\n const proxyPaths = [];\n for (const item of content) {\n const proxyPath = {\n rootPath: {\n parent: undefined,\n parentField: EmptyKey,\n parentIndex: 0,\n },\n proxyPaths: [],\n };\n proxyPaths.push(proxyPath);\n walkMapTree(item, proxyPath.rootPath, (p, proxy) => {\n proxyPath.proxyPaths.push({ path: p, proxy });\n });\n }\n bindProxies(proxyPaths, forest);\n}\nfunction walkMapTree(mapTree, path, onVisitTreeNode) {\n if (tryGetMapTreeNode(mapTree)?.parentField.parent.parent !== undefined) {\n throw new UsageError(\"Attempted to insert a node which is already under a parent. If this is desired, remove the node from its parent before inserting it elsewhere.\");\n }\n const nexts = [];\n for (let next = [path, mapTree]; next !== undefined; next = nexts.pop()) {\n const [p, m] = next;\n const mapTreeNode = tryGetMapTreeNode(m);\n if (mapTreeNode !== undefined) {\n const treeNode = tryGetCachedTreeNode(mapTreeNode);\n if (treeNode !== undefined) {\n onVisitTreeNode(p, treeNode);\n }\n }\n for (const [key, field] of m.fields) {\n for (const [i, child] of field.entries()) {\n nexts.push([\n {\n parent: p,\n parentField: key,\n parentIndex: i,\n },\n child,\n ]);\n }\n }\n }\n}\nfunction bindProxies(proxies, forest) {\n // Only subscribe to the event if there is at least one proxy tree to hydrate - this is not the case when inserting an empty array [].\n if (proxies.length > 0) {\n // Creating a new array emits one event per element in the array, so listen to the event once for each element\n let i = 0;\n const off = forest.on(\"afterRootFieldCreated\", (fieldKey) => {\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n proxies[i].rootPath.parentField = fieldKey;\n // Non null asserting here because of the length check above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const { path, proxy } of proxies[i].proxyPaths) {\n anchorProxy(forest.anchors, path, proxy);\n }\n if (++i === proxies.length) {\n off();\n }\n });\n }\n}\n//# sourceMappingURL=proxies.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { isFluidHandle } from \"@fluidframework/runtime-utils/internal\";\nimport { EmptyKey, } from \"../core/index.js\";\nimport { isTreeValue, valueSchemaAllows, isMapTreeNode, } from \"../feature-libraries/index.js\";\nimport { brand, fail, isReadonlyArray, find } from \"../util/index.js\";\nimport { nullSchema } from \"./leafNodeSchema.js\";\nimport { normalizeAllowedTypes, extractFieldProvider, isConstant, normalizeFieldSchema, FieldKind, } from \"./schemaTypes.js\";\nimport { NodeKind, tryGetSimpleNodeSchema } from \"./core/index.js\";\nimport { isNodeInSchema } from \"../feature-libraries/index.js\";\nimport { tryGetInnerNode } from \"./proxyBinding.js\";\nimport { isObjectNodeSchema } from \"./objectNodeTypes.js\";\nexport function mapTreeFromNodeData(data, allowedTypes, context, schemaValidationPolicy) {\n const normalizedFieldSchema = normalizeFieldSchema(allowedTypes);\n if (data === undefined) {\n // TODO: this code-path should support defaults\n if (normalizedFieldSchema.kind !== FieldKind.Optional) {\n throw new UsageError(\"Got undefined for non-optional field.\");\n }\n return undefined;\n }\n const mapTree = nodeDataToMapTree(data, normalizedFieldSchema.allowedTypeSet);\n // Add what defaults can be provided. If no `context` is providing, some defaults may still be missing.\n addDefaultsToMapTree(mapTree, normalizedFieldSchema.allowedTypes, context);\n // TODO:\n // Since some defaults may still be missing, this can give false positives when context is undefined but schemaValidationPolicy is provided.\n if (schemaValidationPolicy?.policy.validateSchema === true) {\n const maybeError = isNodeInSchema(mapTree, schemaValidationPolicy);\n inSchemaOrThrow(maybeError);\n }\n return mapTree;\n}\n/**\n * Copy content from `data` into a MapTree.\n * Does NOT generate and default values for fields.\n * Often throws UsageErrors for invalid data, but may miss some cases.\n * @remarks\n * Output is likely out of schema even for valid input due to missing defaults.\n */\nfunction nodeDataToMapTree(data, allowedTypes) {\n // A special cache path for processing unhydrated nodes.\n // They already have the mapTree, so there is no need to recompute it.\n const flexNode = tryGetInnerNode(data);\n if (flexNode !== undefined) {\n if (isMapTreeNode(flexNode)) {\n if (!allowedTypes.has(tryGetSimpleNodeSchema(flexNode.schema) ?? fail(\"missing schema\"))) {\n throw new UsageError(\"Invalid schema for this context.\");\n }\n // TODO: mapTreeFromNodeData modifies the trees it gets to add defaults.\n // Using a cached value here can result in this tree having defaults applied to it more than once.\n // This is unnecessary and inefficient, but should be a no-op if all calls provide the same context (which they might not).\n // A cleaner design (avoiding this cast) might be to apply defaults eagerly if they don't need a context, and lazily (when hydrating) if they do.\n // This could avoid having to mutate the map tree to apply defaults, removing the need for this cast.\n return flexNode.mapTree;\n }\n else {\n // The node is already hydrated, meaning that it already got inserted into the tree previously\n throw new UsageError(\"A node may not be inserted into the tree more than once\");\n }\n }\n const schema = getType(data, allowedTypes);\n let result;\n switch (schema.kind) {\n case NodeKind.Leaf:\n result = leafToMapTree(data, schema, allowedTypes);\n break;\n case NodeKind.Array:\n result = arrayToMapTree(data, schema);\n break;\n case NodeKind.Map:\n result = mapToMapTree(data, schema);\n break;\n case NodeKind.Object:\n result = objectToMapTree(data, schema);\n break;\n default:\n fail(`Unrecognized schema kind: ${schema.kind}.`);\n }\n return result;\n}\n/**\n * Throws a UsageError if maybeError indicates a tree is out of schema.\n */\nexport function inSchemaOrThrow(maybeError) {\n if (maybeError !== 0 /* SchemaValidationErrors.NoError */) {\n throw new UsageError(\"Tree does not conform to schema.\");\n }\n}\n/**\n * Transforms data under a Leaf schema.\n * @param data - The tree data to be transformed. Must be a {@link TreeValue}.\n * @param schema - The schema associated with the value.\n * @param allowedTypes - The allowed types specified by the parent.\n * Used to determine which fallback values may be appropriate.\n */\nfunction leafToMapTree(data, schema, allowedTypes) {\n assert(schema.kind === NodeKind.Leaf, 0x921 /* Expected a leaf schema. */);\n if (!isTreeValue(data)) {\n // This rule exists to protect against useless `toString` output like `[object Object]`.\n // In this case, that's actually reasonable behavior, since object input is not compatible with Leaf schemas.\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n throw new UsageError(`Input data is incompatible with leaf schema: ${data}`);\n }\n const mappedValue = mapValueWithFallbacks(data, allowedTypes);\n const mappedSchema = getType(mappedValue, allowedTypes);\n assert(allowsValue(mappedSchema, mappedValue), 0x84a /* Unsupported schema for provided primitive. */);\n return {\n value: mappedValue,\n type: brand(mappedSchema.identifier),\n fields: new Map(),\n };\n}\n/**\n * Checks an incoming {@link TreeLeafValue} to ensure it is compatible with its requirements.\n * For unsupported values with a schema-compatible replacement, return the replacement value.\n * For unsupported values without a schema-compatible replacement, throw.\n * For supported values, return the input.\n */\nfunction mapValueWithFallbacks(value, allowedTypes) {\n switch (typeof value) {\n case \"number\": {\n if (Object.is(value, -0)) {\n // Our serialized data format does not support -0.\n // Map such input to +0.\n return 0;\n }\n else if (Number.isNaN(value) || !Number.isFinite(value)) {\n // Our serialized data format does not support NaN nor +/-∞.\n // If the schema supports `null`, fall back to that. Otherwise, throw.\n // This is intended to match JSON's behavior for such values.\n if (allowedTypes.has(nullSchema)) {\n return null;\n }\n else {\n throw new TypeError(`Received unsupported numeric value: ${value}.`);\n }\n }\n else {\n return value;\n }\n }\n case \"string\":\n // TODO:\n // This should detect invalid strings. Something like @stdlib/regexp-utf16-unpaired-surrogate could be used to do this.\n // See SchemaFactory.string for details.\n case \"boolean\":\n return value;\n case \"object\": {\n if (value === null || isFluidHandle(value)) {\n return value;\n }\n }\n default:\n throw new TypeError(`Received unsupported leaf value: ${value}.`);\n }\n}\n/**\n * Transforms data under an Array schema.\n * @param data - The tree data to be transformed.\n * @param allowedTypes - The set of types allowed by the parent context. Used to validate the input tree.\n */\nfunction arrayChildToMapTree(child, allowedTypes) {\n // We do not support undefined sequence entries.\n // If we encounter an undefined entry, use null instead if supported by the schema, otherwise throw.\n let childWithFallback = child;\n if (child === undefined) {\n if (allowedTypes.has(nullSchema)) {\n childWithFallback = null;\n }\n else {\n throw new TypeError(`Received unsupported array entry value: ${child}.`);\n }\n }\n return nodeDataToMapTree(childWithFallback, allowedTypes);\n}\n/**\n * Transforms data under an Array schema.\n * @param data - The tree data to be transformed. Must be an iterable.\n * @param schema - The schema associated with the value.\n * @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema\n * validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will\n * be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.\n */\nfunction arrayToMapTree(data, schema) {\n assert(schema.kind === NodeKind.Array, 0x922 /* Expected an array schema. */);\n if (!(typeof data === \"object\" && data !== null && Symbol.iterator in data)) {\n throw new UsageError(`Input data is incompatible with Array schema: ${data}`);\n }\n const allowedChildTypes = normalizeAllowedTypes(schema.info);\n const mappedData = Array.from(data, (child) => arrayChildToMapTree(child, allowedChildTypes));\n // Array nodes have a single `EmptyKey` field:\n const fieldsEntries = mappedData.length === 0 ? [] : [[EmptyKey, mappedData]];\n return {\n type: brand(schema.identifier),\n fields: new Map(fieldsEntries),\n };\n}\n/**\n * Transforms data under a Map schema.\n * @param data - The tree data to be transformed. Must be an iterable.\n * @param schema - The schema associated with the value.\n * @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema\n * validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will\n * be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.\n */\nfunction mapToMapTree(data, schema) {\n assert(schema.kind === NodeKind.Map, 0x923 /* Expected a Map schema. */);\n if (!(typeof data === \"object\" && data !== null)) {\n throw new UsageError(`Input data is incompatible with Map schema: ${data}`);\n }\n const allowedChildTypes = normalizeAllowedTypes(schema.info);\n const fieldsIterator = (Symbol.iterator in data\n ? // Support iterables of key value pairs (including Map objects)\n data\n : // Support record objects for JSON style Map data\n Object.entries(data));\n const transformedFields = new Map();\n for (const item of fieldsIterator) {\n if (!isReadonlyArray(item) || item.length !== 2 || typeof item[0] !== \"string\") {\n throw new UsageError(`Input data is incompatible with map entry: ${item}`);\n }\n const [key, value] = item;\n assert(!transformedFields.has(brand(key)), 0x84c /* Keys should not be duplicated */);\n // Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted\n if (value !== undefined) {\n const mappedField = nodeDataToMapTree(value, allowedChildTypes);\n transformedFields.set(brand(key), [mappedField]);\n }\n }\n return {\n type: brand(schema.identifier),\n fields: transformedFields,\n };\n}\n/**\n * Transforms data under an Object schema.\n * @param data - The tree data to be transformed. Must be a Record-like object.\n * @param schema - The schema associated with the value.\n */\nfunction objectToMapTree(data, schema) {\n assert(isObjectNodeSchema(schema), 0x924 /* Expected an Object schema. */);\n if (typeof data !== \"object\" || data === null) {\n throw new UsageError(`Input data is incompatible with Object schema: ${data}`);\n }\n const fields = new Map();\n // Loop through field keys without data.\n // This does NOT apply defaults.\n for (const [key, fieldInfo] of schema.flexKeyMap) {\n if (Object.hasOwnProperty.call(data, key)) {\n const value = data[key];\n setFieldValue(fields, value, fieldInfo.schema, fieldInfo.storedKey);\n }\n }\n return {\n type: brand(schema.identifier),\n fields,\n };\n}\nfunction setFieldValue(fields, fieldValue, fieldSchema, flexKey) {\n if (fieldValue !== undefined) {\n const mappedChildTree = nodeDataToMapTree(fieldValue, fieldSchema.allowedTypeSet);\n assert(!fields.has(flexKey), 0x956 /* Keys must not be duplicated */);\n fields.set(flexKey, [mappedChildTree]);\n }\n}\nfunction getType(data, allowedTypes) {\n const possibleTypes = getPossibleTypes(allowedTypes, data);\n if (possibleTypes.length === 0) {\n throw new UsageError(`The provided data is incompatible with all of the types allowed by the schema. The set of allowed types is: ${JSON.stringify([...allowedTypes].map((schema) => schema.identifier))}.`);\n }\n assert(possibleTypes.length !== 0, 0x84e /* data is incompatible with all types allowed by the schema */);\n if (possibleTypes.length !== 1) {\n throw new UsageError(`The provided data is compatible with more than one type allowed by the schema.\nThe set of possible types is ${JSON.stringify([\n ...possibleTypes.map((schema) => schema.identifier),\n ])}.\nExplicitly construct an unhydrated node of the desired type to disambiguate.\nFor class-based schema, this can be done by replacing an expression like \"{foo: 1}\" with \"new MySchema({foo: 1})\".`);\n }\n return possibleTypes[0] ?? oob();\n}\n/**\n * @returns all types for which the data is schema-compatible.\n */\nexport function getPossibleTypes(allowedTypes, data) {\n let best = CompatibilityLevel.None;\n const possibleTypes = [];\n for (const schema of allowedTypes) {\n const level = shallowCompatibilityTest(schema, data);\n if (level > best) {\n possibleTypes.length = 0;\n best = level;\n }\n if (best === level) {\n possibleTypes.push(schema);\n }\n }\n return best === CompatibilityLevel.None ? [] : possibleTypes;\n}\n/**\n * Indicates a compatibility level for inferring a schema to apply to insertable data.\n * @remarks\n * Only the highest compatibility options are used.\n * This approach allows adding new possible matching at a new lower compatibility level as a non breaking change,\n * since that way they can't make a case that was compatible before ambiguous now.\n */\nvar CompatibilityLevel;\n(function (CompatibilityLevel) {\n /**\n * Not compatible. Constructor typing indicates incompatibility.\n */\n CompatibilityLevel[CompatibilityLevel[\"None\"] = 0] = \"None\";\n /**\n * Additional compatibility cases added in Fluid Framework 2.2.\n */\n CompatibilityLevel[CompatibilityLevel[\"Low\"] = 1] = \"Low\";\n /**\n * Compatible in Fluid Framework 2.0.\n */\n CompatibilityLevel[CompatibilityLevel[\"Normal\"] = 2] = \"Normal\";\n})(CompatibilityLevel || (CompatibilityLevel = {}));\n/**\n * Checks if data might be schema-compatible.\n *\n * @returns false if `data` is incompatible with `type` based on a cheap/shallow check.\n *\n * Note that this may return true for cases where data is incompatible, but it must not return false in cases where the data is compatible.\n */\nfunction shallowCompatibilityTest(schema, data) {\n assert(data !== undefined, 0x889 /* undefined cannot be used as contextually typed data. Use ContextuallyTypedFieldData. */);\n if (isTreeValue(data)) {\n return allowsValue(schema, data) ? CompatibilityLevel.Normal : CompatibilityLevel.None;\n }\n if (schema.kind === NodeKind.Leaf) {\n return CompatibilityLevel.None;\n }\n // Typing (of schema based constructors and thus implicit node construction)\n // allows iterables for constructing maps and arrays.\n // Some users of this API may have unions of maps and arrays,\n // and rely on Arrays ending up as array nodes and maps as Map nodes,\n // despite both being iterable and thus compatible with both.\n // This uses a priority based system where an array would be parsed as an array when unioned with a map,\n // but if in a map only context, could still be used as a map.\n if (data instanceof Map) {\n switch (schema.kind) {\n case NodeKind.Map:\n return CompatibilityLevel.Normal;\n case NodeKind.Array:\n // Maps are iterable, so type checking does allow constructing an ArrayNode from a map if the array's type is an array that includes the key and value types of the map.\n return CompatibilityLevel.Low;\n default:\n return CompatibilityLevel.None;\n }\n }\n if (isReadonlyArray(data)) {\n switch (schema.kind) {\n case NodeKind.Array:\n return CompatibilityLevel.Normal;\n case NodeKind.Map:\n // Arrays are iterable, so type checking does allow constructing an array from a MapNode from an if the array's type is key values pairs for the map.\n return CompatibilityLevel.Low;\n default:\n return CompatibilityLevel.None;\n }\n }\n const mapOrArray = schema.kind === NodeKind.Array || schema.kind === NodeKind.Map;\n if (Symbol.iterator in data) {\n return mapOrArray ? CompatibilityLevel.Normal : CompatibilityLevel.None;\n }\n // At this point, it is assumed data is a record-like object since all the other cases have been eliminated.\n if (schema.kind === NodeKind.Array) {\n return CompatibilityLevel.None;\n }\n if (schema.kind === NodeKind.Map) {\n // When not unioned with an ObjectNode, allow objects to be used to create maps.\n return CompatibilityLevel.Low;\n }\n assert(isObjectNodeSchema(schema), 0x9e6 /* unexpected schema kind */);\n // TODO: Improve type inference by making this logic more thorough. Handle at least:\n // * Types which are strict subsets of other types in the same polymorphic union\n // * Types which have the same keys but different types for those keys in the polymorphic union\n // * Types which have the same required fields but different optional fields and enough of those optional fields are populated to disambiguate\n // TODO#7441: Consider allowing data to be inserted which has keys that are extraneous/unknown to the schema (those keys are ignored)\n // If the schema has a required key which is not present in the input object, reject it.\n for (const [fieldKey, fieldSchema] of schema.fields) {\n if (data[fieldKey] === undefined && fieldSchema.requiresValue) {\n return CompatibilityLevel.None;\n }\n }\n return CompatibilityLevel.Normal;\n}\nfunction allowsValue(schema, value) {\n if (schema.kind === NodeKind.Leaf) {\n return valueSchemaAllows(schema.info, value);\n }\n return false;\n}\n/**\n * Walk the given {@link ExclusiveMapTree} and deeply provide any field defaults for fields that are missing in the tree but present in the schema.\n * @param mapTree - The tree to populate with defaults. This is borrowed: no references to it are kept by this function.\n * @param allowedTypes - Some {@link TreeNodeSchema}, at least one of which the input tree must conform to\n * @param context - An optional context for generating defaults.\n * If present, all applicable defaults will be provided.\n * If absent, only defaults produced by a {@link ConstantFieldProvider} will be provided, and defaults produced by a {@link ContextualFieldProvider} will be ignored.\n * @remarks This function mutates the input tree by deeply adding new fields to the field maps where applicable.\n */\nexport function addDefaultsToMapTree(mapTree, allowedTypes, context) {\n const schema = find(normalizeAllowedTypes(allowedTypes), (s) => s.identifier === mapTree.type) ??\n fail(\"MapTree is incompatible with schema\");\n if (isObjectNodeSchema(schema)) {\n for (const [_key, fieldInfo] of schema.flexKeyMap) {\n const field = mapTree.fields.get(fieldInfo.storedKey);\n if (field !== undefined) {\n for (const child of field) {\n addDefaultsToMapTree(child, fieldInfo.schema.allowedTypes, context);\n }\n }\n else {\n const defaultProvider = fieldInfo.schema.props?.defaultProvider;\n if (defaultProvider !== undefined) {\n const fieldProvider = extractFieldProvider(defaultProvider);\n const data = provideDefault(fieldProvider, context);\n if (data !== undefined) {\n setFieldValue(mapTree.fields, data, fieldInfo.schema, fieldInfo.storedKey);\n // call addDefaultsToMapTree on newly inserted default values\n for (const child of mapTree.fields.get(fieldInfo.storedKey) ??\n fail(\"Expected field to be populated\")) {\n addDefaultsToMapTree(child, fieldInfo.schema.allowedTypes, context);\n }\n }\n }\n }\n }\n return;\n }\n switch (schema.kind) {\n case NodeKind.Array:\n case NodeKind.Map:\n {\n for (const field of mapTree.fields.values()) {\n for (const child of field) {\n addDefaultsToMapTree(child, schema.info, context);\n }\n }\n }\n break;\n default:\n assert(schema.kind === NodeKind.Leaf, 0x989 /* Unrecognized schema kind */);\n break;\n }\n}\n/**\n * Provides the default value (which can be undefined, for example with optional fields), or undefined if a context is required but not provided.\n * @privateRemarks\n * It is a bit concerning that there is no way for the caller to know when undefined is returned if that is the default value, or a context was required.\n * TODO: maybe better formalize the two stage defaulting (without then with context), or rework this design we only do one stage.\n */\nfunction provideDefault(fieldProvider, context) {\n if (context !== undefined) {\n return fieldProvider(context);\n }\n else {\n if (isConstant(fieldProvider)) {\n return fieldProvider();\n }\n else {\n // Leaving field empty despite it needing a default value since a context was required and non was provided.\n // Caller better handle this case by providing the default at some other point in time when the context becomes known.\n }\n }\n}\n//# sourceMappingURL=toMapTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _a;\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { NodeKind, tryGetSimpleNodeSchema, isTreeNode, TreeNodeKernel, privateToken, TreeNode, } from \"./core/index.js\";\nimport { isFlexTreeNode, markEager, } from \"../feature-libraries/index.js\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { fail } from \"../util/index.js\";\nimport { getFlexSchema } from \"./toFlexSchema.js\";\nimport { getOrCreateInnerNode, setInnerNode } from \"./proxyBinding.js\";\n/**\n * Class which all {@link TreeNode}s must extend.\n * Since this is not exported, it allows robust detection of attempts to create TreeNodes which do not go through SchemaFactory which is the only place which exposes classes that extend this.\n *\n * This has static members which schema classes can override to provide schema specific functionality.\n * These static members are only intended to be used / overridden by code within this package, and are used by the various node kinds.\n * Access to these static members has to be done via `this.constructor.staticMember` to support the overrides, and thus can only be used in the constructor, after the base constructor has been invoked.\n */\nexport class TreeNodeValid extends TreeNode {\n /**\n * Schema classes can override this to control what happens at the end of the constructor.\n * The return value from this is returned from the constructor, allowing substituting a proxy if desired.\n *\n * This is not simply done in the derived constructor to enable:\n * - this class to access the value which is being returned before it's returned from the constructor.\n * - the derived class to be provided the input `FlexTreeNode` without relying on a field on the node to hold it.\n */\n static prepareInstance(instance, input) {\n return instance;\n }\n /**\n * Schema classes must override to provide an implementation of RawTreeNode construction.\n */\n static buildRawNode(instance, input) {\n return fail(\"Schema must override buildRawNode\");\n }\n /**\n * Schema classes can override to provide a callback that is called once when the first node is constructed.\n * This is a good place to perform extra validation and cache schema derived data needed for the implementation of the node.\n */\n static oneTimeSetup() { }\n /**\n * Indicate that `this` is the most derived version of a schema, and thus the only one allowed to be used (other than by being subclassed a single time).\n */\n static markMostDerived() {\n assert(this.constructorCached !== \"default\", 0x95f /* invalid schema class */);\n if (this.constructorCached === undefined) {\n // Set the constructorCached on the layer of the prototype chain that declared it.\n // This is necessary to ensure there is only one subclass of that type used:\n // if constructorCached was simply set on `schema`,\n // then a base classes between `schema` (exclusive) and where `constructorCached` is set (inclusive) and other subclasses of them\n // would not see the stored `constructorCached`, and the validation above against multiple derived classes would not work.\n // This is not just an alias of `this`, but a reference to the item in the prototype chain being walked, which happens to start at `this`.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let schemaBase = this;\n while (!Object.prototype.hasOwnProperty.call(schemaBase, \"constructorCached\")) {\n schemaBase = Reflect.getPrototypeOf(schemaBase);\n }\n assert(schemaBase.constructorCached === undefined, 0x962 /* overwriting wrong cache */);\n schemaBase.constructorCached = { constructor: this, oneTimeInitialized: false };\n assert(this.constructorCached === schemaBase.constructorCached, 0x9b5 /* Inheritance should work */);\n return this.constructorCached;\n }\n else if (this.constructorCached.constructor === this) {\n return this.constructorCached;\n }\n throw new UsageError(`Two schema classes were used (${this.name} and ${this.constructorCached.constructor.name}) which derived from the same SchemaFactory generated class (${JSON.stringify(this.identifier)}). This is invalid.`);\n }\n constructor(input) {\n super(privateToken);\n const schema = this.constructor;\n const cache = schema.markMostDerived();\n if (!cache.oneTimeInitialized) {\n const flexSchema = getFlexSchema(schema);\n assert(tryGetSimpleNodeSchema(flexSchema) === schema, 0x961 /* Schema class not properly configured */);\n schema.oneTimeSetup();\n cache.oneTimeInitialized = true;\n }\n if (isTreeNode(input)) {\n // TODO: update this once we have better support for deep-copying and move operations.\n throw new UsageError(\"Existing nodes may not be used as the constructor parameter for a new node. The existing node may be used directly instead of creating a new one, used as a child of the new node (if it has not yet been inserted into the tree). If the desired result is copying the provided node, it must be deep copied (since any child node would be parented under both the new and old nodes). Currently no API is provided to make deep copies, but it can be done manually with object spreads - for example `new Foo({...oldFoo})` will work if all fields of `oldFoo` are leaf nodes.\");\n }\n const node = isFlexTreeNode(input)\n ? input\n : schema.buildRawNode(this, input);\n assert(tryGetSimpleNodeSchema(node.schema) === schema, 0x83b /* building node with wrong schema */);\n const result = schema.prepareInstance(this, node);\n new TreeNodeKernel(result, schema);\n setInnerNode(result, node);\n return result;\n }\n}\n/**\n * The most derived constructor (the one invoked with the `new` operator, not a parent class constructor invoked with as `super`) used to construct an instance of this type.\n * @remarks\n * Captured when an instance is constructed.\n *\n * Used to ensure that some derived class (which must override this member, defaulting it to `undefined`) is only instantiated with a single \"most derived\" class (the constructor actually invoked the the user with `new`).\n *\n * Typically this is override in the class that statically implements {@link TreeNodeSchema} to enforce that all nodes using that schema use the same class and not different subclasses of it.\n *\n * Also used to detect if oneTimeSetup has run.\n *\n * @privateRemarks\n * This defaults to \"default\", which is used to trigger an error if not overridden in the derived class.\n *\n * The value of this on TreeNodeValid must only be overridden by base classes and never modified.\n * Ways to enforce this immutability prevent it from being overridden,\n * so code modifying constructorCached should be extra careful to avoid accidentally modifying the base/inherited value.\n */\nTreeNodeValid.constructorCached = \"default\";\n// Class objects are functions (callable), so we need a strong way to distinguish between `schema` and `() => schema` when used as a `LazyItem`.\nmarkEager(TreeNodeValid);\n// #region NodeJS custom inspect for TreeNodes.\n/**\n * Used to customize \"inspect\" behavior in NodeJS.\n * See https://nodejs.org/api/util.html#utilinspectcustom for details.\n *\n * VS-Code's debugger also uses this to inspect objects,\n * see https://github.com/microsoft/vscode-js-debug/blob/64df2686c92bac402909dee5c3c389bbb7a81f6d/src/adapter/templates/getStringyProps.ts#L11 for details.\n */\nconst customInspectSymbol = Symbol.for(\"nodejs.util.inspect.custom\");\n/**\n * Node inspecting function for use with {@link customInspectSymbol}.\n */\nfunction inspectNodeFunction(depth, options, inspect) {\n // TODO: replicated from tryGetSchema to avoid cycle.\n // This case could be optimized, for example by placing the simple schema in a symbol on tree nodes.\n const schema = tryGetSimpleNodeSchema(getOrCreateInnerNode(this).schema);\n const title = `${schema.name}: ${NodeKind[schema.kind]} Node (${schema.identifier})`;\n if (depth < 2) {\n const short = shortContent(this);\n if (short !== undefined) {\n return `${title} ${short}`;\n }\n return title;\n }\n const content = `${title} ${JSON.stringify(this)}`;\n return content;\n}\n/**\n * If the node has no items, a short JSON string for it.\n */\nfunction shortContent(node) {\n if (Object.values(node).length === 0) {\n return JSON.stringify(node);\n }\n return undefined;\n}\n/**\n * Add inherited non-enumerable symbol for NodeJS inspection to all nodes.\n *\n * See {@link customInspectSymbol}.\n */\nObject.defineProperty(TreeNodeValid.prototype, customInspectSymbol, {\n value: inspectNodeFunction,\n enumerable: false,\n});\n// #endregion\n// #region Browser custom debug format for TreeNodes\n// This section has side-effects, so including it in this file ensures its loaded whenever TreeNodes could exist.\n// Supported in at least Chrome and FireFox, more details at https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html\n// For this to work the browser's dev tools generally have to \"Enable custom formatters\".\n// This formatter is inspired by https://github.com/andrewdavey/immutable-devtools/blob/master/src/createFormatters.js which provides a similar formatter for the immutable.js library.\nconst globals = typeof window === \"undefined\" ? globalThis : window;\nconst formatters = ((_a = globals).devtoolsFormatters ?? (_a.devtoolsFormatters = []));\nconst nodeFormatter = {\n header(object, config) {\n if (isTreeNode(object)) {\n return [\"span\", `${inspectNodeFunction.call(object, 1)}`];\n }\n return null;\n },\n body(object, config) {\n const children = [];\n for (const [key, value] of Object.entries(object)) {\n children.push([\"li\", [\"span\", `${key}: `], formattedReference(value)]);\n }\n // TODO:\n // for array nodes, this isn't great since (at least in FireFox) the list items show up with a prefixed number starting from 1.\n // This looks messy when followed by the array index.\n // Find a way to hide the list index.\n // { style: 'list-style-type: none` } did not seem to work.\n return [\"ol\", ...children];\n },\n hasBody(object, config) {\n return shortContent(object) === undefined;\n },\n};\nfunction formattedReference(object, config) {\n if (typeof object === \"undefined\") {\n return [\"span\", \"undefined\"];\n }\n else if (object === \"null\") {\n return [\"span\", \"null\"];\n }\n return [\"object\", { object, config }];\n}\nformatters.push(nodeFormatter);\n//# sourceMappingURL=treeNodeValid.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _CustomArrayNodeBase_instances, _CustomArrayNodeBase_generationNumber, _CustomArrayNodeBase_mapTreesFromFieldData;\nimport { oob } from \"@fluidframework/core-utils/internal\";\nimport { EmptyKey } from \"../core/index.js\";\nimport { getOrCreateMapTreeNode, getSchemaAndPolicy, isFlexTreeNode, isMapTreeSequenceField, } from \"../feature-libraries/index.js\";\nimport { getOrCreateNodeFromFlexTreeNode, prepareContentForHydration, } from \"./proxies.js\";\nimport { getOrCreateInnerNode } from \"./proxyBinding.js\";\nimport { \n// eslint-disable-next-line import/no-deprecated\ntypeNameSymbol, NodeKind, typeSchemaSymbol, } from \"./core/index.js\";\nimport { mapTreeFromNodeData } from \"./toMapTree.js\";\nimport { fail } from \"../util/index.js\";\nimport { getFlexSchema } from \"./toFlexSchema.js\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { getKernel } from \"./core/index.js\";\nimport { TreeNodeValid } from \"./treeNodeValid.js\";\n/**\n * A {@link TreeNode} which implements 'readonly T[]' and the array mutation APIs.\n * @public\n */\nexport const TreeArrayNode = {\n /**\n * Wrap an iterable of items to inserted as consecutive items in a array.\n * @remarks\n * The object returned by this function can be inserted into a {@link (TreeArrayNode:interface)}.\n * Its contents will be inserted consecutively in the corresponding location in the array.\n * @example\n * ```ts\n * array.insertAtEnd(TreeArrayNode.spread(iterable))\n * ```\n */\n spread: (content) => create(content),\n};\n/**\n * Package internal construction API.\n * Use {@link (TreeArrayNode:variable).spread} to create an instance of this type instead.\n */\nlet create;\n/**\n * Used to insert iterable content into a {@link (TreeArrayNode:interface)}.\n * Use {@link (TreeArrayNode:variable).spread} to create an instance of this type.\n * @sealed @public\n */\nexport class IterableTreeArrayContent {\n constructor(content) {\n this.content = content;\n }\n /**\n * Iterates over content for nodes to insert.\n */\n [Symbol.iterator]() {\n return this.content[Symbol.iterator]();\n }\n}\n(() => {\n create = (content) => new IterableTreeArrayContent(content);\n})();\n/**\n * Given a array node proxy, returns its underlying LazySequence field.\n */\nfunction getSequenceField(arrayNode) {\n return getOrCreateInnerNode(arrayNode).getBoxed(EmptyKey);\n}\n// For compatibility, we are initially implement 'readonly T[]' by applying the Array.prototype methods\n// to the array node proxy. Over time, we should replace these with efficient implementations on LazySequence\n// to avoid re-entering the proxy as these methods access 'length' and the indexed properties.\n//\n// For brevity, the current implementation dynamically builds a property descriptor map from a list of\n// Array functions we want to re-expose via the proxy.\nconst arrayPrototypeKeys = [\n \"concat\",\n \"entries\",\n \"every\",\n \"filter\",\n \"find\",\n \"findIndex\",\n \"flat\",\n \"flatMap\",\n \"forEach\",\n \"includes\",\n \"indexOf\",\n \"join\",\n \"keys\",\n \"lastIndexOf\",\n \"map\",\n \"reduce\",\n \"reduceRight\",\n \"slice\",\n \"some\",\n \"toLocaleString\",\n \"toString\",\n // \"copyWithin\",\n // \"fill\",\n // \"length\",\n // \"pop\",\n // \"push\",\n // \"reverse\",\n // \"shift\",\n // \"sort\",\n // \"splice\",\n // \"unshift\",\n];\n/**\n * {@link TreeNodeValid}, but modified to add members from Array.prototype named in {@link arrayPrototypeKeys}.\n * @privateRemarks\n * Since a lot of scratch types and values are involved with creating this,\n * it's generating using an immediately invoked function expression (IIFE).\n * This is a common JavaScript pattern for cases like this to avoid cluttering the scope.\n */\nconst TreeNodeWithArrayFeatures = (() => {\n /**\n * {@link TreeNodeValid}, but modified to add members from Array.prototype named in {@link arrayPrototypeKeys}.\n */\n class TreeNodeWithArrayFeaturesUntyped extends TreeNodeValid {\n }\n // Modify TreeNodeWithArrayFeaturesUntyped to add the members from Array.prototype\n arrayPrototypeKeys.forEach((key) => {\n Object.defineProperty(TreeNodeWithArrayFeaturesUntyped.prototype, key, {\n value: Array.prototype[key],\n });\n });\n return TreeNodeWithArrayFeaturesUntyped;\n})();\n/* eslint-enable @typescript-eslint/explicit-member-accessibility, @typescript-eslint/no-explicit-any */\n/**\n * Attempts to coerce the given property key to an integer index property.\n * @param key - The property key to coerce.\n * @param exclusiveMax - This restricts the range in which the resulting index is allowed to be.\n * The coerced index of `key` must be less than `exclusiveMax` or else this function will return `undefined`.\n * This is useful for reading an array within the bounds of its length, e.g. `asIndex(key, array.length)`.\n */\nexport function asIndex(key, exclusiveMax) {\n if (typeof key !== \"string\") {\n return undefined;\n }\n // TODO: It may be worth a '0' <= ch <= '9' check before calling 'Number' to quickly\n // reject 'length' as an index, or even parsing integers ourselves.\n const asNumber = Number(key);\n if (!Number.isInteger(asNumber)) {\n return undefined;\n }\n // Check that the original string is the same after converting to a number and back again.\n // This prevents keys like \"5.0\", \"0x5\", \" 5\" from coercing to 5, and keys like \" \" or \"\" from coercing to 0.\n const asString = String(asNumber);\n if (asString !== key) {\n return undefined;\n }\n // TODO: See 'matrix/range.ts' for fast integer coercing + range check.\n return 0 <= asNumber && asNumber < exclusiveMax ? asNumber : undefined;\n}\n/**\n * @param allowAdditionalProperties - If true, setting of unexpected properties will be forwarded to the target object.\n * Otherwise setting of unexpected properties will error.\n * @param proxyTarget - Target object of the proxy. Must provide an own `length` value property\n * (which is not used but must exist for getOwnPropertyDescriptor invariants) and the array functionality from {@link arrayNodePrototype}.\n * Controls the prototype exposed by the produced proxy.\n * @param dispatchTarget - provides the functionally of the node, implementing all fields.\n */\nfunction createArrayNodeProxy(allowAdditionalProperties, proxyTarget, dispatchTarget) {\n // To satisfy 'deepEquals' level scrutiny, the target of the proxy must be an array literal in order\n // to pass 'Object.getPrototypeOf'. It also satisfies 'Array.isArray' and 'Object.prototype.toString'\n // requirements without use of Array[Symbol.species], which is potentially on a path ot deprecation.\n const proxy = new Proxy(proxyTarget, {\n get: (target, key, receiver) => {\n const field = getSequenceField(receiver);\n const maybeIndex = asIndex(key, field.length);\n if (maybeIndex === undefined) {\n if (key === \"length\") {\n return field.length;\n }\n // Pass the proxy as the receiver here, so that any methods on\n // the prototype receive `proxy` as `this`.\n return Reflect.get(dispatchTarget, key, receiver);\n }\n const maybeContent = field.at(maybeIndex);\n return isFlexTreeNode(maybeContent)\n ? getOrCreateNodeFromFlexTreeNode(maybeContent)\n : maybeContent;\n },\n set: (target, key, newValue, receiver) => {\n if (key === \"length\") {\n // To allow \"length\" to look like \"length\" on an array, getOwnPropertyDescriptor has to report it as a writable value.\n // This means the proxy target must provide a length value, but since it can't use getters and setters, it can't be correct.\n // Therefor length has to be handled in this proxy.\n // Since it's not actually mutable, return false so setting it will produce a type error.\n return false;\n }\n // 'Symbol.isConcatSpreadable' may be set on an Array instance to modify the behavior of\n // the concat method. We allow this property to be added to the dispatch object.\n if (key === Symbol.isConcatSpreadable) {\n return Reflect.set(dispatchTarget, key, newValue, receiver);\n }\n // Array nodes treat all non-negative integer indexes as array access.\n // Using Infinity here (rather than length) ensures that indexing past the end doesn't create additional session local properties.\n const maybeIndex = asIndex(key, Number.POSITIVE_INFINITY);\n if (maybeIndex !== undefined) {\n // For MVP, we otherwise disallow setting properties (mutation is only available via the array node mutation APIs).\n // To ensure a clear and actionable error experience, we will throw explicitly here, rather than just returning false.\n throw new UsageError(\"Cannot set indexed properties on array nodes. Use array node mutation APIs to alter the array.\");\n }\n return allowAdditionalProperties ? Reflect.set(target, key, newValue, receiver) : false;\n },\n has: (target, key) => {\n const field = getSequenceField(proxy);\n const maybeIndex = asIndex(key, field.length);\n return maybeIndex !== undefined || Reflect.has(dispatchTarget, key);\n },\n ownKeys: (target) => {\n const field = getSequenceField(proxy);\n // TODO: Would a lazy iterator to produce the indexes work / be more efficient?\n // TODO: Need to surface 'Symbol.isConcatSpreadable' as an own key.\n const keys = Array.from({ length: field.length }, (_, index) => `${index}`);\n if (allowAdditionalProperties) {\n keys.push(...Reflect.ownKeys(target));\n }\n else {\n keys.push(\"length\");\n }\n return keys;\n },\n getOwnPropertyDescriptor: (target, key) => {\n const field = getSequenceField(proxy);\n const maybeIndex = asIndex(key, field.length);\n if (maybeIndex !== undefined) {\n const val = field.at(maybeIndex);\n // To satisfy 'deepEquals' level scrutiny, the property descriptor for indexed properties must\n // be a simple value property (as opposed to using getter) and declared writable/enumerable/configurable.\n return {\n value: isFlexTreeNode(val) ? getOrCreateNodeFromFlexTreeNode(val) : val,\n writable: true, // For MVP, setting indexed properties is reported as allowed here (for deep equals compatibility noted above), but not actually supported.\n enumerable: true,\n configurable: true,\n };\n }\n else if (key === \"length\") {\n // To satisfy 'deepEquals' level scrutiny, the property descriptor for 'length' must be a simple\n // value property (as opposed to using getter) and be declared writable / non-configurable.\n return {\n value: field.length,\n writable: true,\n enumerable: false,\n configurable: false,\n };\n }\n return Reflect.getOwnPropertyDescriptor(dispatchTarget, key);\n },\n defineProperty(target, key, attributes) {\n const maybeIndex = asIndex(key, Number.POSITIVE_INFINITY);\n if (maybeIndex !== undefined) {\n throw new UsageError(\"Shadowing of array indices is not permitted.\");\n }\n return Reflect.defineProperty(dispatchTarget, key, attributes);\n },\n });\n return proxy;\n}\nclass CustomArrayNodeBase extends TreeNodeWithArrayFeatures {\n constructor(input) {\n super(input);\n _CustomArrayNodeBase_instances.add(this);\n /**\n * Generation number which is incremented any time we have an edit on the node.\n * Used during iteration to make sure there has been no edits that were concurrently made.\n */\n _CustomArrayNodeBase_generationNumber.set(this, 0);\n getKernel(this).on(\"nodeChanged\", () => {\n __classPrivateFieldSet(this, _CustomArrayNodeBase_generationNumber, __classPrivateFieldGet(this, _CustomArrayNodeBase_generationNumber, \"f\") + 1, \"f\");\n });\n }\n toJSON() {\n // This override causes the class instance to `JSON.stringify` as `[a, b]` rather than `{0: a, 1: b}`.\n return Array.from(this);\n }\n // Instances of this class are used as the dispatch object for the proxy,\n // and thus its set of keys is used to implement `has` (for the `in` operator) for the non-numeric cases.\n // Therefore it must include `length`,\n // even though this \"length\" is never invoked (due to being shadowed by the proxy provided own property).\n get length() {\n return fail(\"Proxy should intercept length\");\n }\n [(_CustomArrayNodeBase_generationNumber = new WeakMap(), _CustomArrayNodeBase_instances = new WeakSet(), _CustomArrayNodeBase_mapTreesFromFieldData = function _CustomArrayNodeBase_mapTreesFromFieldData(value) {\n const sequenceField = getSequenceField(this);\n const content = value;\n const mapTrees = content\n .flatMap((c) => c instanceof IterableTreeArrayContent ? Array.from(c) : [c])\n .map((c) => mapTreeFromNodeData(c, this.simpleSchema, sequenceField.context?.nodeKeyManager, getSchemaAndPolicy(sequenceField)));\n if (sequenceField.context !== undefined) {\n prepareContentForHydration(mapTrees, sequenceField.context.checkout.forest);\n }\n return mapTrees;\n }, Symbol.iterator)]() {\n return this.values();\n }\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n get [Symbol.unscopables]() {\n // This might not be the exact right set of values, but it only matters for `with` clauses which are deprecated and are banned in strict mode, so it shouldn't matter much.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with for details.\n return Array.prototype[Symbol.unscopables];\n }\n at(index) {\n const field = getSequenceField(this);\n const val = field.boxedAt(index);\n if (val === undefined) {\n return val;\n }\n return getOrCreateNodeFromFlexTreeNode(val);\n }\n insertAt(index, ...value) {\n const field = getSequenceField(this);\n validateIndex(index, field, \"insertAt\", true);\n const content = __classPrivateFieldGet(this, _CustomArrayNodeBase_instances, \"m\", _CustomArrayNodeBase_mapTreesFromFieldData).call(this, value);\n field.editor.insert(index, content);\n }\n insertAtStart(...value) {\n this.insertAt(0, ...value);\n }\n insertAtEnd(...value) {\n this.insertAt(this.length, ...value);\n }\n removeAt(index) {\n const field = getSequenceField(this);\n validateIndex(index, field, \"removeAt\");\n field.editor.remove(index, 1);\n }\n removeRange(start, end) {\n const field = getSequenceField(this);\n const { length } = field;\n const removeStart = start ?? 0;\n const removeEnd = Math.min(length, end ?? length);\n validatePositiveIndex(removeStart);\n validatePositiveIndex(removeEnd);\n if (removeEnd < removeStart) {\n // This catches both the case where start is > array.length and when start is > end.\n throw new UsageError('Too large of \"start\" value passed to TreeArrayNode.removeRange.');\n }\n field.editor.remove(removeStart, removeEnd - removeStart);\n }\n moveToStart(sourceIndex, source) {\n const sourceArray = source ?? this;\n const sourceField = getSequenceField(sourceArray);\n validateIndex(sourceIndex, sourceField, \"moveToStart\");\n this.moveRangeToIndex(0, sourceIndex, sourceIndex + 1, source);\n }\n moveToEnd(sourceIndex, source) {\n const sourceArray = source ?? this;\n const sourceField = getSequenceField(sourceArray);\n validateIndex(sourceIndex, sourceField, \"moveToEnd\");\n this.moveRangeToIndex(this.length, sourceIndex, sourceIndex + 1, source);\n }\n moveToIndex(destinationIndex, sourceIndex, source) {\n const sourceArray = source ?? this;\n const sourceField = getSequenceField(sourceArray);\n const destinationField = getSequenceField(this);\n validateIndex(destinationIndex, destinationField, \"moveToIndex\", true);\n validateIndex(sourceIndex, sourceField, \"moveToIndex\");\n this.moveRangeToIndex(destinationIndex, sourceIndex, sourceIndex + 1, source);\n }\n moveRangeToStart(sourceStart, sourceEnd, source) {\n validateIndexRange(sourceStart, sourceEnd, source ?? getSequenceField(this), \"moveRangeToStart\");\n this.moveRangeToIndex(0, sourceStart, sourceEnd, source);\n }\n moveRangeToEnd(sourceStart, sourceEnd, source) {\n validateIndexRange(sourceStart, sourceEnd, source ?? getSequenceField(this), \"moveRangeToEnd\");\n this.moveRangeToIndex(this.length, sourceStart, sourceEnd, source);\n }\n moveRangeToIndex(destinationIndex, sourceStart, sourceEnd, source) {\n const destinationField = getSequenceField(this);\n const sourceField = source !== undefined ? getSequenceField(source) : destinationField;\n validateIndex(destinationIndex, destinationField, \"moveRangeToIndex\", true);\n validateIndexRange(sourceStart, sourceEnd, source ?? destinationField, \"moveRangeToIndex\");\n // TODO: determine support for move across different sequence types\n if (destinationField.schema.types !== undefined && sourceField !== destinationField) {\n for (let i = sourceStart; i < sourceEnd; i++) {\n const sourceNode = sourceField.boxedAt(i) ?? oob();\n if (!destinationField.schema.types.has(sourceNode.schema.name)) {\n throw new UsageError(\"Type in source sequence is not allowed in destination.\");\n }\n }\n }\n const movedCount = sourceEnd - sourceStart;\n if (destinationField.context === undefined) {\n if (!isMapTreeSequenceField(sourceField)) {\n throw new UsageError(\"Cannot move elements from an inserted array to an array that has not yet been inserted\");\n }\n if (sourceField !== destinationField || destinationIndex < sourceStart) {\n destinationField.editor.insert(destinationIndex, sourceField.editor.remove(sourceStart, movedCount));\n }\n else if (destinationIndex > sourceStart + movedCount) {\n destinationField.editor.insert(destinationIndex - movedCount, sourceField.editor.remove(sourceStart, movedCount));\n }\n }\n else {\n if (sourceField.context === undefined) {\n throw new UsageError(\"Cannot move elements from an array that has not yet been inserted to an inserted array\");\n }\n destinationField.context.checkout.editor.move(sourceField.getFieldPath(), sourceStart, movedCount, destinationField.getFieldPath(), destinationIndex);\n }\n }\n values() {\n return this.generateValues(__classPrivateFieldGet(this, _CustomArrayNodeBase_generationNumber, \"f\"));\n }\n *generateValues(initialLastUpdatedStamp) {\n if (initialLastUpdatedStamp !== __classPrivateFieldGet(this, _CustomArrayNodeBase_generationNumber, \"f\")) {\n throw new UsageError(`Concurrent editing and iteration is not allowed.`);\n }\n for (let i = 0; i < this.length; i++) {\n yield this.at(i) ?? fail(\"Index is out of bounds\");\n if (initialLastUpdatedStamp !== __classPrivateFieldGet(this, _CustomArrayNodeBase_generationNumber, \"f\")) {\n throw new UsageError(`Concurrent editing and iteration is not allowed.`);\n }\n }\n }\n}\nCustomArrayNodeBase.kind = NodeKind.Array;\n/**\n * Define a {@link TreeNodeSchema} for a {@link (TreeArrayNode:interface)}.\n *\n * @param name - Unique identifier for this schema including the factory's scope.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function arraySchema(identifier, info, implicitlyConstructable, customizable) {\n let flexSchema;\n // This class returns a proxy from its constructor to handle numeric indexing.\n // Alternatively it could extend a normal class which gets tons of numeric properties added.\n class schema extends CustomArrayNodeBase {\n static prepareInstance(instance, flexNode) {\n const proxyTarget = customizable ? instance : [];\n if (customizable) {\n // Since proxy reports this as a \"non-configurable\" property, it must exist on the underlying object used as the proxy target, not as an inherited property.\n // This should not get used as the proxy should intercept all use.\n Object.defineProperty(instance, \"length\", {\n value: NaN,\n writable: true,\n enumerable: false,\n configurable: false,\n });\n }\n return createArrayNodeProxy(customizable, proxyTarget, instance);\n }\n static buildRawNode(instance, input) {\n return getOrCreateMapTreeNode(flexSchema, mapTreeFromNodeData(input, this));\n }\n static oneTimeSetup() {\n flexSchema = getFlexSchema(this);\n // First run, do extra validation.\n // TODO: provide a way for TreeConfiguration to trigger this same validation to ensure it gets run early.\n // Scan for shadowing inherited members which won't work, but stop scan early to allow shadowing built in (which seems to work ok).\n {\n let prototype = this.prototype;\n // There isn't a clear cleaner way to author this loop.\n while (prototype !== schema.prototype) {\n // Search prototype keys and check for positive integers. Throw if any are found.\n // Shadowing of index properties on array nodes is not supported.\n for (const key of Object.getOwnPropertyNames(prototype)) {\n const maybeIndex = asIndex(key, Number.POSITIVE_INFINITY);\n if (maybeIndex !== undefined) {\n throw new UsageError(`Schema ${identifier} defines an inherited index property \"${key.toString()}\" which shadows a possible array index. Shadowing of array indices is not permitted.`);\n }\n }\n // Since this stops at the array node base schema, it should never see a null prototype, so this case is safe.\n // Additionally, if the prototype chain is ever messed up such that the array base schema is not in it,\n // the null that would show up here does at least ensure this code throws instead of hanging.\n prototype = Reflect.getPrototypeOf(prototype);\n }\n }\n }\n // eslint-disable-next-line import/no-deprecated\n get [typeNameSymbol]() {\n return identifier;\n }\n get [typeSchemaSymbol]() {\n return schema.constructorCached?.constructor;\n }\n get simpleSchema() {\n return info;\n }\n }\n schema.constructorCached = undefined;\n schema.identifier = identifier;\n schema.info = info;\n schema.implicitlyConstructable = implicitlyConstructable;\n const output = schema;\n return output;\n}\nfunction validateSafeInteger(index) {\n if (!Number.isSafeInteger(index)) {\n throw new UsageError(`Expected a safe integer, got ${index}.`);\n }\n}\nfunction validatePositiveIndex(index) {\n validateSafeInteger(index);\n if (index < 0) {\n throw new UsageError(`Expected non-negative index, got ${index}.`);\n }\n}\nfunction validateIndex(index, array, methodName, allowOnePastEnd = false) {\n validatePositiveIndex(index);\n if (allowOnePastEnd) {\n if (index > array.length) {\n throw new UsageError(`Index value passed to TreeArrayNode.${methodName} is out of bounds.`);\n }\n }\n else {\n if (index >= array.length) {\n throw new UsageError(`Index value passed to TreeArrayNode.${methodName} is out of bounds.`);\n }\n }\n}\nfunction validateIndexRange(startIndex, endIndex, array, methodName) {\n validateIndex(startIndex, array, methodName, true);\n validateIndex(endIndex, array, methodName, true);\n if (startIndex > endIndex || array.length < endIndex) {\n throw new UsageError(`Index value passed to TreeArrayNode.${methodName} is out of bounds.`);\n }\n}\n//# sourceMappingURL=arrayNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { FieldKinds, getOrCreateMapTreeNode, getSchemaAndPolicy, isMapTreeNode, } from \"../feature-libraries/index.js\";\nimport { getTreeNodeForField, prepareContentForHydration, } from \"./proxies.js\";\nimport { getOrCreateInnerNode } from \"./proxyBinding.js\";\nimport { getStoredKey, getExplicitStoredKey, normalizeFieldSchema, FieldKind, } from \"./schemaTypes.js\";\nimport { NodeKind, \n// eslint-disable-next-line import/no-deprecated\ntypeNameSymbol, typeSchemaSymbol, } from \"./core/index.js\";\nimport { mapTreeFromNodeData } from \"./toMapTree.js\";\nimport { fail } from \"../util/index.js\";\nimport { getFlexSchema } from \"./toFlexSchema.js\";\nimport { TreeNodeValid } from \"./treeNodeValid.js\";\n/**\n * Caches the mappings from view keys to stored keys for the provided object field schemas in {@link simpleKeyToFlexKeyCache}.\n */\nfunction createFlexKeyMapping(fields) {\n const keyMap = new Map();\n for (const [viewKey, fieldSchema] of Object.entries(fields)) {\n const storedKey = getStoredKey(viewKey, fieldSchema);\n keyMap.set(viewKey, { storedKey, schema: normalizeFieldSchema(fieldSchema) });\n }\n return keyMap;\n}\n/**\n * @param allowAdditionalProperties - If true, setting of unexpected properties will be forwarded to the target object.\n * Otherwise setting of unexpected properties will error.\n * TODO: consider implementing this using `Object.preventExtension` instead.\n * @param customTargetObject - Target object of the proxy.\n * If not provided `{}` is used for the target.\n */\nfunction createProxyHandler(flexKeyMap, allowAdditionalProperties) {\n // To satisfy 'deepEquals' level scrutiny, the target of the proxy must be an object with the same\n // prototype as an object literal '{}'. This is because 'deepEquals' uses 'Object.getPrototypeOf'\n // as a way to quickly reject objects with different prototype chains.\n //\n // (Note that the prototype of an object literal appears as '[Object: null prototype] {}', not because\n // the prototype is null, but because the prototype object itself has a null prototype.)\n // TODO: Although the target is an object literal, it's still worthwhile to try experimenting with\n // a dispatch object to see if it improves performance.\n const handler = {\n get(target, viewKey, proxy) {\n const fieldInfo = flexKeyMap.get(viewKey);\n if (fieldInfo !== undefined) {\n const flexNode = getOrCreateInnerNode(proxy);\n const field = flexNode.tryGetField(fieldInfo.storedKey);\n if (field !== undefined) {\n return getTreeNodeForField(field);\n }\n // Check if the user is trying to read an identifier field of an unhydrated node, but the identifier is not present.\n // This means the identifier is an \"auto-generated identifier\", because otherwise it would have been supplied by the user at construction time and would have been successfully read just above.\n // In this case, it is categorically impossible to provide an identifier (auto-generated identifiers can't be created until hydration/insertion time), so we emit an error.\n if (fieldInfo.schema.kind === FieldKind.Identifier && isMapTreeNode(flexNode)) {\n throw new UsageError(\"An automatically generated node identifier may not be queried until the node is inserted into the tree\");\n }\n return undefined;\n }\n // Pass the proxy as the receiver here, so that any methods on the prototype receive `proxy` as `this`.\n return Reflect.get(target, viewKey, proxy);\n },\n set(target, viewKey, value, proxy) {\n const fieldInfo = flexKeyMap.get(viewKey);\n if (fieldInfo === undefined) {\n // Pass the proxy as the receiver here, so that setters on the prototype receive `proxy` as `this`.\n return allowAdditionalProperties ? Reflect.set(target, viewKey, value, proxy) : false;\n }\n setField(getOrCreateInnerNode(proxy).getBoxed(fieldInfo.storedKey), fieldInfo.schema, value);\n return true;\n },\n deleteProperty(target, viewKey) {\n // TODO: supporting delete when it makes sense (custom local fields, and optional field) could be added as a feature in the future.\n throw new UsageError(`Object nodes do not support the delete operator. Optional fields can be assigned to undefined instead.`);\n },\n has: (target, viewKey) => {\n return (flexKeyMap.has(viewKey) ||\n (allowAdditionalProperties ? Reflect.has(target, viewKey) : false));\n },\n ownKeys: (target) => {\n return [\n ...flexKeyMap.keys(),\n ...(allowAdditionalProperties ? Reflect.ownKeys(target) : []),\n ];\n },\n getOwnPropertyDescriptor: (target, viewKey) => {\n const fieldInfo = flexKeyMap.get(viewKey);\n if (fieldInfo === undefined) {\n return allowAdditionalProperties\n ? Reflect.getOwnPropertyDescriptor(target, viewKey)\n : undefined;\n }\n // For some reason, the getOwnPropertyDescriptor is not passed in the receiver, so use a weak map.\n // If a refactoring is done to associated flex tree data with the target not the proxy, this extra map could be removed,\n // and the design would be more compatible with proxyless nodes.\n const proxy = targetToProxy.get(target) ?? fail(\"missing proxy\");\n const field = getOrCreateInnerNode(proxy).tryGetField(fieldInfo.storedKey);\n const p = {\n value: field === undefined ? undefined : getTreeNodeForField(field),\n writable: true,\n // Report empty fields as own properties so they shadow inherited properties (even when empty) to match TypeScript typing.\n // Make empty fields not enumerable so they get skipped when iterating over an object to better align with\n // JSON and deep equals with JSON compatible object (which can't have undefined fields).\n enumerable: field !== undefined,\n configurable: true, // Must be 'configurable' if property is absent from proxy target.\n };\n return p;\n },\n };\n return handler;\n}\nexport function setField(field, simpleFieldSchema, value) {\n const mapTree = mapTreeFromNodeData(value, simpleFieldSchema, field.context?.nodeKeyManager, getSchemaAndPolicy(field));\n if (field.context !== undefined) {\n prepareContentForHydration(mapTree, field.context.checkout.forest);\n }\n switch (field.schema.kind) {\n case FieldKinds.required: {\n assert(mapTree !== undefined, 0xa04 /* Cannot set a required field to undefined */);\n const typedField = field;\n typedField.editor.set(mapTree);\n break;\n }\n case FieldKinds.optional: {\n const typedField = field;\n typedField.editor.set(mapTree, typedField.length === 0);\n break;\n }\n default:\n fail(\"invalid FieldKind\");\n }\n}\nclass CustomObjectNodeBase extends TreeNodeValid {\n}\nCustomObjectNodeBase.kind = NodeKind.Object;\n/**\n * Define a {@link TreeNodeSchema} for a {@link TreeObjectNode}.\n *\n * @param name - Unique identifier for this schema within this factory's scope.\n * @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key.\n */\nexport function objectSchema(identifier, info, implicitlyConstructable) {\n // Ensure no collisions between final set of view keys, and final set of stored keys (including those\n // implicitly derived from view keys)\n assertUniqueKeys(identifier, info);\n // Performance optimization: cache view key => stored key and schema.\n const flexKeyMap = createFlexKeyMapping(info);\n let handler;\n let customizable;\n let flexSchema;\n class CustomObjectNode extends CustomObjectNodeBase {\n static prepareInstance(instance, flexNode) {\n // Differentiate between the following cases:\n //\n // Case 1: Direct construction (POJO emulation)\n //\n // const Foo = schemaFactory.object(\"Foo\", {bar: schemaFactory.number});\n //\n // assert.deepEqual(new Foo({ bar: 42 }), { bar: 42 },\n //\t\t \"Prototype chain equivalent to POJO.\");\n //\n // Case 2: Subclass construction (Customizable Object)\n //\n // \t class Foo extends schemaFactory.object(\"Foo\", {bar: schemaFactory.number}) {}\n //\n // \t assert.notDeepEqual(new Foo({ bar: 42 }), { bar: 42 },\n // \t \"Subclass prototype chain differs from POJO.\");\n //\n // In Case 1 (POJO emulation), the prototype chain match '{}' (proxyTarget = undefined)\n // In Case 2 (Customizable Object), the prototype chain include the user's subclass (proxyTarget = this)\n const proxyTarget = customizable ? instance : {};\n const proxy = new Proxy(proxyTarget, handler);\n targetToProxy.set(proxyTarget, proxy);\n return proxy;\n }\n static buildRawNode(instance, input) {\n return getOrCreateMapTreeNode(flexSchema, mapTreeFromNodeData(input, this));\n }\n static oneTimeSetup() {\n // One time initialization that required knowing the most derived type (from this.constructor) and thus has to be lazy.\n customizable = this !== CustomObjectNode;\n handler = createProxyHandler(flexKeyMap, customizable);\n flexSchema = getFlexSchema(this);\n // First run, do extra validation.\n // TODO: provide a way for TreeConfiguration to trigger this same validation to ensure it gets run early.\n // Scan for shadowing inherited members which won't work, but stop scan early to allow shadowing built in (which seems to work ok).\n {\n let prototype = this.prototype;\n // There isn't a clear cleaner way to author this loop.\n while (prototype !== CustomObjectNode.prototype) {\n for (const [key] of flexKeyMap) {\n if (\n // constructor is a special case, since one is built in on the derived type, and shadowing it works fine since we only use it before fields are applied.\n key !== \"constructor\" &&\n Reflect.getOwnPropertyDescriptor(prototype, key) !== undefined) {\n throw new UsageError(`Schema ${identifier} defines an inherited property \"${key.toString()}\" which shadows a field. Since fields are exposed as own properties, this shadowing will not work, and is an error.`);\n }\n }\n // Since this stops at CustomObjectNode, it should never see a null prototype, so this case is safe.\n // Additionally, if the prototype chain is ever messed up such that CustomObjectNode is not in it,\n // the null that would show up here does at least ensure this code throws instead of hanging.\n prototype = Reflect.getPrototypeOf(prototype);\n }\n }\n }\n // eslint-disable-next-line import/no-deprecated\n get [typeNameSymbol]() {\n return identifier;\n }\n get [typeSchemaSymbol]() {\n return CustomObjectNode.constructorCached?.constructor;\n }\n }\n CustomObjectNode.fields = new Map(Array.from(flexKeyMap, ([key, value]) => [key, value.schema]));\n CustomObjectNode.flexKeyMap = flexKeyMap;\n CustomObjectNode.storedKeyToPropertyKey = new Map(Array.from(flexKeyMap, ([key, value]) => [\n value.storedKey,\n key,\n ]));\n CustomObjectNode.constructorCached = undefined;\n CustomObjectNode.identifier = identifier;\n CustomObjectNode.info = info;\n CustomObjectNode.implicitlyConstructable = implicitlyConstructable;\n return CustomObjectNode;\n}\nconst targetToProxy = new WeakMap();\n/**\n * Ensures that the set of view keys in the schema is unique.\n * Also ensure that the final set of stored keys (including those implicitly derived from view keys) is unique.\n * @throws Throws a `UsageError` if either of the key uniqueness invariants is violated.\n */\nfunction assertUniqueKeys(schemaName, fields) {\n // Verify that there are no duplicates among the explicitly specified stored keys.\n const explicitStoredKeys = new Set();\n for (const schema of Object.values(fields)) {\n const storedKey = getExplicitStoredKey(schema);\n if (storedKey === undefined) {\n continue;\n }\n if (explicitStoredKeys.has(storedKey)) {\n throw new UsageError(`Duplicate stored key \"${storedKey}\" in schema \"${schemaName}\". Stored keys must be unique within an object schema.`);\n }\n explicitStoredKeys.add(storedKey);\n }\n // Verify that there are no duplicates among the derived\n // (including those implicitly derived from view keys) stored keys.\n const derivedStoredKeys = new Set();\n for (const [viewKey, schema] of Object.entries(fields)) {\n const storedKey = getStoredKey(viewKey, schema);\n if (derivedStoredKeys.has(storedKey)) {\n throw new UsageError(`Stored key \"${storedKey}\" in schema \"${schemaName}\" conflicts with a property key of the same name, which is not overridden by a stored key. The final set of stored keys in an object schema must be unique.`);\n }\n derivedStoredKeys.add(storedKey);\n }\n}\n//# sourceMappingURL=objectNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getOrCreateMapTreeNode, getSchemaAndPolicy, } from \"../feature-libraries/index.js\";\nimport { getTreeNodeForField, prepareContentForHydration, } from \"./proxies.js\";\nimport { getOrCreateInnerNode } from \"./proxyBinding.js\";\nimport { getSimpleNodeSchema } from \"./core/index.js\";\nimport { createFieldSchema, FieldKind, } from \"./schemaTypes.js\";\nimport { NodeKind, \n// eslint-disable-next-line import/no-deprecated\ntypeNameSymbol, typeSchemaSymbol, } from \"./core/index.js\";\nimport { mapTreeFromNodeData } from \"./toMapTree.js\";\nimport { getFlexSchema } from \"./toFlexSchema.js\";\nimport { brand, count } from \"../util/index.js\";\nimport { TreeNodeValid } from \"./treeNodeValid.js\";\nconst handler = {\n getPrototypeOf: () => {\n return Map.prototype;\n },\n};\nclass CustomMapNodeBase extends TreeNodeValid {\n [Symbol.iterator]() {\n return this.entries();\n }\n delete(key) {\n const field = getOrCreateInnerNode(this).getBoxed(key);\n field.editor.set(undefined, field.length === 0);\n }\n *entries() {\n const node = getOrCreateInnerNode(this);\n for (const key of node.keys()) {\n yield [\n key,\n getTreeNodeForField(node.getBoxed(key)),\n ];\n }\n }\n get(key) {\n const node = getOrCreateInnerNode(this);\n const field = node.getBoxed(key);\n return getTreeNodeForField(field);\n }\n has(key) {\n return getOrCreateInnerNode(this).tryGetField(brand(key)) !== undefined;\n }\n keys() {\n const node = getOrCreateInnerNode(this);\n return node.keys();\n }\n set(key, value) {\n const node = getOrCreateInnerNode(this);\n const classSchema = getSimpleNodeSchema(node.schema);\n const mapTree = mapTreeFromNodeData(value, createFieldSchema(FieldKind.Optional, classSchema.info), node.context?.nodeKeyManager, getSchemaAndPolicy(node));\n const field = node.getBoxed(key);\n if (node.context !== undefined) {\n prepareContentForHydration(mapTree, node.context.checkout.forest);\n }\n field.editor.set(mapTree, field.length === 0);\n return this;\n }\n get size() {\n return count(getOrCreateInnerNode(this).keys());\n }\n *values() {\n for (const [, value] of this.entries()) {\n yield value;\n }\n }\n forEach(callbackFn, thisArg) {\n for (const field of getOrCreateInnerNode(this).boxedIterator()) {\n const node = getTreeNodeForField(field);\n callbackFn.call(thisArg, node, field.key, this);\n }\n }\n}\nCustomMapNodeBase.kind = NodeKind.Map;\n/**\n * Define a {@link TreeNodeSchema} for a {@link (TreeArrayNode:interface)}.\n *\n * @param base - base schema type to extend.\n * @param useMapPrototype - should this type emulate a ES6 Map object (by faking its prototype with a proxy).\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function mapSchema(identifier, info, implicitlyConstructable, useMapPrototype) {\n let flexSchema;\n class schema extends CustomMapNodeBase {\n static prepareInstance(instance, flexNode) {\n if (useMapPrototype) {\n return new Proxy(instance, handler);\n }\n return instance;\n }\n static buildRawNode(instance, input) {\n return getOrCreateMapTreeNode(flexSchema, mapTreeFromNodeData(input, this));\n }\n static oneTimeSetup() {\n flexSchema = getFlexSchema(this);\n }\n // eslint-disable-next-line import/no-deprecated\n get [typeNameSymbol]() {\n return identifier;\n }\n get [typeSchemaSymbol]() {\n return schema.constructorCached?.constructor;\n }\n }\n schema.constructorCached = undefined;\n schema.identifier = identifier;\n schema.info = info;\n schema.implicitlyConstructable = implicitlyConstructable;\n const schemaErased = schema;\n return schemaErased;\n}\n//# sourceMappingURL=mapNode.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { createFieldSchema, } from \"../schemaTypes.js\";\nexport function createFieldSchemaUnsafe(kind, allowedTypes, props) {\n // At runtime, we still want this to be a FieldSchema instance, but we can't satisfy its extends clause, so just return it as an FieldSchemaUnsafe\n return createFieldSchema(kind, allowedTypes, props);\n}\n//# sourceMappingURL=schemaFactoryRecursive.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { isFluidHandle } from \"@fluidframework/runtime-utils/internal\";\nimport { isLazy, } from \"../../feature-libraries/index.js\";\nimport { getOrCreate, isReadonlyArray, } from \"../../util/index.js\";\nimport { booleanSchema, handleSchema, LeafNodeSchema, nullSchema, numberSchema, stringSchema, } from \"../leafNodeSchema.js\";\nimport { FieldKind, createFieldSchema, getDefaultProvider, } from \"../schemaTypes.js\";\nimport { inPrototypeChain } from \"../core/index.js\";\nimport { arraySchema } from \"../arrayNode.js\";\nimport { objectSchema, } from \"../objectNode.js\";\nimport { mapSchema } from \"../mapNode.js\";\nimport { createFieldSchemaUnsafe } from \"./schemaFactoryRecursive.js\";\nimport { TreeNodeValid } from \"../treeNodeValid.js\";\n/**\n * Gets the leaf domain schema compatible with a given {@link TreeValue}.\n */\nexport function schemaFromValue(value) {\n switch (typeof value) {\n case \"boolean\":\n return booleanSchema;\n case \"number\":\n return numberSchema;\n case \"string\":\n return stringSchema;\n case \"object\": {\n if (value === null) {\n return nullSchema;\n }\n assert(isFluidHandle(value), 0x87e /* invalid TreeValue */);\n return handleSchema;\n }\n default:\n unreachableCase(value);\n }\n}\n// > = `${TScope extends undefined ? \"\" : `${TScope}.`}${TName}`;\n// TODO:\n// SchemaFactory.array references should link to the correct overloads, however the syntax for this does not seems to work currently for methods unless the they are not qualified with the class.\n// API-Extractor requires such links to be qualified with the class, so it can't work.\n// Since linking the overload set as a whole also doesn't work, these have been made non-links for now.\n/**\n * Creates various types of {@link TreeNodeSchema|schema} for {@link TreeNode}s.\n *\n * @typeParam TScope - Scope added as a prefix to the name of every schema produced by this factory.\n * @typeParam TName - Type of names used to identify each schema produced in this factory.\n * Typically this is just `string` but it is also possible to use `string` or `number` based enums if you prefer to identify your types that way.\n *\n * @remarks\n * All schema produced by this factory get a {@link TreeNodeSchemaCore.identifier|unique identifier} by combining the {@link SchemaFactory.scope} with the schema's `Name`.\n * The `Name` part may be explicitly provided as a parameter, or inferred as a structural combination of the provided types.\n * The APIs which use this second approach, structural naming, also deduplicate all equivalent calls.\n * Therefor two calls to `array(allowedTypes)` with the same allowedTypes will return the same {@link TreeNodeSchema} instance.\n * On the other hand, two calls to `array(name, allowedTypes)` will always return different {@link TreeNodeSchema} instances\n * and it is an error to use both in the same tree (since their identifiers are not unique).\n *\n * Note:\n * POJO stands for Plain Old JavaScript Object.\n * This means an object that works like a `{}` style object literal.\n * In this case it means the prototype is `Object.prototype` and acts like a set of key value pairs (data, not methods).\n * The usage below generalizes this to include array and map like objects as well.\n *\n * There are two ways to use these APIs:\n * | | Customizable | POJO Emulation |\n * | ------------------- | ------------ |--------------- |\n * | Declaration | `class X extends schemaFactory.object(\"x\", {}) {}` | `const X = schemaFactory.object(\"x\", {}); type X = NodeFromSchema; `\n * | Allows adding \"local\" (non-persisted) members | Yes. Members (including methods) can be added to class. | No. Attempting to set non-field members will error. |\n * | Prototype | The user defined class | `Object.prototype`, `Map.prototype` or `Array.prototype` depending on node kind |\n * | Structurally named Schema | Not Supported | Supported |\n * | Explicitly named Objects | Supported | Supported |\n * | Explicitly named Maps and Arrays | Supported: Both declaration approaches can be used | Not Supported |\n * | node.js assert.deepEqual | Compares like class instances: equal to other nodes of the same type with the same content, including custom local fields. | Compares like plain objects: equal to plain JavaScript objects with the same fields, and other nodes with the same fields, even if the types are different. |\n * | IntelliSense | Shows and links to user defined class by name: `X` | Shows internal type generation logic: `object & TreeNode & ObjectFromSchemaRecord<{}> & WithType<\"test.x\">` |\n * | Recursion | Supported with special declaration patterns. | Unsupported: Generated d.ts files replace recursive references with `any`, breaking use of recursive schema across compilation boundaries |\n *\n * Note that while \"POJO Emulation\" nodes act a lot like POJO objects, they are not true POJO objects:\n *\n * - Adding new arbitrary fields will error, as well some cases of invalid edits.\n *\n * - They are implemented using proxies.\n *\n * - They have state that is not exposed via enumerable own properties, including a {@link TreeNodeSchema}.\n * This makes libraries like node.js `assert.deepEqual` fail to detect differences in type.\n *\n * - Assigning members has side effects (in this case editing the persisted/shared tree).\n *\n * - Not all operations implied by the prototype will work correctly: stick to the APIs explicitly declared in the TypeScript types.\n *\n * @privateRemarks\n * It's perfectly possible to make `POJO Emulation` mode (or even just hiding the prototype) selectable even when using the custom user class declaration syntax.\n * When doing this, it's still possible to make `instanceof` perform correctly.\n * Allowing (or banning) custom/out-of-schema properties on the class is also possible in both modes: it could be orthogonal.\n * Also for consistency, if keeping the current approach to detecting `POJO Emulation` mode it might make sense to make explicitly named Maps and Arrays do the detection the same as how object does it.\n *\n * @sealed @public\n */\nexport class SchemaFactory {\n /**\n * Construct a SchemaFactory with a given scope.\n * @remarks\n * There are no restrictions on mixing schema from different schema factories:\n * this is encouraged when a single schema references schema from different libraries.\n * If each library exporting schema picks its own globally unique scope for its SchemaFactory,\n * then all schema an application might depend on, directly or transitively,\n * will end up with a unique fully qualified name which is required to refer to it in persisted data and errors.\n *\n * @param scope - Prefix appended to the identifiers of all {@link TreeNodeSchema} produced by this builder.\n * Use of [Reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation) or a UUIDv4 is recommended to avoid collisions.\n * You may opt out of using a scope by passing `undefined`, but note that this increases the risk of collisions.\n */\n constructor(scope) {\n this.scope = scope;\n /**\n * TODO:\n * If users of this generate the same name because two different schema with the same identifier were used,\n * the second use can get a cache hit, and reference the wrong schema.\n * Such usage should probably return a distinct type or error but currently does not.\n * The use of markSchemaMostDerived in structuralName at least ensure an error in the case where the collision is from two types extending the same schema factor class.\n */\n this.structuralTypes = new Map();\n /**\n * {@link TreeNodeSchema} for holding a JavaScript `string`.\n *\n * @remarks\n * Strings containing unpaired UTF-16 surrogate pair code units may not be handled correctly.\n *\n * These limitations come from the use of UTF-8 encoding of the strings, which requires them to be valid unicode.\n * JavaScript does not make this requirement for its strings so not all possible JavaScript strings are supported.\n * @privateRemarks\n * TODO:\n * We should be much more clear about what happens if you use problematic values.\n * We should validate and/or normalize them when inserting content.\n */\n this.string = stringSchema;\n /**\n * {@link TreeNodeSchema} for holding a JavaScript `number`.\n *\n * @remarks\n * The number is a [double-precision 64-bit binary format IEEE 754](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) value, however there are some exceptions:\n * - `NaN`, and the infinities are converted to `null` (and may therefore only be used where `null` is allowed by the schema).\n * - `-0` may be converted to `0` in some cases.\n *\n * These limitations match the limitations of JSON.\n * @privateRemarks\n * TODO:\n * We should be much more clear about what happens if you use problematic values.\n * We should validate and/or normalize them when inserting content.\n */\n this.number = numberSchema;\n /**\n * {@link TreeNodeSchema} for holding a boolean.\n */\n this.boolean = booleanSchema;\n /**\n * {@link TreeNodeSchema} for JavaScript `null`.\n *\n * @remarks\n * There are good [reasons to avoid using null](https://www.npmjs.com/package/%40rushstack/eslint-plugin#rushstackno-new-null) in JavaScript, however sometimes it is desired.\n * This {@link TreeNodeSchema} node provides the option to include nulls in trees when desired.\n * Unless directly inter-operating with existing data using null, consider other approaches, like wrapping the value in an optional field, or using a more specifically named empty object node.\n */\n this.null = nullSchema;\n /**\n * {@link TreeNodeSchema} for holding an {@link @fluidframework/core-interfaces#(IFluidHandle:interface)}.\n */\n this.handle = handleSchema;\n }\n scoped(name) {\n return (this.scope === undefined ? `${name}` : `${this.scope}.${name}`);\n }\n /**\n * Define a {@link TreeNodeSchemaClass} for a {@link TreeObjectNode}.\n *\n * @param name - Unique identifier for this schema within this factory's scope.\n * @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key.\n */\n object(name, fields) {\n return objectSchema(this.scoped(name), fields, true);\n }\n map(nameOrAllowedTypes, allowedTypes) {\n if (allowedTypes === undefined) {\n const types = nameOrAllowedTypes;\n const fullName = structuralName(\"Map\", types);\n return getOrCreate(this.structuralTypes, fullName, () => this.namedMap(fullName, nameOrAllowedTypes, false, true));\n }\n return this.namedMap(nameOrAllowedTypes, allowedTypes, true, true);\n }\n /**\n * Define a {@link TreeNodeSchema} for a {@link (TreeMapNode:interface)}.\n *\n * @param name - Unique identifier for this schema within this factory's scope.\n */\n namedMap(name, allowedTypes, customizable, implicitlyConstructable) {\n return mapSchema(this.scoped(name), allowedTypes, implicitlyConstructable, \n // The current policy is customizable nodes don't get fake prototypes.\n !customizable);\n }\n array(nameOrAllowedTypes, allowedTypes) {\n if (allowedTypes === undefined) {\n const types = nameOrAllowedTypes;\n const fullName = structuralName(\"Array\", types);\n return getOrCreate(this.structuralTypes, fullName, () => this.namedArray(fullName, nameOrAllowedTypes, false, true));\n }\n return this.namedArray(nameOrAllowedTypes, allowedTypes, true, true);\n }\n /**\n * Define a {@link TreeNodeSchema} for a {@link (TreeArrayNode:interface)}.\n *\n * @param name - Unique identifier for this schema within this factory's scope.\n *\n * @remarks\n * This is not intended to be used directly, use the overload of `array` which takes a name instead.\n * This is only public to work around a compiler limitation.\n */\n namedArray(name, allowedTypes, customizable, implicitlyConstructable) {\n return arraySchema(this.scoped(name), allowedTypes, implicitlyConstructable, customizable);\n }\n /**\n * Make a field optional instead of the default, which is required.\n *\n * @param t - The types allowed under the field.\n * @param props - Optional properties to associate with the field.\n */\n optional(t, props) {\n const defaultOptionalProvider = getDefaultProvider(() => {\n return undefined;\n });\n return createFieldSchema(FieldKind.Optional, t, {\n defaultProvider: defaultOptionalProvider,\n ...props,\n });\n }\n /**\n * Make a field explicitly required.\n *\n * @param t - The types allowed under the field.\n * @param props - Optional properties to associate with the field.\n *\n * @remarks\n * Fields are required by default, but this API can be used to make the required nature explicit in the schema,\n * and allows associating custom {@link FieldProps | properties} with the field.\n */\n required(t, props) {\n return createFieldSchema(FieldKind.Required, t, props);\n }\n /**\n * {@link SchemaFactory.optional} except tweaked to work better for recursive types.\n * Use with {@link ValidateRecursiveSchema} for improved type safety.\n * @remarks\n * This version of {@link SchemaFactory.optional} has fewer type constraints to work around TypeScript limitations, see {@link Unenforced}.\n * See {@link ValidateRecursiveSchema} for additional information about using recursive schema.\n */\n optionalRecursive(t, props) {\n return createFieldSchemaUnsafe(FieldKind.Optional, t, props);\n }\n /**\n * {@link SchemaFactory.required} except tweaked to work better for recursive types.\n * Use with {@link ValidateRecursiveSchema} for improved type safety.\n * @remarks\n * This version of {@link SchemaFactory.required} has fewer type constraints to work around TypeScript limitations, see {@link Unenforced}.\n * See {@link ValidateRecursiveSchema} for additional information about using recursive schema.\n */\n requiredRecursive(t, props) {\n return createFieldSchemaUnsafe(FieldKind.Required, t, props);\n }\n /**\n * A special field which holds a unique identifier for an object node.\n * @remarks\n * The value of this field, a \"node identifier\", uniquely identifies a node among all other nodes in the tree.\n * Node identifiers are strings, and can therefore be used as lookup keys in maps or written to a database.\n * When the node is constructed, the identifier field does not need to be populated.\n * The SharedTree will provide an identifier for the node automatically.\n * An identifier provided automatically by the SharedTree has the following properties:\n * - It is a UUID.\n * - It is compressed to a space-efficient representation when stored in the document.\n * - A compressed form of the identifier can be accessed at runtime via the `Tree.shortId()` API.\n * - It will error if read (and will not be present in the object's iterable properties) before the node has been inserted into the tree.\n *\n * However, a user may alternatively supply their own string as the identifier if desired (for example, if importing identifiers from another system).\n * In that case, it is up to the user to ensure that the identifier is unique within the current tree - no other node should have the same identifier at the same time.\n * If the identifier is not unique, it may be read, but may cause libraries or features which operate over node identifiers to misbehave.\n * User-supplied identifiers may be read immediately, even before insertion into the tree.\n *\n * A node may have more than one identifier field (though note that this precludes the use of the `Tree.shortId()` API).\n */\n get identifier() {\n const defaultIdentifierProvider = getDefaultProvider((nodeKeyManager) => {\n return nodeKeyManager.stabilizeNodeKey(nodeKeyManager.generateLocalNodeKey());\n });\n return createFieldSchema(FieldKind.Identifier, this.string, {\n defaultProvider: defaultIdentifierProvider,\n });\n }\n /**\n * {@link SchemaFactory.object} except tweaked to work better for recursive types.\n * Use with {@link ValidateRecursiveSchema} for improved type safety.\n * @remarks\n * This version of {@link SchemaFactory.object} has fewer type constraints to work around TypeScript limitations, see {@link Unenforced}.\n * See {@link ValidateRecursiveSchema} for additional information about using recursive schema.\n *\n * Additionally `ImplicitlyConstructable` is disabled (forcing use of constructor) to avoid\n * `error TS2589: Type instantiation is excessively deep and possibly infinite.`\n * which otherwise gets reported at sometimes incorrect source locations that vary based on incremental builds.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n objectRecursive(name, t) {\n return this.object(name, t);\n }\n /**\n * `SchemaFactory.array` except tweaked to work better for recursive types.\n * Use with {@link ValidateRecursiveSchema} for improved type safety.\n * @remarks\n * This version of `SchemaFactory.array` uses the same workarounds as {@link SchemaFactory.objectRecursive}.\n * See {@link ValidateRecursiveSchema} for additional information about using recursive schema.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n arrayRecursive(name, allowedTypes) {\n const RecursiveArray = this.namedArray(name, allowedTypes, true, false);\n return RecursiveArray;\n }\n /**\n * `SchemaFactory.map` except tweaked to work better for recursive types.\n * Use with {@link ValidateRecursiveSchema} for improved type safety.\n * @remarks\n * This version of `SchemaFactory.map` uses the same workarounds as {@link SchemaFactory.objectRecursive}.\n * See {@link ValidateRecursiveSchema} for additional information about using recursive schema.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n mapRecursive(name, allowedTypes) {\n const MapSchema = this.namedMap(name, allowedTypes, true, false);\n return MapSchema;\n }\n}\nexport function structuralName(collectionName, allowedTypes) {\n let inner;\n if (!isReadonlyArray(allowedTypes)) {\n return structuralName(collectionName, [allowedTypes]);\n }\n else {\n const names = allowedTypes.map((t) => {\n // Ensure that lazy types (functions) don't slip through here.\n assert(!isLazy(t), 0x83d /* invalid type provided */);\n markSchemaMostDerived(t);\n return t.identifier;\n });\n // Ensure name is order independent\n names.sort();\n // Ensure name can't have collisions by quoting and escaping any quotes in the names of types.\n // Using JSON is a simple way to accomplish this.\n // The outer `[]` around the result are also needed so that a single type name \"Any\" would not collide with the \"any\" case above.\n inner = JSON.stringify(names);\n }\n return `${collectionName}<${inner}>`;\n}\n/**\n * Indicates that a schema is the \"most derived\" version which is allowed to be used, see {@link MostDerivedData}.\n * Calling helps with error messages about invalid schema usage (using more than one type from single schema factor produced type,\n * and thus calling this for one than one subclass).\n * @remarks\n * Helper for invoking {@link TreeNodeValid.markMostDerived} for any {@link TreeNodeSchema} if it needed.\n */\nexport function markSchemaMostDerived(schema) {\n if (schema instanceof LeafNodeSchema) {\n return;\n }\n if (!inPrototypeChain(schema, TreeNodeValid)) {\n // Use JSON.stringify to quote and escape identifier string.\n throw new UsageError(`Schema for ${JSON.stringify(schema.identifier)} does not extend a SchemaFactory generated class. This is invalid.`);\n }\n schema.markMostDerived();\n}\n//# sourceMappingURL=schemaFactory.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { normalizeFieldSchema, FieldKind, normalizeAllowedTypes, } from \"../schemaTypes.js\";\nimport { NodeKind } from \"../core/index.js\";\nimport { toFlexSchema } from \"../toFlexSchema.js\";\nimport { LeafNodeSchema } from \"../leafNodeSchema.js\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { isObjectNodeSchema } from \"../objectNodeTypes.js\";\nimport { markSchemaMostDerived } from \"./schemaFactory.js\";\nimport { fail, getOrCreate } from \"../../util/index.js\";\nconst defaultTreeConfigurationOptions = {\n enableSchemaValidation: false,\n preventAmbiguity: false,\n};\n/**\n * Configuration for {@link ITree.viewWith}.\n * @sealed @public\n */\nexport class TreeViewConfiguration {\n /**\n * @param props - Property bag of configuration options.\n */\n constructor(props) {\n const config = { ...defaultTreeConfigurationOptions, ...props };\n this.schema = config.schema;\n this.enableSchemaValidation = config.enableSchemaValidation;\n this.preventAmbiguity = config.preventAmbiguity;\n // Ambiguity errors are lower priority to report than invalid schema errors, so collect these in an array and report them all at once.\n const ambiguityErrors = [];\n walkFieldSchema(config.schema, {\n // Ensure all reachable schema are marked as most derived.\n // This ensures if multiple schema extending the same schema factory generated class are present (or have been constructed, or get constructed in the future),\n // an error is reported.\n node: markSchemaMostDerived,\n allowedTypes(types) {\n if (config.preventAmbiguity) {\n checkUnion(types, ambiguityErrors);\n }\n },\n });\n if (ambiguityErrors.length !== 0) {\n // Duplicate errors are common since when two types conflict, both orders error:\n const deduplicated = new Set(ambiguityErrors);\n throw new UsageError(`Ambigious schema found:\\n${[...deduplicated].join(\"\\n\")}`);\n }\n // Eagerly perform this conversion to surface errors sooner.\n toFlexSchema(config.schema);\n }\n}\n/**\n * Pretty print a set of types for use in error messages.\n */\nfunction formatTypes(allowed) {\n // Use JSON.stringify to quote and escape identifiers.\n // Don't just use a single array JSON.stringify since that omits spaces between items\n return `[${Array.from(allowed, (s) => JSON.stringify(s.identifier)).join(\", \")}]`;\n}\n/**\n * Detect cases documented in {@link ITreeConfigurationOptions.preventAmbiguity}.\n */\nexport function checkUnion(union, errors) {\n const checked = new Set();\n const maps = [];\n const arrays = [];\n const objects = [];\n // Map from key to schema using that key\n const allObjectKeys = new Map();\n for (const schema of union) {\n if (checked.has(schema)) {\n throw new UsageError(`Duplicate schema in allowed types: ${schema.identifier}`);\n }\n checked.add(schema);\n if (schema instanceof LeafNodeSchema) {\n // nothing to do\n }\n else if (isObjectNodeSchema(schema)) {\n objects.push(schema);\n for (const key of schema.fields.keys()) {\n getOrCreate(allObjectKeys, key, () => new Set()).add(schema);\n }\n }\n else if (schema.kind === NodeKind.Array) {\n arrays.push(schema);\n }\n else {\n assert(schema.kind === NodeKind.Map, 0x9e7 /* invalid schema */);\n maps.push(schema);\n }\n }\n if (arrays.length > 1) {\n errors.push(`More than one kind of array allowed within union (${formatTypes(arrays)}). This would require type disambiguation which is not supported by arrays during import or export.`);\n }\n if (maps.length > 1) {\n errors.push(`More than one kind of map allowed within union (${formatTypes(maps)}). This would require type disambiguation which is not supported by maps during import or export.`);\n }\n if (maps.length > 0 && arrays.length > 0) {\n errors.push(`Both a map and an array allowed within union (${formatTypes([...arrays, ...maps])}). Both can be implicitly constructed from iterables like arrays, which are ambiguous when the array is empty.`);\n }\n if (objects.length > 0 && maps.length > 0) {\n errors.push(`Both a object and a map allowed within union (${formatTypes([...objects, ...maps])}). Both can be constructed from objects and can be ambiguous.`);\n }\n // Check for objects which fully overlap:\n for (const schema of objects) {\n // All objects which might be ambiguous relative to `schema`.\n const possiblyAmbiguous = new Set(objects);\n // A schema can't be ambiguous with itself\n possiblyAmbiguous.delete(schema);\n // For each field of schema, remove schema from possiblyAmbiguous that do not have that field\n for (const [key, field] of schema.fields) {\n if (field.kind === FieldKind.Required) {\n const withKey = allObjectKeys.get(key) ?? fail(\"missing schema\");\n for (const candidate of possiblyAmbiguous) {\n if (!withKey.has(candidate)) {\n possiblyAmbiguous.delete(candidate);\n }\n }\n }\n }\n if (possiblyAmbiguous.size > 0) {\n // TODO: make this check more permissive.\n // Allow using the type of the field to disambiguate, at least for leaf types.\n // Add \"constant\" fields which can be used to disambiguate even more cases without adding persisted data: maybe make them optional in constructor?\n // Consider separating unambiguous implicit construction format from constructor arguments at type level, allowing constructor to superset the implicit construction options (ex: optional constant fields).\n // The policy here however must remain at least as conservative as shallowCompatibilityTest in src/simple-tree/toMapTree.ts.\n errors.push(`The required fields of ${JSON.stringify(schema.identifier)} are insufficient to differentiate it from the following types: ${formatTypes(possiblyAmbiguous)}. For objects to be considered unambiguous, each must have required fields that do not all occur on any other object in the union.`);\n }\n }\n}\nexport function walkNodeSchema(schema, visitor, visitedSet) {\n if (visitedSet.has(schema)) {\n return;\n }\n visitedSet.add(schema);\n if (schema instanceof LeafNodeSchema) {\n // nothing to do\n }\n else if (isObjectNodeSchema(schema)) {\n for (const field of schema.fields.values()) {\n walkFieldSchema(field, visitor, visitedSet);\n }\n }\n else {\n assert(schema.kind === NodeKind.Array || schema.kind === NodeKind.Map, 0x9b3 /* invalid schema */);\n const childTypes = schema.info;\n walkAllowedTypes(normalizeAllowedTypes(childTypes), visitor, visitedSet);\n }\n // This visit is done at the end so the traversal order is most inner types first.\n // This was picked since when fixing errors,\n // working from the inner types out to the types that use them will probably go better than the reverse.\n // This does not however ensure all types referenced by a type are visited before it, since in recursive cases thats impossible.\n visitor.node?.(schema);\n}\nexport function walkFieldSchema(schema, visitor, visitedSet = new Set()) {\n walkAllowedTypes(normalizeFieldSchema(schema).allowedTypeSet, visitor, visitedSet);\n}\nexport function walkAllowedTypes(allowedTypes, visitor, visitedSet) {\n for (const childType of allowedTypes) {\n walkNodeSchema(childType, visitor, visitedSet);\n }\n visitor.allowedTypes?.(allowedTypes);\n}\n//# sourceMappingURL=tree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { Multiplicity, rootFieldKey } from \"../../core/index.js\";\nimport { isLazy, isTreeValue, FlexObjectNodeSchema, isMapTreeNode, } from \"../../feature-libraries/index.js\";\nimport { fail, extractFromOpaque, isReadonlyArray } from \"../../util/index.js\";\nimport { getOrCreateNodeFromFlexTreeNode } from \"../proxies.js\";\nimport { getOrCreateInnerNode } from \"../proxyBinding.js\";\nimport { FieldSchema, } from \"../schemaTypes.js\";\nimport { booleanSchema, handleSchema, nullSchema, numberSchema, stringSchema, } from \"../leafNodeSchema.js\";\nimport { isFluidHandle } from \"@fluidframework/runtime-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { getKernel, isTreeNode, NodeKind, tryGetTreeNodeSchema, } from \"../core/index.js\";\n/**\n * The `Tree` object holds various functions for analyzing {@link TreeNode}s.\n */\nexport const treeNodeApi = {\n parent(node) {\n const editNode = getOrCreateInnerNode(node).parentField.parent.parent;\n if (editNode === undefined) {\n return undefined;\n }\n const output = getOrCreateNodeFromFlexTreeNode(editNode);\n assert(!isTreeValue(output), 0x87f /* Parent can't be a leaf, so it should be a node not a value */);\n return output;\n },\n key(node) {\n // If the parent is undefined, then this node is under the root field,\n // so we know its key is the special root one.\n const parent = treeNodeApi.parent(node);\n if (parent === undefined) {\n return rootFieldKey;\n }\n // The flex-domain strictly operates in terms of \"stored keys\".\n // To find the associated developer-facing \"view key\", we need to look up the field associated with\n // the stored key from the flex-domain, and get view key its simple-domain counterpart was created with.\n const storedKey = getStoredKey(node);\n const parentSchema = treeNodeApi.schema(parent);\n const viewKey = getViewKeyFromStoredKey(parentSchema, storedKey);\n return viewKey;\n },\n on(node, eventName, listener) {\n return getKernel(node).on(eventName, listener);\n },\n status(node) {\n return getKernel(node).getStatus();\n },\n is(value, schema) {\n const actualSchema = tryGetSchema(value);\n if (actualSchema === undefined) {\n return false;\n }\n if (isReadonlyArray(schema)) {\n for (const singleSchema of schema) {\n const testSchema = isLazy(singleSchema) ? singleSchema() : singleSchema;\n if (testSchema === actualSchema) {\n return true;\n }\n }\n return false;\n }\n else {\n // Linter is incorrect about this bering unnecessary: it does not compile without the type assertion.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return schema === actualSchema;\n }\n },\n schema(node) {\n return tryGetSchema(node) ?? fail(\"Not a tree node\");\n },\n shortId(node) {\n const flexNode = getOrCreateInnerNode(node);\n const flexSchema = flexNode.schema;\n const identifierFieldKeys = flexSchema instanceof FlexObjectNodeSchema ? flexSchema.identifierFieldKeys : [];\n switch (identifierFieldKeys.length) {\n case 0:\n return undefined;\n case 1: {\n const identifier = flexNode.tryGetField(identifierFieldKeys[0] ?? oob())?.boxedAt(0);\n if (isMapTreeNode(flexNode)) {\n if (identifier === undefined) {\n throw new UsageError(\"Tree.shortId cannot access default identifiers on unhydrated nodes\");\n }\n return identifier.value;\n }\n assert(identifier?.context !== undefined, 0xa12 /* Expected LazyIdentifierField */);\n const identifierValue = identifier.value;\n const localNodeKey = identifier.context.nodeKeyManager.tryLocalizeNodeKey(identifierValue);\n return localNodeKey !== undefined ? extractFromOpaque(localNodeKey) : identifierValue;\n }\n default:\n throw new UsageError(\"shortId() may not be called on a node with more than one identifier. Consider converting extraneous identifier fields to string fields.\");\n }\n },\n};\n/**\n * Returns a schema for a value if the value is a {@link TreeNode} or a {@link TreeLeafValue}.\n * Returns undefined for other values.\n */\nexport function tryGetSchema(value) {\n switch (typeof value) {\n case \"string\":\n return stringSchema;\n case \"number\":\n return numberSchema;\n case \"boolean\":\n return booleanSchema;\n case \"object\": {\n if (isTreeNode(value)) {\n // This case could be optimized, for example by placing the simple schema in a symbol on tree nodes.\n return tryGetTreeNodeSchema(value);\n }\n if (value === null) {\n return nullSchema;\n }\n if (isFluidHandle(value)) {\n return handleSchema;\n }\n }\n default:\n return undefined;\n }\n}\n/**\n * Gets the stored key with which the provided node is associated in the parent.\n */\nfunction getStoredKey(node) {\n // Note: the flex domain strictly works with \"stored keys\", and knows nothing about the developer-facing\n // \"view keys\".\n const parentField = getOrCreateInnerNode(node).parentField;\n if (parentField.parent.schema.kind.multiplicity === Multiplicity.Sequence) {\n // The parent of `node` is an array node\n return parentField.index;\n }\n // The parent of `node` is an object, a map, or undefined. If undefined, then `node` is a root/detached node.\n return parentField.parent.key;\n}\n/**\n * Given a node schema, gets the view key corresponding with the provided {@link FieldProps.key | stored key}.\n */\nfunction getViewKeyFromStoredKey(schema, storedKey) {\n // Only object nodes have the concept of a \"stored key\", differentiated from the developer-facing \"view key\".\n // For any other kind of node, the stored key and the view key are the same.\n if (schema.kind !== NodeKind.Object) {\n return storedKey;\n }\n const fields = schema.info;\n // Invariants:\n // - The set of all view keys under an object must be unique.\n // - The set of all stored keys (including those implicitly created from view keys) must be unique.\n // To find the view key associated with the provided stored key, first check for any stored key matches (which are optionally populated).\n // If we don't find any, then search for a matching view key.\n for (const [viewKey, fieldSchema] of Object.entries(fields)) {\n if (fieldSchema instanceof FieldSchema && fieldSchema.props?.key === storedKey) {\n return viewKey;\n }\n }\n if (fields[storedKey] === undefined) {\n fail(\"Existing stored key should always map to a view key\");\n }\n return storedKey;\n}\n//# sourceMappingURL=treeNodeApi.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This file exists and is package exported to aid in testing of exporting recursive types across package boundaries.\n * Sometimes when TypeScript generates d.ts files, they type check significantly differently than the original source (One example of this: https://github.com/microsoft/TypeScript/issues/20979).\n * Unfortunately our recursive schema types are an example of types that have this kind of issue: the d.ts files tend to get \"any\" instead of the recursive type reference.\n * Currently we do not have tooling in place to test this in our test suite, and exporting these types here is a temporary crutch to aid in diagnosing this issue.\n */\nimport { SchemaFactory } from \"./schemaFactory.js\";\nconst builder = new SchemaFactory(\"Test Recursive Domain\");\n/**\n * To make API-Extractor happy, the base type has to be exported in addition to the actual schema class.\n * Ideally this would be inlined into the class definition below.\n *\n * TODO:\n * Fix API-Extractor to support class based schema, and remove this workaround (inline this type into `RecursiveObject extends` below).\n * Error: src/class-tree/testRecursiveDomain.ts:32:1 - (ae-forgotten-export) The symbol \"RecursiveObject_base\" needs to be exported by the entry point index.d.ts\n * See https://github.com/microsoft/rushstack/issues/4429\n * @internal\n */\nexport const base = builder.objectRecursive(\"testObject\", {\n recursive: builder.optionalRecursive([() => RecursiveObject]),\n number: builder.number,\n});\n/**\n * @internal\n */\nexport class RecursiveObject extends base {\n}\n/**\n * Due to https://github.com/microsoft/TypeScript/issues/55832 this is expected to compile to a d.ts file which contain `any`, and therefore the other (above) approach using class definitions is recommended for recursive schema.\n * See {@link SchemaFactory} for documentation covering this detail.\n * @internal\n */\nexport const RecursiveObjectPojoMode = builder.objectRecursive(\"testPOJOObject\", {\n recursive: builder.optionalRecursive([() => RecursiveObjectPojoMode]),\n number: builder.number,\n});\n//# sourceMappingURL=testRecursiveDomain.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { ValueSchema } from \"../core/index.js\";\nimport { getOrCreate } from \"../util/index.js\";\nimport { FieldKind } from \"./schemaTypes.js\";\nimport { NodeKind } from \"./core/index.js\";\n/**\n * Generates a JSON Schema representation from a simple tree schema.\n * @internal\n */\nexport function toJsonSchema(schema) {\n const definitions = convertDefinitions(schema.definitions);\n const anyOf = [];\n for (const allowedType of schema.allowedTypes) {\n anyOf.push(createSchemaRef(allowedType));\n }\n return {\n $defs: definitions,\n anyOf,\n };\n}\nfunction convertDefinitions(definitions) {\n const result = {};\n for (const [key, value] of definitions) {\n result[key] = convertNodeSchema(value);\n }\n return result;\n}\n/**\n * Private symbol under which the results of {@link convertNodeSchema} are cached on an input {@link SimpleNodeSchema}.\n */\nconst nodeJsonSchemaCache = new WeakMap();\n/**\n * Converts an input {@link SimpleNodeSchema} to a {@link JsonNodeSchema}.\n *\n * @remarks Caches the result on the input schema for future calls.\n */\nfunction convertNodeSchema(schema) {\n return getOrCreate(nodeJsonSchemaCache, schema, () => {\n switch (schema.kind) {\n case NodeKind.Array:\n return convertArrayNodeSchema(schema);\n case NodeKind.Leaf:\n return convertLeafNodeSchema(schema);\n case NodeKind.Map:\n return convertMapNodeSchema(schema);\n case NodeKind.Object:\n return convertObjectNodeSchema(schema);\n default:\n throw new TypeError(`Unknown node schema kind: ${schema.kind}`);\n }\n });\n}\nfunction convertArrayNodeSchema(schema) {\n const allowedTypes = [];\n schema.allowedTypes.forEach((type) => {\n allowedTypes.push(createSchemaRef(type));\n });\n return {\n type: \"array\",\n _treeNodeSchemaKind: NodeKind.Array,\n items: {\n anyOf: allowedTypes,\n },\n };\n}\nfunction convertLeafNodeSchema(schema) {\n let type;\n switch (schema.leafKind) {\n case ValueSchema.String:\n type = \"string\";\n break;\n case ValueSchema.Number:\n type = \"number\";\n break;\n case ValueSchema.Boolean:\n type = \"boolean\";\n break;\n case ValueSchema.Null:\n type = \"null\";\n break;\n case ValueSchema.FluidHandle:\n throw new UsageError(\"Fluid handles are not supported via JSON Schema.\");\n default:\n unreachableCase(schema.leafKind);\n }\n return {\n type,\n _treeNodeSchemaKind: NodeKind.Leaf,\n };\n}\nfunction convertObjectNodeSchema(schema) {\n const properties = {};\n const required = [];\n for (const [key, value] of Object.entries(schema.fields)) {\n const anyOf = [];\n for (const allowedType of value.allowedTypes) {\n anyOf.push(createSchemaRef(allowedType));\n }\n properties[key] = {\n anyOf,\n };\n if (value.kind === FieldKind.Required) {\n required.push(key);\n }\n }\n return {\n type: \"object\",\n _treeNodeSchemaKind: NodeKind.Object,\n properties,\n required,\n additionalProperties: false,\n };\n}\nfunction convertMapNodeSchema(schema) {\n const allowedTypes = [];\n schema.allowedTypes.forEach((type) => {\n allowedTypes.push(createSchemaRef(type));\n });\n return {\n type: \"object\",\n _treeNodeSchemaKind: NodeKind.Map,\n patternProperties: {\n \"^.*$\": {\n anyOf: allowedTypes,\n },\n },\n };\n}\nfunction createSchemaRef(schemaId) {\n return {\n \"$ref\": createRefPath(schemaId),\n };\n}\nfunction createRefPath(schemaId) {\n return `#/$defs/${schemaId}`;\n}\n//# sourceMappingURL=simpleSchemaToJsonSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { normalizeFieldSchema, } from \"./schemaTypes.js\";\nimport { getOrCreate } from \"../util/index.js\";\nimport { isObjectNodeSchema } from \"./objectNodeTypes.js\";\nimport { NodeKind } from \"./core/index.js\";\n/**\n * Converts a \"view\" schema to a \"simple\" schema representation.\n */\nexport function toSimpleTreeSchema(schema) {\n const normalizedSchema = normalizeFieldSchema(schema);\n const allowedTypes = allowedTypesFromFieldSchema(normalizedSchema);\n const definitions = new Map();\n populateSchemaDefinitionsForField(normalizedSchema, definitions);\n return {\n allowedTypes,\n definitions,\n };\n}\n/**\n * Cache in which the results of {@link toSimpleNodeSchema} are saved.\n */\nconst simpleNodeSchemaCache = new WeakMap();\n/**\n * Creates a {@link SimpleNodeSchema} from a {@link TreeNodeSchema}.\n *\n * @remarks Caches the result on the input schema for future calls.\n */\nfunction toSimpleNodeSchema(schema) {\n return getOrCreate(simpleNodeSchemaCache, schema, () => {\n const kind = schema.kind;\n switch (kind) {\n case NodeKind.Leaf: {\n return leafSchemaToSimpleSchema(schema);\n }\n case NodeKind.Map: {\n return mapSchemaToSimpleSchema(schema);\n }\n case NodeKind.Array: {\n return arraySchemaToSimpleSchema(schema);\n }\n case NodeKind.Object: {\n assert(isObjectNodeSchema(schema), 0xa06 /* Expected object schema */);\n return objectSchemaToSimpleSchema(schema);\n }\n default: {\n unreachableCase(kind);\n }\n }\n });\n}\n// TODO: Use a stronger type for leaf schemas once one is available (see object schema handler for an example).\nfunction leafSchemaToSimpleSchema(schema) {\n return {\n kind: NodeKind.Leaf,\n leafKind: schema.info,\n };\n}\n// TODO: Use a stronger type for array schemas once one is available (see object schema handler for an example).\nfunction arraySchemaToSimpleSchema(schema) {\n const fieldSchema = normalizeFieldSchema(schema.info);\n const allowedTypes = allowedTypesFromFieldSchema(fieldSchema);\n return {\n kind: NodeKind.Array,\n allowedTypes,\n };\n}\n// TODO: Use a stronger type for map schemas once one is available (see object schema handler for an example).\nfunction mapSchemaToSimpleSchema(schema) {\n const fieldSchema = normalizeFieldSchema(schema.info);\n const allowedTypes = allowedTypesFromFieldSchema(fieldSchema);\n return {\n kind: NodeKind.Map,\n allowedTypes,\n };\n}\nfunction objectSchemaToSimpleSchema(schema) {\n const fields = {};\n for (const [key, field] of schema.fields) {\n fields[key] = fieldSchemaToSimpleSchema(field);\n }\n return {\n kind: NodeKind.Object,\n fields,\n };\n}\n/**\n * Private symbol under which the results of {@link toSimpleNodeSchema} are cached on an input {@link TreeNodeSchema}.\n */\nconst simpleFieldSchemaCacheSymbol = Symbol(\"simpleFieldSchemaCache\");\nfunction fieldSchemaToSimpleSchema(schema) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (schema[simpleFieldSchemaCacheSymbol] !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return schema[simpleFieldSchemaCacheSymbol];\n }\n const allowedTypes = allowedTypesFromFieldSchema(schema);\n const result = {\n kind: schema.kind,\n allowedTypes,\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema[simpleFieldSchemaCacheSymbol] = result;\n return result;\n}\nfunction allowedTypesFromFieldSchema(schema) {\n const allowedTypes = new Set();\n for (const type of schema.allowedTypeSet) {\n allowedTypes.add(type.identifier);\n }\n return allowedTypes;\n}\n/**\n * Recursively populates `definitions` by walking the input field schema tree.\n */\nfunction populateSchemaDefinitionsForField(schema, definitions) {\n for (const child of schema.allowedTypeSet) {\n populateSchemaDefinitionsForNode(child, definitions);\n }\n}\n/**\n * Recursively populates `definitions` by walking the input node schema tree.\n */\nfunction populateSchemaDefinitionsForNode(schema, definitions) {\n if (definitions.has(schema.identifier)) {\n // If the definition has already been populated, no need to recurse.\n return;\n }\n // Populate definition for this schema\n definitions.set(schema.identifier, toSimpleNodeSchema(schema));\n // Recurse into children to populate definitions for them\n const kind = schema.kind;\n switch (kind) {\n case NodeKind.Leaf: {\n // Leaf node, so no need to recurse\n break;\n }\n case NodeKind.Map: {\n // TODO: Utilize a map schema type-guard once one exists (see object case for an example).\n // Recursively populate definitions for allowed map children\n const fieldSchema = normalizeFieldSchema(schema.info);\n populateSchemaDefinitionsForField(fieldSchema, definitions);\n break;\n }\n case NodeKind.Array: {\n // TODO: Utilize an array schema type-guard once one exists (see object case for an example).\n // Recursively populate definitions for allowed map children\n const fieldSchema = normalizeFieldSchema(schema.info);\n populateSchemaDefinitionsForField(fieldSchema, definitions);\n break;\n }\n case NodeKind.Object: {\n assert(isObjectNodeSchema(schema), 0xa07 /* Expected object schema */);\n for (const [, field] of schema.fields) {\n populateSchemaDefinitionsForField(field, definitions);\n }\n break;\n }\n default: {\n unreachableCase(kind);\n }\n }\n}\n//# sourceMappingURL=viewSchemaToSimpleSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getOrCreate } from \"../util/index.js\";\nimport { toSimpleTreeSchema } from \"./viewSchemaToSimpleSchema.js\";\n/**\n * Cache in which the results of {@link getSimpleSchema} saved.\n */\nconst simpleSchemaCache = new WeakMap();\n/**\n * Creates a simplified representation of the provided {@link TreeNodeSchema}.\n *\n * @remarks Caches the result on the input schema for future calls.\n *\n * @example\n *\n * A Shared Tree schema like the following:\n *\n * ```typescript\n * class MyObject extends schemaFactory.object(\"MyObject\", {\n * \tfoo: schemaFactory.number,\n * \tbar: schemaFactory.optional(schemaFactory.string),\n * });\n * ```\n *\n * Will yield JSON Schema like the following:\n *\n * ```typescript\n * {\n * \tdefinitions: [\n * \t\t[\"com.fluidframework.leaf.number\", {\n * \t\t\tkind: \"leaf\",\n * \t\t\ttype: \"number\",\n * \t\t}],\n * \t\t[\"com.fluidframework.leaf.string\", {\n * \t\t\tkind: \"leaf\",\n * \t\t\ttype: \"string\",\n * \t\t}],\n * \t\t[\"com.myapp.MyObject\", {\n * \t\t\tkind: \"object\",\n * \t\t\tfields: {\n * \t\t\t\tfoo: {\n * \t\t\t\t\tkind: \"required\",\n * \t\t\t\t\tallowedTypes: [\"com.fluidframework.leaf.number\"]\n * \t\t\t\t},\n * \t\t\t\tbar: {\n * \t\t\t\t\tkind: \"optional\",\n * \t\t\t\t\tallowedTypes: [\"com.fluidframework.leaf.string\"]\n * \t\t\t\t},\n * \t\t\t},\n * \t\t}],\n * \t],\n * \tallowedTypes: [\"com.myapp.MyObject\"],\n * }\n * ```\n *\n * @privateRemarks In the future, we may wish to move this to a more discoverable API location.\n * For now, while still an experimental API, it is surfaced as a free function.\n */\nexport function getSimpleSchema(schema) {\n return getOrCreate(simpleSchemaCache, schema, () => toSimpleTreeSchema(schema));\n}\n//# sourceMappingURL=getSimpleSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { toJsonSchema } from \"./simpleSchemaToJsonSchema.js\";\nimport { getSimpleSchema } from \"./getSimpleSchema.js\";\nimport { getOrCreate } from \"../util/index.js\";\n/**\n * Cache in which the results of {@link getJsonSchema} are saved.\n */\nconst jsonSchemaCache = new WeakMap();\n/**\n * Creates a {@link https://json-schema.org/ | JSON Schema} representation of the provided {@link TreeNodeSchema}.\n *\n * @remarks\n * Useful when communicating the schema to external libraries or services.\n * Caches the result for future calls.\n *\n * @example\n *\n * A Shared Tree schema like the following:\n *\n * ```typescript\n * class MyObject extends schemaFactory.object(\"MyObject\", {\n * \tfoo: schemaFactory.number,\n * \tbar: schemaFactory.optional(schemaFactory.string),\n * });\n * ```\n *\n * Will yield JSON Schema like the following:\n *\n * ```json\n * {\n * \t\"$defs\": {\n * \t\t\"com.fluidframework.leaf.string\": {\n * \t\t\t\"type\": \"string\",\n * \t\t},\n * \t\t\"com.fluidframework.leaf.number\": {\n * \t\t\t\"type\": \"number\",\n * \t\t},\n * \t\t\"com.myapp.MyObject\": {\n * \t\t\t\"type\": \"object\",\n * \t\t\t\"properties\": {\n * \t\t\t\t\"foo\": { \"$ref\": \"com.fluidframework.leaf.number\" },\n * \t\t\t\t\"bar\": { \"$ref\": \"com.fluidframework.leaf.string\" },\n * \t\t\t},\n * \t\t\t\"required\": [\"foo\"],\n * \t\t},\n * \t},\n * \t\"anyOf\": [ { \"$ref\": \"#/$defs/com.myapp.MyObject\" } ],\n * }\n * ```\n *\n * @privateRemarks In the future, we may wish to move this to a more discoverable API location.\n * For now, while still an experimental API, it is surfaced as a free function.\n *\n * @alpha\n */\nexport function getJsonSchema(schema) {\n return getOrCreate(jsonSchemaCache, schema, () => {\n const simpleSchema = getSimpleSchema(schema);\n return toJsonSchema(simpleSchema);\n });\n}\n//# sourceMappingURL=getJsonSchema.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { AllowedUpdateType, Compatibility, rootFieldKey, schemaDataIsEmpty, } from \"../core/index.js\";\nimport { FieldKinds, allowsRepoSuperset, cursorForMapTreeField, defaultSchemaPolicy, intoStoredSchema, mapTreeFromCursor, } from \"../feature-libraries/index.js\";\nimport { fail, isReadonlyArray } from \"../util/index.js\";\n/**\n * Modify `storedSchema` and invoke `setInitialTree` when it's time to set the tree content.\n *\n * Requires `storedSchema` to be in its default/empty state.\n *\n * This is done in such a way that if the content (implicitly assumed to start empty)\n * is never out of schema.\n * This means that if the root field of the new schema requires content (like a value field),\n * a temporary intermediate schema is used so the initial empty state is not out of schema.\n *\n * Since this makes multiple changes, callers may want to wrap it in a transaction.\n */\nexport function initializeContent(schemaRepository, newSchema, setInitialTree) {\n assert(schemaDataIsEmpty(schemaRepository.storedSchema), 0x743 /* cannot initialize after a schema is set */);\n const schema = intoStoredSchema(newSchema);\n const rootSchema = schema.rootFieldSchema;\n const rootKind = rootSchema.kind;\n // To keep the data in schema during the update, first define a schema that tolerates the current (empty) tree as well as the final (initial) tree.\n let incrementalSchemaUpdate;\n if (rootKind === FieldKinds.sequence.identifier ||\n rootKind === FieldKinds.optional.identifier) {\n // These kinds are known to tolerate empty, so use the schema as is:\n incrementalSchemaUpdate = schema;\n }\n else {\n assert(rootKind === FieldKinds.required.identifier, 0x5c8 /* Unexpected kind */);\n // Replace value kind with optional kind in root field schema:\n incrementalSchemaUpdate = {\n nodeSchema: schema.nodeSchema,\n rootFieldSchema: {\n kind: FieldKinds.optional.identifier,\n types: rootSchema.types,\n },\n };\n }\n // TODO: fix issues with schema comparison and enable this.\n // assert(\n // \tallowsRepoSuperset(defaultSchemaPolicy, tree.storedSchema, incrementalSchemaUpdate),\n // \t\"Incremental Schema update should support the existing empty tree\",\n // );\n assert(allowsRepoSuperset(defaultSchemaPolicy, schema, incrementalSchemaUpdate), 0x5c9 /* Incremental Schema during update should be a allow a superset of the final schema */);\n // Update to intermediate schema\n schemaRepository.updateSchema(incrementalSchemaUpdate);\n // Insert initial tree\n setInitialTree();\n // If intermediate schema is not final desired schema, update to the final schema:\n if (incrementalSchemaUpdate !== schema) {\n schemaRepository.updateSchema(schema);\n }\n}\nexport var UpdateType;\n(function (UpdateType) {\n /**\n * Already compatible, no update needed.\n */\n UpdateType[UpdateType[\"None\"] = 0] = \"None\";\n /**\n * Empty: needs initializing.\n */\n UpdateType[UpdateType[\"Initialize\"] = 1] = \"Initialize\";\n /**\n * Schema can be upgraded leaving tree as is.\n */\n UpdateType[UpdateType[\"SchemaCompatible\"] = 2] = \"SchemaCompatible\";\n /**\n * No update currently supported.\n */\n UpdateType[UpdateType[\"Incompatible\"] = 3] = \"Incompatible\";\n})(UpdateType || (UpdateType = {}));\nexport function evaluateUpdate(viewSchema, allowedSchemaModifications, checkout) {\n const compatibility = viewSchema.checkCompatibility(checkout.storedSchema);\n if (compatibility.read === Compatibility.Compatible &&\n compatibility.write === Compatibility.Compatible) {\n // Compatible as is\n return UpdateType.None;\n }\n // eslint-disable-next-line no-bitwise\n if (allowedSchemaModifications & AllowedUpdateType.Initialize && canInitialize(checkout)) {\n return UpdateType.Initialize;\n }\n if (compatibility.read !== Compatibility.Compatible) {\n // Existing stored schema permits trees which are incompatible with the view schema, so schema can not be updated\n return UpdateType.Incompatible;\n }\n assert(compatibility.write === Compatibility.Incompatible, 0x8bd /* unexpected case */);\n assert(compatibility.read === Compatibility.Compatible, 0x8be /* unexpected case */);\n // eslint-disable-next-line no-bitwise\n return allowedSchemaModifications & AllowedUpdateType.SchemaCompatible\n ? UpdateType.SchemaCompatible\n : UpdateType.Incompatible;\n}\nexport function canInitialize(checkout) {\n // Check for empty.\n return checkout.forest.isEmpty && schemaDataIsEmpty(checkout.storedSchema);\n}\nfunction normalizeNewFieldContent(content) {\n if (content === undefined) {\n return cursorForMapTreeField([]);\n }\n if (isReadonlyArray(content)) {\n return cursorForMapTreeField(content.map((c) => mapTreeFromCursor(c)));\n }\n if (content.mode === 1 /* CursorLocationType.Fields */) {\n return content;\n }\n return cursorForMapTreeField([mapTreeFromCursor(content)]);\n}\n/**\n * Initialize a checkout with a schema and tree content.\n * This function should only be called when the tree is uninitialized (no schema or content).\n * @remarks\n *\n * If the proposed schema (from `treeContent`) is not compatible with the emptry tree, this function handles using an intermediate schema\n * which supports the empty tree as well as the final tree content.\n */\nexport function initialize(checkout, treeContent) {\n checkout.transaction.start();\n try {\n initializeContent(checkout, treeContent.schema, () => {\n const field = { field: rootFieldKey, parent: undefined };\n const content = normalizeNewFieldContent(treeContent.initialTree);\n switch (checkout.storedSchema.rootFieldSchema.kind) {\n case FieldKinds.optional.identifier: {\n const fieldEditor = checkout.editor.optionalField(field);\n assert(content.getFieldLength() <= 1, 0x7f4 /* optional field content should normalize at most one item */);\n fieldEditor.set(content.getFieldLength() === 0 ? undefined : content, true);\n break;\n }\n case FieldKinds.sequence.identifier: {\n const fieldEditor = checkout.editor.sequenceField(field);\n // TODO: should do an idempotent edit here.\n fieldEditor.insert(0, content);\n break;\n }\n default: {\n fail(\"unexpected root field kind during initialize\");\n }\n }\n });\n }\n finally {\n checkout.transaction.commit();\n }\n}\n/**\n * Ensure a {@link ITreeCheckout} can be used with a given {@link ViewSchema}.\n *\n * @remarks\n * It is up to the caller to ensure that compatibility is reevaluated if the checkout's stored schema is edited in the future.\n *\n * @param viewSchema - View schema that `checkout` should be made compatible with.\n * @param allowedSchemaModifications - Flags enum describing the ways this is allowed to modify `checkout`.\n * @param checkout - To be modified as needed to be compatible with `viewSchema`.\n * @param treeContent - Content to be used to initialize `checkout`'s the tree if needed and allowed.\n * @returns true iff checkout now is compatible with `viewSchema`.\n */\nexport function ensureSchema(viewSchema, allowedSchemaModifications, checkout, treeContent) {\n let possibleModifications = allowedSchemaModifications;\n if (treeContent === undefined) {\n // Clear bit for Initialize if initial tree is not provided.\n // eslint-disable-next-line no-bitwise\n possibleModifications &= ~AllowedUpdateType.Initialize;\n }\n const updatedNeeded = evaluateUpdate(viewSchema, possibleModifications, checkout);\n switch (updatedNeeded) {\n case UpdateType.None: {\n return true;\n }\n case UpdateType.Incompatible: {\n return false;\n }\n case UpdateType.SchemaCompatible: {\n checkout.updateSchema(intoStoredSchema(viewSchema.schema));\n return true;\n }\n case UpdateType.Initialize: {\n if (treeContent === undefined) {\n return false;\n }\n // TODO:\n // When this becomes a more proper out of schema adapter, editing should be made lazy.\n // This will improve support for readonly documents, cross version collaboration and attribution.\n initialize(checkout, treeContent);\n return true;\n }\n default: {\n unreachableCase(updatedNeeded);\n }\n }\n}\n/**\n * Options used to initialize (if needed) and schematize a `SharedTree`.\n * @remarks\n * Using this builder improves type safety and error quality over just constructing the configuration as a object.\n */\nexport function buildTreeConfiguration(config) {\n return config;\n}\n//# sourceMappingURL=schematizeTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getTreeContext, } from \"../feature-libraries/index.js\";\nimport { tryDisposeTreeNode } from \"../simple-tree/index.js\";\nimport { disposeSymbol } from \"../util/index.js\";\n/**\n * Implementation of FlexTreeView wrapping a ITreeCheckout.\n */\nexport class CheckoutFlexTreeView {\n constructor(checkout, schema, nodeKeyManager, onDispose) {\n this.checkout = checkout;\n this.schema = schema;\n this.nodeKeyManager = nodeKeyManager;\n this.onDispose = onDispose;\n this.context = getTreeContext(schema, this.checkout, nodeKeyManager);\n contextToTreeView.set(this.context, this);\n this.flexTree = this.context.root;\n }\n [disposeSymbol]() {\n for (const anchorNode of this.checkout.forest.anchors) {\n tryDisposeTreeNode(anchorNode);\n }\n this.context[disposeSymbol]();\n this.onDispose?.();\n }\n fork() {\n const branch = this.checkout.fork();\n return new CheckoutFlexTreeView(branch, this.schema, this.nodeKeyManager);\n }\n}\n/**\n * Maps the context of every {@link CheckoutFlexTreeView} to the view.\n * In practice, this allows the view or checkout to be obtained from a flex node by first getting the context from the flex node and then using this map.\n */\nexport const contextToTreeView = new WeakMap();\n//# sourceMappingURL=treeView.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { AllowedUpdateType, Compatibility } from \"../core/index.js\";\nimport { createEmitter, } from \"../events/index.js\";\nimport { ViewSchema, defaultSchemaPolicy, ContextSlot, cursorForMapTreeNode, } from \"../feature-libraries/index.js\";\nimport { getTreeNodeForField, toFlexSchema, setField, normalizeFieldSchema, mapTreeFromNodeData, prepareContentForHydration, } from \"../simple-tree/index.js\";\nimport { Breakable, breakingClass, disposeSymbol } from \"../util/index.js\";\nimport { canInitialize, ensureSchema, initialize } from \"./schematizeTree.js\";\nimport { CheckoutFlexTreeView } from \"./treeView.js\";\n/**\n * Implementation of TreeView wrapping a FlexTreeView.\n */\nlet SchematizingSimpleTreeView = (() => {\n let _classDecorators = [breakingClass];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n var SchematizingSimpleTreeView = _classThis = class {\n constructor(checkout, config, nodeKeyManager, breaker = new Breakable(\"SchematizingSimpleTreeView\")) {\n this.checkout = checkout;\n this.config = config;\n this.nodeKeyManager = nodeKeyManager;\n this.breaker = breaker;\n this.events = createEmitter();\n this.unregisterCallbacks = new Set();\n this.disposed = false;\n /**\n * This is set to true while an edit impacting the document schema is in progress.\n * This allows suppressing extra rootChanged / schemaChanged events until the edit concludes.\n * This is useful especially for some initialization edits, since document initialization can involve transient schemas\n * which are implementation details and should not be exposed to the user.\n */\n this.midUpgrade = false;\n const policy = {\n ...defaultSchemaPolicy,\n validateSchema: config.enableSchemaValidation,\n };\n this.rootFieldSchema = normalizeFieldSchema(config.schema);\n this.flexSchema = toFlexSchema(config.schema);\n this.viewSchema = new ViewSchema(policy, {}, this.flexSchema);\n // This must be initialized before `update` can be called.\n this.currentCompatibility = {\n canView: false,\n canUpgrade: true,\n isEquivalent: false,\n canInitialize: true,\n };\n this.update();\n this.unregisterCallbacks.add(this.checkout.events.on(\"commitApplied\", (data, getRevertible) => this.events.emit(\"commitApplied\", data, getRevertible)));\n }\n initialize(content) {\n this.ensureUndisposed();\n const compatibility = this.compatibility;\n if (!compatibility.canInitialize) {\n throw new UsageError(\"Tree cannot be initialized more than once.\");\n }\n this.runSchemaEdit(() => {\n const mapTree = mapTreeFromNodeData(content, this.rootFieldSchema, this.nodeKeyManager, {\n schema: this.checkout.storedSchema,\n policy: {\n ...defaultSchemaPolicy,\n validateSchema: this.config.enableSchemaValidation,\n },\n });\n prepareContentForHydration(mapTree, this.checkout.forest);\n initialize(this.checkout, {\n schema: this.flexSchema,\n initialTree: mapTree === undefined ? undefined : cursorForMapTreeNode(mapTree),\n });\n });\n }\n upgradeSchema() {\n this.ensureUndisposed();\n const compatibility = this.compatibility;\n if (compatibility.isEquivalent) {\n // No-op\n return;\n }\n if (!compatibility.canUpgrade) {\n throw new UsageError(\"Existing stored schema can not be upgraded (see TreeView.compatibility.canUpgrade).\");\n }\n this.runSchemaEdit(() => {\n const result = ensureSchema(this.viewSchema, AllowedUpdateType.SchemaCompatible, this.checkout, {\n schema: this.flexSchema,\n initialTree: undefined,\n });\n assert(result, 0x8bf /* Schema upgrade should always work if canUpgrade is set. */);\n });\n }\n /**\n * Gets the view. Throws when disposed.\n */\n getView() {\n this.ensureUndisposed();\n assert(this.view !== undefined, 0x8c0 /* unexpected getViewOrError */);\n return this.view;\n }\n ensureUndisposed() {\n if (this.disposed) {\n this.failDisposed();\n }\n }\n failDisposed() {\n throw new UsageError(\"Accessed a disposed TreeView.\");\n }\n /**\n * Updates `this.view` and the current compatibility status.\n * Invoked during initialization and when `this.view` needs to be replaced due to stored schema changes.\n * Handles re-registering for events to call update in the future.\n * @remarks\n * This does not check if the view needs to be replaced, it replaces it unconditionally:\n * callers should do any checking to detect if it's really needed before calling `update`.\n * @privateRemarks\n * This implementation avoids making any edits, which prevents it from being invoked reentrantly.\n * If implicit initialization (or some other edit) is desired, it should be done outside of this method.\n */\n update() {\n this.disposeView();\n const result = this.viewSchema.checkCompatibility(this.checkout.storedSchema);\n // TODO: AB#8121: Weaken this check to support viewing under additional circumstances.\n // In the near term, this should support viewing documents with additional optional fields in their schema on object types.\n // Longer-term (as demand arises), we could also add APIs to constructing view schema to allow for more flexibility\n // (e.g. out-of-schema content handlers could allow support for viewing docs which have extra allowed types in a particular field)\n const canView = result.write === Compatibility.Compatible && result.read === Compatibility.Compatible;\n const canUpgrade = result.read === Compatibility.Compatible;\n const isEquivalent = canView && canUpgrade;\n const compatibility = {\n canView,\n canUpgrade,\n isEquivalent,\n canInitialize: canInitialize(this.checkout),\n };\n let lastRoot = this.compatibility.canView && this.view !== undefined ? this.root : undefined;\n this.currentCompatibility = compatibility;\n if (compatibility.canView) {\n // Trigger \"rootChanged\" if the root changes in the future.\n // Currently there is no good way to do this as FlexTreeField has no events for changes.\n // this.view.flexTree.on(????)\n // As a workaround for the above, trigger \"rootChanged\" in \"afterBatch\"\n // which isn't the correct time since we normally do events during the batch when the forest is modified, but its better than nothing.\n // TODO: provide a better event: this.view.flexTree.on(????)\n const cleanupCheckOutEvents = this.checkout.events.on(\"afterBatch\", () => {\n // In the initialization flow, this event is raised before the correct compatibility w.r.t the new schema is calculated.\n // Accessing `this.root` in that case can throw. It's OK to ignore this because:\n // - The rootChanged event will already be raised at the end of the current upgrade\n // - It doesn't matter that `lastRoot` isn't updated in this case, because `update` will be called again before the upgrade\n // completes (at which point this callback and the `lastRoot` captured here will be out of scope anyway)\n if (!this.midUpgrade && lastRoot !== this.root) {\n lastRoot = this.root;\n this.events.emit(\"rootChanged\");\n }\n });\n const onViewDispose = () => {\n cleanupCheckOutEvents();\n this.view = undefined;\n if (!this.disposed) {\n this.update();\n }\n };\n this.view = requireSchema(this.checkout, this.viewSchema, onViewDispose, this.nodeKeyManager);\n }\n else {\n this.view = undefined;\n const unregister = this.checkout.storedSchema.on(\"afterSchemaChange\", () => {\n unregister();\n this.unregisterCallbacks.delete(unregister);\n this.update();\n });\n this.unregisterCallbacks.add(unregister);\n }\n if (!this.midUpgrade) {\n this.events.emit(\"schemaChanged\");\n this.events.emit(\"rootChanged\");\n }\n }\n runSchemaEdit(edit) {\n this.midUpgrade = true;\n try {\n edit();\n }\n finally {\n this.midUpgrade = false;\n }\n this.events.emit(\"schemaChanged\");\n this.events.emit(\"rootChanged\");\n }\n disposeView() {\n if (this.view !== undefined) {\n this.view[disposeSymbol]();\n this.view = undefined;\n this.unregisterCallbacks.forEach((unregister) => unregister());\n }\n }\n get compatibility() {\n if (!this.currentCompatibility) {\n this.failDisposed();\n }\n return this.currentCompatibility;\n }\n dispose() {\n this.disposed = true;\n this.disposeView();\n this.currentCompatibility = undefined;\n }\n get root() {\n this.breaker.use();\n if (!this.compatibility.canView) {\n throw new UsageError(\"Document is out of schema. Check TreeView.compatibility before accessing TreeView.root.\");\n }\n const view = this.getView();\n return getTreeNodeForField(view.flexTree);\n }\n set root(newRoot) {\n this.breaker.use();\n if (!this.compatibility.canView) {\n throw new UsageError(\"Document is out of schema. Check TreeView.compatibility before accessing TreeView.root.\");\n }\n const view = this.getView();\n setField(view.context.root, this.rootFieldSchema, newRoot);\n }\n };\n __setFunctionName(_classThis, \"SchematizingSimpleTreeView\");\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n SchematizingSimpleTreeView = _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n })();\n return SchematizingSimpleTreeView = _classThis;\n})();\nexport { SchematizingSimpleTreeView };\n/**\n * Creates a view that self-disposes whenenever the stored schema changes.\n * This may only be called when the schema is already known to be compatible (typically via ensureSchema).\n */\nexport function requireSchema(checkout, viewSchema, onDispose, nodeKeyManager) {\n const slots = checkout.forest.anchors.slots;\n assert(!slots.has(ContextSlot), 0x8c2 /* Cannot create second view from checkout */);\n {\n const compatibility = viewSchema.checkCompatibility(checkout.storedSchema);\n assert(compatibility.write === Compatibility.Compatible &&\n compatibility.read === Compatibility.Compatible, 0x8c3 /* requireSchema invoked with incompatible schema */);\n }\n const view = new CheckoutFlexTreeView(checkout, viewSchema.schema, nodeKeyManager, onDispose);\n assert(slots.has(ContextSlot), 0x90d /* Context should be tracked in slot */);\n const unregister = checkout.storedSchema.on(\"afterSchemaChange\", () => {\n unregister();\n view[disposeSymbol]();\n });\n return view;\n}\n//# sourceMappingURL=schematizingTreeView.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Type } from \"@sinclair/typebox\";\nimport { JsonCompatibleReadOnlySchema } from \"../util/index.js\";\nexport const EncodedSharedTreeInnerChange = Type.Object({\n schema: Type.Optional(JsonCompatibleReadOnlySchema),\n data: Type.Optional(JsonCompatibleReadOnlySchema),\n});\nexport const EncodedSharedTreeChange = Type.Array(EncodedSharedTreeInnerChange);\n//# sourceMappingURL=sharedTreeChangeFormat.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DiscriminatedUnionDispatcher, makeCodecFamily, withSchemaValidation, } from \"../codec/index.js\";\nimport { defaultSchemaPolicy, makeSchemaChangeCodecs, } from \"../feature-libraries/index.js\";\nimport { EncodedSharedTreeChange, } from \"./sharedTreeChangeFormat.js\";\nexport function makeSharedTreeChangeCodecFamily(modularChangeCodecFamily, options) {\n const schemaChangeCodecs = makeSchemaChangeCodecs(options);\n return makeCodecFamily([\n [\n 1,\n makeSharedTreeChangeCodec(modularChangeCodecFamily.resolve(1).json, schemaChangeCodecs.resolve(1).json, options),\n ],\n [\n 2,\n makeSharedTreeChangeCodec(modularChangeCodecFamily.resolve(2).json, schemaChangeCodecs.resolve(1).json, options),\n ],\n [\n 3,\n makeSharedTreeChangeCodec(modularChangeCodecFamily.resolve(3).json, schemaChangeCodecs.resolve(1).json, options),\n ],\n [\n 4,\n makeSharedTreeChangeCodec(modularChangeCodecFamily.resolve(4).json, schemaChangeCodecs.resolve(1).json, options),\n ],\n ]);\n}\nfunction makeSharedTreeChangeCodec(modularChangeCodec, schemaChangeCodec, codecOptions) {\n const decoderLibrary = new DiscriminatedUnionDispatcher({\n data(encoded, context) {\n return {\n type: \"data\",\n innerChange: modularChangeCodec.decode(encoded, context),\n };\n },\n schema(encoded) {\n return {\n type: \"schema\",\n innerChange: schemaChangeCodec.decode(encoded),\n };\n },\n });\n return withSchemaValidation(EncodedSharedTreeChange, {\n encode: (change, context) => {\n const changes = [];\n let updatedSchema;\n for (const decodedChange of change.changes) {\n if (decodedChange.type === \"data\") {\n const schemaAndPolicy = updatedSchema !== undefined\n ? {\n policy: context.schema !== undefined\n ? context.schema.policy\n : defaultSchemaPolicy,\n schema: updatedSchema,\n }\n : context.schema;\n changes.push({\n data: modularChangeCodec.encode(decodedChange.innerChange, {\n originatorId: context.originatorId,\n schema: schemaAndPolicy,\n idCompressor: context.idCompressor,\n revision: context.revision,\n }),\n });\n }\n else if (decodedChange.type === \"schema\") {\n changes.push({\n schema: schemaChangeCodec.encode(decodedChange.innerChange),\n });\n updatedSchema = decodedChange.innerChange.schema.new;\n }\n }\n return changes;\n },\n decode: (encodedChange, context) => {\n const changes = [];\n for (const subChange of encodedChange) {\n changes.push(decoderLibrary.dispatch(subChange, context));\n }\n return { changes };\n },\n }, codecOptions.jsonValidator);\n}\n//# sourceMappingURL=sharedTreeChangeCodecs.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DefaultEditBuilder, } from \"../feature-libraries/index.js\";\n/**\n * Implementation of {@link IDefaultEditBuilder} based on the default set of supported field kinds.\n * @sealed\n */\nexport class SharedTreeEditBuilder extends DefaultEditBuilder {\n constructor(modularChangeFamily, changeReceiver) {\n super(modularChangeFamily, (change) => changeReceiver({\n changes: [{ type: \"data\", innerChange: change }],\n }));\n this.changeReceiver = changeReceiver;\n this.schema = {\n setStoredSchema: (oldSchema, newSchema) => {\n this.changeReceiver({\n changes: [\n {\n type: \"schema\",\n innerChange: {\n schema: { new: newSchema, old: oldSchema },\n isInverse: false,\n },\n },\n ],\n });\n },\n };\n }\n}\n//# sourceMappingURL=sharedTreeEditBuilder.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { mapTaggedChange, } from \"../core/index.js\";\nimport { ModularChangeFamily, fieldKindConfigurations, fieldKinds, makeModularChangeCodecFamily, } from \"../feature-libraries/index.js\";\nimport { addToNestedSet, fail, nestedSetContains, } from \"../util/index.js\";\nimport { makeSharedTreeChangeCodecFamily } from \"./sharedTreeChangeCodecs.js\";\nimport { SharedTreeEditBuilder } from \"./sharedTreeEditBuilder.js\";\n/**\n * Implementation of {@link ChangeFamily} that combines edits to fields and schema changes.\n *\n * @sealed\n */\nexport class SharedTreeChangeFamily {\n constructor(revisionTagCodec, fieldBatchCodec, codecOptions, chunkCompressionStrategy) {\n const modularChangeCodec = makeModularChangeCodecFamily(fieldKindConfigurations, revisionTagCodec, fieldBatchCodec, codecOptions, chunkCompressionStrategy);\n this.modularChangeFamily = new ModularChangeFamily(fieldKinds, modularChangeCodec);\n this.codecs = makeSharedTreeChangeCodecFamily(this.modularChangeFamily.codecs, codecOptions);\n }\n buildEditor(changeReceiver) {\n return new SharedTreeEditBuilder(this.modularChangeFamily, changeReceiver);\n }\n compose(changes) {\n const newChanges = [];\n const dataChangeRun = [];\n const flushDataChangeRun = () => {\n if (dataChangeRun.length > 0) {\n newChanges.push({\n type: \"data\",\n innerChange: this.modularChangeFamily.compose(dataChangeRun),\n });\n dataChangeRun.length = 0;\n }\n };\n for (const topChange of changes) {\n for (const change of topChange.change.changes) {\n if (change.type === \"schema\") {\n flushDataChangeRun();\n newChanges.push(change);\n }\n else {\n dataChangeRun.push(mapTaggedChange(topChange, change.innerChange));\n }\n }\n }\n flushDataChangeRun();\n return { changes: newChanges };\n }\n invert(change, isRollback) {\n const invertInnerChange = (innerChange) => {\n switch (innerChange.type) {\n case \"data\":\n return {\n type: \"data\",\n innerChange: this.modularChangeFamily.invert(mapTaggedChange(change, innerChange.innerChange), isRollback),\n };\n case \"schema\": {\n return {\n type: \"schema\",\n innerChange: {\n schema: {\n new: innerChange.innerChange.schema.old,\n old: innerChange.innerChange.schema.new,\n },\n isInverse: true,\n },\n };\n }\n default:\n fail(\"Unknown SharedTree change type.\");\n }\n };\n return {\n changes: change.change.changes.map(invertInnerChange).reverse(),\n };\n }\n rebase(change, over, revisionMetadata) {\n if (change.change.changes.length === 0 || over.change.changes.length === 0) {\n return change.change;\n }\n if (hasSchemaChange(change.change) || hasSchemaChange(over.change)) {\n // Any SharedTreeChange (a list of sub-changes) that contains a schema change will cause ANY change that rebases over it to conflict.\n // Similarly, any SharedTreeChange containing a schema change will fail to rebase over ANY change.\n // Those two combine to mean: no concurrency with schema changes is supported.\n // This is fine because it's an open problem. Example: a tree with an A at the root and a schema that allows an A | B at the root will\n // become out of schema if a schema changes to restrict root types to just A is concurrent with a data change that sets it to a B.\n // We don't have an efficient way to detect this document-wide and there are varying opinions on restricting schema changes to prevent this.\n // A SharedTreeChange containing a schema change will NOT conflict in a non-concurrency case, as the \"meatless sandwich\" optimization\n // will result in rebase never being called.\n return SharedTreeChangeFamily.emptyChange;\n }\n assert(change.change.changes.length === 1 && over.change.changes.length === 1, 0x884 /* SharedTreeChange should have exactly one inner change if no schema change is present. */);\n const dataChangeIntention = change.change.changes[0] ?? oob();\n const dataChangeOver = over.change.changes[0] ?? oob();\n assert(dataChangeIntention.type === \"data\" && dataChangeOver.type === \"data\", 0x885 /* Data change should be present. */);\n return {\n changes: [\n {\n type: \"data\",\n innerChange: this.modularChangeFamily.rebase(mapTaggedChange(change, dataChangeIntention.innerChange), mapTaggedChange(over, dataChangeOver.innerChange), revisionMetadata),\n },\n ],\n };\n }\n changeRevision(change, newRevision, rollbackOf) {\n return {\n changes: change.changes.map((inner) => {\n return inner.type === \"data\"\n ? {\n ...inner,\n innerChange: this.modularChangeFamily.rebaser.changeRevision(inner.innerChange, newRevision, rollbackOf),\n }\n : inner;\n }),\n };\n }\n get rebaser() {\n return this;\n }\n}\nSharedTreeChangeFamily.emptyChange = {\n changes: [],\n};\nexport function hasSchemaChange(change) {\n return change.changes.some((innerChange) => innerChange.type === \"schema\");\n}\nfunction mapDataChanges(change, map) {\n return {\n changes: change.changes.map((dataOrSchemaChange) => {\n if (dataOrSchemaChange.type === \"data\") {\n return {\n type: \"data\",\n innerChange: map(dataOrSchemaChange.innerChange),\n };\n }\n return dataOrSchemaChange;\n }),\n };\n}\n/**\n * Produces an equivalent change with an updated set of appropriate refreshers.\n * @param change - The change to compute refreshers for. Not mutated.\n * @param getDetachedNode - retrieves a {@link TreeChunk} for the corresponding detached node id.\n * Is expected to read from a forest in a state that corresponds to the input context of the given change.\n * @returns An equivalent change with an updated set of appropriate refreshers.\n */\nexport function updateRefreshers(change, getDetachedNode, relevantRemovedRootsFromDataChange, updateDataChangeRefreshers) {\n // Adding refreshers to a SharedTreeChange is not as simple as adding refreshers to each of its data changes.\n // This is because earlier data changes affect the state of the forest in ways that can influence the refreshers\n // needed for later data changes. This can happen in two ways:\n // 1. By removing a tree that is a relevant root to a later data change.\n // 2. By changing the contents of a tree that is a relevant root to a later data change.\n // (Note that these two cases can compound)\n // Thankfully, in both of these cases, refreshers can be omitted from the later data changes because the forest\n // applying those data changes is guaranteed to still have have the relevant trees in memory.\n // This means that for the first data change, all required refreshers should be added (and none should be missing).\n // While for later data changes, we should not include refreshers that either:\n // A) were already included in the earlier data changes\n // B) correspond to trees that were removed by earlier data changes\n // Set A is excluded by tracking which roots have already been included in the earlier data changes, and filtering\n // them out from the relevant removed roots.\n // Set B is excluded because the `getDetachedNode` is bound to return `undefined` for them, which tell\n // `defaultUpdateRefreshers` to ignore. One downside of this approach is that it prevents `defaultUpdateRefreshers`\n // from detecting cases where a detached node is missing for another reason (which would be a bug).\n // The roots that have been included as refreshers across all data changes so far.\n const includedRoots = new Map();\n function getAndRememberDetachedNode(id) {\n addToNestedSet(includedRoots, id.major, id.minor);\n return getDetachedNode(id);\n }\n function* filterIncludedRoots(toFilter) {\n for (const id of toFilter) {\n if (!nestedSetContains(includedRoots, id.major, id.minor)) {\n yield id;\n }\n }\n }\n let isFirstDataChange = true;\n return mapDataChanges(change, (dataChange) => {\n const removedRoots = relevantRemovedRootsFromDataChange(dataChange);\n if (isFirstDataChange) {\n isFirstDataChange = false;\n return updateDataChangeRefreshers(dataChange, getAndRememberDetachedNode, removedRoots, true);\n }\n else {\n return updateDataChangeRefreshers(dataChange, getAndRememberDetachedNode, filterIncludedRoots(removedRoots), false);\n }\n });\n}\n//# sourceMappingURL=sharedTreeChangeFamily.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { AnchorSet, tagChange, visitDelta, } from \"../core/index.js\";\nimport { chunkTree, defaultChunkPolicy, intoDelta, relevantRemovedRoots, updateRefreshers as updateDataChangeRefreshers, } from \"../feature-libraries/index.js\";\nimport { disposeSymbol } from \"../util/index.js\";\nimport { updateRefreshers } from \"./sharedTreeChangeFamily.js\";\nexport class SharedTreeReadonlyChangeEnricher {\n /**\n * @param forest - The state based on which to enrich changes.\n * Exclusively owned by the constructed instance.\n * @param schema - The schema that corresponds to the forest.\n * @param removedRoots - The set of removed roots based on which to enrich changes.\n * Exclusively owned by the constructed instance.\n */\n constructor(forest, schema, removedRoots) {\n this.forest = forest;\n this.schema = schema;\n this.removedRoots = removedRoots;\n this.getDetachedRoot = (id) => {\n const root = this.removedRoots.tryGetEntry(id);\n if (root !== undefined) {\n const cursor = this.forest.getCursorAboveDetachedFields();\n const parentField = this.removedRoots.toFieldKey(root);\n cursor.enterField(parentField);\n cursor.enterNode(0);\n return chunkTree(cursor, defaultChunkPolicy);\n }\n return undefined;\n };\n }\n fork() {\n return new SharedTreeMutableChangeEnricher(this.forest.clone(this.schema, new AnchorSet()), this.schema, this.removedRoots.clone());\n }\n updateChangeEnrichments(change) {\n return updateRefreshers(change, this.getDetachedRoot, relevantRemovedRoots, updateDataChangeRefreshers);\n }\n}\nexport class SharedTreeMutableChangeEnricher extends SharedTreeReadonlyChangeEnricher {\n applyTipChange(change, revision) {\n for (const dataOrSchemaChange of change.changes) {\n const type = dataOrSchemaChange.type;\n switch (type) {\n case \"data\": {\n const delta = intoDelta(tagChange(dataOrSchemaChange.innerChange, revision));\n const visitor = this.forest.acquireVisitor();\n visitDelta(delta, visitor, this.removedRoots, revision);\n visitor.free();\n break;\n }\n case \"schema\":\n // This enricher doesn't need to maintain schema information.\n // Note that the refreshers being generated through `updateChangeEnrichments` will be encoded using\n // the schema that was used in the input context of the data changeset these refreshers are on.\n // See the encoding logic in SharedTreeCore for details.\n break;\n default:\n unreachableCase(type);\n }\n }\n }\n [disposeSymbol]() {\n // TODO: in the future, forest and/or its AnchorSet may require disposal.\n }\n}\n//# sourceMappingURL=sharedTreeChangeEnricher.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport { UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { noopValidator } from \"../codec/index.js\";\nimport { AnchorSet, CommitKind, RevertibleStatus, TreeStoredSchemaRepository, combineVisitors, makeAnonChange, makeDetachedFieldIndex, rebaseChange, tagChange, visitDelta, } from \"../core/index.js\";\nimport { createEmitter, } from \"../events/index.js\";\nimport { buildForest, intoDelta, jsonableTreeFromCursor, makeFieldBatchCodec, } from \"../feature-libraries/index.js\";\nimport { SharedTreeBranch, getChangeReplaceType } from \"../shared-tree-core/index.js\";\nimport { TransactionResult, disposeSymbol, fail } from \"../util/index.js\";\nimport { SharedTreeChangeFamily, hasSchemaChange } from \"./sharedTreeChangeFamily.js\";\n/**\n * Creates a {@link TreeCheckout}.\n * @param args - an object containing optional components that will be used to build the view.\n * Any components not provided will be created by default.\n * @remarks This does not create a {@link SharedTree}, but rather a view with the minimal state\n * and functionality required to implement {@link ITreeCheckout}.\n */\nexport function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, args) {\n const forest = args?.forest ?? buildForest();\n const schema = args?.schema ?? new TreeStoredSchemaRepository();\n const defaultCodecOptions = { jsonValidator: noopValidator };\n const defaultFieldBatchVersion = 1;\n const changeFamily = args?.changeFamily ??\n new SharedTreeChangeFamily(revisionTagCodec, args?.fieldBatchCodec ??\n makeFieldBatchCodec(defaultCodecOptions, defaultFieldBatchVersion), { jsonValidator: noopValidator }, args?.chunkCompressionStrategy);\n const branch = args?.branch ??\n new SharedTreeBranch({\n change: changeFamily.rebaser.compose([]),\n revision: \"root\",\n }, changeFamily, () => idCompressor.generateCompressedId());\n const events = args?.events ?? createEmitter();\n const transaction = new Transaction(branch);\n return new TreeCheckout(transaction, branch, changeFamily, schema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger);\n}\nclass Transaction {\n constructor(branch) {\n this.branch = branch;\n }\n start() {\n this.branch.startTransaction();\n this.branch.editor.enterTransaction();\n }\n commit() {\n this.branch.commitTransaction();\n this.branch.editor.exitTransaction();\n return TransactionResult.Commit;\n }\n abort() {\n this.branch.abortTransaction();\n this.branch.editor.exitTransaction();\n return TransactionResult.Abort;\n }\n inProgress() {\n return this.branch.isTransacting();\n }\n}\n/**\n * An implementation of {@link ITreeCheckoutFork}.\n */\nexport class TreeCheckout {\n constructor(transaction, branch, changeFamily, storedSchema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, removedRoots = makeDetachedFieldIndex(\"repair\", revisionTagCodec, idCompressor), \n /** Optional logger for telemetry. */\n logger) {\n this.transaction = transaction;\n this.branch = branch;\n this.changeFamily = changeFamily;\n this.storedSchema = storedSchema;\n this.forest = forest;\n this.events = events;\n this.mintRevisionTag = mintRevisionTag;\n this.revisionTagCodec = revisionTagCodec;\n this.idCompressor = idCompressor;\n this.removedRoots = removedRoots;\n this.logger = logger;\n this.isDisposed = false;\n /**\n * Set of revertibles maintained for automatic disposal\n */\n this.revertibles = new Set();\n /**\n * Each branch's head commit corresponds to a revertible commit.\n * Maintaining a whole branch ensures the commit graph is not pruned in a way that would prevent the commit from\n * being reverted.\n */\n this.revertibleCommitBranches = new Map();\n /**\n * copies of the removed roots used as snapshots for reverting to previous state when transactions are aborted\n */\n this.removedRootsSnapshots = [];\n // when a transaction is started, take a snapshot of the current state of removed roots\n branch.on(\"transactionStarted\", () => {\n this.removedRootsSnapshots.push(this.removedRoots.clone());\n });\n // when a transaction is committed, the latest snapshot of removed roots can be discarded\n branch.on(\"transactionCommitted\", () => {\n this.removedRootsSnapshots.pop();\n });\n // after a transaction is rolled back, revert removed roots back to the latest snapshot\n branch.on(\"transactionRolledBack\", () => {\n const snapshot = this.removedRootsSnapshots.pop();\n assert(snapshot !== undefined, 0x9ae /* a snapshot for removed roots does not exist */);\n this.removedRoots = snapshot;\n });\n // We subscribe to `beforeChange` rather than `afterChange` here because it's possible that the change is invalid WRT our forest.\n // For example, a bug in the editor might produce a malformed change object and thus applying the change to the forest will throw an error.\n // In such a case we will crash here, preventing the change from being added to the commit graph, and preventing `afterChange` from firing.\n // One important consequence of this is that we will not submit the op containing the invalid change, since op submissions happens in response to `afterChange`.\n branch.on(\"beforeChange\", (event) => {\n if (event.change !== undefined) {\n const revision = event.type === \"replace\"\n ? // Change events will always contain new commits\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.newCommits[event.newCommits.length - 1].revision\n : event.change.revision;\n // Conflicts due to schema will be empty and thus are not applied.\n for (const change of event.change.change.changes) {\n if (change.type === \"data\") {\n const delta = intoDelta(tagChange(change.innerChange, revision));\n this.withCombinedVisitor((visitor) => {\n visitDelta(delta, visitor, this.removedRoots, revision);\n });\n }\n else if (change.type === \"schema\") {\n // Schema changes from a current to a new schema are expected to be backwards compatible.\n // This guarantees that all data in the forest (which is valid before the schema change)\n // is also valid under the new schema.\n // Note however, that such schema changes may in some cases be rolled back:\n // Case 1: A transaction with a schema change may be aborted.\n // The transaction may have made some data changes that would render some trees invalid\n // under the old schema, but these changes will also be rolled back, thereby putting the forest\n // back in the state before the transaction, which is valid under the original (reinstated) schema.\n // Case 2: A branch with a schema change may be rebased such that the schema change (because\n // of a constraint) is no longer applied.\n // Such a branch may contain data changes that would render some trees invalid under the\n // original schema. These data changes may not necessarily be rolled back.\n // They will however be rebased over the rollback of the schema change. This rebasing will\n // ensure that these data changes are muted if they would render some trees invalid under the\n // original (reinstated) schema.\n storedSchema.apply(change.innerChange.schema.new);\n }\n else {\n fail(\"Unknown Shared Tree change type.\");\n }\n }\n this.events.emit(\"afterBatch\");\n }\n if (event.type === \"replace\" && getChangeReplaceType(event) === \"transactionCommit\") {\n const firstCommit = event.newCommits[0] ?? oob();\n const transactionRevision = firstCommit.revision;\n for (const transactionStep of event.removedCommits) {\n this.removedRoots.updateMajor(transactionStep.revision, transactionRevision);\n }\n }\n });\n branch.on(\"commitApplied\", (data) => {\n const commit = branch.getHead();\n const { change, revision } = commit;\n let withinEventContext = true;\n const getRevertible = hasSchemaChange(change)\n ? undefined\n : (onRevertibleDisposed) => {\n if (!withinEventContext) {\n throw new UsageError(\"Cannot get a revertible outside of the context of a commitApplied event.\");\n }\n if (this.revertibleCommitBranches.get(revision) !== undefined) {\n throw new UsageError(\"Cannot generate the same revertible more than once. Note that this can happen when multiple commitApplied event listeners are registered.\");\n }\n const revertibleCommits = this.revertibleCommitBranches;\n const revertible = {\n get status() {\n const revertibleCommit = revertibleCommits.get(revision);\n return revertibleCommit === undefined\n ? RevertibleStatus.Disposed\n : RevertibleStatus.Valid;\n },\n revert: (release = true) => {\n if (revertible.status === RevertibleStatus.Disposed) {\n throw new UsageError(\"Unable to revert a revertible that has been disposed.\");\n }\n const revertMetrics = this.revertRevertible(revision, data.kind);\n this.logger?.sendTelemetryEvent({\n eventName: TreeCheckout.revertTelemetryEventName,\n ...revertMetrics,\n });\n if (release) {\n revertible.dispose();\n }\n },\n dispose: () => {\n if (revertible.status === RevertibleStatus.Disposed) {\n throw new UsageError(\"Unable to dispose a revertible that has already been disposed.\");\n }\n this.disposeRevertible(revertible, revision);\n onRevertibleDisposed?.(revertible);\n },\n };\n this.revertibleCommitBranches.set(revision, branch.fork());\n this.revertibles.add(revertible);\n return revertible;\n };\n this.events.emit(\"commitApplied\", data, getRevertible);\n withinEventContext = false;\n });\n // When the branch is trimmed, we can garbage collect any repair data whose latest relevant revision is one of the\n // trimmed revisions.\n branch.on(\"ancestryTrimmed\", (revisions) => {\n this.withCombinedVisitor((visitor) => {\n revisions.forEach((revision) => {\n // get all the roots last created or used by the revision\n const roots = this.removedRoots.getRootsLastTouchedByRevision(revision);\n // get the detached field for the root and delete it from the removed roots\n for (const root of roots) {\n visitor.destroy(this.removedRoots.toFieldKey(root), 1);\n }\n this.removedRoots.deleteRootsLastTouchedByRevision(revision);\n });\n });\n });\n }\n withCombinedVisitor(fn) {\n const anchorVisitor = this.forest.anchors.acquireVisitor();\n const combinedVisitor = combineVisitors([this.forest.acquireVisitor(), anchorVisitor], [anchorVisitor]);\n fn(combinedVisitor);\n combinedVisitor.free();\n }\n checkNotDisposed() {\n assert(!this.isDisposed, 0x911 /* Invalid operation on a disposed TreeCheckout */);\n }\n get rootEvents() {\n return this.forest.anchors;\n }\n get editor() {\n this.checkNotDisposed();\n return this.branch.editor;\n }\n locate(anchor) {\n this.checkNotDisposed();\n return this.forest.anchors.locate(anchor);\n }\n fork() {\n this.checkNotDisposed();\n const anchors = new AnchorSet();\n const branch = this.branch.fork();\n const storedSchema = this.storedSchema.clone();\n const forest = this.forest.clone(storedSchema, anchors);\n const transaction = new Transaction(branch);\n return new TreeCheckout(transaction, branch, this.changeFamily, storedSchema, forest, createEmitter(), this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this.removedRoots.clone(), this.logger);\n }\n rebase(view) {\n this.checkNotDisposed();\n assert(!view.transaction.inProgress(), 0x9af /* A view cannot be rebased while it has a pending transaction */);\n view.branch.rebaseOnto(this.branch);\n }\n rebaseOnto(view) {\n this.checkNotDisposed();\n view.rebase(this);\n }\n merge(view, disposeView = true) {\n this.checkNotDisposed();\n assert(!this.transaction.inProgress(), 0x9b0 /* Views cannot be merged into a view while it has a pending transaction */);\n while (view.transaction.inProgress()) {\n view.transaction.commit();\n }\n this.branch.merge(view.branch);\n if (disposeView) {\n view[disposeSymbol]();\n }\n }\n updateSchema(newSchema) {\n this.checkNotDisposed();\n this.editor.schema.setStoredSchema(this.storedSchema.clone(), newSchema);\n }\n [disposeSymbol]() {\n this.checkNotDisposed();\n this.isDisposed = true;\n this.purgeRevertibles();\n this.branch.dispose();\n }\n getRemovedRoots() {\n const trees = [];\n const cursor = this.forest.allocateCursor(\"getRemovedRoots\");\n for (const { id, root } of this.removedRoots.entries()) {\n const parentField = this.removedRoots.toFieldKey(root);\n this.forest.moveCursorToPath({ parent: undefined, parentField, parentIndex: 0 }, cursor);\n const tree = jsonableTreeFromCursor(cursor);\n // This method is used for tree consistency comparison.\n const { major, minor } = id;\n const finalizedMajor = major !== undefined ? this.revisionTagCodec.encode(major) : major;\n trees.push([finalizedMajor, minor, tree]);\n }\n cursor.free();\n return trees;\n }\n /**\n * This sets the tip revision as the latest relevant revision for any removed roots that are loaded from a summary.\n * This needs to be called right after loading {@link this.removedRoots} from a summary to allow loaded data to be garbage collected.\n */\n setTipRevisionForLoadedData(revision) {\n this.removedRoots.setRevisionsForLoadedData(revision);\n }\n purgeRevertibles() {\n for (const revertible of this.revertibles) {\n revertible.dispose();\n }\n }\n disposeRevertible(revertible, revision) {\n this.revertibleCommitBranches.get(revision)?.dispose();\n this.revertibleCommitBranches.delete(revision);\n this.revertibles.delete(revertible);\n }\n revertRevertible(revision, kind) {\n if (this.branch.isTransacting()) {\n throw new UsageError(\"Undo is not yet supported during transactions.\");\n }\n const revertibleBranch = this.revertibleCommitBranches.get(revision);\n assert(revertibleBranch !== undefined, 0x7cc /* expected to find a revertible commit */);\n const commitToRevert = revertibleBranch.getHead();\n let change = makeAnonChange(this.changeFamily.rebaser.invert(tagChange(commitToRevert.change, revision), false));\n const headCommit = this.branch.getHead();\n // Rebase the inverted change onto any commits that occurred after the undoable commits.\n if (commitToRevert !== headCommit) {\n change = makeAnonChange(rebaseChange(this.changeFamily.rebaser, change, commitToRevert, headCommit, this.mintRevisionTag).change);\n }\n this.branch.apply(change.change, this.mintRevisionTag(), kind === CommitKind.Default || kind === CommitKind.Redo\n ? CommitKind.Undo\n : CommitKind.Redo);\n // Derive some stats about the reversion to return to the caller.\n let revertAge = 0;\n let currentCommit = headCommit;\n while (commitToRevert.revision !== currentCommit.revision) {\n revertAge++;\n const parentCommit = currentCommit.parent;\n assert(parentCommit !== undefined, 0x9a9 /* expected to find a parent commit */);\n currentCommit = parentCommit;\n }\n return { age: revertAge };\n }\n}\n/**\n * The name of the telemetry event logged for calls to {@link TreeCheckout.revertRevertible}.\n * @privateRemarks Exposed for testing purposes.\n */\nTreeCheckout.revertTelemetryEventName = \"RevertRevertible\";\n/**\n * Run a synchronous transaction on the given shared tree view.\n * This is a convenience helper around the {@link SharedTreeFork#transaction} APIs.\n * @param view - the view on which to run the transaction\n * @param transaction - the transaction function. This will be executed immediately. It is passed `view` as an argument for convenience.\n * If this function returns an `Abort` result then the transaction will be aborted. Otherwise, it will be committed.\n * @returns whether or not the transaction was committed or aborted\n */\nexport function runSynchronous(view, transaction) {\n view.transaction.start();\n const result = transaction(view);\n return result === TransactionResult.Abort\n ? view.transaction.abort()\n : view.transaction.commit();\n}\n//# sourceMappingURL=treeCheckout.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nvar __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { noopValidator } from \"../codec/index.js\";\nimport { RevisionTagCodec, TreeStoredSchemaRepository, makeDetachedFieldIndex, moveToDetachedField, } from \"../core/index.js\";\nimport { createEmitter, } from \"../events/index.js\";\nimport { DetachedFieldIndexSummarizer, ForestSummarizer, SchemaSummarizer, TreeCompressionStrategy, buildChunkedForest, buildForest, createNodeKeyManager, defaultSchemaPolicy, jsonableTreeFromFieldCursor, makeFieldBatchCodec, makeMitigatedChangeFamily, makeTreeChunker, } from \"../feature-libraries/index.js\";\nimport { DefaultResubmitMachine, SharedTreeCore, } from \"../shared-tree-core/index.js\";\nimport { SchematizingSimpleTreeView } from \"./schematizingTreeView.js\";\nimport { SharedTreeReadonlyChangeEnricher } from \"./sharedTreeChangeEnricher.js\";\nimport { SharedTreeChangeFamily } from \"./sharedTreeChangeFamily.js\";\nimport { createTreeCheckout } from \"./treeCheckout.js\";\nimport { breakingClass, throwIfBroken } from \"../util/index.js\";\nconst formatVersionToTopLevelCodecVersions = new Map([\n [\n 1,\n { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 1, message: 1, fieldBatch: 1 },\n ],\n [\n 2,\n { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 2, message: 2, fieldBatch: 1 },\n ],\n [\n 3,\n { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 3, message: 3, fieldBatch: 1 },\n ],\n [\n 4,\n { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 4, message: 4, fieldBatch: 1 },\n ],\n]);\nfunction getCodecVersions(formatVersion) {\n const versions = formatVersionToTopLevelCodecVersions.get(formatVersion);\n assert(versions !== undefined, 0x90e /* Unknown format version */);\n return versions;\n}\n/**\n * Shared tree, configured with a good set of indexes and field kinds which will maintain compatibility over time.\n *\n * TODO: detail compatibility requirements.\n */\nlet SharedTree = (() => {\n let _classDecorators = [breakingClass];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = SharedTreeCore;\n let _instanceExtraInitializers = [];\n let _contentSnapshot_decorators;\n var SharedTree = _classThis = class extends _classSuper {\n get storedSchema() {\n return this.checkout.storedSchema;\n }\n constructor(id, runtime, attributes, optionsParam, telemetryContextPrefix = \"fluid_sharedTree_\") {\n if (runtime.idCompressor === undefined) {\n throw new UsageError(\"IdCompressor must be enabled to use SharedTree\");\n }\n const options = { ...defaultSharedTreeOptions, ...optionsParam };\n const codecVersions = getCodecVersions(options.formatVersion);\n const schema = new TreeStoredSchemaRepository();\n const forest = options.forest === ForestType.Optimized\n ? buildChunkedForest(makeTreeChunker(schema, defaultSchemaPolicy))\n : options.forest === ForestType.Reference\n ? buildForest()\n : buildForest(undefined, true);\n const revisionTagCodec = new RevisionTagCodec(runtime.idCompressor);\n const removedRoots = makeDetachedFieldIndex(\"repair\", revisionTagCodec, runtime.idCompressor, options);\n const schemaSummarizer = new SchemaSummarizer(runtime, schema, options, {\n getCurrentSeq: () => this.deltaManager.lastSequenceNumber,\n });\n const fieldBatchCodec = makeFieldBatchCodec(options, codecVersions.fieldBatch);\n const encoderContext = {\n schema: {\n schema,\n policy: defaultSchemaPolicy,\n },\n encodeType: options.treeEncodeType,\n originatorId: runtime.idCompressor.localSessionId,\n idCompressor: runtime.idCompressor,\n };\n const forestSummarizer = new ForestSummarizer(forest, revisionTagCodec, fieldBatchCodec, encoderContext, options, runtime.idCompressor);\n const removedRootsSummarizer = new DetachedFieldIndexSummarizer(removedRoots);\n const innerChangeFamily = new SharedTreeChangeFamily(revisionTagCodec, fieldBatchCodec, options, options.treeEncodeType);\n const changeFamily = makeMitigatedChangeFamily(innerChangeFamily, SharedTreeChangeFamily.emptyChange, (error) => {\n // TODO:6344 Add telemetry for these errors.\n // Rethrowing the error has a different effect depending on the context in which the\n // ChangeFamily was invoked:\n // - If the ChangeFamily was invoked as part of incoming op processing, rethrowing the error\n // will cause the runtime to disconnect the client, log a severe error, and not reconnect.\n // This will not cause the host application to crash because it is not on the stack at that time.\n // TODO: let the host application know that the client is now disconnected.\n // - If the ChangeFamily was invoked as part of dealing with a local change, rethrowing the\n // error will cause the host application to crash. This is not ideal, but is better than\n // letting the application either send an invalid change to the server or allowing the\n // application to continue working when its local branches contain edits that cannot be\n // reflected in its views.\n // The best course of action for a host application in such a state is to restart.\n // TODO: let the host application know about this situation and provide a way to\n // programmatically reload the SharedTree container.\n throw error;\n });\n const changeEnricher = new SharedTreeReadonlyChangeEnricher(forest, schema, removedRoots);\n super([schemaSummarizer, forestSummarizer, removedRootsSummarizer], changeFamily, options, codecVersions, id, runtime, attributes, telemetryContextPrefix, schema, defaultSchemaPolicy, new DefaultResubmitMachine(changeFamily.rebaser.invert.bind(changeFamily.rebaser), changeEnricher), changeEnricher);\n this._events = __runInitializers(this, _instanceExtraInitializers);\n this._events = createEmitter();\n const localBranch = this.getLocalBranch();\n this.checkout = createTreeCheckout(runtime.idCompressor, this.mintRevisionTag, revisionTagCodec, {\n branch: localBranch,\n changeFamily,\n schema,\n forest,\n fieldBatchCodec,\n events: this._events,\n removedRoots,\n chunkCompressionStrategy: options.treeEncodeType,\n logger: this.logger,\n });\n }\n contentSnapshot() {\n const cursor = this.checkout.forest.allocateCursor(\"contentSnapshot\");\n try {\n moveToDetachedField(this.checkout.forest, cursor);\n return {\n schema: this.storedSchema.clone(),\n tree: jsonableTreeFromFieldCursor(cursor),\n removed: this.checkout.getRemovedRoots(),\n };\n }\n finally {\n cursor.free();\n }\n }\n viewWith(config) {\n return new SchematizingSimpleTreeView(this.checkout, config, createNodeKeyManager(this.runtime.idCompressor), this.breaker);\n }\n async loadCore(services) {\n await super.loadCore(services);\n this.checkout.setTipRevisionForLoadedData(this.trunkHeadRevision);\n this._events.emit(\"afterBatch\");\n }\n };\n __setFunctionName(_classThis, \"SharedTree\");\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _contentSnapshot_decorators = [throwIfBroken];\n __esDecorate(_classThis, null, _contentSnapshot_decorators, { kind: \"method\", name: \"contentSnapshot\", static: false, private: false, access: { has: obj => \"contentSnapshot\" in obj, get: obj => obj.contentSnapshot }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n SharedTree = _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n })();\n return SharedTree = _classThis;\n})();\nexport { SharedTree };\n/**\n * Format versions supported by SharedTree.\n *\n * Each version documents a required minimum version of the \\@fluidframework/tree package.\n * @internal\n */\nexport const SharedTreeFormatVersion = {\n /**\n * Requires \\@fluidframework/tree \\>= 2.0.0.\n *\n * @deprecated - FF does not currently plan on supporting this format long-term.\n * Do not write production documents using this format, as they may not be loadable in the future.\n */\n v1: 1,\n /**\n * Requires \\@fluidframework/tree \\>= 2.0.0.\n */\n v2: 2,\n /**\n * Requires \\@fluidframework/tree \\>= 2.0.0.\n */\n v3: 3,\n};\n/**\n * Used to distinguish between different forest types.\n * @internal\n */\nexport var ForestType;\n(function (ForestType) {\n /**\n * The \"ObjectForest\" forest type.\n */\n ForestType[ForestType[\"Reference\"] = 0] = \"Reference\";\n /**\n * The \"ChunkedForest\" forest type.\n */\n ForestType[ForestType[\"Optimized\"] = 1] = \"Optimized\";\n /**\n * The \"ObjectForest\" forest type with expensive asserts for debugging.\n */\n ForestType[ForestType[\"Expensive\"] = 2] = \"Expensive\";\n})(ForestType || (ForestType = {}));\nexport const defaultSharedTreeOptions = {\n jsonValidator: noopValidator,\n forest: ForestType.Reference,\n treeEncodeType: TreeCompressionStrategy.Compressed,\n formatVersion: SharedTreeFormatVersion.v3,\n};\n/**\n * A channel factory that creates {@link ISharedTree}s.\n */\nexport class SharedTreeFactory {\n constructor(options = {}) {\n this.options = options;\n this.type = \"https://graph.microsoft.com/types/tree\";\n this.attributes = {\n type: this.type,\n snapshotFormatVersion: \"0.0.0\",\n packageVersion: \"0.0.0\",\n };\n }\n async load(runtime, id, services, channelAttributes) {\n const tree = new SharedTree(id, runtime, channelAttributes, this.options);\n await tree.load(services);\n return tree;\n }\n create(runtime, id) {\n const tree = new SharedTree(id, runtime, this.attributes, this.options);\n tree.initializeLocal();\n return tree;\n }\n}\n//# sourceMappingURL=sharedTree.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { Context, TreeStatus } from \"../feature-libraries/index.js\";\nimport { getOrCreateInnerNode, treeNodeApi, } from \"../simple-tree/index.js\";\nimport { fail } from \"../util/index.js\";\nimport { SchematizingSimpleTreeView } from \"./schematizingTreeView.js\";\nimport { contextToTreeView } from \"./treeView.js\";\n/**\n * A special object that signifies when a SharedTree {@link RunTransaction | transaction} should \"roll back\".\n * @public\n */\nexport const rollback = Symbol(\"SharedTree Transaction Rollback\");\n/**\n * The `Tree` object holds various functions for interacting with {@link TreeNode}s.\n * @public\n */\nexport const treeApi = {\n ...treeNodeApi,\n runTransaction: createRunTransaction(),\n contains(parent, child) {\n let toCheck = child;\n while (toCheck !== undefined) {\n if (toCheck === parent) {\n return true;\n }\n toCheck = treeApi.parent(toCheck);\n }\n return false;\n },\n};\n// TODO: Add more constraint types here\n/** Creates a copy of `runTransaction` with the `rollback` property added so as to satisfy the `RunTransaction` interface. */\nfunction createRunTransaction() {\n /** A type-safe helper to add a \"rollback\" property (as required by the `RunTransaction` interface) to a given object */\n function defineRollbackProperty(target) {\n Reflect.defineProperty(target, \"rollback\", { value: rollback });\n return target;\n }\n return defineRollbackProperty(runTransaction.bind({}));\n}\n/**\n * Run the given transaction.\n * @remarks\n * This API is not publicly exported but is exported outside of this module so that test code may unit test the `Tree.runTransaction` function directly without being restricted to its public API overloads.\n */\nexport function runTransaction(treeOrNode, transaction, preconditions = []) {\n if (treeOrNode instanceof SchematizingSimpleTreeView) {\n const t = transaction;\n return runTransactionInCheckout(treeOrNode.checkout, () => t(treeOrNode.root), preconditions);\n }\n else {\n const node = treeOrNode;\n const t = transaction;\n const context = getOrCreateInnerNode(node).context;\n assert(context instanceof Context, 0x901 /* Unsupported context */);\n const treeView = contextToTreeView.get(context) ?? fail(\"Expected view to be registered for context\");\n return runTransactionInCheckout(treeView.checkout, () => t(node), preconditions);\n }\n}\nfunction runTransactionInCheckout(checkout, transaction, preconditions) {\n checkout.transaction.start();\n for (const constraint of preconditions) {\n switch (constraint.type) {\n case \"nodeInDocument\": {\n const node = getOrCreateInnerNode(constraint.node);\n assert(treeApi.status(constraint.node) === TreeStatus.InDocument, 0x90f /* Attempted to apply \"nodeExists\" constraint when building a transaction, but the node is not in the document. */);\n checkout.editor.addNodeExistsConstraint(node.anchorNode);\n break;\n }\n default:\n unreachableCase(constraint.type);\n }\n }\n let result;\n try {\n result = transaction();\n }\n catch (e) {\n // If the transaction has an unhandled error, abort and rollback the transaction but continue to propagate the error.\n checkout.transaction.abort();\n throw e;\n }\n if (result === rollback) {\n checkout.transaction.abort();\n }\n else {\n checkout.transaction.commit();\n }\n return result;\n}\n//# sourceMappingURL=treeApi.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/tree\";\nexport const pkgVersion = \"2.2.0\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nvar _a;\nimport { createSharedObjectKind, } from \"@fluidframework/shared-object-base/internal\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { SharedTree as SharedTreeImpl } from \"./shared-tree/index.js\";\n/**\n * A channel factory that creates an {@link ITree}.\n */\nexport class TreeFactory {\n constructor(options) {\n this.options = options;\n this.type = _a.Type;\n this.attributes = _a.attributes;\n }\n async load(runtime, id, services, channelAttributes) {\n const tree = new SharedTreeImpl(id, runtime, channelAttributes, this.options);\n await tree.load(services);\n return tree;\n }\n create(runtime, id) {\n const tree = new SharedTreeImpl(id, runtime, this.attributes, this.options);\n tree.initializeLocal();\n return tree;\n }\n}\n_a = TreeFactory;\nTreeFactory.Type = \"https://graph.microsoft.com/types/tree\";\nTreeFactory.attributes = {\n type: _a.Type,\n snapshotFormatVersion: \"0.0.0\",\n packageVersion: pkgVersion,\n};\n/**\n * SharedTree is a hierarchical data structure for collaboratively editing strongly typed JSON-like trees\n * of objects, arrays, and other data types.\n * @internal\n */\nexport const SharedTree = configuredSharedTree({});\n/**\n * {@link SharedTree} but allowing a non-default configuration.\n * @remarks\n * This is useful for debugging and testing to opt into extra validation or see if opting out of some optimizations fixes an issue.\n * @example\n * ```typescript\n * import {\n * \tForestType,\n * \tTreeCompressionStrategy,\n * \tconfiguredSharedTree,\n * \ttypeboxValidator,\n * \t// eslint-disable-next-line import/no-internal-modules\n * } from \"@fluidframework/tree/internal\";\n * const SharedTree = configuredSharedTree({\n * \tforest: ForestType.Reference,\n * \tjsonValidator: typeboxValidator,\n * \ttreeEncodeType: TreeCompressionStrategy.Uncompressed,\n * });\n * ```\n * @privateRemarks\n * TODO:\n * Expose Ajv validator for better error message quality somehow.\n * Maybe as part of a test utils or dev-tool package?\n * @internal\n */\nexport function configuredSharedTree(options) {\n class ConfiguredFactory extends TreeFactory {\n constructor() {\n super(options);\n }\n }\n return createSharedObjectKind(ConfiguredFactory);\n}\n//# sourceMappingURL=treeFactory.js.map","// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nexport function IsStandardObject(value) {\n return IsObject(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nexport function IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nexport function IsPromise(value) {\n return value instanceof Promise;\n}\n/** Returns true if this value is a Date */\nexport function IsDate(value) {\n return value instanceof Date && Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nexport function IsTypedArray(value) {\n return ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n/** Returns true of this value is an object type */\nexport function IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nexport function IsArray(value) {\n return Array.isArray(value) && !ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nexport function IsInteger(value) {\n return Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nexport function IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n","import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';\nexport var TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy\n // ------------------------------------------------------------------\n /** Shared assertion routines used by the value and errors modules */\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Asserts this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Asserts this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = IsObject(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Asserts this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Asserts this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? IsNumber(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Asserts this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = IsUndefined(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (TypeSystemPolicy = {}));\n","import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { Unsafe } from '../type/unsafe/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class TypeSystemDuplicateTypeKind extends TypeBoxError {\n constructor(kind) {\n super(`Duplicate type kind '${kind}' detected`);\n }\n}\nexport class TypeSystemDuplicateFormat extends TypeBoxError {\n constructor(kind) {\n super(`Duplicate string format '${kind}' detected`);\n }\n}\n/** Creates user defined types and formats and provides overrides for value checking behaviours */\nexport var TypeSystem;\n(function (TypeSystem) {\n /** Creates a new type */\n function Type(kind, check) {\n if (TypeRegistry.Has(kind))\n throw new TypeSystemDuplicateTypeKind(kind);\n TypeRegistry.Set(kind, check);\n return (options = {}) => Unsafe({ ...options, [Kind]: kind });\n }\n TypeSystem.Type = Type;\n /** Creates a new string format */\n function Format(format, check) {\n if (FormatRegistry.Has(format))\n throw new TypeSystemDuplicateFormat(format);\n FormatRegistry.Set(format, check);\n return format;\n }\n TypeSystem.Format = Format;\n})(TypeSystem || (TypeSystem = {}));\n","import { Kind } from '../type/symbols/index.mjs';\nimport { ValueErrorType } from './errors.mjs';\n/** Creates an error message using en-US as the default locale */\nexport function DefaultErrorFunction(error) {\n switch (error.errorType) {\n case ValueErrorType.ArrayContains:\n return 'Expected array to contain at least one matching value';\n case ValueErrorType.ArrayMaxContains:\n return `Expected array to contain no more than ${error.schema.maxContains} matching values`;\n case ValueErrorType.ArrayMinContains:\n return `Expected array to contain at least ${error.schema.minContains} matching values`;\n case ValueErrorType.ArrayMaxItems:\n return `Expected array length to be less or equal to ${error.schema.maxItems}`;\n case ValueErrorType.ArrayMinItems:\n return `Expected array length to be greater or equal to ${error.schema.minItems}`;\n case ValueErrorType.ArrayUniqueItems:\n return 'Expected array elements to be unique';\n case ValueErrorType.Array:\n return 'Expected array';\n case ValueErrorType.AsyncIterator:\n return 'Expected AsyncIterator';\n case ValueErrorType.BigIntExclusiveMaximum:\n return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.BigIntExclusiveMinimum:\n return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.BigIntMaximum:\n return `Expected bigint to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.BigIntMinimum:\n return `Expected bigint to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.BigIntMultipleOf:\n return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.BigInt:\n return 'Expected bigint';\n case ValueErrorType.Boolean:\n return 'Expected boolean';\n case ValueErrorType.DateExclusiveMinimumTimestamp:\n return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;\n case ValueErrorType.DateExclusiveMaximumTimestamp:\n return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;\n case ValueErrorType.DateMinimumTimestamp:\n return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;\n case ValueErrorType.DateMaximumTimestamp:\n return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;\n case ValueErrorType.DateMultipleOfTimestamp:\n return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;\n case ValueErrorType.Date:\n return 'Expected Date';\n case ValueErrorType.Function:\n return 'Expected function';\n case ValueErrorType.IntegerExclusiveMaximum:\n return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.IntegerExclusiveMinimum:\n return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.IntegerMaximum:\n return `Expected integer to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.IntegerMinimum:\n return `Expected integer to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.IntegerMultipleOf:\n return `Expected integer to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Integer:\n return 'Expected integer';\n case ValueErrorType.IntersectUnevaluatedProperties:\n return 'Unexpected property';\n case ValueErrorType.Intersect:\n return 'Expected all values to match';\n case ValueErrorType.Iterator:\n return 'Expected Iterator';\n case ValueErrorType.Literal:\n return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;\n case ValueErrorType.Never:\n return 'Never';\n case ValueErrorType.Not:\n return 'Value should not match';\n case ValueErrorType.Null:\n return 'Expected null';\n case ValueErrorType.NumberExclusiveMaximum:\n return `Expected number to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.NumberExclusiveMinimum:\n return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.NumberMaximum:\n return `Expected number to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.NumberMinimum:\n return `Expected number to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.NumberMultipleOf:\n return `Expected number to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Number:\n return 'Expected number';\n case ValueErrorType.Object:\n return 'Expected object';\n case ValueErrorType.ObjectAdditionalProperties:\n return 'Unexpected property';\n case ValueErrorType.ObjectMaxProperties:\n return `Expected object to have no more than ${error.schema.maxProperties} properties`;\n case ValueErrorType.ObjectMinProperties:\n return `Expected object to have at least ${error.schema.minProperties} properties`;\n case ValueErrorType.ObjectRequiredProperty:\n return 'Expected required property';\n case ValueErrorType.Promise:\n return 'Expected Promise';\n case ValueErrorType.RegExp:\n return 'Expected string to match regular expression';\n case ValueErrorType.StringFormatUnknown:\n return `Unknown format '${error.schema.format}'`;\n case ValueErrorType.StringFormat:\n return `Expected string to match '${error.schema.format}' format`;\n case ValueErrorType.StringMaxLength:\n return `Expected string length less or equal to ${error.schema.maxLength}`;\n case ValueErrorType.StringMinLength:\n return `Expected string length greater or equal to ${error.schema.minLength}`;\n case ValueErrorType.StringPattern:\n return `Expected string to match '${error.schema.pattern}'`;\n case ValueErrorType.String:\n return 'Expected string';\n case ValueErrorType.Symbol:\n return 'Expected symbol';\n case ValueErrorType.TupleLength:\n return `Expected tuple to have ${error.schema.maxItems || 0} elements`;\n case ValueErrorType.Tuple:\n return 'Expected tuple';\n case ValueErrorType.Uint8ArrayMaxByteLength:\n return `Expected byte length less or equal to ${error.schema.maxByteLength}`;\n case ValueErrorType.Uint8ArrayMinByteLength:\n return `Expected byte length greater or equal to ${error.schema.minByteLength}`;\n case ValueErrorType.Uint8Array:\n return 'Expected Uint8Array';\n case ValueErrorType.Undefined:\n return 'Expected undefined';\n case ValueErrorType.Union:\n return 'Expected union value';\n case ValueErrorType.Void:\n return 'Expected void';\n case ValueErrorType.Kind:\n return `Expected kind '${error.schema[Kind]}'`;\n default:\n return 'Unknown error type';\n }\n}\n/** Manages error message providers */\nlet errorFunction = DefaultErrorFunction;\n/** Sets the error function used to generate error messages. */\nexport function SetErrorFunction(callback) {\n errorFunction = callback;\n}\n/** Gets the error function used to generate error messages */\nexport function GetErrorFunction() {\n return errorFunction;\n}\n","import { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nexport class TypeDereferenceError extends TypeBoxError {\n constructor(schema) {\n super(`Unable to dereference schema with $id '${schema.$id}'`);\n this.schema = schema;\n }\n}\nfunction Resolve(schema, references) {\n const target = references.find((target) => target.$id === schema.$ref);\n if (target === undefined)\n throw new TypeDereferenceError(schema);\n return Deref(target, references);\n}\n/** Dereferences a schema from the references array or throws if not found */\nexport function Deref(schema, references) {\n // prettier-ignore\n return (schema[Kind] === 'This' || schema[Kind] === 'Ref')\n ? Resolve(schema, references)\n : schema;\n}\n","import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsStandardObject, IsString, IsSymbol, IsUint8Array, IsUndefined } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueHashError extends TypeBoxError {\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('2') ** BigInt('64')];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if (IsArray(value))\n return ArrayType(value);\n if (IsBoolean(value))\n return BooleanType(value);\n if (IsBigInt(value))\n return BigIntType(value);\n if (IsDate(value))\n return DateType(value);\n if (IsNull(value))\n return NullType(value);\n if (IsNumber(value))\n return NumberType(value);\n if (IsStandardObject(value))\n return ObjectType(value);\n if (IsString(value))\n return StringType(value);\n if (IsSymbol(value))\n return SymbolType(value);\n if (IsUint8Array(value))\n return Uint8ArrayType(value);\n if (IsUndefined(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n","import { TypeSystemPolicy } from '../system/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { GetErrorFunction } from './function.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nexport var ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nexport class ValueErrorsUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nexport class ValueErrorIterator {\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value) {\n return { type: errorType, schema, path, value, message: GetErrorFunction()({ errorType, path, schema, value }) };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!IsArray(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!IsAsyncIterator(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!IsBigInt(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!IsBoolean(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!IsDate(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!IsFunction(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!IsInteger(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n for (const inner of schema.allOf) {\n const next = Visit(inner, references, path, value).next();\n if (!next.done) {\n yield Create(ValueErrorType.Intersect, schema, path, value);\n yield next.value;\n }\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!IsIterator(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!IsNull(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!IsPromise(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if (IsString(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if (IsString(schema.format)) {\n if (!FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!IsSymbol(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!IsArray(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!IsUndefined(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n let count = 0;\n for (const subschema of schema.anyOf) {\n const errors = [...Visit(subschema, references, path, value)];\n if (errors.length === 0)\n return; // matched\n count += errors.length;\n }\n if (count > 0) {\n yield Create(ValueErrorType.Union, schema, path, value);\n }\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!IsUint8Array(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = TypeRegistry.Get(schema[Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nexport function Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n","import { TypeSystemPolicy } from '../../system/index.mjs';\nimport { Deref } from '../deref/index.mjs';\nimport { Hash } from '../hash/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { KeyOfPattern } from '../../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Never } from '../../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCheckUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super(`Unknown type`);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// TypeGuards\n// ------------------------------------------------------------------\nfunction IsAnyOrUnknown(schema) {\n return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromAny(schema, references, value) {\n return true;\n}\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return false;\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n return false;\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n return false;\n }\n if (!value.every((value) => Visit(schema.items, references, value))) {\n return false;\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n return false;\n }\n // contains\n if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {\n return true; // exit\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n return false;\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n return false;\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n return false;\n }\n return true;\n}\nfunction FromAsyncIterator(schema, references, value) {\n return IsAsyncIterator(value);\n}\nfunction FromBigInt(schema, references, value) {\n if (!IsBigInt(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n return false;\n }\n return true;\n}\nfunction FromBoolean(schema, references, value) {\n return IsBoolean(value);\n}\nfunction FromConstructor(schema, references, value) {\n return Visit(schema.returns, references, value.prototype);\n}\nfunction FromDate(schema, references, value) {\n if (!IsDate(value))\n return false;\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n return false;\n }\n return true;\n}\nfunction FromFunction(schema, references, value) {\n return IsFunction(value);\n}\nfunction FromInteger(schema, references, value) {\n if (!IsInteger(value)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromIntersect(schema, references, value) {\n const check1 = schema.allOf.every((schema) => Visit(schema, references, value));\n if (schema.unevaluatedProperties === false) {\n const keyPattern = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key));\n return check1 && check2;\n }\n else if (IsSchema(schema.unevaluatedProperties)) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key]));\n return check1 && check2;\n }\n else {\n return check1;\n }\n}\nfunction FromIterator(schema, references, value) {\n return IsIterator(value);\n}\nfunction FromLiteral(schema, references, value) {\n return value === schema.const;\n}\nfunction FromNever(schema, references, value) {\n return false;\n}\nfunction FromNot(schema, references, value) {\n return !Visit(schema.not, references, value);\n}\nfunction FromNull(schema, references, value) {\n return IsNull(value);\n}\nfunction FromNumber(schema, references, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromObject(schema, references, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return false;\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n if (!Visit(property, references, value[knownKey])) {\n return false;\n }\n if ((ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) {\n return false;\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) {\n return false;\n }\n }\n }\n if (schema.additionalProperties === false) {\n const valueKeys = Object.getOwnPropertyNames(value);\n // optimization: value is valid if schemaKey length matches the valueKey length\n if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {\n return true;\n }\n else {\n return valueKeys.every((valueKey) => knownKeys.includes(valueKey));\n }\n }\n else if (typeof schema.additionalProperties === 'object') {\n const valueKeys = Object.getOwnPropertyNames(value);\n return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key]));\n }\n else {\n return true;\n }\n}\nfunction FromPromise(schema, references, value) {\n return IsPromise(value);\n}\nfunction FromRecord(schema, references, value) {\n if (!TypeSystemPolicy.IsRecordLike(value)) {\n return false;\n }\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n // prettier-ignore\n const check1 = Object.entries(value).every(([key, value]) => {\n return (regex.test(key)) ? Visit(patternSchema, references, value) : true;\n });\n // prettier-ignore\n const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {\n return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;\n }) : true;\n const check3 = schema.additionalProperties === false\n ? Object.getOwnPropertyNames(value).every((key) => {\n return regex.test(key);\n })\n : true;\n return check1 && check2 && check3;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromRegExp(schema, references, value) {\n const regex = new RegExp(schema.source, schema.flags);\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n return regex.test(value);\n}\nfunction FromString(schema, references, value) {\n if (!IsString(value)) {\n return false;\n }\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n if (IsDefined(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value))\n return false;\n }\n if (IsDefined(schema.format)) {\n if (!FormatRegistry.Has(schema.format))\n return false;\n const func = FormatRegistry.Get(schema.format);\n return func(value);\n }\n return true;\n}\nfunction FromSymbol(schema, references, value) {\n return IsSymbol(value);\n}\nfunction FromTemplateLiteral(schema, references, value) {\n return IsString(value) && new RegExp(schema.pattern).test(value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value)) {\n return false;\n }\n if (schema.items === undefined && !(value.length === 0)) {\n return false;\n }\n if (!(value.length === schema.maxItems)) {\n return false;\n }\n if (!schema.items) {\n return true;\n }\n for (let i = 0; i < schema.items.length; i++) {\n if (!Visit(schema.items[i], references, value[i]))\n return false;\n }\n return true;\n}\nfunction FromUndefined(schema, references, value) {\n return IsUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n return schema.anyOf.some((inner) => Visit(inner, references, value));\n}\nfunction FromUint8Array(schema, references, value) {\n if (!IsUint8Array(value)) {\n return false;\n }\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n return false;\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n return false;\n }\n return true;\n}\nfunction FromUnknown(schema, references, value) {\n return true;\n}\nfunction FromVoid(schema, references, value) {\n return TypeSystemPolicy.IsVoidLike(value);\n}\nfunction FromKind(schema, references, value) {\n if (!TypeRegistry.Has(schema[Kind]))\n return false;\n const func = TypeRegistry.Get(schema[Kind]);\n return func(schema, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_, value);\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Function':\n return FromFunction(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Iterator':\n return FromIterator(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Not':\n return FromNot(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Promise':\n return FromPromise(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'RegExp':\n return FromRegExp(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_, value);\n case 'Unknown':\n return FromUnknown(schema_, references_, value);\n case 'Void':\n return FromVoid(schema_, references_, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCheckUnknownTypeError(schema_);\n return FromKind(schema_, references_, value);\n }\n}\n/** Returns true if the value matches the given type. */\nexport function Check(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n","import { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsStandardObject, IsArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// thrown externally\n// prettier-ignore\nexport class TransformDecodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`Unable to decode value as it does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformDecodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(error instanceof Error ? error.message : 'Unknown error');\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Decode(value) : value;\n }\n catch (error) {\n throw new TransformDecodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n return (IsArray(value))\n ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value)))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n if (!IsStandardObject(value) || IsValueType(value))\n return Default(schema, path, value);\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...value };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\nfunction FromNot(schema, references, path, value) {\n return Default(schema, path, Visit(schema.not, references, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n if (!IsStandardObject(value))\n return Default(schema, path, value);\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...value };\n for (const key of knownKeys)\n if (key in knownProperties) {\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n if (!IsStandardObject(value))\n return Default(schema, path, value);\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...value };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n return (IsArray(value) && IsArray(schema.items))\n ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index])))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n // note: ensure interior is decoded first\n const decoded = Visit(subschema, references, path, value);\n return Default(schema, path, decoded);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = typeof schema.$id === 'string' ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'Symbol':\n return Default(schema_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Decodes the value and returns the result. This function requires that\n * the caller `Check` the value before use. Passing unchecked values may result in\n * undefined behavior. Refer to the `Value.Decode()` for implementation details.\n */\nexport function TransformDecode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n","import { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsStandardObject, IsArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TransformEncodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`The encoded value does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformEncodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(`${error instanceof Error ? error.message : 'Unknown error'}`);\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Encode(value) : value;\n }\n catch (error) {\n throw new TransformEncodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n return IsArray(defaulted)\n ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value))\n : defaulted;\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsStandardObject(value) || IsValueType(value))\n return defaulted;\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...defaulted };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromNot(schema, references, path, value) {\n return Default(schema.not, path, Default(schema, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsStandardObject(defaulted))\n return defaulted;\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...defaulted };\n for (const key of knownKeys)\n if (key in knownProperties) {\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsStandardObject(value))\n return defaulted;\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...defaulted };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n const value1 = Default(schema, path, value);\n return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index])) : [];\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n // test value against union variants\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n const value1 = Visit(subschema, references, path, value);\n return Default(schema, path, value1);\n }\n // test transformed value against union variants\n for (const subschema of schema.anyOf) {\n const value1 = Visit(subschema, references, path, value);\n if (!Check(schema, references, value1))\n continue;\n return Default(schema, path, value1);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = typeof schema.$id === 'string' ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Encodes the value and returns the result. This function expects the\n * caller to pass a statically checked value. This function does not check the encoded\n * result, meaning the result should be passed to `Check` before use. Refer to the\n * `Value.Encode()` function for implementation details.\n */\nexport function TransformEncode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n","import { Deref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsString, IsUndefined } from '../guard/index.mjs';\n// prettier-ignore\nfunction FromArray(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromNot(schema, references) {\n return IsTransform(schema) || Visit(schema.not, references);\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n return (IsTransform(schema) ||\n Object.values(schema.properties).some((schema) => Visit(schema, references)) ||\n (IsSchema(schema.additionalProperties) && Visit(schema.additionalProperties, references)));\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n return IsTransform(schema) || Visit(schema.item, references);\n}\n// prettier-ignore\nfunction FromRecord(schema, references) {\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[pattern];\n return IsTransform(schema) || Visit(property, references) || (IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties));\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromThis(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n return IsTransform(schema) || (!IsUndefined(schema.items) && schema.items.some((schema) => Visit(schema, references)));\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n return IsTransform(schema) || schema.anyOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction Visit(schema, references) {\n const references_ = IsString(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n if (schema.$id && visited.has(schema.$id))\n return false;\n if (schema.$id)\n visited.add(schema.$id);\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n default:\n return IsTransform(schema);\n }\n}\nconst visited = new Set();\n/** Returns true if this schema contains a transform codec */\nexport function HasTransform(schema, references) {\n visited.clear();\n return Visit(schema, references);\n}\n","import { TransformEncode, TransformDecode, HasTransform, TransformDecodeCheckError, TransformEncodeCheckError } from '../value/transform/index.mjs';\nimport { Errors } from '../errors/index.mjs';\nimport { TypeSystemPolicy } from '../system/index.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsString, IsNumber, IsBigInt } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// TypeCheck\n// ------------------------------------------------------------------\nexport class TypeCheck {\n constructor(schema, references, checkFunc, code) {\n this.schema = schema;\n this.references = references;\n this.checkFunc = checkFunc;\n this.code = code;\n this.hasTransform = HasTransform(schema, references);\n }\n /** Returns the generated assertion code used to validate this type. */\n Code() {\n return this.code;\n }\n /** Returns an iterator for each error in this value. */\n Errors(value) {\n return Errors(this.schema, this.references, value);\n }\n /** Returns true if the value matches the compiled type. */\n Check(value) {\n return this.checkFunc(value);\n }\n /** Decodes a value or throws if error */\n Decode(value) {\n if (!this.checkFunc(value))\n throw new TransformDecodeCheckError(this.schema, value, this.Errors(value).First());\n return this.hasTransform ? TransformDecode(this.schema, this.references, value) : value;\n }\n /** Encodes a value or throws if error */\n Encode(value) {\n const encoded = this.hasTransform ? TransformEncode(this.schema, this.references, value) : value;\n if (!this.checkFunc(encoded))\n throw new TransformEncodeCheckError(this.schema, value, this.Errors(value).First());\n return encoded;\n }\n}\n// ------------------------------------------------------------------\n// Character\n// ------------------------------------------------------------------\nvar Character;\n(function (Character) {\n function DollarSign(code) {\n return code === 36;\n }\n Character.DollarSign = DollarSign;\n function IsUnderscore(code) {\n return code === 95;\n }\n Character.IsUnderscore = IsUnderscore;\n function IsAlpha(code) {\n return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);\n }\n Character.IsAlpha = IsAlpha;\n function IsNumeric(code) {\n return code >= 48 && code <= 57;\n }\n Character.IsNumeric = IsNumeric;\n})(Character || (Character = {}));\n// ------------------------------------------------------------------\n// MemberExpression\n// ------------------------------------------------------------------\nvar MemberExpression;\n(function (MemberExpression) {\n function IsFirstCharacterNumeric(value) {\n if (value.length === 0)\n return false;\n return Character.IsNumeric(value.charCodeAt(0));\n }\n function IsAccessor(value) {\n if (IsFirstCharacterNumeric(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n const check = Character.IsAlpha(code) || Character.IsNumeric(code) || Character.DollarSign(code) || Character.IsUnderscore(code);\n if (!check)\n return false;\n }\n return true;\n }\n function EscapeHyphen(key) {\n return key.replace(/'/g, \"\\\\'\");\n }\n function Encode(object, key) {\n return IsAccessor(key) ? `${object}.${key}` : `${object}['${EscapeHyphen(key)}']`;\n }\n MemberExpression.Encode = Encode;\n})(MemberExpression || (MemberExpression = {}));\n// ------------------------------------------------------------------\n// Identifier\n// ------------------------------------------------------------------\nvar Identifier;\n(function (Identifier) {\n function Encode($id) {\n const buffer = [];\n for (let i = 0; i < $id.length; i++) {\n const code = $id.charCodeAt(i);\n if (Character.IsNumeric(code) || Character.IsAlpha(code)) {\n buffer.push($id.charAt(i));\n }\n else {\n buffer.push(`_${code}_`);\n }\n }\n return buffer.join('').replace(/__/g, '_');\n }\n Identifier.Encode = Encode;\n})(Identifier || (Identifier = {}));\n// ------------------------------------------------------------------\n// LiteralString\n// ------------------------------------------------------------------\nvar LiteralString;\n(function (LiteralString) {\n function Escape(content) {\n return content.replace(/'/g, \"\\\\'\");\n }\n LiteralString.Escape = Escape;\n})(LiteralString || (LiteralString = {}));\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class TypeCompilerUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\nexport class TypeCompilerTypeGuardError extends TypeBoxError {\n constructor(schema) {\n super('Preflight validation check failed to guard for the given schema');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// Policy\n// ------------------------------------------------------------------\nexport var Policy;\n(function (Policy) {\n function IsExactOptionalProperty(value, key, expression) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? `('${key}' in ${value} ? ${expression} : true)` : `(${MemberExpression.Encode(value, key)} !== undefined ? ${expression} : true)`;\n }\n Policy.IsExactOptionalProperty = IsExactOptionalProperty;\n function IsObjectLike(value) {\n return !TypeSystemPolicy.AllowArrayObject ? `(typeof ${value} === 'object' && ${value} !== null && !Array.isArray(${value}))` : `(typeof ${value} === 'object' && ${value} !== null)`;\n }\n Policy.IsObjectLike = IsObjectLike;\n function IsRecordLike(value) {\n return !TypeSystemPolicy.AllowArrayObject\n ? `(typeof ${value} === 'object' && ${value} !== null && !Array.isArray(${value}) && !(${value} instanceof Date) && !(${value} instanceof Uint8Array))`\n : `(typeof ${value} === 'object' && ${value} !== null && !(${value} instanceof Date) && !(${value} instanceof Uint8Array))`;\n }\n Policy.IsRecordLike = IsRecordLike;\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? `typeof ${value} === 'number'` : `Number.isFinite(${value})`;\n }\n Policy.IsNumberLike = IsNumberLike;\n function IsVoidLike(value) {\n return TypeSystemPolicy.AllowNullVoid ? `(${value} === undefined || ${value} === null)` : `${value} === undefined`;\n }\n Policy.IsVoidLike = IsVoidLike;\n})(Policy || (Policy = {}));\n/** Compiles Types for Runtime Type Checking */\nexport var TypeCompiler;\n(function (TypeCompiler) {\n // ----------------------------------------------------------------\n // Guards\n // ----------------------------------------------------------------\n function IsAnyOrUnknown(schema) {\n return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n }\n // ----------------------------------------------------------------\n // Types\n // ----------------------------------------------------------------\n function* FromAny(schema, references, value) {\n yield 'true';\n }\n function* FromArray(schema, references, value) {\n yield `Array.isArray(${value})`;\n const [parameter, accumulator] = [CreateParameter('value', 'any'), CreateParameter('acc', 'number')];\n if (IsNumber(schema.maxItems))\n yield `${value}.length <= ${schema.maxItems}`;\n if (IsNumber(schema.minItems))\n yield `${value}.length >= ${schema.minItems}`;\n const elementExpression = CreateExpression(schema.items, references, 'value');\n yield `${value}.every((${parameter}) => ${elementExpression})`;\n if (IsSchema(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains)) {\n const containsSchema = IsSchema(schema.contains) ? schema.contains : Never();\n const checkExpression = CreateExpression(containsSchema, references, 'value');\n const checkMinContains = IsNumber(schema.minContains) ? [`(count >= ${schema.minContains})`] : [];\n const checkMaxContains = IsNumber(schema.maxContains) ? [`(count <= ${schema.maxContains})`] : [];\n const checkCount = `const count = value.reduce((${accumulator}, ${parameter}) => ${checkExpression} ? acc + 1 : acc, 0)`;\n const check = [`(count > 0)`, ...checkMinContains, ...checkMaxContains].join(' && ');\n yield `((${parameter}) => { ${checkCount}; return ${check}})(${value})`;\n }\n if (schema.uniqueItems === true) {\n const check = `const hashed = hash(element); if(set.has(hashed)) { return false } else { set.add(hashed) } } return true`;\n const block = `const set = new Set(); for(const element of value) { ${check} }`;\n yield `((${parameter}) => { ${block} )(${value})`;\n }\n }\n function* FromAsyncIterator(schema, references, value) {\n yield `(typeof value === 'object' && Symbol.asyncIterator in ${value})`;\n }\n function* FromBigInt(schema, references, value) {\n yield `(typeof ${value} === 'bigint')`;\n if (IsBigInt(schema.exclusiveMaximum))\n yield `${value} < BigInt(${schema.exclusiveMaximum})`;\n if (IsBigInt(schema.exclusiveMinimum))\n yield `${value} > BigInt(${schema.exclusiveMinimum})`;\n if (IsBigInt(schema.maximum))\n yield `${value} <= BigInt(${schema.maximum})`;\n if (IsBigInt(schema.minimum))\n yield `${value} >= BigInt(${schema.minimum})`;\n if (IsBigInt(schema.multipleOf))\n yield `(${value} % BigInt(${schema.multipleOf})) === 0`;\n }\n function* FromBoolean(schema, references, value) {\n yield `(typeof ${value} === 'boolean')`;\n }\n function* FromConstructor(schema, references, value) {\n yield* Visit(schema.returns, references, `${value}.prototype`);\n }\n function* FromDate(schema, references, value) {\n yield `(${value} instanceof Date) && Number.isFinite(${value}.getTime())`;\n if (IsNumber(schema.exclusiveMaximumTimestamp))\n yield `${value}.getTime() < ${schema.exclusiveMaximumTimestamp}`;\n if (IsNumber(schema.exclusiveMinimumTimestamp))\n yield `${value}.getTime() > ${schema.exclusiveMinimumTimestamp}`;\n if (IsNumber(schema.maximumTimestamp))\n yield `${value}.getTime() <= ${schema.maximumTimestamp}`;\n if (IsNumber(schema.minimumTimestamp))\n yield `${value}.getTime() >= ${schema.minimumTimestamp}`;\n if (IsNumber(schema.multipleOfTimestamp))\n yield `(${value}.getTime() % ${schema.multipleOfTimestamp}) === 0`;\n }\n function* FromFunction(schema, references, value) {\n yield `(typeof ${value} === 'function')`;\n }\n function* FromInteger(schema, references, value) {\n yield `Number.isInteger(${value})`;\n if (IsNumber(schema.exclusiveMaximum))\n yield `${value} < ${schema.exclusiveMaximum}`;\n if (IsNumber(schema.exclusiveMinimum))\n yield `${value} > ${schema.exclusiveMinimum}`;\n if (IsNumber(schema.maximum))\n yield `${value} <= ${schema.maximum}`;\n if (IsNumber(schema.minimum))\n yield `${value} >= ${schema.minimum}`;\n if (IsNumber(schema.multipleOf))\n yield `(${value} % ${schema.multipleOf}) === 0`;\n }\n function* FromIntersect(schema, references, value) {\n const check1 = schema.allOf.map((schema) => CreateExpression(schema, references, value)).join(' && ');\n if (schema.unevaluatedProperties === false) {\n const keyCheck = CreateVariable(`${new RegExp(KeyOfPattern(schema))};`);\n const check2 = `Object.getOwnPropertyNames(${value}).every(key => ${keyCheck}.test(key))`;\n yield `(${check1} && ${check2})`;\n }\n else if (IsSchema(schema.unevaluatedProperties)) {\n const keyCheck = CreateVariable(`${new RegExp(KeyOfPattern(schema))};`);\n const check2 = `Object.getOwnPropertyNames(${value}).every(key => ${keyCheck}.test(key) || ${CreateExpression(schema.unevaluatedProperties, references, `${value}[key]`)})`;\n yield `(${check1} && ${check2})`;\n }\n else {\n yield `(${check1})`;\n }\n }\n function* FromIterator(schema, references, value) {\n yield `(typeof value === 'object' && Symbol.iterator in ${value})`;\n }\n function* FromLiteral(schema, references, value) {\n if (typeof schema.const === 'number' || typeof schema.const === 'boolean') {\n yield `(${value} === ${schema.const})`;\n }\n else {\n yield `(${value} === '${LiteralString.Escape(schema.const)}')`;\n }\n }\n function* FromNever(schema, references, value) {\n yield `false`;\n }\n function* FromNot(schema, references, value) {\n const expression = CreateExpression(schema.not, references, value);\n yield `(!${expression})`;\n }\n function* FromNull(schema, references, value) {\n yield `(${value} === null)`;\n }\n function* FromNumber(schema, references, value) {\n yield Policy.IsNumberLike(value);\n if (IsNumber(schema.exclusiveMaximum))\n yield `${value} < ${schema.exclusiveMaximum}`;\n if (IsNumber(schema.exclusiveMinimum))\n yield `${value} > ${schema.exclusiveMinimum}`;\n if (IsNumber(schema.maximum))\n yield `${value} <= ${schema.maximum}`;\n if (IsNumber(schema.minimum))\n yield `${value} >= ${schema.minimum}`;\n if (IsNumber(schema.multipleOf))\n yield `(${value} % ${schema.multipleOf}) === 0`;\n }\n function* FromObject(schema, references, value) {\n yield Policy.IsObjectLike(value);\n if (IsNumber(schema.minProperties))\n yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`;\n if (IsNumber(schema.maxProperties))\n yield `Object.getOwnPropertyNames(${value}).length <= ${schema.maxProperties}`;\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n for (const knownKey of knownKeys) {\n const memberExpression = MemberExpression.Encode(value, knownKey);\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, memberExpression);\n if (ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property))\n yield `('${knownKey}' in ${value})`;\n }\n else {\n const expression = CreateExpression(property, references, memberExpression);\n yield Policy.IsExactOptionalProperty(value, knownKey, expression);\n }\n }\n if (schema.additionalProperties === false) {\n if (schema.required && schema.required.length === knownKeys.length) {\n yield `Object.getOwnPropertyNames(${value}).length === ${knownKeys.length}`;\n }\n else {\n const keys = `[${knownKeys.map((key) => `'${key}'`).join(', ')}]`;\n yield `Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key))`;\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n const expression = CreateExpression(schema.additionalProperties, references, `${value}[key]`);\n const keys = `[${knownKeys.map((key) => `'${key}'`).join(', ')}]`;\n yield `(Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key) || ${expression}))`;\n }\n }\n function* FromPromise(schema, references, value) {\n yield `(typeof value === 'object' && typeof ${value}.then === 'function')`;\n }\n function* FromRecord(schema, references, value) {\n yield Policy.IsRecordLike(value);\n if (IsNumber(schema.minProperties))\n yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`;\n if (IsNumber(schema.maxProperties))\n yield `Object.getOwnPropertyNames(${value}).length <= ${schema.maxProperties}`;\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const variable = CreateVariable(`${new RegExp(patternKey)}`);\n const check1 = CreateExpression(patternSchema, references, 'value');\n const check2 = IsSchema(schema.additionalProperties) ? CreateExpression(schema.additionalProperties, references, value) : schema.additionalProperties === false ? 'false' : 'true';\n const expression = `(${variable}.test(key) ? ${check1} : ${check2})`;\n yield `(Object.entries(${value}).every(([key, value]) => ${expression}))`;\n }\n function* FromRef(schema, references, value) {\n const target = Deref(schema, references);\n // Reference: If we have seen this reference before we can just yield and return the function call.\n // If this isn't the case we defer to visit to generate and set the function for subsequent passes.\n if (state.functions.has(schema.$ref))\n return yield `${CreateFunctionName(schema.$ref)}(${value})`;\n yield* Visit(target, references, value);\n }\n function* FromRegExp(schema, references, value) {\n const variable = CreateVariable(`${new RegExp(schema.source, schema.flags)};`);\n yield `(typeof ${value} === 'string')`;\n if (IsNumber(schema.maxLength))\n yield `${value}.length <= ${schema.maxLength}`;\n if (IsNumber(schema.minLength))\n yield `${value}.length >= ${schema.minLength}`;\n yield `${variable}.test(${value})`;\n }\n function* FromString(schema, references, value) {\n yield `(typeof ${value} === 'string')`;\n if (IsNumber(schema.maxLength))\n yield `${value}.length <= ${schema.maxLength}`;\n if (IsNumber(schema.minLength))\n yield `${value}.length >= ${schema.minLength}`;\n if (schema.pattern !== undefined) {\n const variable = CreateVariable(`${new RegExp(schema.pattern)};`);\n yield `${variable}.test(${value})`;\n }\n if (schema.format !== undefined) {\n yield `format('${schema.format}', ${value})`;\n }\n }\n function* FromSymbol(schema, references, value) {\n yield `(typeof ${value} === 'symbol')`;\n }\n function* FromTemplateLiteral(schema, references, value) {\n yield `(typeof ${value} === 'string')`;\n const variable = CreateVariable(`${new RegExp(schema.pattern)};`);\n yield `${variable}.test(${value})`;\n }\n function* FromThis(schema, references, value) {\n // Note: This types are assured to be hoisted prior to this call. Just yield the function.\n yield `${CreateFunctionName(schema.$ref)}(${value})`;\n }\n function* FromTuple(schema, references, value) {\n yield `Array.isArray(${value})`;\n if (schema.items === undefined)\n return yield `${value}.length === 0`;\n yield `(${value}.length === ${schema.maxItems})`;\n for (let i = 0; i < schema.items.length; i++) {\n const expression = CreateExpression(schema.items[i], references, `${value}[${i}]`);\n yield `${expression}`;\n }\n }\n function* FromUndefined(schema, references, value) {\n yield `${value} === undefined`;\n }\n function* FromUnion(schema, references, value) {\n const expressions = schema.anyOf.map((schema) => CreateExpression(schema, references, value));\n yield `(${expressions.join(' || ')})`;\n }\n function* FromUint8Array(schema, references, value) {\n yield `${value} instanceof Uint8Array`;\n if (IsNumber(schema.maxByteLength))\n yield `(${value}.length <= ${schema.maxByteLength})`;\n if (IsNumber(schema.minByteLength))\n yield `(${value}.length >= ${schema.minByteLength})`;\n }\n function* FromUnknown(schema, references, value) {\n yield 'true';\n }\n function* FromVoid(schema, references, value) {\n yield Policy.IsVoidLike(value);\n }\n function* FromKind(schema, references, value) {\n const instance = state.instances.size;\n state.instances.set(instance, schema);\n yield `kind('${schema[Kind]}', ${instance}, ${value})`;\n }\n function* Visit(schema, references, value, useHoisting = true) {\n const references_ = IsString(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n // --------------------------------------------------------------\n // Hoisting\n // --------------------------------------------------------------\n if (useHoisting && IsString(schema.$id)) {\n const functionName = CreateFunctionName(schema.$id);\n if (state.functions.has(functionName)) {\n return yield `${functionName}(${value})`;\n }\n else {\n const functionCode = CreateFunction(functionName, schema, references, 'value', false);\n state.functions.set(functionName, functionCode);\n return yield `${functionName}(${value})`;\n }\n }\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, value);\n case 'Array':\n return yield* FromArray(schema_, references_, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, value);\n case 'Date':\n return yield* FromDate(schema_, references_, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, value);\n case 'Never':\n return yield* FromNever(schema_, references_, value);\n case 'Not':\n return yield* FromNot(schema_, references_, value);\n case 'Null':\n return yield* FromNull(schema_, references_, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, value);\n case 'Object':\n return yield* FromObject(schema_, references_, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, value);\n case 'String':\n return yield* FromString(schema_, references_, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, value);\n case 'This':\n return yield* FromThis(schema_, references_, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new TypeCompilerUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, value);\n }\n }\n // ----------------------------------------------------------------\n // Compiler State\n // ----------------------------------------------------------------\n // prettier-ignore\n const state = {\n language: 'javascript', // target language\n functions: new Map(), // local functions\n variables: new Map(), // local variables\n instances: new Map() // exterior kind instances\n };\n // ----------------------------------------------------------------\n // Compiler Factory\n // ----------------------------------------------------------------\n function CreateExpression(schema, references, value, useHoisting = true) {\n return `(${[...Visit(schema, references, value, useHoisting)].join(' && ')})`;\n }\n function CreateFunctionName($id) {\n return `check_${Identifier.Encode($id)}`;\n }\n function CreateVariable(expression) {\n const variableName = `local_${state.variables.size}`;\n state.variables.set(variableName, `const ${variableName} = ${expression}`);\n return variableName;\n }\n function CreateFunction(name, schema, references, value, useHoisting = true) {\n const [newline, pad] = ['\\n', (length) => ''.padStart(length, ' ')];\n const parameter = CreateParameter('value', 'any');\n const returns = CreateReturns('boolean');\n const expression = [...Visit(schema, references, value, useHoisting)].map((expression) => `${pad(4)}${expression}`).join(` &&${newline}`);\n return `function ${name}(${parameter})${returns} {${newline}${pad(2)}return (${newline}${expression}${newline}${pad(2)})\\n}`;\n }\n function CreateParameter(name, type) {\n const annotation = state.language === 'typescript' ? `: ${type}` : '';\n return `${name}${annotation}`;\n }\n function CreateReturns(type) {\n return state.language === 'typescript' ? `: ${type}` : '';\n }\n // ----------------------------------------------------------------\n // Compile\n // ----------------------------------------------------------------\n function Build(schema, references, options) {\n const functionCode = CreateFunction('check', schema, references, 'value'); // will populate functions and variables\n const parameter = CreateParameter('value', 'any');\n const returns = CreateReturns('boolean');\n const functions = [...state.functions.values()];\n const variables = [...state.variables.values()];\n // prettier-ignore\n const checkFunction = IsString(schema.$id) // ensure top level schemas with $id's are hoisted\n ? `return function check(${parameter})${returns} {\\n return ${CreateFunctionName(schema.$id)}(value)\\n}`\n : `return ${functionCode}`;\n return [...variables, ...functions, checkFunction].join('\\n');\n }\n /** Generates the code used to assert this type and returns it as a string */\n function Code(...args) {\n const defaults = { language: 'javascript' };\n // prettier-ignore\n const [schema, references, options] = (args.length === 2 && IsArray(args[1]) ? [args[0], args[1], defaults] :\n args.length === 2 && !IsArray(args[1]) ? [args[0], [], args[1]] :\n args.length === 3 ? [args[0], args[1], args[2]] :\n args.length === 1 ? [args[0], [], defaults] :\n [null, [], defaults]);\n // compiler-reset\n state.language = options.language;\n state.variables.clear();\n state.functions.clear();\n state.instances.clear();\n if (!IsSchema(schema))\n throw new TypeCompilerTypeGuardError(schema);\n for (const schema of references)\n if (!IsSchema(schema))\n throw new TypeCompilerTypeGuardError(schema);\n return Build(schema, references, options);\n }\n TypeCompiler.Code = Code;\n /** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */\n function Compile(schema, references = []) {\n const generatedCode = Code(schema, references, { language: 'javascript' });\n const compiledFunction = globalThis.Function('kind', 'format', 'hash', generatedCode);\n const instances = new Map(state.instances);\n function typeRegistryFunction(kind, instance, value) {\n if (!TypeRegistry.Has(kind) || !instances.has(instance))\n return false;\n const checkFunc = TypeRegistry.Get(kind);\n const schema = instances.get(instance);\n return checkFunc(schema, value);\n }\n function formatRegistryFunction(format, value) {\n if (!FormatRegistry.Has(format))\n return false;\n const checkFunc = FormatRegistry.Get(format);\n return checkFunc(value);\n }\n function hashFunction(value) {\n return Hash(value);\n }\n const checkFunction = compiledFunction(typeRegistryFunction, formatRegistryFunction, hashFunction);\n return new TypeCheck(schema, references, checkFunction, generatedCode);\n }\n TypeCompiler.Compile = Compile;\n})(TypeCompiler || (TypeCompiler = {}));\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","function flatHooks(configHooks, hooks = {}, parentName) {\n for (const key in configHooks) {\n const subHook = configHooks[key];\n const name = parentName ? `${parentName}:${key}` : key;\n if (typeof subHook === \"object\" && subHook !== null) {\n flatHooks(subHook, hooks, name);\n } else if (typeof subHook === \"function\") {\n hooks[name] = subHook;\n }\n }\n return hooks;\n}\nfunction mergeHooks(...hooks) {\n const finalHooks = {};\n for (const hook of hooks) {\n const flatenHook = flatHooks(hook);\n for (const key in flatenHook) {\n if (finalHooks[key]) {\n finalHooks[key].push(flatenHook[key]);\n } else {\n finalHooks[key] = [flatenHook[key]];\n }\n }\n }\n for (const key in finalHooks) {\n if (finalHooks[key].length > 1) {\n const array = finalHooks[key];\n finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n } else {\n finalHooks[key] = finalHooks[key][0];\n }\n }\n return finalHooks;\n}\nfunction serial(tasks, function_) {\n return tasks.reduce(\n (promise, task) => promise.then(() => function_(task)),\n Promise.resolve()\n );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n Promise.resolve()\n );\n}\nfunction parallelTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n Promise.resolve()\n );\n}\nfunction parallelCaller(hooks, args) {\n return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n for (const callback of [...callbacks]) {\n callback(arg0);\n }\n}\n\nclass Hookable {\n constructor() {\n this._hooks = {};\n this._before = void 0;\n this._after = void 0;\n this._deprecatedMessages = void 0;\n this._deprecatedHooks = {};\n this.hook = this.hook.bind(this);\n this.callHook = this.callHook.bind(this);\n this.callHookWith = this.callHookWith.bind(this);\n }\n hook(name, function_, options = {}) {\n if (!name || typeof function_ !== \"function\") {\n return () => {\n };\n }\n const originalName = name;\n let dep;\n while (this._deprecatedHooks[name]) {\n dep = this._deprecatedHooks[name];\n name = dep.to;\n }\n if (dep && !options.allowDeprecated) {\n let message = dep.message;\n if (!message) {\n message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n }\n if (!this._deprecatedMessages) {\n this._deprecatedMessages = /* @__PURE__ */ new Set();\n }\n if (!this._deprecatedMessages.has(message)) {\n console.warn(message);\n this._deprecatedMessages.add(message);\n }\n }\n if (!function_.name) {\n try {\n Object.defineProperty(function_, \"name\", {\n get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n configurable: true\n });\n } catch {\n }\n }\n this._hooks[name] = this._hooks[name] || [];\n this._hooks[name].push(function_);\n return () => {\n if (function_) {\n this.removeHook(name, function_);\n function_ = void 0;\n }\n };\n }\n hookOnce(name, function_) {\n let _unreg;\n let _function = (...arguments_) => {\n if (typeof _unreg === \"function\") {\n _unreg();\n }\n _unreg = void 0;\n _function = void 0;\n return function_(...arguments_);\n };\n _unreg = this.hook(name, _function);\n return _unreg;\n }\n removeHook(name, function_) {\n if (this._hooks[name]) {\n const index = this._hooks[name].indexOf(function_);\n if (index !== -1) {\n this._hooks[name].splice(index, 1);\n }\n if (this._hooks[name].length === 0) {\n delete this._hooks[name];\n }\n }\n }\n deprecateHook(name, deprecated) {\n this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n const _hooks = this._hooks[name] || [];\n delete this._hooks[name];\n for (const hook of _hooks) {\n this.hook(name, hook);\n }\n }\n deprecateHooks(deprecatedHooks) {\n Object.assign(this._deprecatedHooks, deprecatedHooks);\n for (const name in deprecatedHooks) {\n this.deprecateHook(name, deprecatedHooks[name]);\n }\n }\n addHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n const removeFns = Object.keys(hooks).map(\n (key) => this.hook(key, hooks[key])\n );\n return () => {\n for (const unreg of removeFns.splice(0, removeFns.length)) {\n unreg();\n }\n };\n }\n removeHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n for (const key in hooks) {\n this.removeHook(key, hooks[key]);\n }\n }\n removeAllHooks() {\n for (const key in this._hooks) {\n delete this._hooks[key];\n }\n }\n callHook(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(serialTaskCaller, name, ...arguments_);\n }\n callHookParallel(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n }\n callHookWith(caller, name, ...arguments_) {\n const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n if (this._before) {\n callEachWith(this._before, event);\n }\n const result = caller(\n name in this._hooks ? [...this._hooks[name]] : [],\n arguments_\n );\n if (result instanceof Promise) {\n return result.finally(() => {\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n });\n }\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n return result;\n }\n beforeEach(function_) {\n this._before = this._before || [];\n this._before.push(function_);\n return () => {\n if (this._before !== void 0) {\n const index = this._before.indexOf(function_);\n if (index !== -1) {\n this._before.splice(index, 1);\n }\n }\n };\n }\n afterEach(function_) {\n this._after = this._after || [];\n this._after.push(function_);\n return () => {\n if (this._after !== void 0) {\n const index = this._after.indexOf(function_);\n if (index !== -1) {\n this._after.splice(index, 1);\n }\n }\n };\n }\n}\nfunction createHooks() {\n return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n const options = {\n inspect: isBrowser,\n group: isBrowser,\n filter: () => true,\n ..._options\n };\n const _filter = options.filter;\n const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n const _tag = options.tag ? `[${options.tag}] ` : \"\";\n const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n const _idCtr = {};\n const unsubscribeBefore = hooks.beforeEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n _idCtr[event.name] = _idCtr[event.name] || 0;\n event._id = _idCtr[event.name]++;\n console.time(logPrefix(event));\n });\n const unsubscribeAfter = hooks.afterEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n if (options.group) {\n console.groupCollapsed(event.name);\n }\n if (options.inspect) {\n console.timeLog(logPrefix(event), event.args);\n } else {\n console.timeEnd(logPrefix(event));\n }\n if (options.group) {\n console.groupEnd();\n }\n _idCtr[event.name]--;\n });\n return {\n /** Stop debugging and remove listeners */\n close: () => {\n unsubscribeBefore();\n unsubscribeAfter();\n }\n };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n","function asArray$1(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nconst SelfClosingTags = [\"meta\", \"link\", \"base\"];\nconst TagsWithInnerContent = [\"title\", \"titleTemplate\", \"script\", \"style\", \"noscript\"];\nconst HasElementTags = [\n \"base\",\n \"meta\",\n \"link\",\n \"style\",\n \"script\",\n \"noscript\"\n];\nconst ValidHeadTags = [\n \"title\",\n \"titleTemplate\",\n \"templateParams\",\n \"base\",\n \"htmlAttrs\",\n \"bodyAttrs\",\n \"meta\",\n \"link\",\n \"style\",\n \"script\",\n \"noscript\"\n];\nconst UniqueTags = [\"base\", \"title\", \"titleTemplate\", \"bodyAttrs\", \"htmlAttrs\", \"templateParams\"];\nconst TagConfigKeys = [\"tagPosition\", \"tagPriority\", \"tagDuplicateStrategy\", \"children\", \"innerHTML\", \"textContent\", \"processTemplateParams\"];\nconst IsBrowser = typeof window !== \"undefined\";\nconst composableNames = [\n \"getActiveHead\",\n \"useHead\",\n \"useSeoMeta\",\n \"useHeadSafe\",\n \"useServerHead\",\n \"useServerSeoMeta\",\n \"useServerHeadSafe\"\n];\n\nfunction defineHeadPlugin(plugin) {\n return plugin;\n}\n\nfunction hashCode(s) {\n let h = 9;\n for (let i = 0; i < s.length; )\n h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9);\n return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase();\n}\nfunction hashTag(tag) {\n return tag._h || hashCode(tag._d ? tag._d : `${tag.tag}:${tag.textContent || tag.innerHTML || \"\"}:${Object.entries(tag.props).map(([key, value]) => `${key}:${String(value)}`).join(\",\")}`);\n}\n\nfunction tagDedupeKey(tag, fn) {\n const { props, tag: tagName } = tag;\n if (UniqueTags.includes(tagName))\n return tagName;\n if (tagName === \"link\" && props.rel === \"canonical\")\n return \"canonical\";\n if (props.charset)\n return \"charset\";\n const name = [\"id\"];\n if (tagName === \"meta\")\n name.push(...[\"name\", \"property\", \"http-equiv\"]);\n for (const n of name) {\n if (typeof props[n] !== \"undefined\") {\n const val = String(props[n]);\n if (fn && !fn(val))\n return false;\n return `${tagName}:${n}:${val}`;\n }\n }\n return false;\n}\n\nfunction resolveTitleTemplate(template, title) {\n if (template == null)\n return title || null;\n if (typeof template === \"function\")\n return template(title);\n return template;\n}\n\nfunction asArray(input) {\n return Array.isArray(input) ? input : [input];\n}\nconst InternalKeySymbol = \"_$key\";\nfunction packObject(input, options) {\n const keys = Object.keys(input);\n let [k, v] = keys;\n options = options || {};\n options.key = options.key || k;\n options.value = options.value || v;\n options.resolveKey = options.resolveKey || ((k2) => k2);\n const resolveKey = (index) => {\n const arr = asArray(options[index]);\n return arr.find((k2) => {\n if (typeof k2 === \"string\" && k2.includes(\".\")) {\n return k2;\n }\n return k2 && keys.includes(k2);\n });\n };\n const resolveValue = (k2, input2) => {\n if (k2.includes(\".\")) {\n const paths = k2.split(\".\");\n let val = input2;\n for (const path of paths)\n val = val[path];\n return val;\n }\n return input2[k2];\n };\n k = resolveKey(\"key\") || k;\n v = resolveKey(\"value\") || v;\n const dedupeKeyPrefix = input.key ? `${InternalKeySymbol}${input.key}-` : \"\";\n let keyValue = resolveValue(k, input);\n keyValue = options.resolveKey(keyValue);\n return {\n [`${dedupeKeyPrefix}${keyValue}`]: resolveValue(v, input)\n };\n}\n\nfunction packArray(input, options) {\n const packed = {};\n for (const i of input) {\n const packedObj = packObject(i, options);\n const pKey = Object.keys(packedObj)[0];\n const isDedupeKey = pKey.startsWith(InternalKeySymbol);\n if (!isDedupeKey && packed[pKey]) {\n packed[pKey] = Array.isArray(packed[pKey]) ? packed[pKey] : [packed[pKey]];\n packed[pKey].push(Object.values(packedObj)[0]);\n } else {\n packed[isDedupeKey ? pKey.split(\"-\").slice(1).join(\"-\") || pKey : pKey] = packedObj[pKey];\n }\n }\n return packed;\n}\n\nfunction unpackToArray(input, options) {\n const unpacked = [];\n const kFn = options.resolveKeyData || ((ctx) => ctx.key);\n const vFn = options.resolveValueData || ((ctx) => ctx.value);\n for (const [k, v] of Object.entries(input)) {\n unpacked.push(...(Array.isArray(v) ? v : [v]).map((i) => {\n const ctx = { key: k, value: i };\n const val = vFn(ctx);\n if (typeof val === \"object\")\n return unpackToArray(val, options);\n if (Array.isArray(val))\n return val;\n return {\n [typeof options.key === \"function\" ? options.key(ctx) : options.key]: kFn(ctx),\n [typeof options.value === \"function\" ? options.value(ctx) : options.value]: val\n };\n }).flat());\n }\n return unpacked;\n}\n\nfunction unpackToString(value, options) {\n return Object.entries(value).map(([key, value2]) => {\n if (typeof value2 === \"object\")\n value2 = unpackToString(value2, options);\n if (options.resolve) {\n const resolved = options.resolve({ key, value: value2 });\n if (typeof resolved !== \"undefined\")\n return resolved;\n }\n if (typeof value2 === \"number\")\n value2 = value2.toString();\n if (typeof value2 === \"string\" && options.wrapValue) {\n value2 = value2.replace(new RegExp(options.wrapValue, \"g\"), `\\\\${options.wrapValue}`);\n value2 = `${options.wrapValue}${value2}${options.wrapValue}`;\n }\n return `${key}${options.keyValueSeparator || \"\"}${value2}`;\n }).join(options.entrySeparator || \"\");\n}\n\nconst p = (p2) => ({ keyValue: p2, metaKey: \"property\" });\nconst k = (p2) => ({ keyValue: p2 });\nconst MetaPackingSchema = {\n appleItunesApp: {\n unpack: {\n entrySeparator: \", \",\n resolve({ key, value }) {\n return `${fixKeyCase(key)}=${value}`;\n }\n }\n },\n articleExpirationTime: p(\"article:expiration_time\"),\n articleModifiedTime: p(\"article:modified_time\"),\n articlePublishedTime: p(\"article:published_time\"),\n bookReleaseDate: p(\"book:release_date\"),\n charset: {\n metaKey: \"charset\"\n },\n contentSecurityPolicy: {\n unpack: {\n entrySeparator: \"; \",\n resolve({ key, value }) {\n return `${fixKeyCase(key)} ${value}`;\n }\n },\n metaKey: \"http-equiv\"\n },\n contentType: {\n metaKey: \"http-equiv\"\n },\n defaultStyle: {\n metaKey: \"http-equiv\"\n },\n fbAppId: p(\"fb:app_id\"),\n msapplicationConfig: k(\"msapplication-Config\"),\n msapplicationTileColor: k(\"msapplication-TileColor\"),\n msapplicationTileImage: k(\"msapplication-TileImage\"),\n ogAudioSecureUrl: p(\"og:audio:secure_url\"),\n ogAudioUrl: p(\"og:audio\"),\n ogImageSecureUrl: p(\"og:image:secure_url\"),\n ogImageUrl: p(\"og:image\"),\n ogSiteName: p(\"og:site_name\"),\n ogVideoSecureUrl: p(\"og:video:secure_url\"),\n ogVideoUrl: p(\"og:video\"),\n profileFirstName: p(\"profile:first_name\"),\n profileLastName: p(\"profile:last_name\"),\n profileUsername: p(\"profile:username\"),\n refresh: {\n metaKey: \"http-equiv\",\n unpack: {\n entrySeparator: \";\",\n resolve({ key, value }) {\n if (key === \"seconds\")\n return `${value}`;\n }\n }\n },\n robots: {\n unpack: {\n entrySeparator: \", \",\n resolve({ key, value }) {\n if (typeof value === \"boolean\")\n return `${fixKeyCase(key)}`;\n else\n return `${fixKeyCase(key)}:${value}`;\n }\n }\n },\n xUaCompatible: {\n metaKey: \"http-equiv\"\n }\n};\nconst openGraphNamespaces = [\n \"og\",\n \"book\",\n \"article\",\n \"profile\"\n];\nfunction resolveMetaKeyType(key) {\n const fKey = fixKeyCase(key).split(\":\")[0];\n if (openGraphNamespaces.includes(fKey))\n return \"property\";\n return MetaPackingSchema[key]?.metaKey || \"name\";\n}\nfunction resolveMetaKeyValue(key) {\n return MetaPackingSchema[key]?.keyValue || fixKeyCase(key);\n}\nfunction fixKeyCase(key) {\n const updated = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n const fKey = updated.split(\"-\")[0];\n if (openGraphNamespaces.includes(fKey) || fKey === \"twitter\")\n return key.replace(/([A-Z])/g, \":$1\").toLowerCase();\n return updated;\n}\nfunction changeKeyCasingDeep(input) {\n if (Array.isArray(input)) {\n return input.map((entry) => changeKeyCasingDeep(entry));\n }\n if (typeof input !== \"object\" || Array.isArray(input))\n return input;\n const output = {};\n for (const [key, value] of Object.entries(input))\n output[fixKeyCase(key)] = changeKeyCasingDeep(value);\n return output;\n}\nfunction resolvePackedMetaObjectValue(value, key) {\n const definition = MetaPackingSchema[key];\n if (key === \"refresh\")\n return `${value.seconds};url=${value.url}`;\n return unpackToString(\n changeKeyCasingDeep(value),\n {\n keyValueSeparator: \"=\",\n entrySeparator: \", \",\n resolve({ value: value2, key: key2 }) {\n if (value2 === null)\n return \"\";\n if (typeof value2 === \"boolean\")\n return `${key2}`;\n },\n ...definition?.unpack\n }\n );\n}\nconst ObjectArrayEntries = [\"og:image\", \"og:video\", \"og:audio\", \"twitter:image\"];\nfunction sanitize(input) {\n const out = {};\n Object.entries(input).forEach(([k2, v]) => {\n if (String(v) !== \"false\" && k2)\n out[k2] = v;\n });\n return out;\n}\nfunction handleObjectEntry(key, v) {\n const value = sanitize(v);\n const fKey = fixKeyCase(key);\n const attr = resolveMetaKeyType(fKey);\n if (ObjectArrayEntries.includes(fKey)) {\n const input = {};\n Object.entries(value).forEach(([k2, v2]) => {\n input[`${key}${k2 === \"url\" ? \"\" : `${k2.charAt(0).toUpperCase()}${k2.slice(1)}`}`] = v2;\n });\n return unpackMeta(input).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0));\n }\n return [{ [attr]: fKey, ...value }];\n}\nfunction unpackMeta(input) {\n const extras = [];\n const primitives = {};\n Object.entries(input).forEach(([key, value]) => {\n if (!Array.isArray(value)) {\n if (typeof value === \"object\" && value) {\n if (ObjectArrayEntries.includes(fixKeyCase(key))) {\n extras.push(...handleObjectEntry(key, value));\n return;\n }\n primitives[key] = sanitize(value);\n } else {\n primitives[key] = value;\n }\n return;\n }\n value.forEach((v) => {\n extras.push(...typeof v === \"string\" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v));\n });\n });\n const meta = unpackToArray(primitives, {\n key({ key }) {\n return resolveMetaKeyType(key);\n },\n value({ key }) {\n return key === \"charset\" ? \"charset\" : \"content\";\n },\n resolveKeyData({ key }) {\n return resolveMetaKeyValue(key);\n },\n resolveValueData({ value, key }) {\n if (value === null)\n return \"_null\";\n if (typeof value === \"object\")\n return resolvePackedMetaObjectValue(value, key);\n return typeof value === \"number\" ? value.toString() : value;\n }\n });\n return [...extras, ...meta].map((m) => {\n if (m.content === \"_null\")\n m.content = null;\n return m;\n });\n}\nfunction packMeta(inputs) {\n const mappedPackingSchema = Object.entries(MetaPackingSchema).map(([key, value]) => [key, value.keyValue]);\n return packArray(inputs, {\n key: [\"name\", \"property\", \"httpEquiv\", \"http-equiv\", \"charset\"],\n value: [\"content\", \"charset\"],\n resolveKey(k2) {\n let key = mappedPackingSchema.filter((sk) => sk[1] === k2)?.[0]?.[0] || k2;\n const replacer = (_, letter) => letter?.toUpperCase();\n key = key.replace(/:([a-z])/g, replacer).replace(/-([a-z])/g, replacer);\n return key;\n }\n });\n}\n\nconst WhitelistAttributes = {\n htmlAttrs: [\"id\", \"class\", \"lang\", \"dir\"],\n bodyAttrs: [\"id\", \"class\"],\n meta: [\"id\", \"name\", \"property\", \"charset\", \"content\"],\n noscript: [\"id\", \"textContent\"],\n script: [\"id\", \"type\", \"textContent\"],\n link: [\"id\", \"color\", \"crossorigin\", \"fetchpriority\", \"href\", \"hreflang\", \"imagesrcset\", \"imagesizes\", \"integrity\", \"media\", \"referrerpolicy\", \"rel\", \"sizes\", \"type\"]\n};\nfunction acceptDataAttrs(value) {\n const filtered = {};\n Object.keys(value || {}).filter((a) => a.startsWith(\"data-\")).forEach((a) => {\n filtered[a] = value[a];\n });\n return filtered;\n}\nfunction whitelistSafeInput(input) {\n const filtered = {};\n Object.keys(input).forEach((key) => {\n const tagValue = input[key];\n if (!tagValue)\n return;\n switch (key) {\n case \"title\":\n case \"titleTemplate\":\n case \"templateParams\":\n filtered[key] = tagValue;\n break;\n case \"htmlAttrs\":\n case \"bodyAttrs\":\n filtered[key] = acceptDataAttrs(tagValue);\n WhitelistAttributes[key].forEach((a) => {\n if (tagValue[a])\n filtered[key][a] = tagValue[a];\n });\n break;\n case \"meta\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((meta) => {\n const safeMeta = acceptDataAttrs(meta);\n WhitelistAttributes.meta.forEach((key2) => {\n if (meta[key2])\n safeMeta[key2] = meta[key2];\n });\n return safeMeta;\n }).filter((meta) => Object.keys(meta).length > 0);\n }\n break;\n case \"link\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((meta) => {\n const link = acceptDataAttrs(meta);\n WhitelistAttributes.link.forEach((key2) => {\n const val = meta[key2];\n if (key2 === \"rel\" && [\"stylesheet\", \"canonical\", \"modulepreload\", \"prerender\", \"preload\", \"prefetch\"].includes(val))\n return;\n if (key2 === \"href\") {\n if (val.includes(\"javascript:\") || val.includes(\"data:\"))\n return;\n link[key2] = val;\n } else if (val) {\n link[key2] = val;\n }\n });\n return link;\n }).filter((link) => Object.keys(link).length > 1 && !!link.rel);\n }\n break;\n case \"noscript\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((meta) => {\n const noscript = acceptDataAttrs(meta);\n WhitelistAttributes.noscript.forEach((key2) => {\n if (meta[key2])\n noscript[key2] = meta[key2];\n });\n return noscript;\n }).filter((meta) => Object.keys(meta).length > 0);\n }\n break;\n case \"script\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((script) => {\n const safeScript = acceptDataAttrs(script);\n WhitelistAttributes.script.forEach((s) => {\n if (script[s]) {\n if (s === \"textContent\") {\n try {\n const jsonVal = typeof script[s] === \"string\" ? JSON.parse(script[s]) : script[s];\n safeScript[s] = JSON.stringify(jsonVal, null, 0);\n } catch (e) {\n }\n } else {\n safeScript[s] = script[s];\n }\n }\n });\n return safeScript;\n }).filter((meta) => Object.keys(meta).length > 0);\n }\n break;\n }\n });\n return filtered;\n}\n\nasync function normaliseTag(tagName, input, e) {\n const tag = {\n tag: tagName,\n props: await normaliseProps(\n // explicitly check for an object\n // @ts-expect-error untyped\n typeof input === \"object\" && typeof input !== \"function\" && !(input instanceof Promise) ? { ...input } : { [[\"script\", \"noscript\", \"style\"].includes(tagName) ? \"innerHTML\" : \"textContent\"]: input },\n [\"templateParams\", \"titleTemplate\"].includes(tagName)\n )\n };\n TagConfigKeys.forEach((k) => {\n const val = typeof tag.props[k] !== \"undefined\" ? tag.props[k] : e[k];\n if (typeof val !== \"undefined\") {\n if (![\"innerHTML\", \"textContent\", \"children\"].includes(k) || TagsWithInnerContent.includes(tag.tag)) {\n tag[k === \"children\" ? \"innerHTML\" : k] = val;\n }\n delete tag.props[k];\n }\n });\n if (tag.props.body) {\n tag.tagPosition = \"bodyClose\";\n delete tag.props.body;\n }\n if (tag.tag === \"script\") {\n if (typeof tag.innerHTML === \"object\") {\n tag.innerHTML = JSON.stringify(tag.innerHTML);\n tag.props.type = tag.props.type || \"application/json\";\n }\n }\n return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag;\n}\nfunction normaliseStyleClassProps(key, v) {\n const sep = key === \"class\" ? \" \" : \";\";\n if (typeof v === \"object\" && !Array.isArray(v)) {\n v = Object.entries(v).filter(([, v2]) => v2).map(([k, v2]) => key === \"style\" ? `${k}:${v2}` : k);\n }\n return String(Array.isArray(v) ? v.join(sep) : v)?.split(sep).filter((c) => c.trim()).filter(Boolean).join(sep);\n}\nasync function normaliseProps(props, virtual) {\n for (const k of Object.keys(props)) {\n if ([\"class\", \"style\"].includes(k)) {\n props[k] = normaliseStyleClassProps(k, props[k]);\n continue;\n }\n if (props[k] instanceof Promise)\n props[k] = await props[k];\n if (!virtual && !TagConfigKeys.includes(k)) {\n const v = String(props[k]);\n const isDataKey = k.startsWith(\"data-\");\n if (v === \"true\" || v === \"\") {\n props[k] = isDataKey ? \"true\" : true;\n } else if (!props[k]) {\n if (isDataKey && v === \"false\")\n props[k] = \"false\";\n else\n delete props[k];\n }\n }\n }\n return props;\n}\nconst TagEntityBits = 10;\nasync function normaliseEntryTags(e) {\n const tagPromises = [];\n Object.entries(e.resolvedInput).filter(([k, v]) => typeof v !== \"undefined\" && ValidHeadTags.includes(k)).forEach(([k, value]) => {\n const v = asArray$1(value);\n tagPromises.push(...v.map((props) => normaliseTag(k, props, e)).flat());\n });\n return (await Promise.all(tagPromises)).flat().filter(Boolean).map((t, i) => {\n t._e = e._i;\n e.mode && (t._m = e.mode);\n t._p = (e._i << TagEntityBits) + i;\n return t;\n });\n}\n\nconst TAG_WEIGHTS = {\n // tags\n base: -10,\n title: 10\n};\nconst TAG_ALIASES = {\n // relative scores to their default values\n critical: -80,\n high: -10,\n low: 20\n};\nfunction tagWeight(tag) {\n let weight = 100;\n const priority = tag.tagPriority;\n if (typeof priority === \"number\")\n return priority;\n if (tag.tag === \"meta\") {\n if (tag.props[\"http-equiv\"] === \"content-security-policy\")\n weight = -30;\n if (tag.props.charset)\n weight = -20;\n if (tag.props.name === \"viewport\")\n weight = -15;\n } else if (tag.tag === \"link\" && tag.props.rel === \"preconnect\") {\n weight = 20;\n } else if (tag.tag in TAG_WEIGHTS) {\n weight = TAG_WEIGHTS[tag.tag];\n }\n if (typeof priority === \"string\" && priority in TAG_ALIASES) {\n return weight + TAG_ALIASES[priority];\n }\n return weight;\n}\nconst SortModifiers = [{ prefix: \"before:\", offset: -1 }, { prefix: \"after:\", offset: 1 }];\n\nconst NetworkEvents = [\"onload\", \"onerror\", \"onabort\", \"onprogress\", \"onloadstart\"];\nconst ScriptNetworkEvents = [\"onload\", \"onerror\"];\n\nconst sepSub = \"%separator\";\nfunction processTemplateParams(s, p, sep) {\n if (typeof s !== \"string\" || !s.includes(\"%\"))\n return s;\n function sub(token) {\n let val;\n if ([\"s\", \"pageTitle\"].includes(token)) {\n val = p.pageTitle;\n } else if (token.includes(\".\")) {\n val = token.split(\".\").reduce((acc, key) => acc ? acc[key] || void 0 : void 0, p);\n } else {\n val = p[token];\n }\n return typeof val !== \"undefined\" ? (val || \"\").replace(/\"/g, '\\\\\"') : false;\n }\n let decoded = s;\n try {\n decoded = decodeURI(s);\n } catch {\n }\n const tokens = (decoded.match(/%(\\w+\\.+\\w+)|%(\\w+)/g) || []).sort().reverse();\n tokens.forEach((token) => {\n const re = sub(token.slice(1));\n if (typeof re === \"string\") {\n s = s.replace(new RegExp(`\\\\${token}(\\\\W|$)`, \"g\"), (_, args) => `${re}${args}`).trim();\n }\n });\n if (s.includes(sepSub)) {\n if (s.endsWith(sepSub))\n s = s.slice(0, -sepSub.length).trim();\n if (s.startsWith(sepSub))\n s = s.slice(sepSub.length).trim();\n s = s.replace(new RegExp(`\\\\${sepSub}\\\\s*\\\\${sepSub}`, \"g\"), sepSub);\n s = processTemplateParams(s, { separator: sep }, sep);\n }\n return s;\n}\n\nexport { HasElementTags, IsBrowser, NetworkEvents, ScriptNetworkEvents, SelfClosingTags, SortModifiers, TAG_ALIASES, TAG_WEIGHTS, TagConfigKeys, TagEntityBits, TagsWithInnerContent, UniqueTags, ValidHeadTags, asArray$1 as asArray, composableNames, defineHeadPlugin, hashCode, hashTag, normaliseEntryTags, normaliseProps, normaliseStyleClassProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, resolveTitleTemplate, tagDedupeKey, tagWeight, unpackMeta, whitelistSafeInput };\n","import { HasElementTags, hashTag, normaliseProps, tagDedupeKey, defineHeadPlugin } from '@unhead/shared';\n\nasync function renderDOMHead(head, options = {}) {\n const dom = options.document || head.resolvedOptions.document;\n if (!dom || !head.dirty)\n return;\n const beforeRenderCtx = { shouldRender: true, tags: [] };\n await head.hooks.callHook(\"dom:beforeRender\", beforeRenderCtx);\n if (!beforeRenderCtx.shouldRender)\n return;\n const tags = (await head.resolveTags()).map((tag) => ({\n tag,\n id: HasElementTags.includes(tag.tag) ? hashTag(tag) : tag.tag,\n shouldRender: true\n }));\n let state = head._dom;\n if (!state) {\n state = {\n elMap: { htmlAttrs: dom.documentElement, bodyAttrs: dom.body }\n };\n for (const key of [\"body\", \"head\"]) {\n const children = dom[key]?.children;\n const tags2 = [];\n for (const c of [...children].filter((c2) => HasElementTags.includes(c2.tagName.toLowerCase()))) {\n const t = {\n tag: c.tagName.toLowerCase(),\n props: await normaliseProps(\n c.getAttributeNames().reduce((props, name) => ({ ...props, [name]: c.getAttribute(name) }), {})\n ),\n innerHTML: c.innerHTML\n };\n let i = 1;\n let d = tagDedupeKey(t);\n while (d && tags2.find((t2) => t2._d === d))\n d = `${d}:${i++}`;\n t._d = d || void 0;\n tags2.push(t);\n state.elMap[c.getAttribute(\"data-hid\") || hashTag(t)] = c;\n }\n }\n }\n state.pendingSideEffects = { ...state.sideEffects || {} };\n state.sideEffects = {};\n function track(id, scope, fn) {\n const k = `${id}:${scope}`;\n state.sideEffects[k] = fn;\n delete state.pendingSideEffects[k];\n }\n function trackCtx({ id, $el, tag }) {\n const isAttrTag = tag.tag.endsWith(\"Attrs\");\n state.elMap[id] = $el;\n if (!isAttrTag) {\n [\"textContent\", \"innerHTML\"].forEach((k) => {\n tag[k] && tag[k] !== $el[k] && ($el[k] = tag[k]);\n });\n track(id, \"el\", () => {\n state.elMap[id]?.remove();\n delete state.elMap[id];\n });\n }\n for (const [k, value] of Object.entries(tag._eventHandlers || {})) {\n if ($el.getAttribute(`data-${k}`) !== \"\") {\n (tag.tag === \"bodyAttrs\" ? dom.defaultView : $el).addEventListener(k.replace(\"on\", \"\"), value.bind($el));\n $el.setAttribute(`data-${k}`, \"\");\n }\n }\n Object.entries(tag.props).forEach(([k, value]) => {\n const ck = `attr:${k}`;\n if (k === \"class\") {\n for (const c of (value || \"\").split(\" \").filter(Boolean)) {\n isAttrTag && track(id, `${ck}:${c}`, () => $el.classList.remove(c));\n !$el.classList.contains(c) && $el.classList.add(c);\n }\n } else if (k === \"style\") {\n for (const c of (value || \"\").split(\";\").filter(Boolean)) {\n const [k2, ...v] = c.split(\":\").map((s) => s.trim());\n track(id, `${ck}:${k2}`, () => {\n $el.style.removeProperty(k2);\n });\n $el.style.setProperty(k2, v.join(\":\"));\n }\n } else {\n $el.getAttribute(k) !== value && $el.setAttribute(k, value === true ? \"\" : String(value));\n isAttrTag && track(id, ck, () => $el.removeAttribute(k));\n }\n });\n }\n const pending = [];\n const frag = {\n bodyClose: void 0,\n bodyOpen: void 0,\n head: void 0\n };\n for (const ctx of tags) {\n const { tag, shouldRender, id } = ctx;\n if (!shouldRender)\n continue;\n if (tag.tag === \"title\") {\n dom.title = tag.textContent;\n continue;\n }\n ctx.$el = ctx.$el || state.elMap[id];\n if (ctx.$el)\n trackCtx(ctx);\n else\n HasElementTags.includes(tag.tag) && pending.push(ctx);\n }\n for (const ctx of pending) {\n const pos = ctx.tag.tagPosition || \"head\";\n ctx.$el = dom.createElement(ctx.tag.tag);\n trackCtx(ctx);\n frag[pos] = frag[pos] || dom.createDocumentFragment();\n frag[pos].appendChild(ctx.$el);\n }\n for (const ctx of tags)\n await head.hooks.callHook(\"dom:renderTag\", ctx, dom, track);\n frag.head && dom.head.appendChild(frag.head);\n frag.bodyOpen && dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild);\n frag.bodyClose && dom.body.appendChild(frag.bodyClose);\n Object.values(state.pendingSideEffects).forEach((fn) => fn());\n head._dom = state;\n head.dirty = false;\n await head.hooks.callHook(\"dom:rendered\", { renders: tags });\n}\n\nasync function debouncedRenderDOMHead(head, options = {}) {\n const fn = options.delayFn || ((fn2) => setTimeout(fn2, 10));\n return head._domUpdatePromise = head._domUpdatePromise || new Promise((resolve) => fn(async () => {\n await renderDOMHead(head, options);\n delete head._domUpdatePromise;\n resolve();\n }));\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction DomPlugin(options) {\n return defineHeadPlugin((head) => {\n const initialPayload = head.resolvedOptions.document?.head.querySelector('script[id=\"unhead:payload\"]')?.innerHTML || false;\n initialPayload && head.push(JSON.parse(initialPayload));\n return {\n mode: \"client\",\n hooks: {\n \"entries:updated\": function(head2) {\n debouncedRenderDOMHead(head2, options);\n }\n }\n };\n });\n}\n\nexport { DomPlugin, debouncedRenderDOMHead, renderDOMHead };\n","import { createHooks } from 'hookable';\nimport { DomPlugin } from '@unhead/dom';\nimport { defineHeadPlugin, tagDedupeKey, tagWeight, HasElementTags, NetworkEvents, hashCode, SortModifiers, processTemplateParams, resolveTitleTemplate, IsBrowser, normaliseEntryTags, composableNames, whitelistSafeInput, unpackMeta, ScriptNetworkEvents } from '@unhead/shared';\nexport { composableNames } from '@unhead/shared';\n\nconst UsesMergeStrategy = [\"templateParams\", \"htmlAttrs\", \"bodyAttrs\"];\nconst DedupePlugin = defineHeadPlugin({\n hooks: {\n \"tag:normalise\": function({ tag }) {\n [\"hid\", \"vmid\", \"key\"].forEach((key) => {\n if (tag.props[key]) {\n tag.key = tag.props[key];\n delete tag.props[key];\n }\n });\n const generatedKey = tagDedupeKey(tag);\n const dedupe = generatedKey || (tag.key ? `${tag.tag}:${tag.key}` : false);\n if (dedupe)\n tag._d = dedupe;\n },\n \"tags:resolve\": function(ctx) {\n const deduping = {};\n ctx.tags.forEach((tag) => {\n const dedupeKey = (tag.key ? `${tag.tag}:${tag.key}` : tag._d) || tag._p;\n const dupedTag = deduping[dedupeKey];\n if (dupedTag) {\n let strategy = tag?.tagDuplicateStrategy;\n if (!strategy && UsesMergeStrategy.includes(tag.tag))\n strategy = \"merge\";\n if (strategy === \"merge\") {\n const oldProps = dupedTag.props;\n [\"class\", \"style\"].forEach((key) => {\n if (oldProps[key]) {\n if (tag.props[key]) {\n if (key === \"style\" && !oldProps[key].endsWith(\";\"))\n oldProps[key] += \";\";\n tag.props[key] = `${oldProps[key]} ${tag.props[key]}`;\n } else {\n tag.props[key] = oldProps[key];\n }\n }\n });\n deduping[dedupeKey].props = {\n ...oldProps,\n ...tag.props\n };\n return;\n } else if (tag._e === dupedTag._e) {\n dupedTag._duped = dupedTag._duped || [];\n tag._d = `${dupedTag._d}:${dupedTag._duped.length + 1}`;\n dupedTag._duped.push(tag);\n return;\n } else if (tagWeight(tag) > tagWeight(dupedTag)) {\n return;\n }\n }\n const propCount = Object.keys(tag.props).length + (tag.innerHTML ? 1 : 0) + (tag.textContent ? 1 : 0);\n if (HasElementTags.includes(tag.tag) && propCount === 0) {\n delete deduping[dedupeKey];\n return;\n }\n deduping[dedupeKey] = tag;\n });\n const newTags = [];\n Object.values(deduping).forEach((tag) => {\n const dupes = tag._duped;\n delete tag._duped;\n newTags.push(tag);\n if (dupes)\n newTags.push(...dupes);\n });\n ctx.tags = newTags;\n ctx.tags = ctx.tags.filter((t) => !(t.tag === \"meta\" && (t.props.name || t.props.property) && !t.props.content));\n }\n }\n});\n\nconst PayloadPlugin = defineHeadPlugin({\n mode: \"server\",\n hooks: {\n \"tags:resolve\": function(ctx) {\n const payload = {};\n ctx.tags.filter((tag) => [\"titleTemplate\", \"templateParams\", \"title\"].includes(tag.tag) && tag._m === \"server\").forEach((tag) => {\n payload[tag.tag] = tag.tag.startsWith(\"title\") ? tag.textContent : tag.props;\n });\n Object.keys(payload).length && ctx.tags.push({\n tag: \"script\",\n innerHTML: JSON.stringify(payload),\n props: { id: \"unhead:payload\", type: \"application/json\" }\n });\n }\n }\n});\n\nconst ValidEventTags = [\"script\", \"link\", \"bodyAttrs\"];\nconst EventHandlersPlugin = defineHeadPlugin((head) => ({\n hooks: {\n \"tags:resolve\": function(ctx) {\n for (const tag of ctx.tags.filter((t) => ValidEventTags.includes(t.tag))) {\n Object.entries(tag.props).forEach(([key, value]) => {\n if (key.startsWith(\"on\") && typeof value === \"function\") {\n if (head.ssr && NetworkEvents.includes(key))\n tag.props[key] = `this.dataset.${key}fired = true`;\n else\n delete tag.props[key];\n tag._eventHandlers = tag._eventHandlers || {};\n tag._eventHandlers[key] = value;\n }\n });\n if (head.ssr && tag._eventHandlers && (tag.props.src || tag.props.href))\n tag.key = tag.key || hashCode(tag.props.src || tag.props.href);\n }\n },\n \"dom:renderTag\": function({ $el, tag }) {\n for (const k of Object.keys($el?.dataset || {}).filter((k2) => NetworkEvents.some((e) => `${e}fired` === k2))) {\n const ek = k.replace(\"fired\", \"\");\n tag._eventHandlers?.[ek]?.call($el, new Event(ek.replace(\"on\", \"\")));\n }\n }\n }\n}));\n\nconst DupeableTags = [\"link\", \"style\", \"script\", \"noscript\"];\nconst HashKeyedPlugin = defineHeadPlugin({\n hooks: {\n \"tag:normalise\": ({ tag }) => {\n if (tag.key && DupeableTags.includes(tag.tag)) {\n tag.props[\"data-hid\"] = tag._h = hashCode(tag.key);\n }\n }\n }\n});\n\nconst SortPlugin = defineHeadPlugin({\n hooks: {\n \"tags:resolve\": (ctx) => {\n const tagPositionForKey = (key) => ctx.tags.find((tag) => tag._d === key)?._p;\n for (const { prefix, offset } of SortModifiers) {\n for (const tag of ctx.tags.filter((tag2) => typeof tag2.tagPriority === \"string\" && tag2.tagPriority.startsWith(prefix))) {\n const position = tagPositionForKey(\n tag.tagPriority.replace(prefix, \"\")\n );\n if (typeof position !== \"undefined\")\n tag._p = position + offset;\n }\n }\n ctx.tags.sort((a, b) => a._p - b._p).sort((a, b) => tagWeight(a) - tagWeight(b));\n }\n }\n});\n\nconst SupportedAttrs = {\n meta: \"content\",\n link: \"href\",\n htmlAttrs: \"lang\"\n};\nconst TemplateParamsPlugin = defineHeadPlugin((head) => ({\n hooks: {\n \"tags:resolve\": (ctx) => {\n const { tags } = ctx;\n const title = tags.find((tag) => tag.tag === \"title\")?.textContent;\n const idx = tags.findIndex((tag) => tag.tag === \"templateParams\");\n const params = idx !== -1 ? tags[idx].props : {};\n const sep = params.separator || \"|\";\n delete params.separator;\n params.pageTitle = processTemplateParams(params.pageTitle || title || \"\", params, sep);\n for (const tag of tags.filter((t) => t.processTemplateParams !== false)) {\n const v = SupportedAttrs[tag.tag];\n if (v && typeof tag.props[v] === \"string\") {\n tag.props[v] = processTemplateParams(tag.props[v], params, sep);\n } else if (tag.processTemplateParams === true || [\"titleTemplate\", \"title\"].includes(tag.tag)) {\n [\"innerHTML\", \"textContent\"].forEach((p) => {\n if (typeof tag[p] === \"string\")\n tag[p] = processTemplateParams(tag[p], params, sep);\n });\n }\n }\n head._templateParams = params;\n head._separator = sep;\n ctx.tags = tags.filter((tag) => tag.tag !== \"templateParams\");\n }\n }\n}));\n\nconst TitleTemplatePlugin = defineHeadPlugin({\n hooks: {\n \"tags:resolve\": (ctx) => {\n const { tags } = ctx;\n let titleTemplateIdx = tags.findIndex((i) => i.tag === \"titleTemplate\");\n const titleIdx = tags.findIndex((i) => i.tag === \"title\");\n if (titleIdx !== -1 && titleTemplateIdx !== -1) {\n const newTitle = resolveTitleTemplate(\n tags[titleTemplateIdx].textContent,\n tags[titleIdx].textContent\n );\n if (newTitle !== null) {\n tags[titleIdx].textContent = newTitle || tags[titleIdx].textContent;\n } else {\n delete tags[titleIdx];\n }\n } else if (titleTemplateIdx !== -1) {\n const newTitle = resolveTitleTemplate(\n tags[titleTemplateIdx].textContent\n );\n if (newTitle !== null) {\n tags[titleTemplateIdx].textContent = newTitle;\n tags[titleTemplateIdx].tag = \"title\";\n titleTemplateIdx = -1;\n }\n }\n if (titleTemplateIdx !== -1) {\n delete tags[titleTemplateIdx];\n }\n ctx.tags = tags.filter(Boolean);\n }\n }\n});\n\nconst XSSPlugin = defineHeadPlugin({\n hooks: {\n \"tags:afterResolve\": function(ctx) {\n for (const tag of ctx.tags) {\n if (typeof tag.innerHTML === \"string\") {\n if (tag.innerHTML && [\"application/ld+json\", \"application/json\"].includes(tag.props.type)) {\n tag.innerHTML = tag.innerHTML.replace(/ {\n head.dirty = true;\n hooks.callHook(\"entries:updated\", head);\n };\n let entryCount = 0;\n let entries = [];\n const plugins = [];\n const head = {\n plugins,\n dirty: false,\n resolvedOptions: options,\n hooks,\n headEntries() {\n return entries;\n },\n use(p) {\n const plugin = typeof p === \"function\" ? p(head) : p;\n if (!plugin.key || !plugins.some((p2) => p2.key === plugin.key)) {\n plugins.push(plugin);\n filterMode(plugin.mode, ssr) && hooks.addHooks(plugin.hooks || {});\n }\n },\n push(input, entryOptions) {\n delete entryOptions?.head;\n const entry = {\n _i: entryCount++,\n input,\n ...entryOptions\n };\n if (filterMode(entry.mode, ssr)) {\n entries.push(entry);\n updated();\n }\n return {\n dispose() {\n entries = entries.filter((e) => e._i !== entry._i);\n hooks.callHook(\"entries:updated\", head);\n updated();\n },\n // a patch is the same as creating a new entry, just a nice DX\n patch(input2) {\n entries = entries.map((e) => {\n if (e._i === entry._i) {\n e.input = entry.input = input2;\n }\n return e;\n });\n updated();\n }\n };\n },\n async resolveTags() {\n const resolveCtx = { tags: [], entries: [...entries] };\n await hooks.callHook(\"entries:resolve\", resolveCtx);\n for (const entry of resolveCtx.entries) {\n const resolved = entry.resolvedInput || entry.input;\n entry.resolvedInput = await (entry.transform ? entry.transform(resolved) : resolved);\n if (entry.resolvedInput) {\n for (const tag of await normaliseEntryTags(entry)) {\n const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };\n await hooks.callHook(\"tag:normalise\", tagCtx);\n resolveCtx.tags.push(tagCtx.tag);\n }\n }\n }\n await hooks.callHook(\"tags:beforeResolve\", resolveCtx);\n await hooks.callHook(\"tags:resolve\", resolveCtx);\n await hooks.callHook(\"tags:afterResolve\", resolveCtx);\n return resolveCtx.tags;\n },\n ssr\n };\n [\n DedupePlugin,\n PayloadPlugin,\n EventHandlersPlugin,\n HashKeyedPlugin,\n SortPlugin,\n TemplateParamsPlugin,\n TitleTemplatePlugin,\n XSSPlugin,\n ...options?.plugins || []\n ].forEach((p) => head.use(p));\n head.hooks.callHook(\"init\", head);\n return head;\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction HashHydrationPlugin() {\n return defineHeadPlugin({});\n}\n\nconst importRe = /@import/;\n// @__NO_SIDE_EFFECTS__\nfunction CapoPlugin(options) {\n return defineHeadPlugin({\n hooks: {\n \"tags:beforeResolve\": function({ tags }) {\n for (const tag of tags) {\n if (tag.tagPosition && tag.tagPosition !== \"head\")\n continue;\n tag.tagPriority = tag.tagPriority || tagWeight(tag);\n if (tag.tagPriority !== 100)\n continue;\n const isTruthy = (val) => val === \"\" || val === true;\n const isScript = tag.tag === \"script\";\n const isLink = tag.tag === \"link\";\n if (isScript && isTruthy(tag.props.async)) {\n tag.tagPriority = 30;\n } else if (tag.tag === \"style\" && tag.innerHTML && importRe.test(tag.innerHTML)) {\n tag.tagPriority = 40;\n } else if (isScript && tag.props.src && !isTruthy(tag.props.defer) && !isTruthy(tag.props.async) && tag.props.type !== \"module\" && !tag.props.type?.endsWith(\"json\")) {\n tag.tagPriority = 50;\n } else if (isLink && tag.props.rel === \"stylesheet\" || tag.tag === \"style\") {\n tag.tagPriority = 60;\n } else if (isLink && [\"preload\", \"modulepreload\"].includes(tag.props.rel)) {\n tag.tagPriority = 70;\n } else if (isScript && isTruthy(tag.props.defer) && tag.props.src && !isTruthy(tag.props.async)) {\n tag.tagPriority = 80;\n } else if (isLink && [\"prefetch\", \"dns-prefetch\", \"prerender\"].includes(tag.props.rel)) {\n tag.tagPriority = 90;\n }\n }\n options?.track && tags.push({\n tag: \"htmlAttrs\",\n props: {\n \"data-capo\": \"\"\n }\n });\n }\n }\n });\n}\n\nconst unheadComposablesImports = [\n {\n from: \"unhead\",\n imports: composableNames\n }\n];\n\nfunction getActiveHead() {\n return activeHead;\n}\n\nfunction useHead(input, options = {}) {\n const head = options.head || getActiveHead();\n return head?.push(input, options);\n}\n\nfunction useHeadSafe(input, options = {}) {\n return useHead(input, {\n ...options || {},\n transform: whitelistSafeInput\n });\n}\n\nfunction useServerHead(input, options = {}) {\n return useHead(input, { ...options, mode: \"server\" });\n}\n\nfunction useServerHeadSafe(input, options = {}) {\n return useHeadSafe(input, { ...options, mode: \"server\" });\n}\n\nfunction useSeoMeta(input, options) {\n const { title, titleTemplate, ...meta } = input;\n return useHead({\n title,\n titleTemplate,\n // we need to input the meta so the reactivity will be resolved\n // @ts-expect-error runtime type\n _flatMeta: meta\n }, {\n ...options,\n transform(t) {\n const meta2 = unpackMeta({ ...t._flatMeta });\n delete t._flatMeta;\n return {\n // @ts-expect-error runtime type\n ...t,\n meta: meta2\n };\n }\n });\n}\n\nfunction useServerSeoMeta(input, options) {\n return useSeoMeta(input, {\n ...options || {},\n mode: \"server\"\n });\n}\n\nfunction useScript(_input, _options) {\n const input = typeof _input === \"string\" ? { src: _input } : _input;\n const options = _options || {};\n const head = options.head || getActiveHead();\n if (!head)\n throw new Error(\"Missing Unhead context.\");\n const id = input.key || hashCode(input.src || (typeof input.innerHTML === \"string\" ? input.innerHTML : \"\"));\n if (head._scripts?.[id])\n return head._scripts[id];\n options.beforeInit?.();\n const syncStatus = (s) => {\n script.status = s;\n head.hooks.callHook(`script:updated`, hookCtx);\n };\n const trigger = typeof options.trigger !== \"undefined\" ? options.trigger : \"client\";\n ScriptNetworkEvents.forEach((fn) => {\n const _fn = typeof input[fn] === \"function\" ? input[fn].bind(options.eventContext) : null;\n input[fn] = (e) => {\n syncStatus(fn === \"onload\" ? \"loaded\" : fn === \"onerror\" ? \"error\" : \"loading\");\n _fn?.(e);\n };\n });\n const proxy = { instance: !head.ssr && options?.use?.() || {} };\n const loadPromise = new Promise((resolve, reject) => {\n const emit = (api) => requestAnimationFrame(() => resolve(api));\n const _ = head.hooks.hook(\"script:updated\", ({ script: script2 }) => {\n if (script2.id === id && (script2.status === \"loaded\" || script2.status === \"error\")) {\n if (script2.status === \"loaded\") {\n if (typeof options.use === \"function\") {\n const api = options.use();\n api && emit(api);\n } else {\n emit({});\n }\n } else if (script2.status === \"error\") {\n reject(new Error(`Failed to load script: ${input.src}`));\n }\n _();\n }\n });\n }).then((api) => proxy.instance = api);\n const script = {\n id,\n status: \"awaitingLoad\",\n remove() {\n if (script.entry) {\n script.entry.dispose();\n syncStatus(\"removed\");\n delete head._scripts?.[id];\n return true;\n }\n return false;\n },\n load() {\n if (!script.entry) {\n syncStatus(\"loading\");\n const defaults = {\n defer: true,\n fetchpriority: \"low\"\n };\n if (input.src && (input.src.startsWith(\"http\") || input.src.startsWith(\"//\"))) {\n defaults.crossorigin = \"anonymous\";\n defaults.referrerpolicy = \"no-referrer\";\n }\n script.entry = head.push({\n script: [{ ...defaults, ...input, key: `script.${id}` }]\n }, options);\n }\n return loadPromise;\n }\n };\n const hookCtx = { script };\n if (trigger === \"client\" && !head.ssr || trigger === \"server\" && head.ssr)\n script.load();\n else if (trigger instanceof Promise)\n trigger.then(script.load);\n else if (typeof trigger === \"function\")\n trigger(async () => script.load());\n proxy.$script = Object.assign(loadPromise, script);\n const instance = new Proxy(proxy, {\n get({ instance: _ }, k) {\n const stub = options.stub?.({ script: proxy.$script, fn: k });\n if (stub)\n return stub;\n if (k === \"$script\")\n return proxy.$script;\n const exists = _ && k in _ && typeof _[k] !== \"undefined\";\n head.hooks.callHook(\"script:instance-fn\", { script, fn: k, exists });\n return exists ? Reflect.get(_, k) : (...args) => loadPromise.then((api) => {\n const _k = Reflect.get(api, k);\n return typeof _k === \"function\" ? Reflect.apply(api[k], api, args) : _k;\n });\n }\n });\n head._scripts = Object.assign(\n head._scripts || {},\n { [id]: instance }\n );\n return instance;\n}\n\nexport { CapoPlugin, HashHydrationPlugin, createHead, createHeadCore, createServerHead, getActiveHead, unheadComposablesImports, useHead, useHeadSafe, useScript, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta };\n","import { version, unref, nextTick, inject } from 'vue';\nimport { createServerHead as createServerHead$1, createHead as createHead$1, getActiveHead } from 'unhead';\nimport { defineHeadPlugin } from '@unhead/shared';\n\nconst Vue3 = version.startsWith(\"3\");\n\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction resolveUnrefHeadInput(ref, lastKey = \"\") {\n if (ref instanceof Promise)\n return ref;\n const root = resolveUnref(ref);\n if (!ref || !root)\n return root;\n if (Array.isArray(root))\n return root.map((r) => resolveUnrefHeadInput(r, lastKey));\n if (typeof root === \"object\") {\n return Object.fromEntries(\n Object.entries(root).map(([k, v]) => {\n if (k === \"titleTemplate\" || k.startsWith(\"on\"))\n return [k, unref(v)];\n return [k, resolveUnrefHeadInput(v, k)];\n })\n );\n }\n return root;\n}\n\nconst VueReactivityPlugin = defineHeadPlugin({\n hooks: {\n \"entries:resolve\": function(ctx) {\n for (const entry of ctx.entries)\n entry.resolvedInput = resolveUnrefHeadInput(entry.input);\n }\n }\n});\n\nconst headSymbol = \"usehead\";\nfunction vueInstall(head) {\n const plugin = {\n install(app) {\n if (Vue3) {\n app.config.globalProperties.$unhead = head;\n app.config.globalProperties.$head = head;\n app.provide(headSymbol, head);\n }\n }\n };\n return plugin.install;\n}\nfunction createServerHead(options = {}) {\n const head = createServerHead$1(options);\n head.use(VueReactivityPlugin);\n head.install = vueInstall(head);\n return head;\n}\nfunction createHead(options = {}) {\n options.domDelayFn = options.domDelayFn || ((fn) => nextTick(() => setTimeout(() => fn(), 0)));\n const head = createHead$1(options);\n head.use(VueReactivityPlugin);\n head.install = vueInstall(head);\n return head;\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__unhead_injection_handler__\";\nfunction setHeadInjectionHandler(handler) {\n _global[globalKey] = handler;\n}\nfunction injectHead() {\n if (globalKey in _global) {\n return _global[globalKey]();\n }\n const head = inject(headSymbol);\n if (!head && process.env.NODE_ENV !== \"production\")\n console.warn(\"Unhead is missing Vue context, falling back to shared context. This may have unexpected results.\");\n return head || getActiveHead();\n}\n\nexport { Vue3 as V, createServerHead as a, createHead as c, headSymbol as h, injectHead as i, resolveUnrefHeadInput as r, setHeadInjectionHandler as s };\n","import { ref, watchEffect, watch, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated } from 'vue';\nimport { i as injectHead, r as resolveUnrefHeadInput } from './vue.cf295fb1.mjs';\n\nfunction useHead(input, options = {}) {\n const head = options.head || injectHead();\n if (head) {\n if (!head.ssr)\n return clientUseHead(head, input, options);\n return head.push(input, options);\n }\n}\nfunction clientUseHead(head, input, options = {}) {\n const deactivated = ref(false);\n const resolvedInput = ref({});\n watchEffect(() => {\n resolvedInput.value = deactivated.value ? {} : resolveUnrefHeadInput(input);\n });\n const entry = head.push(resolvedInput.value, options);\n watch(resolvedInput, (e) => {\n entry.patch(e);\n });\n const vm = getCurrentInstance();\n if (vm) {\n onBeforeUnmount(() => {\n entry.dispose();\n });\n onDeactivated(() => {\n deactivated.value = true;\n });\n onActivated(() => {\n deactivated.value = false;\n });\n }\n return entry;\n}\n\nexport { useHead as u };\n","import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexport function del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexport * from 'vue'\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n}\n","import { noop, resolveUnref, isClient, isString, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, promiseTimeout, isFunction, resolveRef, increaseWithUnit, useTimeoutFn, pausableWatch, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, containsProp, until, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, isObject, isNumber, useIntervalFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, unref, watch, getCurrentInstance, customRef, onUpdated, reactive, nextTick, onMounted, markRaw, readonly, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = false,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nconst createUnrefFn = (fn) => {\n return function(...args) {\n return fn.apply(this, args.map((i) => unref(i)));\n };\n};\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = resolveUnref(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (isString(args[0]) || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, options2));\n }));\n }, { immediate: true, flush: \"post\" });\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nvar __defProp$n = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$p = Object.getOwnPropertySymbols;\nvar __hasOwnProp$p = Object.prototype.hasOwnProperty;\nvar __propIsEnum$p = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$n = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$p.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n if (__getOwnPropSymbols$p)\n for (var prop of __getOwnPropSymbols$p(b)) {\n if (__propIsEnum$p.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nconst createKeyPredicate = (keyFilter) => {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n};\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const { target = defaultWindow, eventName = \"keydown\", passive = false } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(() => handler(ev), (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY);\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n useEventListener(elementRef, \"pointerup\", clear, listenerOptions);\n useEventListener(elementRef, \"pointerleave\", clear, listenerOptions);\n}\n\nconst isFocusedElementEditable = () => {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n};\nconst isTypedCharValid = ({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) => {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n};\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const { window = defaultWindow } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const activeElement = computedWithControl(() => null, () => document == null ? void 0 : document.activeElement);\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop\n } = options;\n const promiseState = {\n pending: \"pending\",\n rejected: \"rejected\",\n fulfilled: \"fulfilled\"\n };\n const initialResult = Array.from(new Array(tasks.length), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n return curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n }).catch((e) => {\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = ref(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw error;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n return {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = resolveUnref(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || isFunction(target))\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useSupported(callback, sync = false) {\n const isSupported = ref();\n const update = () => isSupported.value = Boolean(callback());\n update();\n tryOnMounted(update, sync);\n return isSupported;\n}\n\nfunction useBattery({ navigator = defaultNavigator } = {}) {\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n for (const event of events)\n useEventListener(battery, event, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n device,\n requestDevice,\n server,\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n };\n const update = () => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(resolveRef(query).value);\n matches.value = mediaQuery.matches;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n };\n watchEffect(update);\n tryOnScopeDispose(() => cleanup());\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\n\nvar __defProp$m = Object.defineProperty;\nvar __getOwnPropSymbols$o = Object.getOwnPropertySymbols;\nvar __hasOwnProp$o = Object.prototype.hasOwnProperty;\nvar __propIsEnum$o = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$m = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$o.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n if (__getOwnPropSymbols$o)\n for (var prop of __getOwnPropSymbols$o(b)) {\n if (__propIsEnum$o.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n }\n return a;\n};\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = breakpoints[k];\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return __spreadValues$m({\n greater(k) {\n return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n }\n }, shortcutMethods);\n}\n\nconst useBroadcastChannel = (options) => {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = ref(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n};\n\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n const buildState = (trigger) => {\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window == null ? void 0 : window.location) || {};\n return {\n trigger,\n state: state2,\n length,\n hash,\n host,\n hostname,\n href,\n origin,\n pathname,\n port,\n protocol,\n search\n };\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const events = [\"copy\", \"cut\"];\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value) {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read) {\n for (const event of events)\n useEventListener(event, updateText);\n }\n async function copy(value = resolveUnref(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value)\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nvar __defProp$l = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$n = Object.getOwnPropertySymbols;\nvar __hasOwnProp$n = Object.prototype.hasOwnProperty;\nvar __propIsEnum$n = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$l = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$n.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n if (__getOwnPropSymbols$n)\n for (var prop of __getOwnPropSymbols$n(b)) {\n if (__propIsEnum$n.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(unref(source));\n }\n if (!manual && isRef(source)) {\n watch(source, sync, __spreadProps$8(__spreadValues$l({}, options), {\n deep,\n immediate\n }));\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\n_global[globalKey] = _global[globalKey] || {};\nconst handlers = _global[globalKey];\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropSymbols$m = Object.getOwnPropertySymbols;\nvar __hasOwnProp$m = Object.prototype.hasOwnProperty;\nvar __propIsEnum$m = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$k = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$m.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n if (__getOwnPropSymbols$m)\n for (var prop of __getOwnPropSymbols$m(b)) {\n if (__propIsEnum$m.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n }\n return a;\n};\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = resolveUnref(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });\n if (window && listenToStorageChanges) {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n }\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (isFunction(mergeDefaults))\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return __spreadValues$k(__spreadValues$k({}, rawInit), value);\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __getOwnPropSymbols$l = Object.getOwnPropertySymbols;\nvar __hasOwnProp$l = Object.prototype.hasOwnProperty;\nvar __propIsEnum$l = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$j = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n if (__getOwnPropSymbols$l)\n for (var prop of __getOwnPropSymbols$l(b)) {\n if (__propIsEnum$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto\n } = options;\n const modes = __spreadValues$j({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const preferredMode = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? ref(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed({\n get() {\n return store.value === \"auto\" && !emitAuto ? preferredMode.value : store.value;\n },\n set(v) {\n store.value = v;\n }\n });\n const updateHTMLAttrs = getSSRHandler(\"updateHTMLAttrs\", (selector2, attribute2, value) => {\n const el = window == null ? void 0 : window.document.querySelector(selector2);\n if (!el)\n return;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n });\n function defaultOnChanged(mode) {\n var _a;\n const resolvedMode = mode === \"auto\" ? preferredMode.value : mode;\n updateHTMLAttrs(selector, attribute, (_a = modes[resolvedMode]) != null ? _a : resolvedMode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n if (emitAuto)\n watch(preferredMode, () => onChanged(state.value), { flush: \"post\" });\n tryOnMounted(() => onChanged(state.value));\n return state;\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCssVar(prop, target, { window = defaultWindow, initialValue = \"\" } = {}) {\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n watch([elRef, () => resolveUnref(prop)], ([el, prop2]) => {\n var _a;\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }, { immediate: true });\n watch(variable, (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(resolveUnref(prop), val);\n });\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(() => null, () => vm.proxy.$el);\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n var _a;\n const state = shallowRef((_a = options == null ? void 0 : options.initialValue) != null ? _a : list[0]);\n const index = computed({\n get() {\n var _a2;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, list) : list.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a2 = options == null ? void 0 : options.fallbackIndex) != null ? _a2 : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const length = list.length;\n const index2 = (i % length + length) % length;\n const value = list[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$k = Object.getOwnPropertySymbols;\nvar __hasOwnProp$k = Object.prototype.hasOwnProperty;\nvar __propIsEnum$k = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$i = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n if (__getOwnPropSymbols$k)\n for (var prop of __getOwnPropSymbols$k(b)) {\n if (__propIsEnum$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\",\n window = defaultWindow\n } = options;\n const mode = useColorMode(__spreadProps$7(__spreadValues$i({}, options), {\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\");\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n }));\n const preferredDark = usePreferredDark({ window });\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n if (v === preferredDark.value)\n mode.value = \"auto\";\n else\n mode.value = v ? \"dark\" : \"light\";\n }\n });\n return isDark;\n}\n\nconst fnBypass = (v) => v;\nconst fnSetSource = (source, value) => source.value = value;\nfunction defaultDump(clone) {\n return clone ? isFunction(clone) ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? isFunction(clone) ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Infinity);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n if (__getOwnPropSymbols$j)\n for (var prop of __getOwnPropSymbols$j(b)) {\n if (__propIsEnum$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(source, commit, { deep, flush, eventFilter: composedFilter });\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, __spreadProps$6(__spreadValues$h({}, options), { clone: options.clone || deep, setSource }));\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return __spreadProps$6(__spreadValues$h({}, manualHistory), {\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n });\n}\n\nvar __defProp$g = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n if (__getOwnPropSymbols$i)\n for (var prop of __getOwnPropSymbols$i(b)) {\n if (__propIsEnum$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, __spreadProps$5(__spreadValues$g({}, options), { eventFilter: filter }));\n return __spreadValues$g({}, history);\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(eventFilter, (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n });\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio({\n window = defaultWindow\n} = {}) {\n const pixelRatio = ref(1);\n if (window) {\n let observe = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe, { once: true });\n }, cleanup = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe);\n };\n let media;\n observe();\n tryOnScopeDispose(cleanup);\n }\n return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n stream.getTracks().forEach((t) => t.stop());\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(enabled, (v) => {\n if (v)\n _start();\n else\n _stop();\n }, { immediate: true });\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$h.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n if (__getOwnPropSymbols$h)\n for (var prop of __getOwnPropSymbols$h(b)) {\n if (__propIsEnum$h.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction useDraggable(target, options = {}) {\n var _a, _b, _c;\n const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow;\n const draggingHandle = (_b = options.handle) != null ? _b : target;\n const position = ref((_c = resolveUnref(options.initialValue)) != null ? _c : { x: 0, y: 0 });\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (options.pointerTypes)\n return options.pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (resolveUnref(options.preventDefault))\n e.preventDefault();\n if (resolveUnref(options.stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (resolveUnref(options.exact) && e.target !== resolveUnref(target))\n return;\n const rect = resolveUnref(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n };\n if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n position.value = {\n x: e.clientX - pressedDelta.value.x,\n y: e.clientY - pressedDelta.value.y\n };\n (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n useEventListener(draggingHandle, \"pointerdown\", start, true);\n useEventListener(draggingElement, \"pointermove\", move, true);\n useEventListener(draggingElement, \"pointerup\", end, true);\n }\n return __spreadProps$4(__spreadValues$f({}, toRefs(position)), {\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(() => `left:${position.value.x}px;top:${position.value.y}px;`)\n });\n}\n\nfunction useDropZone(target, onDrop) {\n const isOverDropZone = ref(false);\n let counter = 0;\n if (isClient) {\n useEventListener(target, \"dragenter\", (event) => {\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n });\n useEventListener(target, \"dragover\", (event) => {\n event.preventDefault();\n });\n useEventListener(target, \"dragleave\", (event) => {\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n });\n useEventListener(target, \"drop\", (event) => {\n var _a, _b;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n const files = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n onDrop == null ? void 0 : onDrop(files.length === 0 ? null : files);\n });\n }\n return {\n isOverDropZone\n };\n}\n\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new ResizeObserver(callback);\n observer.observe(el, observerOptions);\n }\n }, { immediate: true, flush: \"post\" });\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - previousFrameTimestamp;\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nfunction useElementByPoint(options) {\n const element = ref(null);\n const { x, y, document = defaultDocument } = options;\n const controls = useRafFn(() => {\n element.value = (document == null ? void 0 : document.elementFromPoint(resolveUnref(x), resolveUnref(y))) || null;\n });\n return __spreadValues$e({\n element\n }, controls);\n}\n\nfunction useElementHover(el, options = {}) {\n const delayEnter = options ? options.delayEnter : 0;\n const delayLeave = options ? options.delayLeave : 0;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(target, ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = parseFloat(styles.width);\n height.value = parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n }, options);\n watch(() => unrefElement(target), (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n });\n return {\n width,\n height\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n const testBounding = () => {\n if (!window)\n return;\n const document = window.document;\n const el = unrefElement(element);\n if (!el) {\n elementIsVisible.value = false;\n } else {\n const rect = el.getBoundingClientRect();\n elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;\n }\n };\n watch(() => unrefElement(element), () => testBounding(), { immediate: true, flush: \"post\" });\n if (window) {\n useEventListener(scrollTarget || window, \"scroll\", testBounding, {\n capture: false,\n passive: true\n });\n }\n return elementIsVisible;\n}\n\nconst events = new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || [];\n listeners.push(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n const index = listeners.indexOf(listener);\n if (index > -1)\n listeners.splice(index, 1);\n if (!listeners.length)\n events.delete(key);\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = ref(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = resolveRef(newIcon);\n const applyIcon = (icon) => {\n document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(favicon, (i, o) => {\n if (isString(i) && i !== o)\n applyIcon(i);\n }, { immediate: true });\n return favicon;\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback !== void 0)\n await callback(ctx);\n return ctx;\n };\n } else {\n return async (ctx) => {\n await callbacks.reduce((prevCallback, callback) => prevCallback.then(async () => {\n if (callback)\n ctx = __spreadValues$d(__spreadValues$d({}, ctx), await callback(ctx));\n }), Promise.resolve());\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = resolveUnref(config.baseUrl);\n const targetUrl = resolveUnref(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, options), args[0]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n });\n } else {\n fetchOptions = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, fetchOptions), args[0]), {\n headers: __spreadValues$d(__spreadValues$d({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n });\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, options), args[1]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n });\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = { immediate: true, refetch: false, timeout: 0 };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = __spreadValues$d(__spreadValues$d({}, options), args[0]);\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = __spreadValues$d(__spreadValues$d({}, options), args[1]);\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort && controller) {\n controller.abort();\n controller = void 0;\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n const execute = async (throwOnFailed = false) => {\n var _a2;\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n if (supportsAbort) {\n abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = __spreadProps$3(__spreadValues$d({}, fetchOptions), {\n signal: controller.signal\n });\n }\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n const payload = resolveUnref(config.payload);\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: resolveUnref(url),\n options: __spreadValues$d(__spreadValues$d({}, defaultFetchOptions), fetchOptions),\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return new Promise((resolve, reject) => {\n var _a3;\n fetch(context.url, __spreadProps$3(__spreadValues$d(__spreadValues$d({}, defaultFetchOptions), context.options), {\n headers: __spreadValues$d(__spreadValues$d({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n })).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (options.afterFetch && statusCode.value >= 200 && statusCode.value < 300)\n ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n data.value = responseData;\n if (!fetchResponse.ok)\n throw new Error(fetchResponse.statusText);\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError)\n ({ data: responseData, error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n data.value = responseData;\n error.value = errorData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n const refetch = resolveRef(options.refetch);\n watch([\n refetch,\n resolveRef(url)\n ], ([refetch2]) => refetch2 && execute(), { deep: true });\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch([\n refetch,\n resolveRef(config.payload)\n ], ([refetch2]) => refetch2 && execute(), { deep: true });\n }\n const rawPayload = resolveUnref(config.payload);\n if (!payloadType && rawPayload && Object.getPrototypeOf(rawPayload) === Object.prototype && !(rawPayload instanceof FormData))\n config.payloadType = \"json\";\n return __spreadProps$3(__spreadValues$d({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return __spreadProps$3(__spreadValues$d({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n if (options.immediate)\n setTimeout(execute, 0);\n return __spreadProps$3(__spreadValues$d({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\"\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n };\n }\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = __spreadValues$c(__spreadValues$c(__spreadValues$c({}, DEFAULT_OPTIONS), options), localOptions);\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n input.click();\n };\n const reset = () => {\n files.value = null;\n if (input)\n input.value = \"\";\n };\n return {\n files: readonly(files),\n open,\n reset\n };\n}\n\nvar __defProp$b = Object.defineProperty;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = unref(options);\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options));\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options));\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options));\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n if (unref(dataType) === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n if (unref(dataType) === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n if (unref(dataType) === \"Blob\")\n data.value = file.value;\n }\n watch(() => unref(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", () => innerFocused.value = true);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(targetElement, () => {\n focused.value = initialValue;\n }, { immediate: true, flush: \"post\" });\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst functionsMap = [\n [\n \"requestFullscreen\",\n \"exitFullscreen\",\n \"fullscreenElement\",\n \"fullscreenEnabled\",\n \"fullscreenchange\",\n \"fullscreenerror\"\n ],\n [\n \"webkitRequestFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitFullscreenElement\",\n \"webkitFullscreenEnabled\",\n \"webkitfullscreenchange\",\n \"webkitfullscreenerror\"\n ],\n [\n \"webkitRequestFullScreen\",\n \"webkitCancelFullScreen\",\n \"webkitCurrentFullScreenElement\",\n \"webkitCancelFullScreen\",\n \"webkitfullscreenchange\",\n \"webkitfullscreenerror\"\n ],\n [\n \"mozRequestFullScreen\",\n \"mozCancelFullScreen\",\n \"mozFullScreenElement\",\n \"mozFullScreenEnabled\",\n \"mozfullscreenchange\",\n \"mozfullscreenerror\"\n ],\n [\n \"msRequestFullscreen\",\n \"msExitFullscreen\",\n \"msFullscreenElement\",\n \"msFullscreenEnabled\",\n \"MSFullscreenChange\",\n \"MSFullscreenError\"\n ]\n];\nfunction useFullscreen(target, options = {}) {\n const { document = defaultDocument, autoExit = false } = options;\n const targetRef = target || (document == null ? void 0 : document.querySelector(\"html\"));\n const isFullscreen = ref(false);\n let map = functionsMap[0];\n const isSupported = useSupported(() => {\n if (!document) {\n return false;\n } else {\n for (const m of functionsMap) {\n if (m[1] in document) {\n map = m;\n return true;\n }\n }\n }\n return false;\n });\n const [REQUEST, EXIT, ELEMENT, , EVENT] = map;\n async function exit() {\n if (!isSupported.value)\n return;\n if (document == null ? void 0 : document[ELEMENT])\n await document[EXIT]();\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value)\n return;\n await exit();\n const target2 = unrefElement(targetRef);\n if (target2) {\n await target2[REQUEST]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n if (isFullscreen.value)\n await exit();\n else\n await enter();\n }\n if (document) {\n useEventListener(document, EVENT, () => {\n isFullscreen.value = !!(document == null ? void 0 : document[ELEMENT]);\n }, false);\n }\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n hapticActuators,\n index: gamepad.index,\n mapping: gamepad.mapping,\n connected: gamepad.connected,\n timestamp: gamepad.timestamp,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = ref(null);\n const coords = ref({\n accuracy: 0,\n latitude: Infinity,\n longitude: Infinity,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n enableHighAccuracy,\n maximumAge,\n timeout\n });\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const onEvent = createFilterWrapper(eventFilter, () => {\n idle.value = false;\n lastActive.value = timestamp();\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n });\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n }\n timer = setTimeout(() => idle.value = true, timeout);\n return { idle, lastActive };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nconst useImage = (options, asyncStateOptions = {}) => {\n const state = useAsyncState(() => loadImage(resolveUnref(options)), void 0, __spreadValues$a({\n resetOnExecute: true\n }, asyncStateOptions));\n watch(() => resolveUnref(options), () => state.execute(asyncStateOptions.delay), { deep: true });\n return state;\n};\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\"\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n const _element = resolveUnref(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = resolveUnref(_y)) != null ? _a : y.value,\n left: (_b = resolveUnref(_x)) != null ? _b : x.value,\n behavior: resolveUnref(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n const scrollLeft = eventTarget.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalY.value;\n arrivedState.left = scrollLeft <= 0 + (offset.left || 0);\n arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n internalX.value = scrollLeft;\n let scrollTop = eventTarget.scrollTop;\n if (e.target === document && !scrollTop)\n scrollTop = document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n arrivedState.top = scrollTop <= 0 + (offset.top || 0);\n arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n internalY.value = scrollTop;\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(element, \"scroll\", throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions);\n useEventListener(element, \"scrollend\", onScrollEnd, eventListenerOptions);\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions\n };\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a, _b;\n const direction = (_a = options.direction) != null ? _a : \"bottom\";\n const state = reactive(useScroll(element, __spreadProps$2(__spreadValues$9({}, options), {\n offset: __spreadValues$9({\n [direction]: (_b = options.distance) != null ? _b : 0\n }, options.offset)\n })));\n watch(() => state.arrivedState[direction], async (v) => {\n var _a2, _b2;\n if (v) {\n const elem = resolveUnref(element);\n const previous = {\n height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0,\n width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0\n };\n await onLoadMore(state);\n if (options.preserveScrollPosition && elem) {\n nextTick(() => {\n elem.scrollTo({\n top: elem.scrollHeight - previous.height,\n left: elem.scrollWidth - previous.width\n });\n });\n }\n }\n });\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n let cleanup = noop;\n const stopWatch = isSupported.value ? watch(() => ({\n el: unrefElement(target),\n root: unrefElement(root)\n }), ({ el, root: root2 }) => {\n cleanup();\n if (!el)\n return;\n const observer = new IntersectionObserver(callback, {\n root: root2,\n rootMargin,\n threshold\n });\n observer.observe(el);\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n }, { immediate: true, flush: \"post\" }) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = new Set();\n const usedKeys = new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(refs, {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => unref(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? unref(r) : r;\n }\n });\n return proxy;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction usingElRef(source, cb) {\n if (resolveUnref(source))\n cb(resolveUnref(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = __spreadValues$8(__spreadValues$8({}, defaultOptions), options);\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = isNumber(track) ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = isNumber(track) ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = resolveUnref(target);\n if (!el)\n return;\n const src = resolveUnref(options.src);\n let sources = [];\n if (!src)\n return;\n if (isString(src))\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = resolveUnref(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch(volume, (vol) => {\n const el = resolveUnref(target);\n if (!el)\n return;\n el.volume = vol;\n });\n watch(muted, (mute) => {\n const el = resolveUnref(target);\n if (!el)\n return;\n el.muted = mute;\n });\n watch(rate, (rate2) => {\n const el = resolveUnref(target);\n if (!el)\n return;\n el.playbackRate = rate2;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = resolveUnref(options.tracks);\n const el = resolveUnref(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = resolveUnref(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = resolveUnref(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = resolveUnref(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = resolveUnref(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(resolveUnref(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, \"waiting\", () => waiting.value = true);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n });\n useEventListener(target, \"ratechange\", () => rate.value = resolveUnref(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = resolveUnref(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = resolveUnref(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n volume,\n muted,\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n onSourceError: sourceErrorEvent.on\n };\n}\n\nconst getMapVue2Compat = () => {\n const data = reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n};\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return reactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return reactive(new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n}\n\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n eventFilter\n } = options;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const mouseHandler = (event) => {\n if (type === \"page\") {\n x.value = event.pageX;\n y.value = event.pageY;\n } else if (type === \"client\") {\n x.value = event.clientX;\n y.value = event.clientY;\n } else if (type === \"movement\") {\n x.value = event.movementX;\n y.value = event.movementY;\n }\n sourceType.value = \"mouse\";\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const touch2 = event.touches[0];\n if (type === \"page\") {\n x.value = touch2.pageX;\n y.value = touch2.pageY;\n } else if (type === \"client\") {\n x.value = touch2.clientX;\n y.value = touch2.clientY;\n }\n sourceType.value = \"touch\";\n }\n };\n const mouseHandlerWrapper = (event) => {\n return eventFilter === void 0 ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {});\n };\n const touchHandlerWrapper = (event) => {\n return eventFilter === void 0 ? touchHandler(event) : eventFilter(() => touchHandler(event), {});\n };\n if (window) {\n useEventListener(window, \"mousemove\", mouseHandlerWrapper, { passive: true });\n useEventListener(window, \"dragover\", mouseHandlerWrapper, { passive: true });\n if (touch && type !== \"movement\") {\n useEventListener(window, \"touchstart\", touchHandlerWrapper, { passive: true });\n useEventListener(window, \"touchmove\", touchHandlerWrapper, { passive: true });\n if (resetOnTouchEnds)\n useEventListener(window, \"touchend\", reset, { passive: true });\n }\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch([targetRef, x, y], () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + window.pageXOffset;\n elementPositionY.value = top + window.pageYOffset;\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n }, { immediate: true });\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n useEventListener(window, \"mouseup\", onReleased, { passive: true });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"drop\", onReleased, { passive: true });\n useEventListener(window, \"dragend\", onReleased, { passive: true });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n useEventListener(window, \"touchend\", onReleased, { passive: true });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n }, { immediate: true });\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nconst useNavigatorLanguage = (options = {}) => {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n};\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(new Date());\n const update = () => now.value = new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return __spreadValues$7({\n now\n }, controls);\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(() => unref(object), (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n }, { immediate: true });\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (isFunction(value) || isReadonly(value))\n return computed(() => clamp(resolveUnref(value), resolveUnref(min), resolveUnref(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, resolveUnref(min), resolveUnref(max));\n },\n set(value2) {\n _value.value = clamp(value2, resolveUnref(min), resolveUnref(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Infinity,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Infinity);\n const pageCount = computed(() => Math.max(1, Math.ceil(unref(total) / unref(currentPageSize))));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page))\n syncRef(page, currentPage);\n if (isRef(pageSize))\n syncRef(pageSize, currentPageSize);\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$1(__spreadValues$6({}, toRefs(state)), {\n isInside\n });\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nvar SwipeDirection;\n(function(SwipeDirection2) {\n SwipeDirection2[\"UP\"] = \"UP\";\n SwipeDirection2[\"RIGHT\"] = \"RIGHT\";\n SwipeDirection2[\"DOWN\"] = \"DOWN\";\n SwipeDirection2[\"LEFT\"] = \"LEFT\";\n SwipeDirection2[\"NONE\"] = \"NONE\";\n})(SwipeDirection || (SwipeDirection = {}));\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return SwipeDirection.NONE;\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;\n } else {\n return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"touchend\", onTouchEnd, listenerOptions),\n useEventListener(target, \"touchcancel\", onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = resolveRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return SwipeDirection.NONE;\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;\n } else {\n return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n })\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(resolveRef(value), (_, oldValue) => {\n previous.value = oldValue;\n }, { flush: \"sync\" });\n return readonly(previous);\n}\n\nconst useScreenOrientation = (options = {}) => {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (!isSupported.value)\n return Promise.reject(new Error(\"Not supported\"));\n return screenOrientation.lock(type);\n };\n const unlockOrientation = () => {\n if (isSupported.value)\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n};\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${resolveUnref(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = resolveUnref(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${resolveUnref(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientHeight < ele.scrollHeight || style.overflowY === \"auto\" && ele.clientWidth < ele.scrollWidth) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(resolveRef(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = resolveUnref(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(ele, \"touchmove\", (e) => {\n preventDefault(e);\n }, { passive: false });\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = resolveUnref(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = __spreadValues$5(__spreadValues$5({}, resolveUnref(shareOptions)), resolveUnref(overrideOptions));\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...unref(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(unref(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = resolveRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = unref(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = unref(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = resolveRef(text || \"\");\n const lang = resolveRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = unref(lang);\n utterance2.voice = unref(options.voice) || null;\n utterance2.pitch = pitch;\n utterance2.rate = rate;\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = resolveUnref(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (isFunction(mergeDefaults))\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = __spreadValues$4(__spreadValues$4({}, rawInit), value);\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => setTimeout(() => read(e), 0));\n if (storage) {\n watchWithFilter(data, async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n }, {\n flush,\n deep,\n eventFilter\n });\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.type = \"text/css\";\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(cssRef, (value) => {\n el.textContent = value;\n }, { immediate: true });\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(document.querySelector(selector), () => dir.value = getValue(), { attributes: true });\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n const ranges = new Array(rangeCount);\n for (let i = 0; i < rangeCount; i++) {\n const range = selection.getRangeAt(i);\n ranges[i] = range;\n }\n return ranges;\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n textarea.value.style.height = \"1px\";\n textarea.value.style.height = `${(_a = textarea.value) == null ? void 0 : _a.scrollHeight}px`;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n watch([input, textarea], triggerResize, { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, __spreadProps(__spreadValues$3({}, options), { eventFilter: filter }));\n return __spreadValues$3({}, history);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Infinity, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nconst DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n const timeAgo = computed(() => formatTimeAgo(new Date(resolveUnref(time)), options, unref(now.value)));\n if (exposeControls) {\n return __spreadValues$2({\n timeAgo\n }, controls);\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval);\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$1({\n timestamp: ts\n }, controls);\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument\n } = options;\n const title = resolveRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n const isReadonly = newTitle && isFunction(newTitle);\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return isFunction(template) ? template(t) : unref(template).replace(/%s/g, t);\n }\n watch(title, (t, o) => {\n if (t !== o && document)\n document.title = format(isString(t) ? t : \"\");\n }, { immediate: true });\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector(\"title\"), () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n }, { childList: true });\n }\n return title;\n}\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = __spreadValues({\n linear: identity\n}, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction useTransition(source, options = {}) {\n const {\n delay = 0,\n disabled = false,\n duration = 1e3,\n onFinished = noop,\n onStarted = noop,\n transition = identity\n } = options;\n const currentTransition = computed(() => {\n const t = unref(transition);\n return isFunction(t) ? t : createEasingFunction(t);\n });\n const sourceValue = computed(() => {\n const s = unref(source);\n return isNumber(s) ? s : s.map(unref);\n });\n const sourceVector = computed(() => isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value);\n const outputVector = ref(sourceVector.value.slice(0));\n let currentDuration;\n let diffVector;\n let endAt;\n let startAt;\n let startVector;\n const { resume, pause } = useRafFn(() => {\n const now = Date.now();\n const progress = clamp(1 - (endAt - now) / currentDuration, 0, 1);\n outputVector.value = startVector.map((val, i) => {\n var _a;\n return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress);\n });\n if (progress >= 1) {\n pause();\n onFinished();\n }\n }, { immediate: false });\n const start = () => {\n pause();\n currentDuration = unref(duration);\n diffVector = outputVector.value.map((n, i) => {\n var _a, _b;\n return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0);\n });\n startVector = outputVector.value.slice(0);\n startAt = Date.now();\n endAt = startAt + currentDuration;\n resume();\n onStarted();\n };\n const timeout = useTimeoutFn(start, delay, { immediate: false });\n watch(sourceVector, () => {\n if (unref(disabled))\n return;\n if (unref(delay) <= 0)\n start();\n else\n timeout.start();\n }, { deep: true });\n watch(() => unref(disabled), (v) => {\n if (v) {\n outputVector.value = sourceVector.value.slice(0);\n pause();\n }\n });\n return computed(() => {\n const targetVector = unref(disabled) ? sourceVector : outputVector;\n return isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value;\n });\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(state, () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n }, { deep: true });\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params));\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const videoDeviceId = ref(options.videoDeviceId);\n const audioDeviceId = ref(options.audioDeviceId);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(device) {\n if (device.value === \"none\" || device.value === false)\n return false;\n if (device.value == null)\n return true;\n return {\n deviceId: device.value\n };\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(videoDeviceId),\n audio: getDeviceOptions(audioDeviceId)\n });\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(enabled, (v) => {\n if (v)\n _start();\n else\n _stop();\n }, { immediate: true });\n watch([videoDeviceId, audioDeviceId], () => {\n if (autoSwitch.value && stream.value)\n restart();\n }, { immediate: true });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n videoDeviceId,\n audioDeviceId,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = eventName || event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : isFunction(clone) ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n watch(() => props[key], (v) => proxy.value = cloneFn(v));\n watch(proxy, (v) => {\n if (v !== props[key] || deep)\n _emit(event, v);\n }, { deep });\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n _emit(event, value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props)\n ret[key] = useVModel(props, key, emit, options);\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = resolveRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(vibrate, interval, {\n immediate: false,\n immediateCallback: false\n });\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nconst useWakeLock = (options = {}) => {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n};\n\nconst useWebNotification = (defaultOptions = {}) => {\n const {\n window = defaultWindow\n } = defaultOptions;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const notification = ref(null);\n const requestPermission = async () => {\n if (!isSupported.value)\n return;\n if (\"permission\" in Notification && Notification.permission !== \"denied\")\n await Notification.requestPermission();\n };\n const onClick = createEventHook();\n const onShow = createEventHook();\n const onError = createEventHook();\n const onClose = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value)\n return;\n await requestPermission();\n const options = Object.assign({}, defaultOptions, overrides);\n notification.value = new Notification(options.title || \"\", options);\n notification.value.onclick = (event) => onClick.trigger(event);\n notification.value.onshow = (event) => onShow.trigger(event);\n notification.value.onerror = (event) => onError.trigger(event);\n notification.value.onclose = (event) => onClose.trigger(event);\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n tryOnMounted(async () => {\n if (isSupported.value)\n await requestPermission();\n });\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n};\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = resolveRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const close = (code = 1e3, reason) => {\n if (!wsRef.value)\n return;\n explicitlyClosed = true;\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(() => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n }, pongTimeout);\n }, interval, { immediate: false });\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n useEventListener(window, \"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = function post2(val) {\n if (!worker.value)\n return;\n worker.value.postMessage(val);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (isString(arg0))\n worker.value = new Worker(arg0, workerOptions);\n else if (isFunction(arg0))\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nconst jobRunner = (userFunc) => (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n};\n\nconst depsParser = (deps) => {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n};\n\nconst createWorkerBlobUrl = (fn, deps) => {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n};\n\nconst useWebWorkerFn = (fn, options = {}) => {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(() => workerTerminate(\"TIMEOUT_EXPIRED\"), timeout);\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\"[useWebWorkerFn] You can only run one instance of the worker at a time.\");\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n};\n\nfunction useWindowFocus({ window = defaultWindow } = {}) {\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll({ window = defaultWindow } = {}) {\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const x = ref(window.scrollX);\n const y = ref(window.scrollY);\n useEventListener(window, \"scroll\", () => {\n x.value = window.scrollX;\n y.value = window.scrollY;\n }, {\n capture: false,\n passive: true\n });\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Infinity,\n initialHeight = Infinity,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation)\n useEventListener(\"orientationchange\", update, { passive: true });\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, SwipeDirection, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { u as useHead } from './shared/vue.f36acd1f.mjs';\nimport 'vue';\nimport './shared/vue.cf295fb1.mjs';\nimport 'unhead';\nimport '@unhead/shared';\n\nfunction polyfillAsVueUseHead(head) {\n const polyfilled = head;\n polyfilled.headTags = head.resolveTags;\n polyfilled.addEntry = head.push;\n polyfilled.addHeadObjs = head.push;\n polyfilled.addReactiveEntry = (input, options) => {\n const api = useHead(input, options);\n if (typeof api !== \"undefined\")\n return api.dispose;\n return () => {\n };\n };\n polyfilled.removeHeadObjs = () => {\n };\n polyfilled.updateDOM = () => {\n head.hooks.callHook(\"entries:updated\", head);\n };\n polyfilled.unhead = head;\n return polyfilled;\n}\n\nexport { polyfillAsVueUseHead };\n","import { createHead as createHead$1, Vue2ProvideUnheadPlugin } from '@unhead/vue';\nexport { Vue2ProvideUnheadPlugin, VueHeadMixin, createHeadCore, injectHead, unheadVueComposablesImports, useHead, useHeadSafe, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta } from '@unhead/vue';\nimport { polyfillAsVueUseHead } from '@unhead/vue/polyfill';\nimport { renderSSRHead } from '@unhead/ssr';\nexport { Head } from '@unhead/vue/components';\n\nfunction createHead(initHeadObject, options) {\n const unhead = createHead$1(options || {});\n const legacyHead = polyfillAsVueUseHead(unhead);\n if (initHeadObject)\n legacyHead.push(initHeadObject);\n return legacyHead;\n}\n\nconst HeadVuePlugin = Vue2ProvideUnheadPlugin;\nconst renderHeadToString = (head) => renderSSRHead(head.unhead);\n\nexport { HeadVuePlugin, createHead, renderHeadToString };\n","import { shallowRef, watchEffect, readonly, unref, ref, isVue3, version, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isRef, computed, reactive, toRefs as toRefs$1, toRef, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$6(__spreadValues$9({}, options), {\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n }));\n return readonly(result);\n}\n\nvar _a;\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isBoolean = (val) => typeof val === \"boolean\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isNumber = (val) => typeof val === \"number\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst isWindow = (val) => typeof window !== \"undefined\" && toString.call(val) === \"[object Window]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\n\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = resolveUnref(ms);\n const maxDuration = resolveUnref(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = resolveUnref(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction __onlyVue3(name = \"this function\") {\n if (isVue3)\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 3.`);\n}\nfunction __onlyVue27Plus(name = \"this function\") {\n if (isVue3 || version.startsWith(\"2.7.\"))\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 2.7 or above.`);\n}\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = isFunction(fn) ? fn : fn.get;\n const set = isFunction(fn) ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = [];\n const off = (fn) => {\n const index = fns.indexOf(fn);\n if (index !== -1)\n fns.splice(index, 1);\n };\n const on = (fn) => {\n fns.push(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n fns.forEach((fn) => fn(param));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return () => {\n if (!initialized) {\n state = scope.run(stateFactory);\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provide(key, state);\n return state;\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n __onlyVue27Plus();\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$8({}, obj);\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : resolveUnref;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n }));\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n return reactiveComputed(() => Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n return reactive(Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, resolveUnref(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(ref, {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n }, { enumerable: true });\n}\nconst controlledRef = refWithControl;\n\nfunction resolveRef(r) {\n return typeof r === \"function\" ? computed(r) : ref(r);\n}\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction syncRef(left, right, options = {}) {\n var _a, _b;\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options;\n let watchLeft;\n let watchRight;\n const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n if (direction === \"both\" || direction === \"ltr\") {\n watchLeft = watch(left, (newValue) => right.value = transformLTR(newValue), { flush, deep, immediate });\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchRight = watch(right, (newValue) => left.value = transformRTL(newValue), { flush, deep, immediate });\n }\n return () => {\n watchLeft == null ? void 0 : watchLeft();\n watchRight == null ? void 0 : watchRight();\n };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate });\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(r, (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => stop == null ? void 0 : stop()));\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch([r, value], ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => {\n stop == null ? void 0 : stop();\n return resolveUnref(r);\n }));\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(resolveUnref(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(resolveUnref(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => resolveUnref(list).every((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => resolveUnref(resolveUnref(list).find((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => resolveUnref(list).findIndex((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => resolveUnref(!Array.prototype.findLast ? findLast(resolveUnref(list), (element, index, array) => fn(resolveUnref(element), index, array)) : resolveUnref(list).findLast((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).join(resolveUnref(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(resolveUnref(sum), resolveUnref(value), index);\n return computed(() => {\n const resolved = resolveUnref(list);\n return args.length ? resolved.reduce(reduceCallback, resolveUnref(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => resolveUnref(list).some((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayUnique(list) {\n return computed(() => [...new Set(resolveUnref(list).map((element) => resolveUnref(element)))]);\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = ref(initialValue);\n const {\n max = Infinity,\n min = -Infinity\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = initialValue) => {\n initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst defaultMeridiem = (hours, minutes, isLowercase, hasPeriod) => {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n};\nconst formatDate = (date, formatStr, options = {}) => {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]());\n};\nconst normalizeDate = (date) => {\n if (date === null)\n return new Date(NaN);\n if (date === void 0)\n return new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n};\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(resolveUnref(date)), resolveUnref(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = resolveUnref(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || isFunction(interval)) {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(callback ? () => {\n update();\n callback(counter.value);\n } : update, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$6({\n counter,\n reset\n }, controls);\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(source, () => ms.value = timestamp(), options);\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, resolveUnref(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(callback != null ? callback : noop, interval, options);\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$5({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = resolveUnref(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${resolveUnref(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = resolveUnref(truthyValue);\n _value.value = _value.value === truthy ? resolveUnref(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n ...source instanceof Function ? source() : Array.isArray(source) ? source : unref(source)\n ];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = new Array(oldList.length);\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(source, (...args) => {\n current.value += 1;\n if (current.value >= resolveUnref(count))\n nextTick(() => stop());\n cb(...args);\n }, watchOptions);\n return { count: current, stop };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0,\n maxWait = void 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\",\n \"maxWait\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$4({}, watchOptions), {\n eventFilter: debounceFilter(debounce, { maxWait })\n }));\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(eventFilter, cb);\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(source, (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n }, watchOptions);\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(watch(source, () => {\n syncCounter.value++;\n }, __spreadProps$3(__spreadValues$3({}, watchOptions), { flush: \"sync\" })));\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(watch(source, (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n }, watchOptions));\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(source, cb, __spreadProps$2(__spreadValues$2({}, watchOptions), {\n eventFilter\n }));\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n }));\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return __spreadProps(__spreadValues({}, res), {\n trigger\n });\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => getOneWatchSource(item));\n return getOneWatchSource(sources);\n}\nfunction getOneWatchSource(source) {\n return typeof source === \"function\" ? source() : unref(source);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(source, (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n }, options);\n}\n\nexport { __onlyVue27Plus, __onlyVue3, assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isIOS, isNumber, isObject, isString, isWindow, makeDestructurable, noop, normalizeDate, now, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","var _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n\nexport { _export_sfc as default };\n//# sourceMappingURL=plugin-vue_export-helper.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst badgeProps = buildProps({\n value: {\n type: [String, Number],\n default: \"\"\n },\n max: {\n type: Number,\n default: 99\n },\n isDot: Boolean,\n hidden: Boolean,\n type: {\n type: String,\n values: [\"primary\", \"success\", \"warning\", \"info\", \"danger\"],\n default: \"danger\"\n },\n showZero: {\n type: Boolean,\n default: true\n },\n color: String,\n dotStyle: {\n type: definePropType([String, Object, Array])\n },\n badgeStyle: {\n type: definePropType([String, Object, Array])\n },\n offset: {\n type: definePropType(Array),\n default: [0, 0]\n },\n dotClass: {\n type: String\n },\n badgeClass: {\n type: String\n }\n});\n\nexport { badgeProps };\n//# sourceMappingURL=badge.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createVNode, Transition, withCtx, withDirectives, createElementVNode, normalizeStyle, toDisplayString, vShow } from 'vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { badgeProps } from './badge.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"textContent\"];\nconst __default__ = defineComponent({\n name: \"ElBadge\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: badgeProps,\n setup(__props, { expose }) {\n const props = __props;\n const ns = useNamespace(\"badge\");\n const content = computed(() => {\n if (props.isDot)\n return \"\";\n if (isNumber(props.value) && isNumber(props.max)) {\n if (props.max < props.value) {\n return `${props.max}+`;\n }\n return props.value === 0 && !props.showZero ? \"\" : `${props.value}`;\n }\n return `${props.value}`;\n });\n const style = computed(() => {\n var _a, _b, _c, _d, _e, _f;\n return [\n {\n backgroundColor: props.color,\n marginRight: addUnit(-((_b = (_a = props.offset) == null ? void 0 : _a[0]) != null ? _b : 0)),\n marginTop: addUnit((_d = (_c = props.offset) == null ? void 0 : _c[1]) != null ? _d : 0)\n },\n (_e = props.dotStyle) != null ? _e : {},\n (_f = props.badgeStyle) != null ? _f : {}\n ];\n });\n useDeprecated({\n from: \"dot-style\",\n replacement: \"badge-style\",\n version: \"2.8.0\",\n scope: \"el-badge\",\n ref: \"https://element-plus.org/en-US/component/badge.html\"\n }, computed(() => !!props.dotStyle));\n useDeprecated({\n from: \"dot-class\",\n replacement: \"badge-class\",\n version: \"2.8.0\",\n scope: \"el-badge\",\n ref: \"https://element-plus.org/en-US/component/badge.html\"\n }, computed(() => !!props.dotClass));\n expose({\n content\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(Transition, {\n name: `${unref(ns).namespace.value}-zoom-in-center`,\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"sup\", {\n class: normalizeClass([\n unref(ns).e(\"content\"),\n unref(ns).em(\"content\", _ctx.type),\n unref(ns).is(\"fixed\", !!_ctx.$slots.default),\n unref(ns).is(\"dot\", _ctx.isDot),\n _ctx.dotClass,\n _ctx.badgeClass\n ]),\n style: normalizeStyle(unref(style)),\n textContent: toDisplayString(unref(content))\n }, null, 14, _hoisted_1), [\n [vShow, !_ctx.hidden && (unref(content) || _ctx.isDot)]\n ])\n ]),\n _: 1\n }, 8, [\"name\"])\n ], 2);\n };\n }\n});\nvar Badge = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"badge.vue\"]]);\n\nexport { Badge as default };\n//# sourceMappingURL=badge2.mjs.map\n","import '../../utils/index.mjs';\nimport Badge from './src/badge2.mjs';\nexport { badgeProps } from './src/badge.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElBadge = withInstall(Badge);\n\nexport { ElBadge, ElBadge as default };\n//# sourceMappingURL=index.mjs.map\n","const buttonGroupContextKey = Symbol(\"buttonGroupContextKey\");\n\nexport { buttonGroupContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { computed, inject, ref, useSlots, Text } from 'vue';\nimport '../../form/index.mjs';\nimport '../../config-provider/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buttonGroupContextKey } from './constants.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';\nimport { useFormItem } from '../../form/src/hooks/use-form-item.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\n\nconst useButton = (props, emit) => {\n useDeprecated({\n from: \"type.text\",\n replacement: \"link\",\n version: \"3.0.0\",\n scope: \"props\",\n ref: \"https://element-plus.org/en-US/component/button.html#button-attributes\"\n }, computed(() => props.type === \"text\"));\n const buttonGroupContext = inject(buttonGroupContextKey, void 0);\n const globalConfig = useGlobalConfig(\"button\");\n const { form } = useFormItem();\n const _size = useFormSize(computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size));\n const _disabled = useFormDisabled();\n const _ref = ref();\n const slots = useSlots();\n const _type = computed(() => props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || \"\");\n const autoInsertSpace = computed(() => {\n var _a, _b, _c;\n return (_c = (_b = props.autoInsertSpace) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.autoInsertSpace) != null ? _c : false;\n });\n const _props = computed(() => {\n if (props.tag === \"button\") {\n return {\n ariaDisabled: _disabled.value || props.loading,\n disabled: _disabled.value || props.loading,\n autofocus: props.autofocus,\n type: props.nativeType\n };\n }\n return {};\n });\n const shouldAddSpace = computed(() => {\n var _a;\n const defaultSlot = (_a = slots.default) == null ? void 0 : _a.call(slots);\n if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) {\n const slot = defaultSlot[0];\n if ((slot == null ? void 0 : slot.type) === Text) {\n const text = slot.children;\n return /^\\p{Unified_Ideograph}{2}$/u.test(text.trim());\n }\n }\n return false;\n });\n const handleClick = (evt) => {\n if (props.nativeType === \"reset\") {\n form == null ? void 0 : form.resetFields();\n }\n emit(\"click\", evt);\n };\n return {\n _disabled,\n _size,\n _type,\n _ref,\n _props,\n shouldAddSpace,\n handleClick\n };\n};\n\nexport { useButton };\n//# sourceMappingURL=use-button.mjs.map\n","import { computed } from 'vue';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport '../../../hooks/index.mjs';\nimport '../../form/index.mjs';\nimport { useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nfunction darken(color, amount = 20) {\n return color.mix(\"#141414\", amount).toString();\n}\nfunction useButtonCustomStyle(props) {\n const _disabled = useFormDisabled();\n const ns = useNamespace(\"button\");\n return computed(() => {\n let styles = {};\n const buttonColor = props.color;\n if (buttonColor) {\n const color = new TinyColor(buttonColor);\n const activeBgColor = props.dark ? color.tint(20).toString() : darken(color, 20);\n if (props.plain) {\n styles = ns.cssVarBlock({\n \"bg-color\": props.dark ? darken(color, 90) : color.tint(90).toString(),\n \"text-color\": buttonColor,\n \"border-color\": props.dark ? darken(color, 50) : color.tint(50).toString(),\n \"hover-text-color\": `var(${ns.cssVarName(\"color-white\")})`,\n \"hover-bg-color\": buttonColor,\n \"hover-border-color\": buttonColor,\n \"active-bg-color\": activeBgColor,\n \"active-text-color\": `var(${ns.cssVarName(\"color-white\")})`,\n \"active-border-color\": activeBgColor\n });\n if (_disabled.value) {\n styles[ns.cssVarBlockName(\"disabled-bg-color\")] = props.dark ? darken(color, 90) : color.tint(90).toString();\n styles[ns.cssVarBlockName(\"disabled-text-color\")] = props.dark ? darken(color, 50) : color.tint(50).toString();\n styles[ns.cssVarBlockName(\"disabled-border-color\")] = props.dark ? darken(color, 80) : color.tint(80).toString();\n }\n } else {\n const hoverBgColor = props.dark ? darken(color, 30) : color.tint(30).toString();\n const textColor = color.isDark() ? `var(${ns.cssVarName(\"color-white\")})` : `var(${ns.cssVarName(\"color-black\")})`;\n styles = ns.cssVarBlock({\n \"bg-color\": buttonColor,\n \"text-color\": textColor,\n \"border-color\": buttonColor,\n \"hover-bg-color\": hoverBgColor,\n \"hover-text-color\": textColor,\n \"hover-border-color\": hoverBgColor,\n \"active-bg-color\": activeBgColor,\n \"active-border-color\": activeBgColor\n });\n if (_disabled.value) {\n const disabledButtonColor = props.dark ? darken(color, 50) : color.tint(50).toString();\n styles[ns.cssVarBlockName(\"disabled-bg-color\")] = disabledButtonColor;\n styles[ns.cssVarBlockName(\"disabled-text-color\")] = props.dark ? \"rgba(255, 255, 255, 0.5)\" : `var(${ns.cssVarName(\"color-white\")})`;\n styles[ns.cssVarBlockName(\"disabled-border-color\")] = disabledButtonColor;\n }\n }\n }\n return styles;\n });\n}\n\nexport { darken, useButtonCustomStyle };\n//# sourceMappingURL=button-custom.mjs.map\n","import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, mergeProps, unref, withCtx, createElementBlock, Fragment, renderSlot, normalizeClass, createCommentVNode } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { useButton } from './use-button.mjs';\nimport { buttonProps, buttonEmits } from './button.mjs';\nimport { useButtonCustomStyle } from './button-custom.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElButton\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: buttonProps,\n emits: buttonEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const buttonStyle = useButtonCustomStyle(props);\n const ns = useNamespace(\"button\");\n const { _ref, _size, _type, _disabled, _props, shouldAddSpace, handleClick } = useButton(props, emit);\n const buttonKls = computed(() => [\n ns.b(),\n ns.m(_type.value),\n ns.m(_size.value),\n ns.is(\"disabled\", _disabled.value),\n ns.is(\"loading\", props.loading),\n ns.is(\"plain\", props.plain),\n ns.is(\"round\", props.round),\n ns.is(\"circle\", props.circle),\n ns.is(\"text\", props.text),\n ns.is(\"link\", props.link),\n ns.is(\"has-bg\", props.bg)\n ]);\n expose({\n ref: _ref,\n size: _size,\n type: _type,\n disabled: _disabled,\n shouldAddSpace\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), mergeProps({\n ref_key: \"_ref\",\n ref: _ref\n }, unref(_props), {\n class: unref(buttonKls),\n style: unref(buttonStyle),\n onClick: unref(handleClick)\n }), {\n default: withCtx(() => [\n _ctx.loading ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n _ctx.$slots.loading ? renderSlot(_ctx.$slots, \"loading\", { key: 0 }) : (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass(unref(ns).is(\"loading\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.loadingIcon)))\n ]),\n _: 1\n }, 8, [\"class\"]))\n ], 64)) : _ctx.icon || _ctx.$slots.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {\n default: withCtx(() => [\n _ctx.icon ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon), { key: 0 })) : renderSlot(_ctx.$slots, \"icon\", { key: 1 })\n ]),\n _: 3\n })) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.default ? (openBlock(), createElementBlock(\"span\", {\n key: 2,\n class: normalizeClass({ [unref(ns).em(\"text\", \"expand\")]: unref(shouldAddSpace) })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"class\", \"style\", \"onClick\"]);\n };\n }\n});\nvar Button = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"button.vue\"]]);\n\nexport { Button as default };\n//# sourceMappingURL=button2.mjs.map\n","import { buttonProps } from './button.mjs';\n\nconst buttonGroupProps = {\n size: buttonProps.size,\n type: buttonProps.type\n};\n\nexport { buttonGroupProps };\n//# sourceMappingURL=button-group.mjs.map\n","import { defineComponent, provide, reactive, toRef, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { buttonGroupProps } from './button-group.mjs';\nimport { buttonGroupContextKey } from './constants.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElButtonGroup\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: buttonGroupProps,\n setup(__props) {\n const props = __props;\n provide(buttonGroupContextKey, reactive({\n size: toRef(props, \"size\"),\n type: toRef(props, \"type\")\n }));\n const ns = useNamespace(\"button\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(`${unref(ns).b(\"group\")}`)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"button-group.vue\"]]);\n\nexport { ButtonGroup as default };\n//# sourceMappingURL=button-group2.mjs.map\n","import '../../utils/index.mjs';\nimport Button from './src/button2.mjs';\nimport ButtonGroup from './src/button-group2.mjs';\nexport { buttonEmits, buttonNativeTypes, buttonProps, buttonTypes } from './src/button.mjs';\nexport { buttonGroupContextKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElButton = withInstall(Button, {\n ButtonGroup\n});\nconst ElButtonGroup = withNoopInstall(ButtonGroup);\n\nexport { ElButton, ElButtonGroup, ElButton as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { Loading } from '@element-plus/icons-vue';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst buttonTypes = [\n \"default\",\n \"primary\",\n \"success\",\n \"warning\",\n \"info\",\n \"danger\",\n \"text\",\n \"\"\n];\nconst buttonNativeTypes = [\"button\", \"submit\", \"reset\"];\nconst buttonProps = buildProps({\n size: useSizeProp,\n disabled: Boolean,\n type: {\n type: String,\n values: buttonTypes,\n default: \"\"\n },\n icon: {\n type: iconPropType\n },\n nativeType: {\n type: String,\n values: buttonNativeTypes,\n default: \"button\"\n },\n loading: Boolean,\n loadingIcon: {\n type: iconPropType,\n default: () => Loading\n },\n plain: Boolean,\n text: Boolean,\n link: Boolean,\n bg: Boolean,\n autofocus: Boolean,\n round: Boolean,\n circle: Boolean,\n color: String,\n dark: Boolean,\n autoInsertSpace: {\n type: Boolean,\n default: void 0\n },\n tag: {\n type: definePropType([String, Object]),\n default: \"button\"\n }\n});\nconst buttonEmits = {\n click: (evt) => evt instanceof MouseEvent\n};\n\nexport { buttonEmits, buttonNativeTypes, buttonProps, buttonTypes };\n//# sourceMappingURL=button.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useEmptyValuesProps } from '../../../hooks/use-empty-values/index.mjs';\n\nconst configProviderProps = buildProps({\n a11y: {\n type: Boolean,\n default: true\n },\n locale: {\n type: definePropType(Object)\n },\n size: useSizeProp,\n button: {\n type: definePropType(Object)\n },\n experimentalFeatures: {\n type: definePropType(Object)\n },\n keyboardNavigation: {\n type: Boolean,\n default: true\n },\n message: {\n type: definePropType(Object)\n },\n zIndex: Number,\n namespace: {\n type: String,\n default: \"el\"\n },\n ...useEmptyValuesProps\n});\n\nexport { configProviderProps };\n//# sourceMappingURL=config-provider-props.mjs.map\n","import { defineComponent, watch, renderSlot } from 'vue';\nimport { provideGlobalConfig } from './hooks/use-global-config.mjs';\nimport { configProviderProps } from './config-provider-props.mjs';\n\nconst messageConfig = {};\nconst ConfigProvider = defineComponent({\n name: \"ElConfigProvider\",\n props: configProviderProps,\n setup(props, { slots }) {\n watch(() => props.message, (val) => {\n Object.assign(messageConfig, val != null ? val : {});\n }, { immediate: true, deep: true });\n const config = provideGlobalConfig(props);\n return () => renderSlot(slots, \"default\", { config: config == null ? void 0 : config.value });\n }\n});\n\nexport { ConfigProvider as default, messageConfig };\n//# sourceMappingURL=config-provider.mjs.map\n","const configProviderContextKey = Symbol();\n\nexport { configProviderContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { ref, getCurrentInstance, inject, computed, unref, provide } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { configProviderContextKey } from '../constants.mjs';\nimport { useNamespace, defaultNamespace, namespaceContextKey } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale, localeContextKey } from '../../../../hooks/use-locale/index.mjs';\nimport { useZIndex, defaultInitialZIndex, zIndexContextKey } from '../../../../hooks/use-z-index/index.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\nimport { SIZE_INJECTION_KEY } from '../../../../hooks/use-size/index.mjs';\nimport { keysOf } from '../../../../utils/objects.mjs';\n\nconst globalConfig = ref();\nfunction useGlobalConfig(key, defaultValue = void 0) {\n const config = getCurrentInstance() ? inject(configProviderContextKey, globalConfig) : globalConfig;\n if (key) {\n return computed(() => {\n var _a, _b;\n return (_b = (_a = config.value) == null ? void 0 : _a[key]) != null ? _b : defaultValue;\n });\n } else {\n return config;\n }\n}\nfunction useGlobalComponentSettings(block, sizeFallback) {\n const config = useGlobalConfig();\n const ns = useNamespace(block, computed(() => {\n var _a;\n return ((_a = config.value) == null ? void 0 : _a.namespace) || defaultNamespace;\n }));\n const locale = useLocale(computed(() => {\n var _a;\n return (_a = config.value) == null ? void 0 : _a.locale;\n }));\n const zIndex = useZIndex(computed(() => {\n var _a;\n return ((_a = config.value) == null ? void 0 : _a.zIndex) || defaultInitialZIndex;\n }));\n const size = computed(() => {\n var _a;\n return unref(sizeFallback) || ((_a = config.value) == null ? void 0 : _a.size) || \"\";\n });\n provideGlobalConfig(computed(() => unref(config) || {}));\n return {\n ns,\n locale,\n zIndex,\n size\n };\n}\nconst provideGlobalConfig = (config, app, global = false) => {\n var _a;\n const inSetup = !!getCurrentInstance();\n const oldConfig = inSetup ? useGlobalConfig() : void 0;\n const provideFn = (_a = app == null ? void 0 : app.provide) != null ? _a : inSetup ? provide : void 0;\n if (!provideFn) {\n debugWarn(\"provideGlobalConfig\", \"provideGlobalConfig() can only be used inside setup().\");\n return;\n }\n const context = computed(() => {\n const cfg = unref(config);\n if (!(oldConfig == null ? void 0 : oldConfig.value))\n return cfg;\n return mergeConfig(oldConfig.value, cfg);\n });\n provideFn(configProviderContextKey, context);\n provideFn(localeContextKey, computed(() => context.value.locale));\n provideFn(namespaceContextKey, computed(() => context.value.namespace));\n provideFn(zIndexContextKey, computed(() => context.value.zIndex));\n provideFn(SIZE_INJECTION_KEY, {\n size: computed(() => context.value.size || \"\")\n });\n if (global || !globalConfig.value) {\n globalConfig.value = context.value;\n }\n return context;\n};\nconst mergeConfig = (a, b) => {\n const keys = [.../* @__PURE__ */ new Set([...keysOf(a), ...keysOf(b)])];\n const obj = {};\n for (const key of keys) {\n obj[key] = b[key] !== void 0 ? b[key] : a[key];\n }\n return obj;\n};\n\nexport { provideGlobalConfig, useGlobalComponentSettings, useGlobalConfig };\n//# sourceMappingURL=use-global-config.mjs.map\n","import { ref, onMounted, onBeforeUnmount } from 'vue';\nimport { FOCUSOUT_PREVENTED, FOCUSOUT_PREVENTED_OPTS } from './tokens.mjs';\n\nconst focusReason = ref();\nconst lastUserFocusTimestamp = ref(0);\nconst lastAutomatedFocusTimestamp = ref(0);\nlet focusReasonUserCount = 0;\nconst obtainAllFocusableElements = (element) => {\n const nodes = [];\n const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput)\n return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 || node === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode())\n nodes.push(walker.currentNode);\n return nodes;\n};\nconst getVisibleElement = (elements, container) => {\n for (const element of elements) {\n if (!isHidden(element, container))\n return element;\n }\n};\nconst isHidden = (element, container) => {\n if (process.env.NODE_ENV === \"test\")\n return false;\n if (getComputedStyle(element).visibility === \"hidden\")\n return true;\n while (element) {\n if (container && element === container)\n return false;\n if (getComputedStyle(element).display === \"none\")\n return true;\n element = element.parentElement;\n }\n return false;\n};\nconst getEdges = (container) => {\n const focusable = obtainAllFocusableElements(container);\n const first = getVisibleElement(focusable, container);\n const last = getVisibleElement(focusable.reverse(), container);\n return [first, last];\n};\nconst isSelectable = (element) => {\n return element instanceof HTMLInputElement && \"select\" in element;\n};\nconst tryFocus = (element, shouldSelect) => {\n if (element && element.focus) {\n const prevFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n lastAutomatedFocusTimestamp.value = window.performance.now();\n if (element !== prevFocusedElement && isSelectable(element) && shouldSelect) {\n element.select();\n }\n }\n};\nfunction removeFromStack(list, item) {\n const copy = [...list];\n const idx = list.indexOf(item);\n if (idx !== -1) {\n copy.splice(idx, 1);\n }\n return copy;\n}\nconst createFocusableStack = () => {\n let stack = [];\n const push = (layer) => {\n const currentLayer = stack[0];\n if (currentLayer && layer !== currentLayer) {\n currentLayer.pause();\n }\n stack = removeFromStack(stack, layer);\n stack.unshift(layer);\n };\n const remove = (layer) => {\n var _a, _b;\n stack = removeFromStack(stack, layer);\n (_b = (_a = stack[0]) == null ? void 0 : _a.resume) == null ? void 0 : _b.call(_a);\n };\n return {\n push,\n remove\n };\n};\nconst focusFirstDescendant = (elements, shouldSelect = false) => {\n const prevFocusedElement = document.activeElement;\n for (const element of elements) {\n tryFocus(element, shouldSelect);\n if (document.activeElement !== prevFocusedElement)\n return;\n }\n};\nconst focusableStack = createFocusableStack();\nconst isFocusCausedByUserEvent = () => {\n return lastUserFocusTimestamp.value > lastAutomatedFocusTimestamp.value;\n};\nconst notifyFocusReasonPointer = () => {\n focusReason.value = \"pointer\";\n lastUserFocusTimestamp.value = window.performance.now();\n};\nconst notifyFocusReasonKeydown = () => {\n focusReason.value = \"keyboard\";\n lastUserFocusTimestamp.value = window.performance.now();\n};\nconst useFocusReason = () => {\n onMounted(() => {\n if (focusReasonUserCount === 0) {\n document.addEventListener(\"mousedown\", notifyFocusReasonPointer);\n document.addEventListener(\"touchstart\", notifyFocusReasonPointer);\n document.addEventListener(\"keydown\", notifyFocusReasonKeydown);\n }\n focusReasonUserCount++;\n });\n onBeforeUnmount(() => {\n focusReasonUserCount--;\n if (focusReasonUserCount <= 0) {\n document.removeEventListener(\"mousedown\", notifyFocusReasonPointer);\n document.removeEventListener(\"touchstart\", notifyFocusReasonPointer);\n document.removeEventListener(\"keydown\", notifyFocusReasonKeydown);\n }\n });\n return {\n focusReason,\n lastUserFocusTimestamp,\n lastAutomatedFocusTimestamp\n };\n};\nconst createFocusOutPreventedEvent = (detail) => {\n return new CustomEvent(FOCUSOUT_PREVENTED, {\n ...FOCUSOUT_PREVENTED_OPTS,\n detail\n });\n};\n\nexport { createFocusOutPreventedEvent, focusFirstDescendant, focusableStack, getEdges, getVisibleElement, isFocusCausedByUserEvent, isHidden, obtainAllFocusableElements, tryFocus, useFocusReason };\n//# sourceMappingURL=utils.mjs.map\n","import { onMounted, onBeforeUnmount } from 'vue';\nimport '../../utils/index.mjs';\nimport '../../constants/index.mjs';\nimport { EVENT_CODE } from '../../constants/aria.mjs';\nimport { isClient } from '@vueuse/core';\n\nlet registeredEscapeHandlers = [];\nconst cachedHandler = (e) => {\n const event = e;\n if (event.key === EVENT_CODE.esc) {\n registeredEscapeHandlers.forEach((registeredHandler) => registeredHandler(event));\n }\n};\nconst useEscapeKeydown = (handler) => {\n onMounted(() => {\n if (registeredEscapeHandlers.length === 0) {\n document.addEventListener(\"keydown\", cachedHandler);\n }\n if (isClient)\n registeredEscapeHandlers.push(handler);\n });\n onBeforeUnmount(() => {\n registeredEscapeHandlers = registeredEscapeHandlers.filter((registeredHandler) => registeredHandler !== handler);\n if (registeredEscapeHandlers.length === 0) {\n if (isClient)\n document.removeEventListener(\"keydown\", cachedHandler);\n }\n });\n};\n\nexport { useEscapeKeydown };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, ref, provide, watch, unref, nextTick, onMounted, onBeforeUnmount, renderSlot } from 'vue';\nimport { isNil } from 'lodash-unified';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { useFocusReason, getEdges, createFocusOutPreventedEvent, tryFocus, focusableStack, focusFirstDescendant, obtainAllFocusableElements, isFocusCausedByUserEvent } from './utils.mjs';\nimport { ON_TRAP_FOCUS_EVT, ON_RELEASE_FOCUS_EVT, FOCUS_TRAP_INJECTION_KEY, FOCUS_AFTER_TRAPPED, FOCUS_AFTER_TRAPPED_OPTS, FOCUS_AFTER_RELEASED } from './tokens.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useEscapeKeydown } from '../../../hooks/use-escape-keydown/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { isString } from '@vue/shared';\n\nconst _sfc_main = defineComponent({\n name: \"ElFocusTrap\",\n inheritAttrs: false,\n props: {\n loop: Boolean,\n trapped: Boolean,\n focusTrapEl: Object,\n focusStartEl: {\n type: [Object, String],\n default: \"first\"\n }\n },\n emits: [\n ON_TRAP_FOCUS_EVT,\n ON_RELEASE_FOCUS_EVT,\n \"focusin\",\n \"focusout\",\n \"focusout-prevented\",\n \"release-requested\"\n ],\n setup(props, { emit }) {\n const forwardRef = ref();\n let lastFocusBeforeTrapped;\n let lastFocusAfterTrapped;\n const { focusReason } = useFocusReason();\n useEscapeKeydown((event) => {\n if (props.trapped && !focusLayer.paused) {\n emit(\"release-requested\", event);\n }\n });\n const focusLayer = {\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n };\n const onKeydown = (e) => {\n if (!props.loop && !props.trapped)\n return;\n if (focusLayer.paused)\n return;\n const { key, altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e;\n const { loop } = props;\n const isTabbing = key === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey;\n const currentFocusingEl = document.activeElement;\n if (isTabbing && currentFocusingEl) {\n const container = currentTarget;\n const [first, last] = getEdges(container);\n const isTabbable = first && last;\n if (!isTabbable) {\n if (currentFocusingEl === container) {\n const focusoutPreventedEvent = createFocusOutPreventedEvent({\n focusReason: focusReason.value\n });\n emit(\"focusout-prevented\", focusoutPreventedEvent);\n if (!focusoutPreventedEvent.defaultPrevented) {\n e.preventDefault();\n }\n }\n } else {\n if (!shiftKey && currentFocusingEl === last) {\n const focusoutPreventedEvent = createFocusOutPreventedEvent({\n focusReason: focusReason.value\n });\n emit(\"focusout-prevented\", focusoutPreventedEvent);\n if (!focusoutPreventedEvent.defaultPrevented) {\n e.preventDefault();\n if (loop)\n tryFocus(first, true);\n }\n } else if (shiftKey && [first, container].includes(currentFocusingEl)) {\n const focusoutPreventedEvent = createFocusOutPreventedEvent({\n focusReason: focusReason.value\n });\n emit(\"focusout-prevented\", focusoutPreventedEvent);\n if (!focusoutPreventedEvent.defaultPrevented) {\n e.preventDefault();\n if (loop)\n tryFocus(last, true);\n }\n }\n }\n }\n };\n provide(FOCUS_TRAP_INJECTION_KEY, {\n focusTrapRef: forwardRef,\n onKeydown\n });\n watch(() => props.focusTrapEl, (focusTrapEl) => {\n if (focusTrapEl) {\n forwardRef.value = focusTrapEl;\n }\n }, { immediate: true });\n watch([forwardRef], ([forwardRef2], [oldForwardRef]) => {\n if (forwardRef2) {\n forwardRef2.addEventListener(\"keydown\", onKeydown);\n forwardRef2.addEventListener(\"focusin\", onFocusIn);\n forwardRef2.addEventListener(\"focusout\", onFocusOut);\n }\n if (oldForwardRef) {\n oldForwardRef.removeEventListener(\"keydown\", onKeydown);\n oldForwardRef.removeEventListener(\"focusin\", onFocusIn);\n oldForwardRef.removeEventListener(\"focusout\", onFocusOut);\n }\n });\n const trapOnFocus = (e) => {\n emit(ON_TRAP_FOCUS_EVT, e);\n };\n const releaseOnFocus = (e) => emit(ON_RELEASE_FOCUS_EVT, e);\n const onFocusIn = (e) => {\n const trapContainer = unref(forwardRef);\n if (!trapContainer)\n return;\n const target = e.target;\n const relatedTarget = e.relatedTarget;\n const isFocusedInTrap = target && trapContainer.contains(target);\n if (!props.trapped) {\n const isPrevFocusedInTrap = relatedTarget && trapContainer.contains(relatedTarget);\n if (!isPrevFocusedInTrap) {\n lastFocusBeforeTrapped = relatedTarget;\n }\n }\n if (isFocusedInTrap)\n emit(\"focusin\", e);\n if (focusLayer.paused)\n return;\n if (props.trapped) {\n if (isFocusedInTrap) {\n lastFocusAfterTrapped = target;\n } else {\n tryFocus(lastFocusAfterTrapped, true);\n }\n }\n };\n const onFocusOut = (e) => {\n const trapContainer = unref(forwardRef);\n if (focusLayer.paused || !trapContainer)\n return;\n if (props.trapped) {\n const relatedTarget = e.relatedTarget;\n if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) {\n setTimeout(() => {\n if (!focusLayer.paused && props.trapped) {\n const focusoutPreventedEvent = createFocusOutPreventedEvent({\n focusReason: focusReason.value\n });\n emit(\"focusout-prevented\", focusoutPreventedEvent);\n if (!focusoutPreventedEvent.defaultPrevented) {\n tryFocus(lastFocusAfterTrapped, true);\n }\n }\n }, 0);\n }\n } else {\n const target = e.target;\n const isFocusedInTrap = target && trapContainer.contains(target);\n if (!isFocusedInTrap)\n emit(\"focusout\", e);\n }\n };\n async function startTrap() {\n await nextTick();\n const trapContainer = unref(forwardRef);\n if (trapContainer) {\n focusableStack.push(focusLayer);\n const prevFocusedElement = trapContainer.contains(document.activeElement) ? lastFocusBeforeTrapped : document.activeElement;\n lastFocusBeforeTrapped = prevFocusedElement;\n const isPrevFocusContained = trapContainer.contains(prevFocusedElement);\n if (!isPrevFocusContained) {\n const focusEvent = new Event(FOCUS_AFTER_TRAPPED, FOCUS_AFTER_TRAPPED_OPTS);\n trapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus);\n trapContainer.dispatchEvent(focusEvent);\n if (!focusEvent.defaultPrevented) {\n nextTick(() => {\n let focusStartEl = props.focusStartEl;\n if (!isString(focusStartEl)) {\n tryFocus(focusStartEl);\n if (document.activeElement !== focusStartEl) {\n focusStartEl = \"first\";\n }\n }\n if (focusStartEl === \"first\") {\n focusFirstDescendant(obtainAllFocusableElements(trapContainer), true);\n }\n if (document.activeElement === prevFocusedElement || focusStartEl === \"container\") {\n tryFocus(trapContainer);\n }\n });\n }\n }\n }\n }\n function stopTrap() {\n const trapContainer = unref(forwardRef);\n if (trapContainer) {\n trapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus);\n const releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, {\n ...FOCUS_AFTER_TRAPPED_OPTS,\n detail: {\n focusReason: focusReason.value\n }\n });\n trapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus);\n trapContainer.dispatchEvent(releasedEvent);\n if (!releasedEvent.defaultPrevented && (focusReason.value == \"keyboard\" || !isFocusCausedByUserEvent() || trapContainer.contains(document.activeElement))) {\n tryFocus(lastFocusBeforeTrapped != null ? lastFocusBeforeTrapped : document.body);\n }\n trapContainer.removeEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus);\n focusableStack.remove(focusLayer);\n }\n }\n onMounted(() => {\n if (props.trapped) {\n startTrap();\n }\n watch(() => props.trapped, (trapped) => {\n if (trapped) {\n startTrap();\n } else {\n stopTrap();\n }\n });\n });\n onBeforeUnmount(() => {\n if (props.trapped) {\n stopTrap();\n }\n });\n return {\n onKeydown\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return renderSlot(_ctx.$slots, \"default\", { handleKeydown: _ctx.onKeydown });\n}\nvar ElFocusTrap = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"focus-trap.vue\"]]);\n\nexport { ElFocusTrap as default };\n//# sourceMappingURL=focus-trap.mjs.map\n","const FOCUS_AFTER_TRAPPED = \"focus-trap.focus-after-trapped\";\nconst FOCUS_AFTER_RELEASED = \"focus-trap.focus-after-released\";\nconst FOCUSOUT_PREVENTED = \"focus-trap.focusout-prevented\";\nconst FOCUS_AFTER_TRAPPED_OPTS = {\n cancelable: true,\n bubbles: false\n};\nconst FOCUSOUT_PREVENTED_OPTS = {\n cancelable: true,\n bubbles: false\n};\nconst ON_TRAP_FOCUS_EVT = \"focusAfterTrapped\";\nconst ON_RELEASE_FOCUS_EVT = \"focusAfterReleased\";\nconst FOCUS_TRAP_INJECTION_KEY = Symbol(\"elFocusTrap\");\n\nexport { FOCUSOUT_PREVENTED, FOCUSOUT_PREVENTED_OPTS, FOCUS_AFTER_RELEASED, FOCUS_AFTER_TRAPPED, FOCUS_AFTER_TRAPPED_OPTS, FOCUS_TRAP_INJECTION_KEY, ON_RELEASE_FOCUS_EVT, ON_TRAP_FOCUS_EVT };\n//# sourceMappingURL=tokens.mjs.map\n","const formContextKey = Symbol(\"formContextKey\");\nconst formItemContextKey = Symbol(\"formItemContextKey\");\n\nexport { formContextKey, formItemContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { getCurrentInstance, computed } from 'vue';\n\nconst useProp = (name) => {\n const vm = getCurrentInstance();\n return computed(() => {\n var _a, _b;\n return (_b = (_a = vm == null ? void 0 : vm.proxy) == null ? void 0 : _a.$props) == null ? void 0 : _b[name];\n });\n};\n\nexport { useProp };\n//# sourceMappingURL=index.mjs.map\n","import { ref, inject, computed, unref } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { formContextKey, formItemContextKey } from '../constants.mjs';\nimport { useProp } from '../../../../hooks/use-prop/index.mjs';\nimport { useGlobalSize } from '../../../../hooks/use-size/index.mjs';\n\nconst useFormSize = (fallback, ignore = {}) => {\n const emptyRef = ref(void 0);\n const size = ignore.prop ? emptyRef : useProp(\"size\");\n const globalConfig = ignore.global ? emptyRef : useGlobalSize();\n const form = ignore.form ? { size: void 0 } : inject(formContextKey, void 0);\n const formItem = ignore.formItem ? { size: void 0 } : inject(formItemContextKey, void 0);\n return computed(() => size.value || unref(fallback) || (formItem == null ? void 0 : formItem.size) || (form == null ? void 0 : form.size) || globalConfig.value || \"\");\n};\nconst useFormDisabled = (fallback) => {\n const disabled = useProp(\"disabled\");\n const form = inject(formContextKey, void 0);\n return computed(() => disabled.value || unref(fallback) || (form == null ? void 0 : form.disabled) || false);\n};\nconst useSize = useFormSize;\nconst useDisabled = useFormDisabled;\n\nexport { useDisabled, useFormDisabled, useFormSize, useSize };\n//# sourceMappingURL=use-form-common-props.mjs.map\n","import { inject, ref, computed, onMounted, watch, toRef, onUnmounted } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { formContextKey, formItemContextKey } from '../constants.mjs';\nimport { useId } from '../../../../hooks/use-id/index.mjs';\n\nconst useFormItem = () => {\n const form = inject(formContextKey, void 0);\n const formItem = inject(formItemContextKey, void 0);\n return {\n form,\n formItem\n };\n};\nconst useFormItemInputId = (props, {\n formItemContext,\n disableIdGeneration,\n disableIdManagement\n}) => {\n if (!disableIdGeneration) {\n disableIdGeneration = ref(false);\n }\n if (!disableIdManagement) {\n disableIdManagement = ref(false);\n }\n const inputId = ref();\n let idUnwatch = void 0;\n const isLabeledByFormItem = computed(() => {\n var _a;\n return !!(!(props.label || props.ariaLabel) && formItemContext && formItemContext.inputIds && ((_a = formItemContext.inputIds) == null ? void 0 : _a.length) <= 1);\n });\n onMounted(() => {\n idUnwatch = watch([toRef(props, \"id\"), disableIdGeneration], ([id, disableIdGeneration2]) => {\n const newId = id != null ? id : !disableIdGeneration2 ? useId().value : void 0;\n if (newId !== inputId.value) {\n if (formItemContext == null ? void 0 : formItemContext.removeInputId) {\n inputId.value && formItemContext.removeInputId(inputId.value);\n if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration2 && newId) {\n formItemContext.addInputId(newId);\n }\n }\n inputId.value = newId;\n }\n }, { immediate: true });\n });\n onUnmounted(() => {\n idUnwatch && idUnwatch();\n if (formItemContext == null ? void 0 : formItemContext.removeInputId) {\n inputId.value && formItemContext.removeInputId(inputId.value);\n }\n });\n return {\n isLabeledByFormItem,\n inputId\n };\n};\n\nexport { useFormItem, useFormItemInputId };\n//# sourceMappingURL=use-form-item.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst iconProps = buildProps({\n size: {\n type: definePropType([Number, String])\n },\n color: {\n type: String\n }\n});\n\nexport { iconProps };\n//# sourceMappingURL=icon.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, mergeProps, unref, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { iconProps } from './icon.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isUndefined } from '../../../utils/types.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElIcon\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: iconProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"icon\");\n const style = computed(() => {\n const { size, color } = props;\n if (!size && !color)\n return {};\n return {\n fontSize: isUndefined(size) ? void 0 : addUnit(size),\n \"--color\": color\n };\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"i\", mergeProps({\n class: unref(ns).b(),\n style: unref(style)\n }, _ctx.$attrs), [\n renderSlot(_ctx.$slots, \"default\")\n ], 16);\n };\n }\n});\nvar Icon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"icon.vue\"]]);\n\nexport { Icon as default };\n//# sourceMappingURL=icon2.mjs.map\n","import '../../utils/index.mjs';\nimport Icon from './src/icon2.mjs';\nexport { iconProps } from './src/icon.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElIcon = withInstall(Icon);\n\nexport { ElIcon, ElIcon as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { isFirefox } from '../../../utils/browser.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nlet hiddenTextarea = void 0;\nconst HIDDEN_STYLE = `\n height:0 !important;\n visibility:hidden !important;\n ${isFirefox() ? \"\" : \"overflow:hidden !important;\"}\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n`;\nconst CONTEXT_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\"\n];\nfunction calculateNodeStyling(targetElement) {\n const style = window.getComputedStyle(targetElement);\n const boxSizing = style.getPropertyValue(\"box-sizing\");\n const paddingSize = Number.parseFloat(style.getPropertyValue(\"padding-bottom\")) + Number.parseFloat(style.getPropertyValue(\"padding-top\"));\n const borderSize = Number.parseFloat(style.getPropertyValue(\"border-bottom-width\")) + Number.parseFloat(style.getPropertyValue(\"border-top-width\"));\n const contextStyle = CONTEXT_STYLE.map((name) => `${name}:${style.getPropertyValue(name)}`).join(\";\");\n return { contextStyle, paddingSize, borderSize, boxSizing };\n}\nfunction calcTextareaHeight(targetElement, minRows = 1, maxRows) {\n var _a;\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n document.body.appendChild(hiddenTextarea);\n }\n const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement);\n hiddenTextarea.setAttribute(\"style\", `${contextStyle};${HIDDEN_STYLE}`);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || \"\";\n let height = hiddenTextarea.scrollHeight;\n const result = {};\n if (boxSizing === \"border-box\") {\n height = height + borderSize;\n } else if (boxSizing === \"content-box\") {\n height = height - paddingSize;\n }\n hiddenTextarea.value = \"\";\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (isNumber(minRows)) {\n let minHeight = singleRowHeight * minRows;\n if (boxSizing === \"border-box\") {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = `${minHeight}px`;\n }\n if (isNumber(maxRows)) {\n let maxHeight = singleRowHeight * maxRows;\n if (boxSizing === \"border-box\") {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = `${height}px`;\n (_a = hiddenTextarea.parentNode) == null ? void 0 : _a.removeChild(hiddenTextarea);\n hiddenTextarea = void 0;\n return result;\n}\n\nexport { calcTextareaHeight };\n//# sourceMappingURL=utils.mjs.map\n","import { isString } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\n\nconst inputProps = buildProps({\n id: {\n type: String,\n default: void 0\n },\n size: useSizeProp,\n disabled: Boolean,\n modelValue: {\n type: definePropType([\n String,\n Number,\n Object\n ]),\n default: \"\"\n },\n maxlength: {\n type: [String, Number]\n },\n minlength: {\n type: [String, Number]\n },\n type: {\n type: String,\n default: \"text\"\n },\n resize: {\n type: String,\n values: [\"none\", \"both\", \"horizontal\", \"vertical\"]\n },\n autosize: {\n type: definePropType([Boolean, Object]),\n default: false\n },\n autocomplete: {\n type: String,\n default: \"off\"\n },\n formatter: {\n type: Function\n },\n parser: {\n type: Function\n },\n placeholder: {\n type: String\n },\n form: {\n type: String\n },\n readonly: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n suffixIcon: {\n type: iconPropType\n },\n prefixIcon: {\n type: iconPropType\n },\n containerRole: {\n type: String,\n default: void 0\n },\n label: {\n type: String,\n default: void 0\n },\n tabindex: {\n type: [String, Number],\n default: 0\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n inputStyle: {\n type: definePropType([Object, Array, String]),\n default: () => mutable({})\n },\n autofocus: {\n type: Boolean,\n default: false\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst inputEmits = {\n [UPDATE_MODEL_EVENT]: (value) => isString(value),\n input: (value) => isString(value),\n change: (value) => isString(value),\n focus: (evt) => evt instanceof FocusEvent,\n blur: (evt) => evt instanceof FocusEvent,\n clear: () => true,\n mouseleave: (evt) => evt instanceof MouseEvent,\n mouseenter: (evt) => evt instanceof MouseEvent,\n keydown: (evt) => evt instanceof Event,\n compositionstart: (evt) => evt instanceof CompositionEvent,\n compositionupdate: (evt) => evt instanceof CompositionEvent,\n compositionend: (evt) => evt instanceof CompositionEvent\n};\n\nexport { inputEmits, inputProps };\n//# sourceMappingURL=input.mjs.map\n","import { ref } from 'vue';\n\nfunction useCursor(input) {\n const selectionRef = ref();\n function recordCursor() {\n if (input.value == void 0)\n return;\n const { selectionStart, selectionEnd, value } = input.value;\n if (selectionStart == null || selectionEnd == null)\n return;\n const beforeTxt = value.slice(0, Math.max(0, selectionStart));\n const afterTxt = value.slice(Math.max(0, selectionEnd));\n selectionRef.value = {\n selectionStart,\n selectionEnd,\n value,\n beforeTxt,\n afterTxt\n };\n }\n function setCursor() {\n if (input.value == void 0 || selectionRef.value == void 0)\n return;\n const { value } = input.value;\n const { beforeTxt, afterTxt, selectionStart } = selectionRef.value;\n if (beforeTxt == void 0 || afterTxt == void 0 || selectionStart == void 0)\n return;\n let startPos = value.length;\n if (value.endsWith(afterTxt)) {\n startPos = value.length - afterTxt.length;\n } else if (value.startsWith(beforeTxt)) {\n startPos = beforeTxt.length;\n } else {\n const beforeLastChar = beforeTxt[selectionStart - 1];\n const newIndex = value.indexOf(beforeLastChar, selectionStart - 1);\n if (newIndex !== -1) {\n startPos = newIndex + 1;\n }\n }\n input.value.setSelectionRange(startPos, startPos);\n }\n return [recordCursor, setCursor];\n}\n\nexport { useCursor };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, useAttrs, useSlots, computed, shallowRef, ref, nextTick, watch, onMounted, toRef, openBlock, createElementBlock, mergeProps, unref, createCommentVNode, Fragment, normalizeClass, renderSlot, createElementVNode, createBlock, withCtx, resolveDynamicComponent, withModifiers, createVNode, toDisplayString, normalizeStyle } from 'vue';\nimport { useResizeObserver, isClient } from '@vueuse/core';\nimport { isNil } from 'lodash-unified';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { View, Hide, CircleClose } from '@element-plus/icons-vue';\nimport '../../form/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport { calcTextareaHeight } from './utils.mjs';\nimport { inputProps, inputEmits } from './input.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useAttrs as useAttrs$1 } from '../../../hooks/use-attrs/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFocusController } from '../../../hooks/use-focus-controller/index.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { ValidateComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { useCursor } from '../../../hooks/use-cursor/index.mjs';\nimport { isObject, NOOP } from '@vue/shared';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { isKorean } from '../../../utils/i18n.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"id\", \"minlength\", \"maxlength\", \"type\", \"disabled\", \"readonly\", \"autocomplete\", \"tabindex\", \"aria-label\", \"placeholder\", \"form\", \"autofocus\"];\nconst _hoisted_3 = [\"id\", \"minlength\", \"maxlength\", \"tabindex\", \"disabled\", \"readonly\", \"autocomplete\", \"aria-label\", \"placeholder\", \"form\", \"autofocus\"];\nconst __default__ = defineComponent({\n name: \"ElInput\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: inputProps,\n emits: inputEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const rawAttrs = useAttrs();\n const slots = useSlots();\n const containerAttrs = computed(() => {\n const comboBoxAttrs = {};\n if (props.containerRole === \"combobox\") {\n comboBoxAttrs[\"aria-haspopup\"] = rawAttrs[\"aria-haspopup\"];\n comboBoxAttrs[\"aria-owns\"] = rawAttrs[\"aria-owns\"];\n comboBoxAttrs[\"aria-expanded\"] = rawAttrs[\"aria-expanded\"];\n }\n return comboBoxAttrs;\n });\n const containerKls = computed(() => [\n props.type === \"textarea\" ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is(\"disabled\", inputDisabled.value),\n nsInput.is(\"exceed\", inputExceed.value),\n {\n [nsInput.b(\"group\")]: slots.prepend || slots.append,\n [nsInput.bm(\"group\", \"append\")]: slots.append,\n [nsInput.bm(\"group\", \"prepend\")]: slots.prepend,\n [nsInput.m(\"prefix\")]: slots.prefix || props.prefixIcon,\n [nsInput.m(\"suffix\")]: slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm(\"suffix\", \"password-clear\")]: showClear.value && showPwdVisible.value,\n [nsInput.b(\"hidden\")]: props.type === \"hidden\"\n },\n rawAttrs.class\n ]);\n const wrapperKls = computed(() => [\n nsInput.e(\"wrapper\"),\n nsInput.is(\"focus\", isFocused.value)\n ]);\n const attrs = useAttrs$1({\n excludeKeys: computed(() => {\n return Object.keys(containerAttrs.value);\n })\n });\n const { form: elForm, formItem: elFormItem } = useFormItem();\n const { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem\n });\n const inputSize = useFormSize();\n const inputDisabled = useFormDisabled();\n const nsInput = useNamespace(\"input\");\n const nsTextarea = useNamespace(\"textarea\");\n const input = shallowRef();\n const textarea = shallowRef();\n const hovering = ref(false);\n const isComposing = ref(false);\n const passwordVisible = ref(false);\n const countStyle = ref();\n const textareaCalcStyle = shallowRef(props.inputStyle);\n const _ref = computed(() => input.value || textarea.value);\n const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, {\n afterBlur() {\n var _a;\n if (props.validateEvent) {\n (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, \"blur\").catch((err) => debugWarn(err));\n }\n }\n });\n const needStatusIcon = computed(() => {\n var _a;\n return (_a = elForm == null ? void 0 : elForm.statusIcon) != null ? _a : false;\n });\n const validateState = computed(() => (elFormItem == null ? void 0 : elFormItem.validateState) || \"\");\n const validateIcon = computed(() => validateState.value && ValidateComponentsMap[validateState.value]);\n const passwordIcon = computed(() => passwordVisible.value ? View : Hide);\n const containerStyle = computed(() => [\n rawAttrs.style\n ]);\n const textareaStyle = computed(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize }\n ]);\n const nativeInputValue = computed(() => isNil(props.modelValue) ? \"\" : String(props.modelValue));\n const showClear = computed(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value));\n const showPwdVisible = computed(() => props.showPassword && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (!!nativeInputValue.value || isFocused.value));\n const isWordLimitVisible = computed(() => props.showWordLimit && !!props.maxlength && (props.type === \"text\" || props.type === \"textarea\") && !inputDisabled.value && !props.readonly && !props.showPassword);\n const textLength = computed(() => nativeInputValue.value.length);\n const inputExceed = computed(() => !!isWordLimitVisible.value && textLength.value > Number(props.maxlength));\n const suffixVisible = computed(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value);\n const [recordCursor, setCursor] = useCursor(input);\n useResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea();\n if (!isWordLimitVisible.value || props.resize !== \"both\")\n return;\n const entry = entries[0];\n const { width } = entry.contentRect;\n countStyle.value = {\n right: `calc(100% - ${width + 15 + 6}px)`\n };\n });\n const resizeTextarea = () => {\n const { type, autosize } = props;\n if (!isClient || type !== \"textarea\" || !textarea.value)\n return;\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : void 0;\n const maxRows = isObject(autosize) ? autosize.maxRows : void 0;\n const textareaStyle2 = calcTextareaHeight(textarea.value, minRows, maxRows);\n textareaCalcStyle.value = {\n overflowY: \"hidden\",\n ...textareaStyle2\n };\n nextTick(() => {\n textarea.value.offsetHeight;\n textareaCalcStyle.value = textareaStyle2;\n });\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight\n };\n }\n };\n const createOnceInitResize = (resizeTextarea2) => {\n let isInit = false;\n return () => {\n var _a;\n if (isInit || !props.autosize)\n return;\n const isElHidden = ((_a = textarea.value) == null ? void 0 : _a.offsetParent) === null;\n if (!isElHidden) {\n resizeTextarea2();\n isInit = true;\n }\n };\n };\n const onceInitSizeTextarea = createOnceInitResize(resizeTextarea);\n const setNativeInputValue = () => {\n const input2 = _ref.value;\n const formatterValue = props.formatter ? props.formatter(nativeInputValue.value) : nativeInputValue.value;\n if (!input2 || input2.value === formatterValue)\n return;\n input2.value = formatterValue;\n };\n const handleInput = async (event) => {\n recordCursor();\n let { value } = event.target;\n if (props.formatter) {\n value = props.parser ? props.parser(value) : value;\n }\n if (isComposing.value)\n return;\n if (value === nativeInputValue.value) {\n setNativeInputValue();\n return;\n }\n emit(UPDATE_MODEL_EVENT, value);\n emit(\"input\", value);\n await nextTick();\n setNativeInputValue();\n setCursor();\n };\n const handleChange = (event) => {\n emit(\"change\", event.target.value);\n };\n const handleCompositionStart = (event) => {\n emit(\"compositionstart\", event);\n isComposing.value = true;\n };\n const handleCompositionUpdate = (event) => {\n var _a;\n emit(\"compositionupdate\", event);\n const text = (_a = event.target) == null ? void 0 : _a.value;\n const lastCharacter = text[text.length - 1] || \"\";\n isComposing.value = !isKorean(lastCharacter);\n };\n const handleCompositionEnd = (event) => {\n emit(\"compositionend\", event);\n if (isComposing.value) {\n isComposing.value = false;\n handleInput(event);\n }\n };\n const handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value;\n focus();\n };\n const focus = async () => {\n var _a;\n await nextTick();\n (_a = _ref.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n return (_a = _ref.value) == null ? void 0 : _a.blur();\n };\n const handleMouseLeave = (evt) => {\n hovering.value = false;\n emit(\"mouseleave\", evt);\n };\n const handleMouseEnter = (evt) => {\n hovering.value = true;\n emit(\"mouseenter\", evt);\n };\n const handleKeydown = (evt) => {\n emit(\"keydown\", evt);\n };\n const select = () => {\n var _a;\n (_a = _ref.value) == null ? void 0 : _a.select();\n };\n const clear = () => {\n emit(UPDATE_MODEL_EVENT, \"\");\n emit(\"change\", \"\");\n emit(\"clear\");\n emit(\"input\", \"\");\n };\n watch(() => props.modelValue, () => {\n var _a;\n nextTick(() => resizeTextarea());\n if (props.validateEvent) {\n (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, \"change\").catch((err) => debugWarn(err));\n }\n });\n watch(nativeInputValue, () => setNativeInputValue());\n watch(() => props.type, async () => {\n await nextTick();\n setNativeInputValue();\n resizeTextarea();\n });\n onMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\"ElInput\", \"If you set the parser, you also need to set the formatter.\");\n }\n setNativeInputValue();\n nextTick(resizeTextarea);\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-input\",\n ref: \"https://element-plus.org/en-US/component/input.html\"\n }, computed(() => !!props.label));\n expose({\n input,\n textarea,\n ref: _ref,\n textareaStyle,\n autosize: toRef(props, \"autosize\"),\n focus,\n blur,\n select,\n clear,\n resizeTextarea\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", mergeProps(unref(containerAttrs), {\n class: unref(containerKls),\n style: unref(containerStyle),\n role: _ctx.containerRole,\n onMouseenter: handleMouseEnter,\n onMouseleave: handleMouseLeave\n }), [\n createCommentVNode(\" input \"),\n _ctx.type !== \"textarea\" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createCommentVNode(\" prepend slot \"),\n _ctx.$slots.prepend ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(nsInput).be(\"group\", \"prepend\"))\n }, [\n renderSlot(_ctx.$slots, \"prepend\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n ref_key: \"wrapperRef\",\n ref: wrapperRef,\n class: normalizeClass(unref(wrapperKls))\n }, [\n createCommentVNode(\" prefix slot \"),\n _ctx.$slots.prefix || _ctx.prefixIcon ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass(unref(nsInput).e(\"prefix\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(nsInput).e(\"prefix-inner\"))\n }, [\n renderSlot(_ctx.$slots, \"prefix\"),\n _ctx.prefixIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(nsInput).e(\"icon\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.prefixIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"input\", mergeProps({\n id: unref(inputId),\n ref_key: \"input\",\n ref: input,\n class: unref(nsInput).e(\"inner\")\n }, unref(attrs), {\n minlength: _ctx.minlength,\n maxlength: _ctx.maxlength,\n type: _ctx.showPassword ? passwordVisible.value ? \"text\" : \"password\" : _ctx.type,\n disabled: unref(inputDisabled),\n readonly: _ctx.readonly,\n autocomplete: _ctx.autocomplete,\n tabindex: _ctx.tabindex,\n \"aria-label\": _ctx.label || _ctx.ariaLabel,\n placeholder: _ctx.placeholder,\n style: _ctx.inputStyle,\n form: _ctx.form,\n autofocus: _ctx.autofocus,\n onCompositionstart: handleCompositionStart,\n onCompositionupdate: handleCompositionUpdate,\n onCompositionend: handleCompositionEnd,\n onInput: handleInput,\n onFocus: _cache[0] || (_cache[0] = (...args) => unref(handleFocus) && unref(handleFocus)(...args)),\n onBlur: _cache[1] || (_cache[1] = (...args) => unref(handleBlur) && unref(handleBlur)(...args)),\n onChange: handleChange,\n onKeydown: handleKeydown\n }), null, 16, _hoisted_2),\n createCommentVNode(\" suffix slot \"),\n unref(suffixVisible) ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass(unref(nsInput).e(\"suffix\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(nsInput).e(\"suffix-inner\"))\n }, [\n !unref(showClear) || !unref(showPwdVisible) || !unref(isWordLimitVisible) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n renderSlot(_ctx.$slots, \"suffix\"),\n _ctx.suffixIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(nsInput).e(\"icon\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.suffixIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 64)) : createCommentVNode(\"v-if\", true),\n unref(showClear) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass([unref(nsInput).e(\"icon\"), unref(nsInput).e(\"clear\")]),\n onMousedown: withModifiers(unref(NOOP), [\"prevent\"]),\n onClick: clear\n }, {\n default: withCtx(() => [\n createVNode(unref(CircleClose))\n ]),\n _: 1\n }, 8, [\"class\", \"onMousedown\"])) : createCommentVNode(\"v-if\", true),\n unref(showPwdVisible) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 2,\n class: normalizeClass([unref(nsInput).e(\"icon\"), unref(nsInput).e(\"password\")]),\n onClick: handlePasswordVisible\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(passwordIcon))))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n unref(isWordLimitVisible) ? (openBlock(), createElementBlock(\"span\", {\n key: 3,\n class: normalizeClass(unref(nsInput).e(\"count\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(nsInput).e(\"count-inner\"))\n }, toDisplayString(unref(textLength)) + \" / \" + toDisplayString(_ctx.maxlength), 3)\n ], 2)) : createCommentVNode(\"v-if\", true),\n unref(validateState) && unref(validateIcon) && unref(needStatusIcon) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 4,\n class: normalizeClass([\n unref(nsInput).e(\"icon\"),\n unref(nsInput).e(\"validateIcon\"),\n unref(nsInput).is(\"loading\", unref(validateState) === \"validating\")\n ])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(validateIcon))))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2),\n createCommentVNode(\" append slot \"),\n _ctx.$slots.append ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(nsInput).be(\"group\", \"append\"))\n }, [\n renderSlot(_ctx.$slots, \"append\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createCommentVNode(\" textarea \"),\n createElementVNode(\"textarea\", mergeProps({\n id: unref(inputId),\n ref_key: \"textarea\",\n ref: textarea,\n class: [unref(nsTextarea).e(\"inner\"), unref(nsInput).is(\"focus\", unref(isFocused))]\n }, unref(attrs), {\n minlength: _ctx.minlength,\n maxlength: _ctx.maxlength,\n tabindex: _ctx.tabindex,\n disabled: unref(inputDisabled),\n readonly: _ctx.readonly,\n autocomplete: _ctx.autocomplete,\n style: unref(textareaStyle),\n \"aria-label\": _ctx.label || _ctx.ariaLabel,\n placeholder: _ctx.placeholder,\n form: _ctx.form,\n autofocus: _ctx.autofocus,\n onCompositionstart: handleCompositionStart,\n onCompositionupdate: handleCompositionUpdate,\n onCompositionend: handleCompositionEnd,\n onInput: handleInput,\n onFocus: _cache[2] || (_cache[2] = (...args) => unref(handleFocus) && unref(handleFocus)(...args)),\n onBlur: _cache[3] || (_cache[3] = (...args) => unref(handleBlur) && unref(handleBlur)(...args)),\n onChange: handleChange,\n onKeydown: handleKeydown\n }), null, 16, _hoisted_3),\n unref(isWordLimitVisible) ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n style: normalizeStyle(countStyle.value),\n class: normalizeClass(unref(nsInput).e(\"count\"))\n }, toDisplayString(unref(textLength)) + \" / \" + toDisplayString(_ctx.maxlength), 7)) : createCommentVNode(\"v-if\", true)\n ], 64))\n ], 16, _hoisted_1);\n };\n }\n});\nvar Input = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"input.vue\"]]);\n\nexport { Input as default };\n//# sourceMappingURL=input2.mjs.map\n","import '../../utils/index.mjs';\nimport Input from './src/input2.mjs';\nexport { inputEmits, inputProps } from './src/input.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElInput = withInstall(Input);\n\nexport { ElInput, ElInput as default };\n//# sourceMappingURL=index.mjs.map\n","import { nextTick } from 'vue';\nimport '../../utils/index.mjs';\nimport '../../constants/index.mjs';\nimport { EVENT_CODE } from '../../constants/aria.mjs';\nimport { obtainAllFocusableElements } from '../../utils/dom/aria.mjs';\n\nconst FOCUSABLE_CHILDREN = \"_trap-focus-children\";\nconst TRAP_FOCUS_HANDLER = \"_trap-focus-handler\";\nconst FOCUS_STACK = [];\nconst FOCUS_HANDLER = (e) => {\n var _a;\n if (FOCUS_STACK.length === 0)\n return;\n const focusableElement = FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN];\n if (focusableElement.length > 0 && e.code === EVENT_CODE.tab) {\n if (focusableElement.length === 1) {\n e.preventDefault();\n if (document.activeElement !== focusableElement[0]) {\n focusableElement[0].focus();\n }\n return;\n }\n const goingBackward = e.shiftKey;\n const isFirst = e.target === focusableElement[0];\n const isLast = e.target === focusableElement[focusableElement.length - 1];\n if (isFirst && goingBackward) {\n e.preventDefault();\n focusableElement[focusableElement.length - 1].focus();\n }\n if (isLast && !goingBackward) {\n e.preventDefault();\n focusableElement[0].focus();\n }\n if (process.env.NODE_ENV === \"test\") {\n const index = focusableElement.indexOf(e.target);\n if (index !== -1) {\n (_a = focusableElement[goingBackward ? index - 1 : index + 1]) == null ? void 0 : _a.focus();\n }\n }\n }\n};\nconst TrapFocus = {\n beforeMount(el) {\n el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements(el);\n FOCUS_STACK.push(el);\n if (FOCUS_STACK.length <= 1) {\n document.addEventListener(\"keydown\", FOCUS_HANDLER);\n }\n },\n updated(el) {\n nextTick(() => {\n el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements(el);\n });\n },\n unmounted() {\n FOCUS_STACK.shift();\n if (FOCUS_STACK.length === 0) {\n document.removeEventListener(\"keydown\", FOCUS_HANDLER);\n }\n }\n};\n\nexport { FOCUSABLE_CHILDREN, TRAP_FOCUS_HANDLER, TrapFocus as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, computed, ref, reactive, watch, nextTick, onMounted, onBeforeUnmount, toRefs, resolveComponent, openBlock, createBlock, Transition, withCtx, withDirectives, createVNode, createElementVNode, normalizeClass, normalizeStyle, withModifiers, createElementBlock, resolveDynamicComponent, createCommentVNode, toDisplayString, withKeys, renderSlot, createTextVNode, vShow } from 'vue';\nimport { ElButton } from '../../button/index.mjs';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElOverlay } from '../../overlay/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../focus-trap/index.mjs';\nimport '../../config-provider/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport TrapFocus from '../../../directives/trap-focus/index.mjs';\nimport ElFocusTrap from '../../focus-trap/src/focus-trap.mjs';\nimport { TypeComponents, TypeComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { isValidComponentSize } from '../../../utils/vue/validator.mjs';\nimport { useGlobalComponentSettings } from '../../config-provider/src/hooks/use-global-config.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useDraggable } from '../../../hooks/use-draggable/index.mjs';\nimport { useSameTarget } from '../../../hooks/use-same-target/index.mjs';\nimport { useLockscreen } from '../../../hooks/use-lockscreen/index.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElMessageBox\",\n directives: {\n TrapFocus\n },\n components: {\n ElButton,\n ElFocusTrap,\n ElInput,\n ElOverlay,\n ElIcon,\n ...TypeComponents\n },\n inheritAttrs: false,\n props: {\n buttonSize: {\n type: String,\n validator: isValidComponentSize\n },\n modal: {\n type: Boolean,\n default: true\n },\n lockScroll: {\n type: Boolean,\n default: true\n },\n showClose: {\n type: Boolean,\n default: true\n },\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n closeOnHashChange: {\n type: Boolean,\n default: true\n },\n center: Boolean,\n draggable: Boolean,\n overflow: Boolean,\n roundButton: {\n default: false,\n type: Boolean\n },\n container: {\n type: String,\n default: \"body\"\n },\n boxType: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"vanish\", \"action\"],\n setup(props, { emit }) {\n const {\n locale,\n zIndex,\n ns,\n size: btnSize\n } = useGlobalComponentSettings(\"message-box\", computed(() => props.buttonSize));\n const { t } = locale;\n const { nextZIndex } = zIndex;\n const visible = ref(false);\n const state = reactive({\n autofocus: true,\n beforeClose: null,\n callback: null,\n cancelButtonText: \"\",\n cancelButtonClass: \"\",\n confirmButtonText: \"\",\n confirmButtonClass: \"\",\n customClass: \"\",\n customStyle: {},\n dangerouslyUseHTMLString: false,\n distinguishCancelAndClose: false,\n icon: \"\",\n inputPattern: null,\n inputPlaceholder: \"\",\n inputType: \"text\",\n inputValue: null,\n inputValidator: null,\n inputErrorMessage: \"\",\n message: null,\n modalFade: true,\n modalClass: \"\",\n showCancelButton: false,\n showConfirmButton: true,\n type: \"\",\n title: void 0,\n showInput: false,\n action: \"\",\n confirmButtonLoading: false,\n cancelButtonLoading: false,\n confirmButtonDisabled: false,\n editorErrorMessage: \"\",\n validateError: false,\n zIndex: nextZIndex()\n });\n const typeClass = computed(() => {\n const type = state.type;\n return { [ns.bm(\"icon\", type)]: type && TypeComponentsMap[type] };\n });\n const contentId = useId();\n const inputId = useId();\n const iconComponent = computed(() => state.icon || TypeComponentsMap[state.type] || \"\");\n const hasMessage = computed(() => !!state.message);\n const rootRef = ref();\n const headerRef = ref();\n const focusStartRef = ref();\n const inputRef = ref();\n const confirmRef = ref();\n const confirmButtonClasses = computed(() => state.confirmButtonClass);\n watch(() => state.inputValue, async (val) => {\n await nextTick();\n if (props.boxType === \"prompt\" && val !== null) {\n validate();\n }\n }, { immediate: true });\n watch(() => visible.value, (val) => {\n var _a, _b;\n if (val) {\n if (props.boxType !== \"prompt\") {\n if (state.autofocus) {\n focusStartRef.value = (_b = (_a = confirmRef.value) == null ? void 0 : _a.$el) != null ? _b : rootRef.value;\n } else {\n focusStartRef.value = rootRef.value;\n }\n }\n state.zIndex = nextZIndex();\n }\n if (props.boxType !== \"prompt\")\n return;\n if (val) {\n nextTick().then(() => {\n var _a2;\n if (inputRef.value && inputRef.value.$el) {\n if (state.autofocus) {\n focusStartRef.value = (_a2 = getInputElement()) != null ? _a2 : rootRef.value;\n } else {\n focusStartRef.value = rootRef.value;\n }\n }\n });\n } else {\n state.editorErrorMessage = \"\";\n state.validateError = false;\n }\n });\n const draggable = computed(() => props.draggable);\n const overflow = computed(() => props.overflow);\n useDraggable(rootRef, headerRef, draggable, overflow);\n onMounted(async () => {\n await nextTick();\n if (props.closeOnHashChange) {\n window.addEventListener(\"hashchange\", doClose);\n }\n });\n onBeforeUnmount(() => {\n if (props.closeOnHashChange) {\n window.removeEventListener(\"hashchange\", doClose);\n }\n });\n function doClose() {\n if (!visible.value)\n return;\n visible.value = false;\n nextTick(() => {\n if (state.action)\n emit(\"action\", state.action);\n });\n }\n const handleWrapperClick = () => {\n if (props.closeOnClickModal) {\n handleAction(state.distinguishCancelAndClose ? \"close\" : \"cancel\");\n }\n };\n const overlayEvent = useSameTarget(handleWrapperClick);\n const handleInputEnter = (e) => {\n if (state.inputType !== \"textarea\") {\n e.preventDefault();\n return handleAction(\"confirm\");\n }\n };\n const handleAction = (action) => {\n var _a;\n if (props.boxType === \"prompt\" && action === \"confirm\" && !validate()) {\n return;\n }\n state.action = action;\n if (state.beforeClose) {\n (_a = state.beforeClose) == null ? void 0 : _a.call(state, action, state, doClose);\n } else {\n doClose();\n }\n };\n const validate = () => {\n if (props.boxType === \"prompt\") {\n const inputPattern = state.inputPattern;\n if (inputPattern && !inputPattern.test(state.inputValue || \"\")) {\n state.editorErrorMessage = state.inputErrorMessage || t(\"el.messagebox.error\");\n state.validateError = true;\n return false;\n }\n const inputValidator = state.inputValidator;\n if (typeof inputValidator === \"function\") {\n const validateResult = inputValidator(state.inputValue);\n if (validateResult === false) {\n state.editorErrorMessage = state.inputErrorMessage || t(\"el.messagebox.error\");\n state.validateError = true;\n return false;\n }\n if (typeof validateResult === \"string\") {\n state.editorErrorMessage = validateResult;\n state.validateError = true;\n return false;\n }\n }\n }\n state.editorErrorMessage = \"\";\n state.validateError = false;\n return true;\n };\n const getInputElement = () => {\n const inputRefs = inputRef.value.$refs;\n return inputRefs.input || inputRefs.textarea;\n };\n const handleClose = () => {\n handleAction(\"close\");\n };\n const onCloseRequested = () => {\n if (props.closeOnPressEscape) {\n handleClose();\n }\n };\n if (props.lockScroll) {\n useLockscreen(visible);\n }\n return {\n ...toRefs(state),\n ns,\n overlayEvent,\n visible,\n hasMessage,\n typeClass,\n contentId,\n inputId,\n btnSize,\n iconComponent,\n confirmButtonClasses,\n rootRef,\n focusStartRef,\n headerRef,\n inputRef,\n confirmRef,\n doClose,\n handleClose,\n onCloseRequested,\n handleWrapperClick,\n handleInputEnter,\n handleAction,\n t\n };\n }\n});\nconst _hoisted_1 = [\"aria-label\", \"aria-describedby\"];\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = [\"id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_close = resolveComponent(\"close\");\n const _component_el_input = resolveComponent(\"el-input\");\n const _component_el_button = resolveComponent(\"el-button\");\n const _component_el_focus_trap = resolveComponent(\"el-focus-trap\");\n const _component_el_overlay = resolveComponent(\"el-overlay\");\n return openBlock(), createBlock(Transition, {\n name: \"fade-in-linear\",\n onAfterLeave: _cache[11] || (_cache[11] = ($event) => _ctx.$emit(\"vanish\")),\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(_component_el_overlay, {\n \"z-index\": _ctx.zIndex,\n \"overlay-class\": [_ctx.ns.is(\"message-box\"), _ctx.modalClass],\n mask: _ctx.modal\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n role: \"dialog\",\n \"aria-label\": _ctx.title,\n \"aria-modal\": \"true\",\n \"aria-describedby\": !_ctx.showInput ? _ctx.contentId : void 0,\n class: normalizeClass(`${_ctx.ns.namespace.value}-overlay-message-box`),\n onClick: _cache[8] || (_cache[8] = (...args) => _ctx.overlayEvent.onClick && _ctx.overlayEvent.onClick(...args)),\n onMousedown: _cache[9] || (_cache[9] = (...args) => _ctx.overlayEvent.onMousedown && _ctx.overlayEvent.onMousedown(...args)),\n onMouseup: _cache[10] || (_cache[10] = (...args) => _ctx.overlayEvent.onMouseup && _ctx.overlayEvent.onMouseup(...args))\n }, [\n createVNode(_component_el_focus_trap, {\n loop: \"\",\n trapped: _ctx.visible,\n \"focus-trap-el\": _ctx.rootRef,\n \"focus-start-el\": _ctx.focusStartRef,\n onReleaseRequested: _ctx.onCloseRequested\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"rootRef\",\n class: normalizeClass([\n _ctx.ns.b(),\n _ctx.customClass,\n _ctx.ns.is(\"draggable\", _ctx.draggable),\n { [_ctx.ns.m(\"center\")]: _ctx.center }\n ]),\n style: normalizeStyle(_ctx.customStyle),\n tabindex: \"-1\",\n onClick: _cache[7] || (_cache[7] = withModifiers(() => {\n }, [\"stop\"]))\n }, [\n _ctx.title !== null && _ctx.title !== void 0 ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"headerRef\",\n class: normalizeClass([_ctx.ns.e(\"header\"), { \"show-close\": _ctx.showClose }])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"title\"))\n }, [\n _ctx.iconComponent && _ctx.center ? (openBlock(), createBlock(_component_el_icon, {\n key: 0,\n class: normalizeClass([_ctx.ns.e(\"status\"), _ctx.typeClass])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"span\", null, toDisplayString(_ctx.title), 1)\n ], 2),\n _ctx.showClose ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n class: normalizeClass(_ctx.ns.e(\"headerbtn\")),\n \"aria-label\": _ctx.t(\"el.messagebox.close\"),\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? \"close\" : \"cancel\")),\n onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? \"close\" : \"cancel\"), [\"prevent\"]), [\"enter\"]))\n }, [\n createVNode(_component_el_icon, {\n class: normalizeClass(_ctx.ns.e(\"close\"))\n }, {\n default: withCtx(() => [\n createVNode(_component_close)\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 42, _hoisted_2)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n id: _ctx.contentId,\n class: normalizeClass(_ctx.ns.e(\"content\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"container\"))\n }, [\n _ctx.iconComponent && !_ctx.center && _ctx.hasMessage ? (openBlock(), createBlock(_component_el_icon, {\n key: 0,\n class: normalizeClass([_ctx.ns.e(\"status\"), _ctx.typeClass])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n _ctx.hasMessage ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(_ctx.ns.e(\"message\"))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n !_ctx.dangerouslyUseHTMLString ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.showInput ? \"label\" : \"p\"), {\n key: 0,\n for: _ctx.showInput ? _ctx.inputId : void 0\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(!_ctx.dangerouslyUseHTMLString ? _ctx.message : \"\"), 1)\n ]),\n _: 1\n }, 8, [\"for\"])) : (openBlock(), createBlock(resolveDynamicComponent(_ctx.showInput ? \"label\" : \"p\"), {\n key: 1,\n for: _ctx.showInput ? _ctx.inputId : void 0,\n innerHTML: _ctx.message\n }, null, 8, [\"for\", \"innerHTML\"]))\n ])\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2),\n withDirectives(createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"input\"))\n }, [\n createVNode(_component_el_input, {\n id: _ctx.inputId,\n ref: \"inputRef\",\n modelValue: _ctx.inputValue,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.inputValue = $event),\n type: _ctx.inputType,\n placeholder: _ctx.inputPlaceholder,\n \"aria-invalid\": _ctx.validateError,\n class: normalizeClass({ invalid: _ctx.validateError }),\n onKeydown: withKeys(_ctx.handleInputEnter, [\"enter\"])\n }, null, 8, [\"id\", \"modelValue\", \"type\", \"placeholder\", \"aria-invalid\", \"class\", \"onKeydown\"]),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"errormsg\")),\n style: normalizeStyle({\n visibility: !!_ctx.editorErrorMessage ? \"visible\" : \"hidden\"\n })\n }, toDisplayString(_ctx.editorErrorMessage), 7)\n ], 2), [\n [vShow, _ctx.showInput]\n ])\n ], 10, _hoisted_3),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"btns\"))\n }, [\n _ctx.showCancelButton ? (openBlock(), createBlock(_component_el_button, {\n key: 0,\n loading: _ctx.cancelButtonLoading,\n class: normalizeClass([_ctx.cancelButtonClass]),\n round: _ctx.roundButton,\n size: _ctx.btnSize,\n onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleAction(\"cancel\")),\n onKeydown: _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => _ctx.handleAction(\"cancel\"), [\"prevent\"]), [\"enter\"]))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(_ctx.cancelButtonText || _ctx.t(\"el.messagebox.cancel\")), 1)\n ]),\n _: 1\n }, 8, [\"loading\", \"class\", \"round\", \"size\"])) : createCommentVNode(\"v-if\", true),\n withDirectives(createVNode(_component_el_button, {\n ref: \"confirmRef\",\n type: \"primary\",\n loading: _ctx.confirmButtonLoading,\n class: normalizeClass([_ctx.confirmButtonClasses]),\n round: _ctx.roundButton,\n disabled: _ctx.confirmButtonDisabled,\n size: _ctx.btnSize,\n onClick: _cache[5] || (_cache[5] = ($event) => _ctx.handleAction(\"confirm\")),\n onKeydown: _cache[6] || (_cache[6] = withKeys(withModifiers(($event) => _ctx.handleAction(\"confirm\"), [\"prevent\"]), [\"enter\"]))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(_ctx.confirmButtonText || _ctx.t(\"el.messagebox.confirm\")), 1)\n ]),\n _: 1\n }, 8, [\"loading\", \"class\", \"round\", \"disabled\", \"size\"]), [\n [vShow, _ctx.showConfirmButton]\n ])\n ], 2)\n ], 6)\n ]),\n _: 3\n }, 8, [\"trapped\", \"focus-trap-el\", \"focus-start-el\", \"onReleaseRequested\"])\n ], 42, _hoisted_1)\n ]),\n _: 3\n }, 8, [\"z-index\", \"overlay-class\", \"mask\"]), [\n [vShow, _ctx.visible]\n ])\n ]),\n _: 3\n });\n}\nvar MessageBoxConstructor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"index.vue\"]]);\n\nexport { MessageBoxConstructor as default };\n//# sourceMappingURL=index.mjs.map\n","import { createVNode, isVNode, render } from 'vue';\nimport '../../../utils/index.mjs';\nimport MessageBoxConstructor from './index.mjs';\nimport { isString, isFunction, hasOwn, isObject } from '@vue/shared';\nimport { isElement, isUndefined } from '../../../utils/types.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isClient } from '@vueuse/core';\n\nconst messageInstance = /* @__PURE__ */ new Map();\nconst getAppendToElement = (props) => {\n let appendTo = document.body;\n if (props.appendTo) {\n if (isString(props.appendTo)) {\n appendTo = document.querySelector(props.appendTo);\n }\n if (isElement(props.appendTo)) {\n appendTo = props.appendTo;\n }\n if (!isElement(appendTo)) {\n debugWarn(\"ElMessageBox\", \"the appendTo option is not an HTMLElement. Falling back to document.body.\");\n appendTo = document.body;\n }\n }\n return appendTo;\n};\nconst initInstance = (props, container, appContext = null) => {\n const vnode = createVNode(MessageBoxConstructor, props, isFunction(props.message) || isVNode(props.message) ? {\n default: isFunction(props.message) ? props.message : () => props.message\n } : null);\n vnode.appContext = appContext;\n render(vnode, container);\n getAppendToElement(props).appendChild(container.firstElementChild);\n return vnode.component;\n};\nconst genContainer = () => {\n return document.createElement(\"div\");\n};\nconst showMessage = (options, appContext) => {\n const container = genContainer();\n options.onVanish = () => {\n render(null, container);\n messageInstance.delete(vm);\n };\n options.onAction = (action) => {\n const currentMsg = messageInstance.get(vm);\n let resolve;\n if (options.showInput) {\n resolve = { value: vm.inputValue, action };\n } else {\n resolve = action;\n }\n if (options.callback) {\n options.callback(resolve, instance.proxy);\n } else {\n if (action === \"cancel\" || action === \"close\") {\n if (options.distinguishCancelAndClose && action !== \"cancel\") {\n currentMsg.reject(\"close\");\n } else {\n currentMsg.reject(\"cancel\");\n }\n } else {\n currentMsg.resolve(resolve);\n }\n }\n };\n const instance = initInstance(options, container, appContext);\n const vm = instance.proxy;\n for (const prop in options) {\n if (hasOwn(options, prop) && !hasOwn(vm.$props, prop)) {\n vm[prop] = options[prop];\n }\n }\n vm.visible = true;\n return vm;\n};\nfunction MessageBox(options, appContext = null) {\n if (!isClient)\n return Promise.reject();\n let callback;\n if (isString(options) || isVNode(options)) {\n options = {\n message: options\n };\n } else {\n callback = options.callback;\n }\n return new Promise((resolve, reject) => {\n const vm = showMessage(options, appContext != null ? appContext : MessageBox._context);\n messageInstance.set(vm, {\n options,\n callback,\n resolve,\n reject\n });\n });\n}\nconst MESSAGE_BOX_VARIANTS = [\"alert\", \"confirm\", \"prompt\"];\nconst MESSAGE_BOX_DEFAULT_OPTS = {\n alert: { closeOnPressEscape: false, closeOnClickModal: false },\n confirm: { showCancelButton: true },\n prompt: { showCancelButton: true, showInput: true }\n};\nMESSAGE_BOX_VARIANTS.forEach((boxType) => {\n ;\n MessageBox[boxType] = messageBoxFactory(boxType);\n});\nfunction messageBoxFactory(boxType) {\n return (message, title, options, appContext) => {\n let titleOrOpts = \"\";\n if (isObject(title)) {\n options = title;\n titleOrOpts = \"\";\n } else if (isUndefined(title)) {\n titleOrOpts = \"\";\n } else {\n titleOrOpts = title;\n }\n return MessageBox(Object.assign({\n title: titleOrOpts,\n message,\n type: \"\",\n ...MESSAGE_BOX_DEFAULT_OPTS[boxType]\n }, options, {\n boxType\n }), appContext);\n };\n}\nMessageBox.close = () => {\n messageInstance.forEach((_, vm) => {\n vm.doClose();\n });\n messageInstance.clear();\n};\nMessageBox._context = null;\n\nexport { MessageBox as default };\n//# sourceMappingURL=messageBox.mjs.map\n","import MessageBox from './src/messageBox.mjs';\nimport './src/message-box.type.mjs';\n\nconst _MessageBox = MessageBox;\n_MessageBox.install = (app) => {\n _MessageBox._context = app._context;\n app.config.globalProperties.$msgbox = _MessageBox;\n app.config.globalProperties.$messageBox = _MessageBox;\n app.config.globalProperties.$alert = _MessageBox.alert;\n app.config.globalProperties.$confirm = _MessageBox.confirm;\n app.config.globalProperties.$prompt = _MessageBox.prompt;\n};\nconst ElMessageBox = _MessageBox;\n\nexport { ElMessageBox, _MessageBox as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { isClient } from '@vueuse/core';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst messageTypes = [\"success\", \"info\", \"warning\", \"error\"];\nconst messageDefaults = mutable({\n customClass: \"\",\n center: false,\n dangerouslyUseHTMLString: false,\n duration: 3e3,\n icon: void 0,\n id: \"\",\n message: \"\",\n onClose: void 0,\n showClose: false,\n type: \"info\",\n plain: false,\n offset: 16,\n zIndex: 0,\n grouping: false,\n repeatNum: 1,\n appendTo: isClient ? document.body : void 0\n});\nconst messageProps = buildProps({\n customClass: {\n type: String,\n default: messageDefaults.customClass\n },\n center: {\n type: Boolean,\n default: messageDefaults.center\n },\n dangerouslyUseHTMLString: {\n type: Boolean,\n default: messageDefaults.dangerouslyUseHTMLString\n },\n duration: {\n type: Number,\n default: messageDefaults.duration\n },\n icon: {\n type: iconPropType,\n default: messageDefaults.icon\n },\n id: {\n type: String,\n default: messageDefaults.id\n },\n message: {\n type: definePropType([\n String,\n Object,\n Function\n ]),\n default: messageDefaults.message\n },\n onClose: {\n type: definePropType(Function),\n default: messageDefaults.onClose\n },\n showClose: {\n type: Boolean,\n default: messageDefaults.showClose\n },\n type: {\n type: String,\n values: messageTypes,\n default: messageDefaults.type\n },\n plain: {\n type: Boolean,\n default: messageDefaults.plain\n },\n offset: {\n type: Number,\n default: messageDefaults.offset\n },\n zIndex: {\n type: Number,\n default: messageDefaults.zIndex\n },\n grouping: {\n type: Boolean,\n default: messageDefaults.grouping\n },\n repeatNum: {\n type: Number,\n default: messageDefaults.repeatNum\n }\n});\nconst messageEmits = {\n destroy: () => true\n};\n\nexport { messageDefaults, messageEmits, messageProps, messageTypes };\n//# sourceMappingURL=message.mjs.map\n","import { shallowReactive } from 'vue';\n\nconst instances = shallowReactive([]);\nconst getInstance = (id) => {\n const idx = instances.findIndex((instance) => instance.id === id);\n const current = instances[idx];\n let prev;\n if (idx > 0) {\n prev = instances[idx - 1];\n }\n return { current, prev };\n};\nconst getLastOffset = (id) => {\n const { prev } = getInstance(id);\n if (!prev)\n return 0;\n return prev.vm.exposed.bottom.value;\n};\nconst getOffsetOrSpace = (id, offset) => {\n const idx = instances.findIndex((instance) => instance.id === id);\n return idx > 0 ? 16 : offset;\n};\n\nexport { getInstance, getLastOffset, getOffsetOrSpace, instances };\n//# sourceMappingURL=instance.mjs.map\n","import { defineComponent, ref, computed, onMounted, watch, openBlock, createBlock, Transition, unref, withCtx, withDirectives, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, resolveDynamicComponent, renderSlot, createElementBlock, toDisplayString, Fragment, withModifiers, createVNode, vShow } from 'vue';\nimport { useTimeoutFn, useEventListener, useResizeObserver } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { ElBadge } from '../../badge/index.mjs';\nimport '../../config-provider/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { messageProps, messageEmits } from './message.mjs';\nimport { getLastOffset, getOffsetOrSpace } from './instance.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { TypeComponents, TypeComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { useGlobalComponentSettings } from '../../config-provider/src/hooks/use-global-config.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\n\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = [\"innerHTML\"];\nconst __default__ = defineComponent({\n name: \"ElMessage\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: messageProps,\n emits: messageEmits,\n setup(__props, { expose }) {\n const props = __props;\n const { Close } = TypeComponents;\n const { ns, zIndex } = useGlobalComponentSettings(\"message\");\n const { currentZIndex, nextZIndex } = zIndex;\n const messageRef = ref();\n const visible = ref(false);\n const height = ref(0);\n let stopTimer = void 0;\n const badgeType = computed(() => props.type ? props.type === \"error\" ? \"danger\" : props.type : \"info\");\n const typeClass = computed(() => {\n const type = props.type;\n return { [ns.bm(\"icon\", type)]: type && TypeComponentsMap[type] };\n });\n const iconComponent = computed(() => props.icon || TypeComponentsMap[props.type] || \"\");\n const lastOffset = computed(() => getLastOffset(props.id));\n const offset = computed(() => getOffsetOrSpace(props.id, props.offset) + lastOffset.value);\n const bottom = computed(() => height.value + offset.value);\n const customStyle = computed(() => ({\n top: `${offset.value}px`,\n zIndex: currentZIndex.value\n }));\n function startTimer() {\n if (props.duration === 0)\n return;\n ({ stop: stopTimer } = useTimeoutFn(() => {\n close();\n }, props.duration));\n }\n function clearTimer() {\n stopTimer == null ? void 0 : stopTimer();\n }\n function close() {\n visible.value = false;\n }\n function keydown({ code }) {\n if (code === EVENT_CODE.esc) {\n close();\n }\n }\n onMounted(() => {\n startTimer();\n nextZIndex();\n visible.value = true;\n });\n watch(() => props.repeatNum, () => {\n clearTimer();\n startTimer();\n });\n useEventListener(document, \"keydown\", keydown);\n useResizeObserver(messageRef, () => {\n height.value = messageRef.value.getBoundingClientRect().height;\n });\n expose({\n visible,\n bottom,\n close\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, {\n name: unref(ns).b(\"fade\"),\n onBeforeLeave: _ctx.onClose,\n onAfterLeave: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"destroy\")),\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: _ctx.id,\n ref_key: \"messageRef\",\n ref: messageRef,\n class: normalizeClass([\n unref(ns).b(),\n { [unref(ns).m(_ctx.type)]: _ctx.type },\n unref(ns).is(\"center\", _ctx.center),\n unref(ns).is(\"closable\", _ctx.showClose),\n unref(ns).is(\"plain\", _ctx.plain),\n _ctx.customClass\n ]),\n style: normalizeStyle(unref(customStyle)),\n role: \"alert\",\n onMouseenter: clearTimer,\n onMouseleave: startTimer\n }, [\n _ctx.repeatNum > 1 ? (openBlock(), createBlock(unref(ElBadge), {\n key: 0,\n value: _ctx.repeatNum,\n type: unref(badgeType),\n class: normalizeClass(unref(ns).e(\"badge\"))\n }, null, 8, [\"value\", \"type\", \"class\"])) : createCommentVNode(\"v-if\", true),\n unref(iconComponent) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass([unref(ns).e(\"icon\"), unref(typeClass)])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent))))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n !_ctx.dangerouslyUseHTMLString ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"content\"))\n }, toDisplayString(_ctx.message), 3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createCommentVNode(\" Caution here, message could've been compromised, never use user's input as message \"),\n createElementVNode(\"p\", {\n class: normalizeClass(unref(ns).e(\"content\")),\n innerHTML: _ctx.message\n }, null, 10, _hoisted_2)\n ], 2112))\n ]),\n _ctx.showClose ? (openBlock(), createBlock(unref(ElIcon), {\n key: 2,\n class: normalizeClass(unref(ns).e(\"closeBtn\")),\n onClick: withModifiers(close, [\"stop\"])\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true)\n ], 46, _hoisted_1), [\n [vShow, visible.value]\n ])\n ]),\n _: 3\n }, 8, [\"name\", \"onBeforeLeave\"]);\n };\n }\n});\nvar MessageConstructor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"message.vue\"]]);\n\nexport { MessageConstructor as default };\n//# sourceMappingURL=message2.mjs.map\n","import { isVNode, render, createVNode } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../config-provider/index.mjs';\nimport MessageConstructor from './message2.mjs';\nimport { messageDefaults, messageTypes } from './message.mjs';\nimport { instances } from './instance.mjs';\nimport { isString, isFunction } from '@vue/shared';\nimport { isElement, isNumber } from '../../../utils/types.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isClient } from '@vueuse/core';\nimport { messageConfig } from '../../config-provider/src/config-provider.mjs';\n\nlet seed = 1;\nconst normalizeOptions = (params) => {\n const options = !params || isString(params) || isVNode(params) || isFunction(params) ? { message: params } : params;\n const normalized = {\n ...messageDefaults,\n ...options\n };\n if (!normalized.appendTo) {\n normalized.appendTo = document.body;\n } else if (isString(normalized.appendTo)) {\n let appendTo = document.querySelector(normalized.appendTo);\n if (!isElement(appendTo)) {\n debugWarn(\"ElMessage\", \"the appendTo option is not an HTMLElement. Falling back to document.body.\");\n appendTo = document.body;\n }\n normalized.appendTo = appendTo;\n }\n return normalized;\n};\nconst closeMessage = (instance) => {\n const idx = instances.indexOf(instance);\n if (idx === -1)\n return;\n instances.splice(idx, 1);\n const { handler } = instance;\n handler.close();\n};\nconst createMessage = ({ appendTo, ...options }, context) => {\n const id = `message_${seed++}`;\n const userOnClose = options.onClose;\n const container = document.createElement(\"div\");\n const props = {\n ...options,\n id,\n onClose: () => {\n userOnClose == null ? void 0 : userOnClose();\n closeMessage(instance);\n },\n onDestroy: () => {\n render(null, container);\n }\n };\n const vnode = createVNode(MessageConstructor, props, isFunction(props.message) || isVNode(props.message) ? {\n default: isFunction(props.message) ? props.message : () => props.message\n } : null);\n vnode.appContext = context || message._context;\n render(vnode, container);\n appendTo.appendChild(container.firstElementChild);\n const vm = vnode.component;\n const handler = {\n close: () => {\n vm.exposed.visible.value = false;\n }\n };\n const instance = {\n id,\n vnode,\n vm,\n handler,\n props: vnode.component.props\n };\n return instance;\n};\nconst message = (options = {}, context) => {\n if (!isClient)\n return { close: () => void 0 };\n if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) {\n return { close: () => void 0 };\n }\n const normalized = normalizeOptions(options);\n if (normalized.grouping && instances.length) {\n const instance2 = instances.find(({ vnode: vm }) => {\n var _a;\n return ((_a = vm.props) == null ? void 0 : _a.message) === normalized.message;\n });\n if (instance2) {\n instance2.props.repeatNum += 1;\n instance2.props.type = normalized.type;\n return instance2.handler;\n }\n }\n const instance = createMessage(normalized, context);\n instances.push(instance);\n return instance.handler;\n};\nmessageTypes.forEach((type) => {\n message[type] = (options = {}, appContext) => {\n const normalized = normalizeOptions(options);\n return message({ ...normalized, type }, appContext);\n };\n});\nfunction closeAll(type) {\n for (const instance of instances) {\n if (!type || type === instance.props.type) {\n instance.handler.close();\n }\n }\n}\nmessage.closeAll = closeAll;\nmessage._context = null;\n\nexport { closeAll, message as default };\n//# sourceMappingURL=method.mjs.map\n","import '../../utils/index.mjs';\nimport message from './src/method.mjs';\nexport { messageDefaults, messageEmits, messageProps, messageTypes } from './src/message.mjs';\nimport { withInstallFunction } from '../../utils/vue/install.mjs';\n\nconst ElMessage = withInstallFunction(message, \"$message\");\n\nexport { ElMessage, ElMessage as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, createVNode, renderSlot, h } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useSameTarget } from '../../../hooks/use-same-target/index.mjs';\nimport { PatchFlags } from '../../../utils/vue/vnode.mjs';\n\nconst overlayProps = buildProps({\n mask: {\n type: Boolean,\n default: true\n },\n customMaskEvent: {\n type: Boolean,\n default: false\n },\n overlayClass: {\n type: definePropType([\n String,\n Array,\n Object\n ])\n },\n zIndex: {\n type: definePropType([String, Number])\n }\n});\nconst overlayEmits = {\n click: (evt) => evt instanceof MouseEvent\n};\nconst BLOCK = \"overlay\";\nvar Overlay = defineComponent({\n name: \"ElOverlay\",\n props: overlayProps,\n emits: overlayEmits,\n setup(props, { slots, emit }) {\n const ns = useNamespace(BLOCK);\n const onMaskClick = (e) => {\n emit(\"click\", e);\n };\n const { onClick, onMousedown, onMouseup } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick);\n return () => {\n return props.mask ? createVNode(\"div\", {\n class: [ns.b(), props.overlayClass],\n style: {\n zIndex: props.zIndex\n },\n onClick,\n onMousedown,\n onMouseup\n }, [renderSlot(slots, \"default\")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, [\"onClick\", \"onMouseup\", \"onMousedown\"]) : h(\"div\", {\n class: props.overlayClass,\n style: {\n zIndex: props.zIndex,\n position: \"fixed\",\n top: \"0px\",\n right: \"0px\",\n bottom: \"0px\",\n left: \"0px\"\n }\n }, [renderSlot(slots, \"default\")]);\n };\n }\n});\n\nexport { Overlay as default, overlayEmits, overlayProps };\n//# sourceMappingURL=overlay.mjs.map\n","import Overlay from './src/overlay.mjs';\nexport { overlayEmits, overlayProps } from './src/overlay.mjs';\n\nconst ElOverlay = Overlay;\n\nexport { ElOverlay, ElOverlay as default };\n//# sourceMappingURL=index.mjs.map\n","const EVENT_CODE = {\n tab: \"Tab\",\n enter: \"Enter\",\n space: \"Space\",\n left: \"ArrowLeft\",\n up: \"ArrowUp\",\n right: \"ArrowRight\",\n down: \"ArrowDown\",\n esc: \"Escape\",\n delete: \"Delete\",\n backspace: \"Backspace\",\n numpadEnter: \"NumpadEnter\",\n pageUp: \"PageUp\",\n pageDown: \"PageDown\",\n home: \"Home\",\n end: \"End\"\n};\n\nexport { EVENT_CODE };\n//# sourceMappingURL=aria.mjs.map\n","const UPDATE_MODEL_EVENT = \"update:modelValue\";\nconst CHANGE_EVENT = \"change\";\nconst INPUT_EVENT = \"input\";\n\nexport { CHANGE_EVENT, INPUT_EVENT, UPDATE_MODEL_EVENT };\n//# sourceMappingURL=event.mjs.map\n","const componentSizes = [\"\", \"default\", \"small\", \"large\"];\nconst componentSizeMap = {\n large: 40,\n default: 32,\n small: 24\n};\n\nexport { componentSizeMap, componentSizes };\n//# sourceMappingURL=size.mjs.map\n","const version = \"2.7.5\";\n\nexport { version };\n//# sourceMappingURL=version.mjs.map\n","const INSTALLED_KEY = Symbol(\"INSTALLED_KEY\");\n\nexport { INSTALLED_KEY };\n//# sourceMappingURL=key.mjs.map\n","import './components/config-provider/index.mjs';\nimport './constants/index.mjs';\nimport { version } from './version.mjs';\nimport { INSTALLED_KEY } from './constants/key.mjs';\nimport { provideGlobalConfig } from './components/config-provider/src/hooks/use-global-config.mjs';\n\nconst makeInstaller = (components = []) => {\n const install = (app, options) => {\n if (app[INSTALLED_KEY])\n return;\n app[INSTALLED_KEY] = true;\n components.forEach((c) => app.use(c));\n if (options)\n provideGlobalConfig(options, app, true);\n };\n return {\n version,\n install\n };\n};\n\nexport { makeInstaller };\n//# sourceMappingURL=make-installer.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isNumber, isBoolean } from '../../../utils/types.mjs';\nimport { CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst affixProps = buildProps({\n zIndex: {\n type: definePropType([Number, String]),\n default: 100\n },\n target: {\n type: String,\n default: \"\"\n },\n offset: {\n type: Number,\n default: 0\n },\n position: {\n type: String,\n values: [\"top\", \"bottom\"],\n default: \"top\"\n }\n});\nconst affixEmits = {\n scroll: ({ scrollTop, fixed }) => isNumber(scrollTop) && isBoolean(fixed),\n [CHANGE_EVENT]: (fixed) => isBoolean(fixed)\n};\n\nexport { affixEmits, affixProps };\n//# sourceMappingURL=affix.mjs.map\n","import { defineComponent, shallowRef, ref, computed, watch, onMounted, watchEffect, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, createElementVNode, renderSlot } from 'vue';\nimport { useWindowSize, useElementBounding, useEventListener } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { affixProps, affixEmits } from './affix.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { throwError } from '../../../utils/error.mjs';\nimport { getScrollContainer } from '../../../utils/dom/scroll.mjs';\n\nconst COMPONENT_NAME = \"ElAffix\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: affixProps,\n emits: affixEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const ns = useNamespace(\"affix\");\n const target = shallowRef();\n const root = shallowRef();\n const scrollContainer = shallowRef();\n const { height: windowHeight } = useWindowSize();\n const {\n height: rootHeight,\n width: rootWidth,\n top: rootTop,\n bottom: rootBottom,\n update: updateRoot\n } = useElementBounding(root, { windowScroll: false });\n const targetRect = useElementBounding(target);\n const fixed = ref(false);\n const scrollTop = ref(0);\n const transform = ref(0);\n const rootStyle = computed(() => {\n return {\n height: fixed.value ? `${rootHeight.value}px` : \"\",\n width: fixed.value ? `${rootWidth.value}px` : \"\"\n };\n });\n const affixStyle = computed(() => {\n if (!fixed.value)\n return {};\n const offset = props.offset ? addUnit(props.offset) : 0;\n return {\n height: `${rootHeight.value}px`,\n width: `${rootWidth.value}px`,\n top: props.position === \"top\" ? offset : \"\",\n bottom: props.position === \"bottom\" ? offset : \"\",\n transform: transform.value ? `translateY(${transform.value}px)` : \"\",\n zIndex: props.zIndex\n };\n });\n const update = () => {\n if (!scrollContainer.value)\n return;\n scrollTop.value = scrollContainer.value instanceof Window ? document.documentElement.scrollTop : scrollContainer.value.scrollTop || 0;\n if (props.position === \"top\") {\n if (props.target) {\n const difference = targetRect.bottom.value - props.offset - rootHeight.value;\n fixed.value = props.offset > rootTop.value && targetRect.bottom.value > 0;\n transform.value = difference < 0 ? difference : 0;\n } else {\n fixed.value = props.offset > rootTop.value;\n }\n } else if (props.target) {\n const difference = windowHeight.value - targetRect.top.value - props.offset - rootHeight.value;\n fixed.value = windowHeight.value - props.offset < rootBottom.value && windowHeight.value > targetRect.top.value;\n transform.value = difference < 0 ? -difference : 0;\n } else {\n fixed.value = windowHeight.value - props.offset < rootBottom.value;\n }\n };\n const handleScroll = () => {\n updateRoot();\n emit(\"scroll\", {\n scrollTop: scrollTop.value,\n fixed: fixed.value\n });\n };\n watch(fixed, (val) => emit(\"change\", val));\n onMounted(() => {\n var _a;\n if (props.target) {\n target.value = (_a = document.querySelector(props.target)) != null ? _a : void 0;\n if (!target.value)\n throwError(COMPONENT_NAME, `Target does not exist: ${props.target}`);\n } else {\n target.value = document.documentElement;\n }\n scrollContainer.value = getScrollContainer(root.value, true);\n updateRoot();\n });\n useEventListener(scrollContainer, \"scroll\", handleScroll);\n watchEffect(update);\n expose({\n update,\n updateRoot\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"root\",\n ref: root,\n class: normalizeClass(unref(ns).b()),\n style: normalizeStyle(unref(rootStyle))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass({ [unref(ns).m(\"fixed\")]: fixed.value }),\n style: normalizeStyle(unref(affixStyle))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6)\n ], 6);\n };\n }\n});\nvar Affix = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"affix.vue\"]]);\n\nexport { Affix as default };\n//# sourceMappingURL=affix2.mjs.map\n","import '../../utils/index.mjs';\nimport Affix from './src/affix2.mjs';\nexport { affixEmits, affixProps } from './src/affix.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElAffix = withInstall(Affix);\n\nexport { ElAffix, ElAffix as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { keysOf } from '../../../utils/objects.mjs';\nimport { TypeComponentsMap } from '../../../utils/vue/icon.mjs';\n\nconst alertEffects = [\"light\", \"dark\"];\nconst alertProps = buildProps({\n title: {\n type: String,\n default: \"\"\n },\n description: {\n type: String,\n default: \"\"\n },\n type: {\n type: String,\n values: keysOf(TypeComponentsMap),\n default: \"info\"\n },\n closable: {\n type: Boolean,\n default: true\n },\n closeText: {\n type: String,\n default: \"\"\n },\n showIcon: Boolean,\n center: Boolean,\n effect: {\n type: String,\n values: alertEffects,\n default: \"light\"\n }\n});\nconst alertEmits = {\n close: (evt) => evt instanceof MouseEvent\n};\n\nexport { alertEffects, alertEmits, alertProps };\n//# sourceMappingURL=alert.mjs.map\n","import { defineComponent, useSlots, ref, computed, openBlock, createBlock, Transition, unref, withCtx, withDirectives, createElementVNode, normalizeClass, resolveDynamicComponent, createCommentVNode, createElementBlock, renderSlot, createTextVNode, toDisplayString, Fragment, createVNode, vShow } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { alertProps, alertEmits } from './alert.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { TypeComponents, TypeComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElAlert\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: alertProps,\n emits: alertEmits,\n setup(__props, { emit }) {\n const props = __props;\n const { Close } = TypeComponents;\n const slots = useSlots();\n const ns = useNamespace(\"alert\");\n const visible = ref(true);\n const iconComponent = computed(() => TypeComponentsMap[props.type]);\n const iconClass = computed(() => [\n ns.e(\"icon\"),\n { [ns.is(\"big\")]: !!props.description || !!slots.default }\n ]);\n const withDescription = computed(() => {\n return { \"with-description\": props.description || slots.default };\n });\n const close = (evt) => {\n visible.value = false;\n emit(\"close\", evt);\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, {\n name: unref(ns).b(\"fade\"),\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.type), unref(ns).is(\"center\", _ctx.center), unref(ns).is(_ctx.effect)]),\n role: \"alert\"\n }, [\n _ctx.showIcon && unref(iconComponent) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(iconClass))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent))))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"content\"))\n }, [\n _ctx.title || _ctx.$slots.title ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([unref(ns).e(\"title\"), unref(withDescription)])\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.default || _ctx.description ? (openBlock(), createElementBlock(\"p\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"description\"))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.closable ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n _ctx.closeText ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([unref(ns).e(\"close-btn\"), unref(ns).is(\"customed\")]),\n onClick: close\n }, toDisplayString(_ctx.closeText), 3)) : (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass(unref(ns).e(\"close-btn\")),\n onClick: close\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\"]))\n ], 64)) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2), [\n [vShow, visible.value]\n ])\n ]),\n _: 3\n }, 8, [\"name\"]);\n };\n }\n});\nvar Alert = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"alert.vue\"]]);\n\nexport { Alert as default };\n//# sourceMappingURL=alert2.mjs.map\n","import '../../utils/index.mjs';\nimport Alert from './src/alert2.mjs';\nexport { alertEffects, alertEmits, alertProps } from './src/alert.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElAlert = withInstall(Alert);\n\nexport { ElAlert, ElAlert as default };\n//# sourceMappingURL=index.mjs.map\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","const GAP = 4;\nconst BAR_MAP = {\n vertical: {\n offset: \"offsetHeight\",\n scroll: \"scrollTop\",\n scrollSize: \"scrollHeight\",\n size: \"height\",\n key: \"vertical\",\n axis: \"Y\",\n client: \"clientY\",\n direction: \"top\"\n },\n horizontal: {\n offset: \"offsetWidth\",\n scroll: \"scrollLeft\",\n scrollSize: \"scrollWidth\",\n size: \"width\",\n key: \"horizontal\",\n axis: \"X\",\n client: \"clientX\",\n direction: \"left\"\n }\n};\nconst renderThumbStyle = ({\n move,\n size,\n bar\n}) => ({\n [bar.size]: size,\n transform: `translate${bar.axis}(${move}%)`\n});\n\nexport { BAR_MAP, GAP, renderThumbStyle };\n//# sourceMappingURL=util.mjs.map\n","const scrollbarContextKey = Symbol(\"scrollbarContextKey\");\n\nexport { scrollbarContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst thumbProps = buildProps({\n vertical: Boolean,\n size: String,\n move: Number,\n ratio: {\n type: Number,\n required: true\n },\n always: Boolean\n});\n\nexport { thumbProps };\n//# sourceMappingURL=thumb.mjs.map\n","import { defineComponent, inject, ref, computed, onBeforeUnmount, toRef, openBlock, createBlock, Transition, unref, withCtx, withDirectives, createElementVNode, normalizeClass, normalizeStyle, vShow } from 'vue';\nimport { isClient, useEventListener } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { scrollbarContextKey } from './constants.mjs';\nimport { BAR_MAP, renderThumbStyle } from './util.mjs';\nimport { thumbProps } from './thumb.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { throwError } from '../../../utils/error.mjs';\n\nconst COMPONENT_NAME = \"Thumb\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"thumb\",\n props: thumbProps,\n setup(__props) {\n const props = __props;\n const scrollbar = inject(scrollbarContextKey);\n const ns = useNamespace(\"scrollbar\");\n if (!scrollbar)\n throwError(COMPONENT_NAME, \"can not inject scrollbar context\");\n const instance = ref();\n const thumb = ref();\n const thumbState = ref({});\n const visible = ref(false);\n let cursorDown = false;\n let cursorLeave = false;\n let originalOnSelectStart = isClient ? document.onselectstart : null;\n const bar = computed(() => BAR_MAP[props.vertical ? \"vertical\" : \"horizontal\"]);\n const thumbStyle = computed(() => renderThumbStyle({\n size: props.size,\n move: props.move,\n bar: bar.value\n }));\n const offsetRatio = computed(() => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props.ratio / thumb.value[bar.value.offset]);\n const clickThumbHandler = (e) => {\n var _a;\n e.stopPropagation();\n if (e.ctrlKey || [1, 2].includes(e.button))\n return;\n (_a = window.getSelection()) == null ? void 0 : _a.removeAllRanges();\n startDrag(e);\n const el = e.currentTarget;\n if (!el)\n return;\n thumbState.value[bar.value.axis] = el[bar.value.offset] - (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]);\n };\n const clickTrackHandler = (e) => {\n if (!thumb.value || !instance.value || !scrollbar.wrapElement)\n return;\n const offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]);\n const thumbHalf = thumb.value[bar.value.offset] / 2;\n const thumbPositionPercentage = (offset - thumbHalf) * 100 * offsetRatio.value / instance.value[bar.value.offset];\n scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100;\n };\n const startDrag = (e) => {\n e.stopImmediatePropagation();\n cursorDown = true;\n document.addEventListener(\"mousemove\", mouseMoveDocumentHandler);\n document.addEventListener(\"mouseup\", mouseUpDocumentHandler);\n originalOnSelectStart = document.onselectstart;\n document.onselectstart = () => false;\n };\n const mouseMoveDocumentHandler = (e) => {\n if (!instance.value || !thumb.value)\n return;\n if (cursorDown === false)\n return;\n const prevPage = thumbState.value[bar.value.axis];\n if (!prevPage)\n return;\n const offset = (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;\n const thumbClickPosition = thumb.value[bar.value.offset] - prevPage;\n const thumbPositionPercentage = (offset - thumbClickPosition) * 100 * offsetRatio.value / instance.value[bar.value.offset];\n scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100;\n };\n const mouseUpDocumentHandler = () => {\n cursorDown = false;\n thumbState.value[bar.value.axis] = 0;\n document.removeEventListener(\"mousemove\", mouseMoveDocumentHandler);\n document.removeEventListener(\"mouseup\", mouseUpDocumentHandler);\n restoreOnselectstart();\n if (cursorLeave)\n visible.value = false;\n };\n const mouseMoveScrollbarHandler = () => {\n cursorLeave = false;\n visible.value = !!props.size;\n };\n const mouseLeaveScrollbarHandler = () => {\n cursorLeave = true;\n visible.value = cursorDown;\n };\n onBeforeUnmount(() => {\n restoreOnselectstart();\n document.removeEventListener(\"mouseup\", mouseUpDocumentHandler);\n });\n const restoreOnselectstart = () => {\n if (document.onselectstart !== originalOnSelectStart)\n document.onselectstart = originalOnSelectStart;\n };\n useEventListener(toRef(scrollbar, \"scrollbarElement\"), \"mousemove\", mouseMoveScrollbarHandler);\n useEventListener(toRef(scrollbar, \"scrollbarElement\"), \"mouseleave\", mouseLeaveScrollbarHandler);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, {\n name: unref(ns).b(\"fade\"),\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n ref_key: \"instance\",\n ref: instance,\n class: normalizeClass([unref(ns).e(\"bar\"), unref(ns).is(unref(bar).key)]),\n onMousedown: clickTrackHandler\n }, [\n createElementVNode(\"div\", {\n ref_key: \"thumb\",\n ref: thumb,\n class: normalizeClass(unref(ns).e(\"thumb\")),\n style: normalizeStyle(unref(thumbStyle)),\n onMousedown: clickThumbHandler\n }, null, 38)\n ], 34), [\n [vShow, _ctx.always || visible.value]\n ])\n ]),\n _: 1\n }, 8, [\"name\"]);\n };\n }\n});\nvar Thumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"thumb.vue\"]]);\n\nexport { Thumb as default };\n//# sourceMappingURL=thumb2.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst barProps = buildProps({\n always: {\n type: Boolean,\n default: true\n },\n minSize: {\n type: Number,\n required: true\n }\n});\n\nexport { barProps };\n//# sourceMappingURL=bar.mjs.map\n","import { defineComponent, inject, ref, openBlock, createElementBlock, Fragment, createVNode } from 'vue';\nimport { GAP } from './util.mjs';\nimport Thumb from './thumb2.mjs';\nimport { barProps } from './bar.mjs';\nimport { scrollbarContextKey } from './constants.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"bar\",\n props: barProps,\n setup(__props, { expose }) {\n const props = __props;\n const scrollbar = inject(scrollbarContextKey);\n const moveX = ref(0);\n const moveY = ref(0);\n const sizeWidth = ref(\"\");\n const sizeHeight = ref(\"\");\n const ratioY = ref(1);\n const ratioX = ref(1);\n const handleScroll = (wrap) => {\n if (wrap) {\n const offsetHeight = wrap.offsetHeight - GAP;\n const offsetWidth = wrap.offsetWidth - GAP;\n moveY.value = wrap.scrollTop * 100 / offsetHeight * ratioY.value;\n moveX.value = wrap.scrollLeft * 100 / offsetWidth * ratioX.value;\n }\n };\n const update = () => {\n const wrap = scrollbar == null ? void 0 : scrollbar.wrapElement;\n if (!wrap)\n return;\n const offsetHeight = wrap.offsetHeight - GAP;\n const offsetWidth = wrap.offsetWidth - GAP;\n const originalHeight = offsetHeight ** 2 / wrap.scrollHeight;\n const originalWidth = offsetWidth ** 2 / wrap.scrollWidth;\n const height = Math.max(originalHeight, props.minSize);\n const width = Math.max(originalWidth, props.minSize);\n ratioY.value = originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height));\n ratioX.value = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width));\n sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : \"\";\n sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : \"\";\n };\n expose({\n handleScroll,\n update\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(Thumb, {\n move: moveX.value,\n ratio: ratioX.value,\n size: sizeWidth.value,\n always: _ctx.always\n }, null, 8, [\"move\", \"ratio\", \"size\", \"always\"]),\n createVNode(Thumb, {\n move: moveY.value,\n ratio: ratioY.value,\n size: sizeHeight.value,\n vertical: \"\",\n always: _ctx.always\n }, null, 8, [\"move\", \"ratio\", \"size\", \"always\"])\n ], 64);\n };\n }\n});\nvar Bar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"bar.vue\"]]);\n\nexport { Bar as default };\n//# sourceMappingURL=bar2.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst scrollbarProps = buildProps({\n height: {\n type: [String, Number],\n default: \"\"\n },\n maxHeight: {\n type: [String, Number],\n default: \"\"\n },\n native: {\n type: Boolean,\n default: false\n },\n wrapStyle: {\n type: definePropType([String, Object, Array]),\n default: \"\"\n },\n wrapClass: {\n type: [String, Array],\n default: \"\"\n },\n viewClass: {\n type: [String, Array],\n default: \"\"\n },\n viewStyle: {\n type: [String, Array, Object],\n default: \"\"\n },\n noresize: Boolean,\n tag: {\n type: String,\n default: \"div\"\n },\n always: Boolean,\n minSize: {\n type: Number,\n default: 20\n },\n id: String,\n role: String,\n ...useAriaProps([\"ariaLabel\", \"ariaOrientation\"])\n});\nconst scrollbarEmits = {\n scroll: ({\n scrollTop,\n scrollLeft\n }) => [scrollTop, scrollLeft].every(isNumber)\n};\n\nexport { scrollbarEmits, scrollbarProps };\n//# sourceMappingURL=scrollbar.mjs.map\n","import { defineComponent, ref, computed, watch, nextTick, provide, reactive, onMounted, onUpdated, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, normalizeStyle, createBlock, resolveDynamicComponent, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { useResizeObserver, useEventListener } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport Bar from './bar2.mjs';\nimport { scrollbarContextKey } from './constants.mjs';\nimport { scrollbarProps, scrollbarEmits } from './scrollbar.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { isObject } from '@vue/shared';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\n\nconst COMPONENT_NAME = \"ElScrollbar\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: scrollbarProps,\n emits: scrollbarEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const ns = useNamespace(\"scrollbar\");\n let stopResizeObserver = void 0;\n let stopResizeListener = void 0;\n const scrollbarRef = ref();\n const wrapRef = ref();\n const resizeRef = ref();\n const barRef = ref();\n const wrapStyle = computed(() => {\n const style = {};\n if (props.height)\n style.height = addUnit(props.height);\n if (props.maxHeight)\n style.maxHeight = addUnit(props.maxHeight);\n return [props.wrapStyle, style];\n });\n const wrapKls = computed(() => {\n return [\n props.wrapClass,\n ns.e(\"wrap\"),\n { [ns.em(\"wrap\", \"hidden-default\")]: !props.native }\n ];\n });\n const resizeKls = computed(() => {\n return [ns.e(\"view\"), props.viewClass];\n });\n const handleScroll = () => {\n var _a;\n if (wrapRef.value) {\n (_a = barRef.value) == null ? void 0 : _a.handleScroll(wrapRef.value);\n emit(\"scroll\", {\n scrollTop: wrapRef.value.scrollTop,\n scrollLeft: wrapRef.value.scrollLeft\n });\n }\n };\n function scrollTo(arg1, arg2) {\n if (isObject(arg1)) {\n wrapRef.value.scrollTo(arg1);\n } else if (isNumber(arg1) && isNumber(arg2)) {\n wrapRef.value.scrollTo(arg1, arg2);\n }\n }\n const setScrollTop = (value) => {\n if (!isNumber(value)) {\n debugWarn(COMPONENT_NAME, \"value must be a number\");\n return;\n }\n wrapRef.value.scrollTop = value;\n };\n const setScrollLeft = (value) => {\n if (!isNumber(value)) {\n debugWarn(COMPONENT_NAME, \"value must be a number\");\n return;\n }\n wrapRef.value.scrollLeft = value;\n };\n const update = () => {\n var _a;\n (_a = barRef.value) == null ? void 0 : _a.update();\n };\n watch(() => props.noresize, (noresize) => {\n if (noresize) {\n stopResizeObserver == null ? void 0 : stopResizeObserver();\n stopResizeListener == null ? void 0 : stopResizeListener();\n } else {\n ;\n ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update));\n stopResizeListener = useEventListener(\"resize\", update);\n }\n }, { immediate: true });\n watch(() => [props.maxHeight, props.height], () => {\n if (!props.native)\n nextTick(() => {\n var _a;\n update();\n if (wrapRef.value) {\n (_a = barRef.value) == null ? void 0 : _a.handleScroll(wrapRef.value);\n }\n });\n });\n provide(scrollbarContextKey, reactive({\n scrollbarElement: scrollbarRef,\n wrapElement: wrapRef\n }));\n onMounted(() => {\n if (!props.native)\n nextTick(() => {\n update();\n });\n });\n onUpdated(() => update());\n expose({\n wrapRef,\n update,\n scrollTo,\n setScrollTop,\n setScrollLeft,\n handleScroll\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"scrollbarRef\",\n ref: scrollbarRef,\n class: normalizeClass(unref(ns).b())\n }, [\n createElementVNode(\"div\", {\n ref_key: \"wrapRef\",\n ref: wrapRef,\n class: normalizeClass(unref(wrapKls)),\n style: normalizeStyle(unref(wrapStyle)),\n onScroll: handleScroll\n }, [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), {\n id: _ctx.id,\n ref_key: \"resizeRef\",\n ref: resizeRef,\n class: normalizeClass(unref(resizeKls)),\n style: normalizeStyle(_ctx.viewStyle),\n role: _ctx.role,\n \"aria-label\": _ctx.ariaLabel,\n \"aria-orientation\": _ctx.ariaOrientation\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"class\", \"style\", \"role\", \"aria-label\", \"aria-orientation\"]))\n ], 38),\n !_ctx.native ? (openBlock(), createBlock(Bar, {\n key: 0,\n ref_key: \"barRef\",\n ref: barRef,\n always: _ctx.always,\n \"min-size\": _ctx.minSize\n }, null, 8, [\"always\", \"min-size\"])) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar Scrollbar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"scrollbar.vue\"]]);\n\nexport { Scrollbar as default };\n//# sourceMappingURL=scrollbar2.mjs.map\n","import '../../utils/index.mjs';\nimport Scrollbar from './src/scrollbar2.mjs';\nexport { BAR_MAP, GAP, renderThumbStyle } from './src/util.mjs';\nexport { scrollbarEmits, scrollbarProps } from './src/scrollbar.mjs';\nexport { thumbProps } from './src/thumb.mjs';\nexport { scrollbarContextKey } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElScrollbar = withInstall(Scrollbar);\n\nexport { ElScrollbar, ElScrollbar as default };\n//# sourceMappingURL=index.mjs.map\n","const POPPER_INJECTION_KEY = Symbol(\"popper\");\nconst POPPER_CONTENT_INJECTION_KEY = Symbol(\"popperContent\");\n\nexport { POPPER_CONTENT_INJECTION_KEY, POPPER_INJECTION_KEY };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst effects = [\"light\", \"dark\"];\nconst triggers = [\"click\", \"contextmenu\", \"hover\", \"focus\"];\nconst Effect = {\n LIGHT: \"light\",\n DARK: \"dark\"\n};\nconst roleTypes = [\n \"dialog\",\n \"grid\",\n \"group\",\n \"listbox\",\n \"menu\",\n \"navigation\",\n \"tooltip\",\n \"tree\"\n];\nconst popperProps = buildProps({\n role: {\n type: String,\n values: roleTypes,\n default: \"tooltip\"\n }\n});\nconst usePopperProps = popperProps;\n\nexport { Effect, popperProps, roleTypes, usePopperProps };\n//# sourceMappingURL=popper.mjs.map\n","import { defineComponent, ref, computed, provide, renderSlot } from 'vue';\nimport { POPPER_INJECTION_KEY } from './constants.mjs';\nimport { popperProps } from './popper.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElPopper\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popperProps,\n setup(__props, { expose }) {\n const props = __props;\n const triggerRef = ref();\n const popperInstanceRef = ref();\n const contentRef = ref();\n const referenceRef = ref();\n const role = computed(() => props.role);\n const popperProvides = {\n triggerRef,\n popperInstanceRef,\n contentRef,\n referenceRef,\n role\n };\n expose(popperProvides);\n provide(POPPER_INJECTION_KEY, popperProvides);\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\");\n };\n }\n});\nvar Popper = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"popper.vue\"]]);\n\nexport { Popper as default };\n//# sourceMappingURL=popper2.mjs.map\n","import '../../utils/index.mjs';\nimport Popper from './src/popper2.mjs';\nexport { default as ElPopperArrow } from './src/arrow2.mjs';\nexport { default as ElPopperTrigger } from './src/trigger2.mjs';\nexport { default as ElPopperContent } from './src/content2.mjs';\nexport { Effect, popperProps, roleTypes, usePopperProps } from './src/popper.mjs';\nexport { popperTriggerProps, usePopperTriggerProps } from './src/trigger.mjs';\nexport { popperContentEmits, popperContentProps, popperCoreConfigProps, usePopperContentEmits, usePopperContentProps, usePopperCoreConfigProps } from './src/content.mjs';\nexport { popperArrowProps, usePopperArrowProps } from './src/arrow.mjs';\nexport { POPPER_CONTENT_INJECTION_KEY, POPPER_INJECTION_KEY } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopper = withInstall(Popper);\n\nexport { ElPopper, ElPopper as default };\n//# sourceMappingURL=index.mjs.map\n","const TOOLTIP_INJECTION_KEY = Symbol(\"elTooltip\");\n\nexport { TOOLTIP_INJECTION_KEY };\n//# sourceMappingURL=constants.mjs.map\n","import { tryOnScopeDispose } from '@vueuse/core';\n\nfunction useTimeout() {\n let timeoutHandle;\n const registerTimeout = (fn, delay) => {\n cancelTimeout();\n timeoutHandle = window.setTimeout(fn, delay);\n };\n const cancelTimeout = () => window.clearTimeout(timeoutHandle);\n tryOnScopeDispose(() => cancelTimeout());\n return {\n registerTimeout,\n cancelTimeout\n };\n}\n\nexport { useTimeout };\n//# sourceMappingURL=index.mjs.map\n","import { unref } from 'vue';\nimport '../../utils/index.mjs';\nimport { useTimeout } from '../use-timeout/index.mjs';\nimport { buildProps } from '../../utils/vue/props/runtime.mjs';\nimport { isNumber } from '../../utils/types.mjs';\n\nconst useDelayedToggleProps = buildProps({\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n }\n});\nconst useDelayedToggle = ({\n showAfter,\n hideAfter,\n autoClose,\n open,\n close\n}) => {\n const { registerTimeout } = useTimeout();\n const {\n registerTimeout: registerTimeoutForAutoClose,\n cancelTimeout: cancelTimeoutForAutoClose\n } = useTimeout();\n const onOpen = (event) => {\n registerTimeout(() => {\n open(event);\n const _autoClose = unref(autoClose);\n if (isNumber(_autoClose) && _autoClose > 0) {\n registerTimeoutForAutoClose(() => {\n close(event);\n }, _autoClose);\n }\n }, unref(showAfter));\n };\n const onClose = (event) => {\n cancelTimeoutForAutoClose();\n registerTimeout(() => {\n close(event);\n }, unref(hideAfter));\n };\n return {\n onOpen,\n onClose\n };\n};\n\nexport { useDelayedToggle, useDelayedToggleProps };\n//# sourceMappingURL=index.mjs.map\n","var E=\"top\",R=\"bottom\",W=\"right\",P=\"left\",me=\"auto\",G=[E,R,W,P],U=\"start\",J=\"end\",Xe=\"clippingParents\",je=\"viewport\",K=\"popper\",Ye=\"reference\",De=G.reduce(function(t,e){return t.concat([e+\"-\"+U,e+\"-\"+J])},[]),Ee=[].concat(G,[me]).reduce(function(t,e){return t.concat([e,e+\"-\"+U,e+\"-\"+J])},[]),Ge=\"beforeRead\",Je=\"read\",Ke=\"afterRead\",Qe=\"beforeMain\",Ze=\"main\",et=\"afterMain\",tt=\"beforeWrite\",nt=\"write\",rt=\"afterWrite\",ot=[Ge,Je,Ke,Qe,Ze,et,tt,nt,rt];function C(t){return t?(t.nodeName||\"\").toLowerCase():null}function H(t){if(t==null)return window;if(t.toString()!==\"[object Window]\"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Q(t){var e=H(t).Element;return t instanceof e||t instanceof Element}function B(t){var e=H(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function Pe(t){if(typeof ShadowRoot==\"undefined\")return!1;var e=H(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Mt(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},o=e.attributes[n]||{},i=e.elements[n];!B(i)||!C(i)||(Object.assign(i.style,r),Object.keys(o).forEach(function(a){var s=o[a];s===!1?i.removeAttribute(a):i.setAttribute(a,s===!0?\"\":s)}))})}function Rt(t){var e=t.state,n={popper:{position:e.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var o=e.elements[r],i=e.attributes[r]||{},a=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),s=a.reduce(function(f,c){return f[c]=\"\",f},{});!B(o)||!C(o)||(Object.assign(o.style,s),Object.keys(i).forEach(function(f){o.removeAttribute(f)}))})}}var Ae={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:Mt,effect:Rt,requires:[\"computeStyles\"]};function q(t){return t.split(\"-\")[0]}var X=Math.max,ve=Math.min,Z=Math.round;function ee(t,e){e===void 0&&(e=!1);var n=t.getBoundingClientRect(),r=1,o=1;if(B(t)&&e){var i=t.offsetHeight,a=t.offsetWidth;a>0&&(r=Z(n.width)/a||1),i>0&&(o=Z(n.height)/i||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function ke(t){var e=ee(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function it(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Pe(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(t){return H(t).getComputedStyle(t)}function Wt(t){return[\"table\",\"td\",\"th\"].indexOf(C(t))>=0}function I(t){return((Q(t)?t.ownerDocument:t.document)||window.document).documentElement}function ge(t){return C(t)===\"html\"?t:t.assignedSlot||t.parentNode||(Pe(t)?t.host:null)||I(t)}function at(t){return!B(t)||N(t).position===\"fixed\"?null:t.offsetParent}function Bt(t){var e=navigator.userAgent.toLowerCase().indexOf(\"firefox\")!==-1,n=navigator.userAgent.indexOf(\"Trident\")!==-1;if(n&&B(t)){var r=N(t);if(r.position===\"fixed\")return null}var o=ge(t);for(Pe(o)&&(o=o.host);B(o)&&[\"html\",\"body\"].indexOf(C(o))<0;){var i=N(o);if(i.transform!==\"none\"||i.perspective!==\"none\"||i.contain===\"paint\"||[\"transform\",\"perspective\"].indexOf(i.willChange)!==-1||e&&i.willChange===\"filter\"||e&&i.filter&&i.filter!==\"none\")return o;o=o.parentNode}return null}function se(t){for(var e=H(t),n=at(t);n&&Wt(n)&&N(n).position===\"static\";)n=at(n);return n&&(C(n)===\"html\"||C(n)===\"body\"&&N(n).position===\"static\")?e:n||Bt(t)||e}function Le(t){return[\"top\",\"bottom\"].indexOf(t)>=0?\"x\":\"y\"}function fe(t,e,n){return X(t,ve(e,n))}function St(t,e,n){var r=fe(t,e,n);return r>n?n:r}function st(){return{top:0,right:0,bottom:0,left:0}}function ft(t){return Object.assign({},st(),t)}function ct(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var Tt=function(t,e){return t=typeof t==\"function\"?t(Object.assign({},e.rects,{placement:e.placement})):t,ft(typeof t!=\"number\"?t:ct(t,G))};function Ht(t){var e,n=t.state,r=t.name,o=t.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=q(n.placement),f=Le(s),c=[P,W].indexOf(s)>=0,u=c?\"height\":\"width\";if(!(!i||!a)){var m=Tt(o.padding,n),v=ke(i),l=f===\"y\"?E:P,h=f===\"y\"?R:W,p=n.rects.reference[u]+n.rects.reference[f]-a[f]-n.rects.popper[u],g=a[f]-n.rects.reference[f],x=se(i),y=x?f===\"y\"?x.clientHeight||0:x.clientWidth||0:0,$=p/2-g/2,d=m[l],b=y-v[u]-m[h],w=y/2-v[u]/2+$,O=fe(d,w,b),j=f;n.modifiersData[r]=(e={},e[j]=O,e.centerOffset=O-w,e)}}function Ct(t){var e=t.state,n=t.options,r=n.element,o=r===void 0?\"[data-popper-arrow]\":r;o!=null&&(typeof o==\"string\"&&(o=e.elements.popper.querySelector(o),!o)||!it(e.elements.popper,o)||(e.elements.arrow=o))}var pt={name:\"arrow\",enabled:!0,phase:\"main\",fn:Ht,effect:Ct,requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function te(t){return t.split(\"-\")[1]}var qt={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function Vt(t){var e=t.x,n=t.y,r=window,o=r.devicePixelRatio||1;return{x:Z(e*o)/o||0,y:Z(n*o)/o||0}}function ut(t){var e,n=t.popper,r=t.popperRect,o=t.placement,i=t.variation,a=t.offsets,s=t.position,f=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,m=t.isFixed,v=a.x,l=v===void 0?0:v,h=a.y,p=h===void 0?0:h,g=typeof u==\"function\"?u({x:l,y:p}):{x:l,y:p};l=g.x,p=g.y;var x=a.hasOwnProperty(\"x\"),y=a.hasOwnProperty(\"y\"),$=P,d=E,b=window;if(c){var w=se(n),O=\"clientHeight\",j=\"clientWidth\";if(w===H(n)&&(w=I(n),N(w).position!==\"static\"&&s===\"absolute\"&&(O=\"scrollHeight\",j=\"scrollWidth\")),w=w,o===E||(o===P||o===W)&&i===J){d=R;var A=m&&w===b&&b.visualViewport?b.visualViewport.height:w[O];p-=A-r.height,p*=f?1:-1}if(o===P||(o===E||o===R)&&i===J){$=W;var k=m&&w===b&&b.visualViewport?b.visualViewport.width:w[j];l-=k-r.width,l*=f?1:-1}}var D=Object.assign({position:s},c&&qt),S=u===!0?Vt({x:l,y:p}):{x:l,y:p};if(l=S.x,p=S.y,f){var L;return Object.assign({},D,(L={},L[d]=y?\"0\":\"\",L[$]=x?\"0\":\"\",L.transform=(b.devicePixelRatio||1)<=1?\"translate(\"+l+\"px, \"+p+\"px)\":\"translate3d(\"+l+\"px, \"+p+\"px, 0)\",L))}return Object.assign({},D,(e={},e[d]=y?p+\"px\":\"\",e[$]=x?l+\"px\":\"\",e.transform=\"\",e))}function Nt(t){var e=t.state,n=t.options,r=n.gpuAcceleration,o=r===void 0?!0:r,i=n.adaptive,a=i===void 0?!0:i,s=n.roundOffsets,f=s===void 0?!0:s,c={placement:q(e.placement),variation:te(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:e.options.strategy===\"fixed\"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,ut(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:f})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,ut(Object.assign({},c,{offsets:e.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:f})))),e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-placement\":e.placement})}var Me={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:Nt,data:{}},ye={passive:!0};function It(t){var e=t.state,n=t.instance,r=t.options,o=r.scroll,i=o===void 0?!0:o,a=r.resize,s=a===void 0?!0:a,f=H(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return i&&c.forEach(function(u){u.addEventListener(\"scroll\",n.update,ye)}),s&&f.addEventListener(\"resize\",n.update,ye),function(){i&&c.forEach(function(u){u.removeEventListener(\"scroll\",n.update,ye)}),s&&f.removeEventListener(\"resize\",n.update,ye)}}var Re={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:It,data:{}},_t={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function be(t){return t.replace(/left|right|bottom|top/g,function(e){return _t[e]})}var zt={start:\"end\",end:\"start\"};function lt(t){return t.replace(/start|end/g,function(e){return zt[e]})}function We(t){var e=H(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Be(t){return ee(I(t)).left+We(t).scrollLeft}function Ft(t){var e=H(t),n=I(t),r=e.visualViewport,o=n.clientWidth,i=n.clientHeight,a=0,s=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=r.offsetLeft,s=r.offsetTop)),{width:o,height:i,x:a+Be(t),y:s}}function Ut(t){var e,n=I(t),r=We(t),o=(e=t.ownerDocument)==null?void 0:e.body,i=X(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=X(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+Be(t),f=-r.scrollTop;return N(o||n).direction===\"rtl\"&&(s+=X(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:f}}function Se(t){var e=N(t),n=e.overflow,r=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function dt(t){return[\"html\",\"body\",\"#document\"].indexOf(C(t))>=0?t.ownerDocument.body:B(t)&&Se(t)?t:dt(ge(t))}function ce(t,e){var n;e===void 0&&(e=[]);var r=dt(t),o=r===((n=t.ownerDocument)==null?void 0:n.body),i=H(r),a=o?[i].concat(i.visualViewport||[],Se(r)?r:[]):r,s=e.concat(a);return o?s:s.concat(ce(ge(a)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Xt(t){var e=ee(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function ht(t,e){return e===je?Te(Ft(t)):Q(e)?Xt(e):Te(Ut(I(t)))}function Yt(t){var e=ce(ge(t)),n=[\"absolute\",\"fixed\"].indexOf(N(t).position)>=0,r=n&&B(t)?se(t):t;return Q(r)?e.filter(function(o){return Q(o)&&it(o,r)&&C(o)!==\"body\"}):[]}function Gt(t,e,n){var r=e===\"clippingParents\"?Yt(t):[].concat(e),o=[].concat(r,[n]),i=o[0],a=o.reduce(function(s,f){var c=ht(t,f);return s.top=X(c.top,s.top),s.right=ve(c.right,s.right),s.bottom=ve(c.bottom,s.bottom),s.left=X(c.left,s.left),s},ht(t,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function mt(t){var e=t.reference,n=t.element,r=t.placement,o=r?q(r):null,i=r?te(r):null,a=e.x+e.width/2-n.width/2,s=e.y+e.height/2-n.height/2,f;switch(o){case E:f={x:a,y:e.y-n.height};break;case R:f={x:a,y:e.y+e.height};break;case W:f={x:e.x+e.width,y:s};break;case P:f={x:e.x-n.width,y:s};break;default:f={x:e.x,y:e.y}}var c=o?Le(o):null;if(c!=null){var u=c===\"y\"?\"height\":\"width\";switch(i){case U:f[c]=f[c]-(e[u]/2-n[u]/2);break;case J:f[c]=f[c]+(e[u]/2-n[u]/2);break}}return f}function ne(t,e){e===void 0&&(e={});var n=e,r=n.placement,o=r===void 0?t.placement:r,i=n.boundary,a=i===void 0?Xe:i,s=n.rootBoundary,f=s===void 0?je:s,c=n.elementContext,u=c===void 0?K:c,m=n.altBoundary,v=m===void 0?!1:m,l=n.padding,h=l===void 0?0:l,p=ft(typeof h!=\"number\"?h:ct(h,G)),g=u===K?Ye:K,x=t.rects.popper,y=t.elements[v?g:u],$=Gt(Q(y)?y:y.contextElement||I(t.elements.popper),a,f),d=ee(t.elements.reference),b=mt({reference:d,element:x,strategy:\"absolute\",placement:o}),w=Te(Object.assign({},x,b)),O=u===K?w:d,j={top:$.top-O.top+p.top,bottom:O.bottom-$.bottom+p.bottom,left:$.left-O.left+p.left,right:O.right-$.right+p.right},A=t.modifiersData.offset;if(u===K&&A){var k=A[o];Object.keys(j).forEach(function(D){var S=[W,R].indexOf(D)>=0?1:-1,L=[E,R].indexOf(D)>=0?\"y\":\"x\";j[D]+=k[L]*S})}return j}function Jt(t,e){e===void 0&&(e={});var n=e,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=f===void 0?Ee:f,u=te(r),m=u?s?De:De.filter(function(h){return te(h)===u}):G,v=m.filter(function(h){return c.indexOf(h)>=0});v.length===0&&(v=m);var l=v.reduce(function(h,p){return h[p]=ne(t,{placement:p,boundary:o,rootBoundary:i,padding:a})[q(p)],h},{});return Object.keys(l).sort(function(h,p){return l[h]-l[p]})}function Kt(t){if(q(t)===me)return[];var e=be(t);return[lt(t),e,lt(e)]}function Qt(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var o=n.mainAxis,i=o===void 0?!0:o,a=n.altAxis,s=a===void 0?!0:a,f=n.fallbackPlacements,c=n.padding,u=n.boundary,m=n.rootBoundary,v=n.altBoundary,l=n.flipVariations,h=l===void 0?!0:l,p=n.allowedAutoPlacements,g=e.options.placement,x=q(g),y=x===g,$=f||(y||!h?[be(g)]:Kt(g)),d=[g].concat($).reduce(function(z,V){return z.concat(q(V)===me?Jt(e,{placement:V,boundary:u,rootBoundary:m,padding:c,flipVariations:h,allowedAutoPlacements:p}):V)},[]),b=e.rects.reference,w=e.rects.popper,O=new Map,j=!0,A=d[0],k=0;k=0,oe=re?\"width\":\"height\",M=ne(e,{placement:D,boundary:u,rootBoundary:m,altBoundary:v,padding:c}),T=re?L?W:P:L?R:E;b[oe]>w[oe]&&(T=be(T));var pe=be(T),_=[];if(i&&_.push(M[S]<=0),s&&_.push(M[T]<=0,M[pe]<=0),_.every(function(z){return z})){A=D,j=!1;break}O.set(D,_)}if(j)for(var ue=h?3:1,xe=function(z){var V=d.find(function(de){var ae=O.get(de);if(ae)return ae.slice(0,z).every(function(Y){return Y})});if(V)return A=V,\"break\"},ie=ue;ie>0;ie--){var le=xe(ie);if(le===\"break\")break}e.placement!==A&&(e.modifiersData[r]._skip=!0,e.placement=A,e.reset=!0)}}var vt={name:\"flip\",enabled:!0,phase:\"main\",fn:Qt,requiresIfExists:[\"offset\"],data:{_skip:!1}};function gt(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function yt(t){return[E,W,R,P].some(function(e){return t[e]>=0})}function Zt(t){var e=t.state,n=t.name,r=e.rects.reference,o=e.rects.popper,i=e.modifiersData.preventOverflow,a=ne(e,{elementContext:\"reference\"}),s=ne(e,{altBoundary:!0}),f=gt(a,r),c=gt(s,o,i),u=yt(f),m=yt(c);e.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:m},e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-reference-hidden\":u,\"data-popper-escaped\":m})}var bt={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:Zt};function en(t,e,n){var r=q(t),o=[P,E].indexOf(r)>=0?-1:1,i=typeof n==\"function\"?n(Object.assign({},e,{placement:t})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,W].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function tn(t){var e=t.state,n=t.options,r=t.name,o=n.offset,i=o===void 0?[0,0]:o,a=Ee.reduce(function(u,m){return u[m]=en(m,e.rects,i),u},{}),s=a[e.placement],f=s.x,c=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=f,e.modifiersData.popperOffsets.y+=c),e.modifiersData[r]=a}var wt={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:tn};function nn(t){var e=t.state,n=t.name;e.modifiersData[n]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:\"absolute\",placement:e.placement})}var He={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:nn,data:{}};function rn(t){return t===\"x\"?\"y\":\"x\"}function on(t){var e=t.state,n=t.options,r=t.name,o=n.mainAxis,i=o===void 0?!0:o,a=n.altAxis,s=a===void 0?!1:a,f=n.boundary,c=n.rootBoundary,u=n.altBoundary,m=n.padding,v=n.tether,l=v===void 0?!0:v,h=n.tetherOffset,p=h===void 0?0:h,g=ne(e,{boundary:f,rootBoundary:c,padding:m,altBoundary:u}),x=q(e.placement),y=te(e.placement),$=!y,d=Le(x),b=rn(d),w=e.modifiersData.popperOffsets,O=e.rects.reference,j=e.rects.popper,A=typeof p==\"function\"?p(Object.assign({},e.rects,{placement:e.placement})):p,k=typeof A==\"number\"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),D=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,S={x:0,y:0};if(w){if(i){var L,re=d===\"y\"?E:P,oe=d===\"y\"?R:W,M=d===\"y\"?\"height\":\"width\",T=w[d],pe=T+g[re],_=T-g[oe],ue=l?-j[M]/2:0,xe=y===U?O[M]:j[M],ie=y===U?-j[M]:-O[M],le=e.elements.arrow,z=l&&le?ke(le):{width:0,height:0},V=e.modifiersData[\"arrow#persistent\"]?e.modifiersData[\"arrow#persistent\"].padding:st(),de=V[re],ae=V[oe],Y=fe(0,O[M],z[M]),jt=$?O[M]/2-ue-Y-de-k.mainAxis:xe-Y-de-k.mainAxis,Dt=$?-O[M]/2+ue+Y+ae+k.mainAxis:ie+Y+ae+k.mainAxis,Oe=e.elements.arrow&&se(e.elements.arrow),Et=Oe?d===\"y\"?Oe.clientTop||0:Oe.clientLeft||0:0,Ce=(L=D==null?void 0:D[d])!=null?L:0,Pt=T+jt-Ce-Et,At=T+Dt-Ce,qe=fe(l?ve(pe,Pt):pe,T,l?X(_,At):_);w[d]=qe,S[d]=qe-T}if(s){var Ve,kt=d===\"x\"?E:P,Lt=d===\"x\"?R:W,F=w[b],he=b===\"y\"?\"height\":\"width\",Ne=F+g[kt],Ie=F-g[Lt],$e=[E,P].indexOf(x)!==-1,_e=(Ve=D==null?void 0:D[b])!=null?Ve:0,ze=$e?Ne:F-O[he]-j[he]-_e+k.altAxis,Fe=$e?F+O[he]+j[he]-_e-k.altAxis:Ie,Ue=l&&$e?St(ze,F,Fe):fe(l?ze:Ne,F,l?Fe:Ie);w[b]=Ue,S[b]=Ue-F}e.modifiersData[r]=S}}var xt={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:on,requiresIfExists:[\"offset\"]};function an(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function sn(t){return t===H(t)||!B(t)?We(t):an(t)}function fn(t){var e=t.getBoundingClientRect(),n=Z(e.width)/t.offsetWidth||1,r=Z(e.height)/t.offsetHeight||1;return n!==1||r!==1}function cn(t,e,n){n===void 0&&(n=!1);var r=B(e),o=B(e)&&fn(e),i=I(e),a=ee(t,o),s={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((C(e)!==\"body\"||Se(i))&&(s=sn(e)),B(e)?(f=ee(e,!0),f.x+=e.clientLeft,f.y+=e.clientTop):i&&(f.x=Be(i))),{x:a.left+s.scrollLeft-f.x,y:a.top+s.scrollTop-f.y,width:a.width,height:a.height}}function pn(t){var e=new Map,n=new Set,r=[];t.forEach(function(i){e.set(i.name,i)});function o(i){n.add(i.name);var a=[].concat(i.requires||[],i.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var f=e.get(s);f&&o(f)}}),r.push(i)}return t.forEach(function(i){n.has(i.name)||o(i)}),r}function un(t){var e=pn(t);return ot.reduce(function(n,r){return n.concat(e.filter(function(o){return o.phase===r}))},[])}function ln(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function dn(t){var e=t.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(e).map(function(n){return e[n]})}var Ot={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function $t(){for(var t=arguments.length,e=new Array(t),n=0;n ({})\n },\n strategy: {\n type: String,\n values: POSITIONING_STRATEGIES,\n default: \"absolute\"\n }\n});\nconst popperContentProps = buildProps({\n ...popperCoreConfigProps,\n id: String,\n style: {\n type: definePropType([String, Array, Object])\n },\n className: {\n type: definePropType([String, Array, Object])\n },\n effect: {\n type: String,\n default: \"dark\"\n },\n visible: Boolean,\n enterable: {\n type: Boolean,\n default: true\n },\n pure: Boolean,\n focusOnShow: {\n type: Boolean,\n default: false\n },\n trapping: {\n type: Boolean,\n default: false\n },\n popperClass: {\n type: definePropType([String, Array, Object])\n },\n popperStyle: {\n type: definePropType([String, Array, Object])\n },\n referenceEl: {\n type: definePropType(Object)\n },\n triggerTargetEl: {\n type: definePropType(Object)\n },\n stopPopperMouseEvent: {\n type: Boolean,\n default: true\n },\n virtualTriggering: Boolean,\n zIndex: Number,\n ...useAriaProps([\"ariaLabel\"])\n});\nconst popperContentEmits = {\n mouseenter: (evt) => evt instanceof MouseEvent,\n mouseleave: (evt) => evt instanceof MouseEvent,\n focus: () => true,\n blur: () => true,\n close: () => true\n};\nconst usePopperCoreConfigProps = popperCoreConfigProps;\nconst usePopperContentProps = popperContentProps;\nconst usePopperContentEmits = popperContentEmits;\n\nexport { popperContentEmits, popperContentProps, popperCoreConfigProps, usePopperContentEmits, usePopperContentProps, usePopperCoreConfigProps };\n//# sourceMappingURL=content.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../popper/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useDelayedToggleProps } from '../../../hooks/use-delayed-toggle/index.mjs';\nimport { popperContentProps } from '../../popper/src/content.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\n\nconst useTooltipContentProps = buildProps({\n ...useDelayedToggleProps,\n ...popperContentProps,\n appendTo: {\n type: definePropType([String, Object])\n },\n content: {\n type: String,\n default: \"\"\n },\n rawContent: {\n type: Boolean,\n default: false\n },\n persistent: Boolean,\n visible: {\n type: definePropType(Boolean),\n default: null\n },\n transition: String,\n teleported: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n ...useAriaProps([\"ariaLabel\"])\n});\n\nexport { useTooltipContentProps };\n//# sourceMappingURL=content.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst popperTriggerProps = buildProps({\n virtualRef: {\n type: definePropType(Object)\n },\n virtualTriggering: Boolean,\n onMouseenter: {\n type: definePropType(Function)\n },\n onMouseleave: {\n type: definePropType(Function)\n },\n onClick: {\n type: definePropType(Function)\n },\n onKeydown: {\n type: definePropType(Function)\n },\n onFocus: {\n type: definePropType(Function)\n },\n onBlur: {\n type: definePropType(Function)\n },\n onContextmenu: {\n type: definePropType(Function)\n },\n id: String,\n open: Boolean\n});\nconst usePopperTriggerProps = popperTriggerProps;\n\nexport { popperTriggerProps, usePopperTriggerProps };\n//# sourceMappingURL=trigger.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../popper/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { popperTriggerProps } from '../../popper/src/trigger.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\n\nconst useTooltipTriggerProps = buildProps({\n ...popperTriggerProps,\n disabled: Boolean,\n trigger: {\n type: definePropType([String, Array]),\n default: \"hover\"\n },\n triggerKeys: {\n type: definePropType(Array),\n default: () => [EVENT_CODE.enter, EVENT_CODE.space]\n }\n});\n\nexport { useTooltipTriggerProps };\n//# sourceMappingURL=trigger.mjs.map\n","import { getCurrentInstance, computed, watch, onMounted } from 'vue';\nimport { isFunction } from '@vue/shared';\nimport '../../utils/index.mjs';\nimport { buildProp, definePropType } from '../../utils/vue/props/runtime.mjs';\nimport { isClient } from '@vueuse/core';\nimport { isBoolean } from '../../utils/types.mjs';\n\nconst _prop = buildProp({\n type: definePropType(Boolean),\n default: null\n});\nconst _event = buildProp({\n type: definePropType(Function)\n});\nconst createModelToggleComposable = (name) => {\n const updateEventKey = `update:${name}`;\n const updateEventKeyRaw = `onUpdate:${name}`;\n const useModelToggleEmits2 = [updateEventKey];\n const useModelToggleProps2 = {\n [name]: _prop,\n [updateEventKeyRaw]: _event\n };\n const useModelToggle2 = ({\n indicator,\n toggleReason,\n shouldHideWhenRouteChanges,\n shouldProceed,\n onShow,\n onHide\n }) => {\n const instance = getCurrentInstance();\n const { emit } = instance;\n const props = instance.props;\n const hasUpdateHandler = computed(() => isFunction(props[updateEventKeyRaw]));\n const isModelBindingAbsent = computed(() => props[name] === null);\n const doShow = (event) => {\n if (indicator.value === true) {\n return;\n }\n indicator.value = true;\n if (toggleReason) {\n toggleReason.value = event;\n }\n if (isFunction(onShow)) {\n onShow(event);\n }\n };\n const doHide = (event) => {\n if (indicator.value === false) {\n return;\n }\n indicator.value = false;\n if (toggleReason) {\n toggleReason.value = event;\n }\n if (isFunction(onHide)) {\n onHide(event);\n }\n };\n const show = (event) => {\n if (props.disabled === true || isFunction(shouldProceed) && !shouldProceed())\n return;\n const shouldEmit = hasUpdateHandler.value && isClient;\n if (shouldEmit) {\n emit(updateEventKey, true);\n }\n if (isModelBindingAbsent.value || !shouldEmit) {\n doShow(event);\n }\n };\n const hide = (event) => {\n if (props.disabled === true || !isClient)\n return;\n const shouldEmit = hasUpdateHandler.value && isClient;\n if (shouldEmit) {\n emit(updateEventKey, false);\n }\n if (isModelBindingAbsent.value || !shouldEmit) {\n doHide(event);\n }\n };\n const onChange = (val) => {\n if (!isBoolean(val))\n return;\n if (props.disabled && val) {\n if (hasUpdateHandler.value) {\n emit(updateEventKey, false);\n }\n } else if (indicator.value !== val) {\n if (val) {\n doShow();\n } else {\n doHide();\n }\n }\n };\n const toggle = () => {\n if (indicator.value) {\n hide();\n } else {\n show();\n }\n };\n watch(() => props[name], onChange);\n if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) {\n watch(() => ({\n ...instance.proxy.$route\n }), () => {\n if (shouldHideWhenRouteChanges.value && indicator.value) {\n hide();\n }\n });\n }\n onMounted(() => {\n onChange(props[name]);\n });\n return {\n hide,\n show,\n toggle,\n hasUpdateHandler\n };\n };\n return {\n useModelToggle: useModelToggle2,\n useModelToggleProps: useModelToggleProps2,\n useModelToggleEmits: useModelToggleEmits2\n };\n};\nconst { useModelToggle, useModelToggleProps, useModelToggleEmits } = createModelToggleComposable(\"modelValue\");\n\nexport { createModelToggleComposable, useModelToggle, useModelToggleEmits, useModelToggleProps };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst popperArrowProps = buildProps({\n arrowOffset: {\n type: Number,\n default: 5\n }\n});\nconst usePopperArrowProps = popperArrowProps;\n\nexport { popperArrowProps, usePopperArrowProps };\n//# sourceMappingURL=arrow.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../popper/index.mjs';\nimport { useTooltipContentProps } from './content.mjs';\nimport { useTooltipTriggerProps } from './trigger.mjs';\nimport { createModelToggleComposable } from '../../../hooks/use-model-toggle/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { popperProps } from '../../popper/src/popper.mjs';\nimport { popperArrowProps } from '../../popper/src/arrow.mjs';\n\nconst {\n useModelToggleProps: useTooltipModelToggleProps,\n useModelToggleEmits: useTooltipModelToggleEmits,\n useModelToggle: useTooltipModelToggle\n} = createModelToggleComposable(\"visible\");\nconst useTooltipProps = buildProps({\n ...popperProps,\n ...useTooltipModelToggleProps,\n ...useTooltipContentProps,\n ...useTooltipTriggerProps,\n ...popperArrowProps,\n showArrow: {\n type: Boolean,\n default: true\n }\n});\nconst tooltipEmits = [\n ...useTooltipModelToggleEmits,\n \"before-show\",\n \"before-hide\",\n \"show\",\n \"hide\",\n \"open\",\n \"close\"\n];\n\nexport { tooltipEmits, useTooltipModelToggle, useTooltipModelToggleEmits, useTooltipModelToggleProps, useTooltipProps };\n//# sourceMappingURL=tooltip.mjs.map\n","import { unref } from 'vue';\nimport '../../../utils/index.mjs';\nimport { isArray } from '@vue/shared';\n\nconst isTriggerType = (trigger, type) => {\n if (isArray(trigger)) {\n return trigger.includes(type);\n }\n return trigger === type;\n};\nconst whenTrigger = (trigger, type, handler) => {\n return (e) => {\n isTriggerType(unref(trigger), type) && handler(e);\n };\n};\n\nexport { isTriggerType, whenTrigger };\n//# sourceMappingURL=utils.mjs.map\n","const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => {\n const handleEvent = (event) => {\n const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event);\n if (checkForDefaultPrevented === false || !shouldPrevent) {\n return oursHandler == null ? void 0 : oursHandler(event);\n }\n };\n return handleEvent;\n};\nconst whenMouse = (handler) => {\n return (e) => e.pointerType === \"mouse\" ? handler(e) : void 0;\n};\n\nexport { composeEventHandlers, whenMouse };\n//# sourceMappingURL=event.mjs.map\n","import { provide } from 'vue';\n\nconst FORWARD_REF_INJECTION_KEY = Symbol(\"elForwardRef\");\nconst useForwardRef = (forwardRef) => {\n const setForwardRef = (el) => {\n forwardRef.value = el;\n };\n provide(FORWARD_REF_INJECTION_KEY, {\n setForwardRef\n });\n};\nconst useForwardRefDirective = (setForwardRef) => {\n return {\n mounted(el) {\n setForwardRef(el);\n },\n updated(el) {\n setForwardRef(el);\n },\n unmounted() {\n setForwardRef(null);\n }\n };\n};\n\nexport { FORWARD_REF_INJECTION_KEY, useForwardRef, useForwardRefDirective };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, inject, withDirectives, cloneVNode, Fragment, createVNode, Text, Comment } from 'vue';\nimport { NOOP, isObject } from '@vue/shared';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { FORWARD_REF_INJECTION_KEY, useForwardRefDirective } from '../../../hooks/use-forward-ref/index.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst NAME = \"ElOnlyChild\";\nconst OnlyChild = defineComponent({\n name: NAME,\n setup(_, {\n slots,\n attrs\n }) {\n var _a;\n const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY);\n const forwardRefDirective = useForwardRefDirective((_a = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a : NOOP);\n return () => {\n var _a2;\n const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots, attrs);\n if (!defaultSlot)\n return null;\n if (defaultSlot.length > 1) {\n debugWarn(NAME, \"requires exact only one valid child.\");\n return null;\n }\n const firstLegitNode = findFirstLegitChild(defaultSlot);\n if (!firstLegitNode) {\n debugWarn(NAME, \"no valid child node found\");\n return null;\n }\n return withDirectives(cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]);\n };\n }\n});\nfunction findFirstLegitChild(node) {\n if (!node)\n return null;\n const children = node;\n for (const child of children) {\n if (isObject(child)) {\n switch (child.type) {\n case Comment:\n continue;\n case Text:\n case \"svg\":\n return wrapTextContent(child);\n case Fragment:\n return findFirstLegitChild(child.children);\n default:\n return child;\n }\n }\n return wrapTextContent(child);\n }\n return null;\n}\nfunction wrapTextContent(s) {\n const ns = useNamespace(\"only-child\");\n return createVNode(\"span\", {\n \"class\": ns.e(\"content\")\n }, [s]);\n}\n\nexport { OnlyChild };\n//# sourceMappingURL=only-child.mjs.map\n","import { defineComponent, inject, computed, onMounted, watch, onBeforeUnmount, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { isNil } from 'lodash-unified';\nimport { unrefElement } from '@vueuse/core';\nimport '../../slot/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { POPPER_INJECTION_KEY } from './constants.mjs';\nimport { popperTriggerProps } from './trigger.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useForwardRef } from '../../../hooks/use-forward-ref/index.mjs';\nimport { isElement } from '../../../utils/types.mjs';\nimport { OnlyChild } from '../../slot/src/only-child.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElPopperTrigger\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popperTriggerProps,\n setup(__props, { expose }) {\n const props = __props;\n const { role, triggerRef } = inject(POPPER_INJECTION_KEY, void 0);\n useForwardRef(triggerRef);\n const ariaControls = computed(() => {\n return ariaHaspopup.value ? props.id : void 0;\n });\n const ariaDescribedby = computed(() => {\n if (role && role.value === \"tooltip\") {\n return props.open && props.id ? props.id : void 0;\n }\n return void 0;\n });\n const ariaHaspopup = computed(() => {\n if (role && role.value !== \"tooltip\") {\n return role.value;\n }\n return void 0;\n });\n const ariaExpanded = computed(() => {\n return ariaHaspopup.value ? `${props.open}` : void 0;\n });\n let virtualTriggerAriaStopWatch = void 0;\n onMounted(() => {\n watch(() => props.virtualRef, (virtualEl) => {\n if (virtualEl) {\n triggerRef.value = unrefElement(virtualEl);\n }\n }, {\n immediate: true\n });\n watch(triggerRef, (el, prevEl) => {\n virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch();\n virtualTriggerAriaStopWatch = void 0;\n if (isElement(el)) {\n ;\n [\n \"onMouseenter\",\n \"onMouseleave\",\n \"onClick\",\n \"onKeydown\",\n \"onFocus\",\n \"onBlur\",\n \"onContextmenu\"\n ].forEach((eventName) => {\n var _a;\n const handler = props[eventName];\n if (handler) {\n ;\n el.addEventListener(eventName.slice(2).toLowerCase(), handler);\n (_a = prevEl == null ? void 0 : prevEl.removeEventListener) == null ? void 0 : _a.call(prevEl, eventName.slice(2).toLowerCase(), handler);\n }\n });\n virtualTriggerAriaStopWatch = watch([ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded], (watches) => {\n ;\n [\n \"aria-controls\",\n \"aria-describedby\",\n \"aria-haspopup\",\n \"aria-expanded\"\n ].forEach((key, idx) => {\n isNil(watches[idx]) ? el.removeAttribute(key) : el.setAttribute(key, watches[idx]);\n });\n }, { immediate: true });\n }\n if (isElement(prevEl)) {\n ;\n [\n \"aria-controls\",\n \"aria-describedby\",\n \"aria-haspopup\",\n \"aria-expanded\"\n ].forEach((key) => prevEl.removeAttribute(key));\n }\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch();\n virtualTriggerAriaStopWatch = void 0;\n });\n expose({\n triggerRef\n });\n return (_ctx, _cache) => {\n return !_ctx.virtualTriggering ? (openBlock(), createBlock(unref(OnlyChild), mergeProps({ key: 0 }, _ctx.$attrs, {\n \"aria-controls\": unref(ariaControls),\n \"aria-describedby\": unref(ariaDescribedby),\n \"aria-expanded\": unref(ariaExpanded),\n \"aria-haspopup\": unref(ariaHaspopup)\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"aria-controls\", \"aria-describedby\", \"aria-expanded\", \"aria-haspopup\"])) : createCommentVNode(\"v-if\", true);\n };\n }\n});\nvar ElPopperTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"trigger.vue\"]]);\n\nexport { ElPopperTrigger as default };\n//# sourceMappingURL=trigger2.mjs.map\n","import { defineComponent, inject, ref, unref, toRef, openBlock, createBlock, normalizeClass, withCtx, renderSlot } from 'vue';\nimport '../../popper/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { TOOLTIP_INJECTION_KEY } from './constants.mjs';\nimport { useTooltipTriggerProps } from './trigger.mjs';\nimport { whenTrigger } from './utils.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\nimport ElPopperTrigger from '../../popper/src/trigger2.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTooltipTrigger\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: useTooltipTriggerProps,\n setup(__props, { expose }) {\n const props = __props;\n const ns = useNamespace(\"tooltip\");\n const { controlled, id, open, onOpen, onClose, onToggle } = inject(TOOLTIP_INJECTION_KEY, void 0);\n const triggerRef = ref(null);\n const stopWhenControlledOrDisabled = () => {\n if (unref(controlled) || props.disabled) {\n return true;\n }\n };\n const trigger = toRef(props, \"trigger\");\n const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, \"hover\", onOpen));\n const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, \"hover\", onClose));\n const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, \"click\", (e) => {\n if (e.button === 0) {\n onToggle(e);\n }\n }));\n const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, \"focus\", onOpen));\n const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, \"focus\", onClose));\n const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, \"contextmenu\", (e) => {\n e.preventDefault();\n onToggle(e);\n }));\n const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => {\n const { code } = e;\n if (props.triggerKeys.includes(code)) {\n e.preventDefault();\n onToggle(e);\n }\n });\n expose({\n triggerRef\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElPopperTrigger), {\n id: unref(id),\n \"virtual-ref\": _ctx.virtualRef,\n open: unref(open),\n \"virtual-triggering\": _ctx.virtualTriggering,\n class: normalizeClass(unref(ns).e(\"trigger\")),\n onBlur: unref(onBlur),\n onClick: unref(onClick),\n onContextmenu: unref(onContextMenu),\n onFocus: unref(onFocus),\n onMouseenter: unref(onMouseenter),\n onMouseleave: unref(onMouseleave),\n onKeydown: unref(onKeydown)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"virtual-ref\", \"open\", \"virtual-triggering\", \"class\", \"onBlur\", \"onClick\", \"onContextmenu\", \"onFocus\", \"onMouseenter\", \"onMouseleave\", \"onKeydown\"]);\n };\n }\n});\nvar ElTooltipTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"trigger.vue\"]]);\n\nexport { ElTooltipTrigger as default };\n//# sourceMappingURL=trigger2.mjs.map\n","import { computed, onBeforeMount } from 'vue';\nimport '../../utils/index.mjs';\nimport { useGetDerivedNamespace } from '../use-namespace/index.mjs';\nimport { useIdInjection } from '../use-id/index.mjs';\nimport { isClient } from '@vueuse/core';\n\nlet cachedContainer;\nconst usePopperContainerId = () => {\n const namespace = useGetDerivedNamespace();\n const idInjection = useIdInjection();\n const id = computed(() => {\n return `${namespace.value}-popper-container-${idInjection.prefix}`;\n });\n const selector = computed(() => `#${id.value}`);\n return {\n id,\n selector\n };\n};\nconst createContainer = (id) => {\n const container = document.createElement(\"div\");\n container.id = id;\n document.body.appendChild(container);\n return container;\n};\nconst usePopperContainer = () => {\n const { id, selector } = usePopperContainerId();\n onBeforeMount(() => {\n if (!isClient)\n return;\n if (process.env.NODE_ENV === \"test\" || !cachedContainer && !document.body.querySelector(selector.value)) {\n cachedContainer = createContainer(id.value);\n }\n });\n return {\n id,\n selector\n };\n};\n\nexport { usePopperContainer, usePopperContainerId };\n//# sourceMappingURL=index.mjs.map\n","import { ref } from 'vue';\n\nconst usePopperContentFocusTrap = (props, emit) => {\n const trapped = ref(false);\n const focusStartRef = ref();\n const onFocusAfterTrapped = () => {\n emit(\"focus\");\n };\n const onFocusAfterReleased = (event) => {\n var _a;\n if (((_a = event.detail) == null ? void 0 : _a.focusReason) !== \"pointer\") {\n focusStartRef.value = \"first\";\n emit(\"blur\");\n }\n };\n const onFocusInTrap = (event) => {\n if (props.visible && !trapped.value) {\n if (event.target) {\n focusStartRef.value = event.target;\n }\n trapped.value = true;\n }\n };\n const onFocusoutPrevented = (event) => {\n if (!props.trapping) {\n if (event.detail.focusReason === \"pointer\") {\n event.preventDefault();\n }\n trapped.value = false;\n }\n };\n const onReleaseRequested = () => {\n trapped.value = false;\n emit(\"close\");\n };\n return {\n focusStartRef,\n trapped,\n onFocusAfterReleased,\n onFocusAfterTrapped,\n onFocusInTrap,\n onFocusoutPrevented,\n onReleaseRequested\n };\n};\n\nexport { usePopperContentFocusTrap };\n//# sourceMappingURL=use-focus-trap.mjs.map\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","import { isClient, unrefElement } from '@vueuse/core';\nimport '../../../utils/index.mjs';\n\nconst buildPopperOptions = (props, modifiers = []) => {\n const { placement, strategy, popperOptions } = props;\n const options = {\n placement,\n strategy,\n ...popperOptions,\n modifiers: [...genModifiers(props), ...modifiers]\n };\n deriveExtraModifiers(options, popperOptions == null ? void 0 : popperOptions.modifiers);\n return options;\n};\nconst unwrapMeasurableEl = ($el) => {\n if (!isClient)\n return;\n return unrefElement($el);\n};\nfunction genModifiers(options) {\n const { offset, gpuAcceleration, fallbackPlacements } = options;\n return [\n {\n name: \"offset\",\n options: {\n offset: [0, offset != null ? offset : 12]\n }\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n },\n {\n name: \"flip\",\n options: {\n padding: 5,\n fallbackPlacements\n }\n },\n {\n name: \"computeStyles\",\n options: {\n gpuAcceleration\n }\n }\n ];\n}\nfunction deriveExtraModifiers(options, modifiers) {\n if (modifiers) {\n options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []];\n }\n}\n\nexport { buildPopperOptions, unwrapMeasurableEl };\n//# sourceMappingURL=utils.mjs.map\n","import { computed, unref, shallowRef, ref, watch, onBeforeUnmount } from 'vue';\nimport { createPopper } from '@popperjs/core';\nimport { fromPairs } from 'lodash-unified';\n\nconst usePopper = (referenceElementRef, popperElementRef, opts = {}) => {\n const stateUpdater = {\n name: \"updateState\",\n enabled: true,\n phase: \"write\",\n fn: ({ state }) => {\n const derivedState = deriveState(state);\n Object.assign(states.value, derivedState);\n },\n requires: [\"computeStyles\"]\n };\n const options = computed(() => {\n const { onFirstUpdate, placement, strategy, modifiers } = unref(opts);\n return {\n onFirstUpdate,\n placement: placement || \"bottom\",\n strategy: strategy || \"absolute\",\n modifiers: [\n ...modifiers || [],\n stateUpdater,\n { name: \"applyStyles\", enabled: false }\n ]\n };\n });\n const instanceRef = shallowRef();\n const states = ref({\n styles: {\n popper: {\n position: unref(options).strategy,\n left: \"0\",\n top: \"0\"\n },\n arrow: {\n position: \"absolute\"\n }\n },\n attributes: {}\n });\n const destroy = () => {\n if (!instanceRef.value)\n return;\n instanceRef.value.destroy();\n instanceRef.value = void 0;\n };\n watch(options, (newOptions) => {\n const instance = unref(instanceRef);\n if (instance) {\n instance.setOptions(newOptions);\n }\n }, {\n deep: true\n });\n watch([referenceElementRef, popperElementRef], ([referenceElement, popperElement]) => {\n destroy();\n if (!referenceElement || !popperElement)\n return;\n instanceRef.value = createPopper(referenceElement, popperElement, unref(options));\n });\n onBeforeUnmount(() => {\n destroy();\n });\n return {\n state: computed(() => {\n var _a;\n return { ...((_a = unref(instanceRef)) == null ? void 0 : _a.state) || {} };\n }),\n styles: computed(() => unref(states).styles),\n attributes: computed(() => unref(states).attributes),\n update: () => {\n var _a;\n return (_a = unref(instanceRef)) == null ? void 0 : _a.update();\n },\n forceUpdate: () => {\n var _a;\n return (_a = unref(instanceRef)) == null ? void 0 : _a.forceUpdate();\n },\n instanceRef: computed(() => unref(instanceRef))\n };\n};\nfunction deriveState(state) {\n const elements = Object.keys(state.elements);\n const styles = fromPairs(elements.map((element) => [element, state.styles[element] || {}]));\n const attributes = fromPairs(elements.map((element) => [element, state.attributes[element]]));\n return {\n styles,\n attributes\n };\n}\n\nexport { usePopper };\n//# sourceMappingURL=index.mjs.map\n","import { inject, ref, computed, unref, watch, onMounted } from 'vue';\nimport { isUndefined } from 'lodash-unified';\nimport '../../../../hooks/index.mjs';\nimport { POPPER_INJECTION_KEY } from '../constants.mjs';\nimport { buildPopperOptions, unwrapMeasurableEl } from '../utils.mjs';\nimport { usePopper } from '../../../../hooks/use-popper/index.mjs';\n\nconst DEFAULT_ARROW_OFFSET = 0;\nconst usePopperContent = (props) => {\n const { popperInstanceRef, contentRef, triggerRef, role } = inject(POPPER_INJECTION_KEY, void 0);\n const arrowRef = ref();\n const arrowOffset = ref();\n const eventListenerModifier = computed(() => {\n return {\n name: \"eventListeners\",\n enabled: !!props.visible\n };\n });\n const arrowModifier = computed(() => {\n var _a;\n const arrowEl = unref(arrowRef);\n const offset = (_a = unref(arrowOffset)) != null ? _a : DEFAULT_ARROW_OFFSET;\n return {\n name: \"arrow\",\n enabled: !isUndefined(arrowEl),\n options: {\n element: arrowEl,\n padding: offset\n }\n };\n });\n const options = computed(() => {\n return {\n onFirstUpdate: () => {\n update();\n },\n ...buildPopperOptions(props, [\n unref(arrowModifier),\n unref(eventListenerModifier)\n ])\n };\n });\n const computedReference = computed(() => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef));\n const { attributes, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options);\n watch(instanceRef, (instance) => popperInstanceRef.value = instance);\n onMounted(() => {\n watch(() => {\n var _a;\n return (_a = unref(computedReference)) == null ? void 0 : _a.getBoundingClientRect();\n }, () => {\n update();\n });\n });\n return {\n attributes,\n arrowRef,\n contentRef,\n instanceRef,\n state,\n styles,\n role,\n forceUpdate,\n update\n };\n};\n\nexport { usePopperContent };\n//# sourceMappingURL=use-content.mjs.map\n","import { computed, unref, ref } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { useZIndex } from '../../../../hooks/use-z-index/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\n\nconst usePopperContentDOM = (props, {\n attributes,\n styles,\n role\n}) => {\n const { nextZIndex } = useZIndex();\n const ns = useNamespace(\"popper\");\n const contentAttrs = computed(() => unref(attributes).popper);\n const contentZIndex = ref(isNumber(props.zIndex) ? props.zIndex : nextZIndex());\n const contentClass = computed(() => [\n ns.b(),\n ns.is(\"pure\", props.pure),\n ns.is(props.effect),\n props.popperClass\n ]);\n const contentStyle = computed(() => {\n return [\n { zIndex: unref(contentZIndex) },\n unref(styles).popper,\n props.popperStyle || {}\n ];\n });\n const ariaModal = computed(() => role.value === \"dialog\" ? \"false\" : void 0);\n const arrowStyle = computed(() => unref(styles).arrow || {});\n const updateZIndex = () => {\n contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex();\n };\n return {\n ariaModal,\n arrowStyle,\n contentAttrs,\n contentClass,\n contentStyle,\n contentZIndex,\n updateZIndex\n };\n};\n\nexport { usePopperContentDOM };\n//# sourceMappingURL=use-content-dom.mjs.map\n","import { defineComponent, inject, ref, provide, onMounted, watch, unref, onBeforeUnmount, openBlock, createElementBlock, mergeProps, createVNode, withCtx, renderSlot } from 'vue';\nimport { NOOP } from '@vue/shared';\nimport { isNil } from 'lodash-unified';\nimport '../../focus-trap/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../utils/index.mjs';\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants.mjs';\nimport { popperContentProps, popperContentEmits } from './content.mjs';\nimport './composables/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { usePopperContentFocusTrap } from './composables/use-focus-trap.mjs';\nimport { usePopperContent } from './composables/use-content.mjs';\nimport { usePopperContentDOM } from './composables/use-content-dom.mjs';\nimport { formItemContextKey } from '../../form/src/constants.mjs';\nimport { isElement } from '../../../utils/types.mjs';\nimport ElFocusTrap from '../../focus-trap/src/focus-trap.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElPopperContent\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popperContentProps,\n emits: popperContentEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const {\n focusStartRef,\n trapped,\n onFocusAfterReleased,\n onFocusAfterTrapped,\n onFocusInTrap,\n onFocusoutPrevented,\n onReleaseRequested\n } = usePopperContentFocusTrap(props, emit);\n const { attributes, arrowRef, contentRef, styles, instanceRef, role, update } = usePopperContent(props);\n const {\n ariaModal,\n arrowStyle,\n contentAttrs,\n contentClass,\n contentStyle,\n updateZIndex\n } = usePopperContentDOM(props, {\n styles,\n attributes,\n role\n });\n const formItemContext = inject(formItemContextKey, void 0);\n const arrowOffset = ref();\n provide(POPPER_CONTENT_INJECTION_KEY, {\n arrowStyle,\n arrowRef,\n arrowOffset\n });\n if (formItemContext) {\n provide(formItemContextKey, {\n ...formItemContext,\n addInputId: NOOP,\n removeInputId: NOOP\n });\n }\n let triggerTargetAriaStopWatch = void 0;\n const updatePopper = (shouldUpdateZIndex = true) => {\n update();\n shouldUpdateZIndex && updateZIndex();\n };\n const togglePopperAlive = () => {\n updatePopper(false);\n if (props.visible && props.focusOnShow) {\n trapped.value = true;\n } else if (props.visible === false) {\n trapped.value = false;\n }\n };\n onMounted(() => {\n watch(() => props.triggerTargetEl, (triggerTargetEl, prevTriggerTargetEl) => {\n triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch();\n triggerTargetAriaStopWatch = void 0;\n const el = unref(triggerTargetEl || contentRef.value);\n const prevEl = unref(prevTriggerTargetEl || contentRef.value);\n if (isElement(el)) {\n triggerTargetAriaStopWatch = watch([role, () => props.ariaLabel, ariaModal, () => props.id], (watches) => {\n ;\n [\"role\", \"aria-label\", \"aria-modal\", \"id\"].forEach((key, idx) => {\n isNil(watches[idx]) ? el.removeAttribute(key) : el.setAttribute(key, watches[idx]);\n });\n }, { immediate: true });\n }\n if (prevEl !== el && isElement(prevEl)) {\n ;\n [\"role\", \"aria-label\", \"aria-modal\", \"id\"].forEach((key) => {\n prevEl.removeAttribute(key);\n });\n }\n }, { immediate: true });\n watch(() => props.visible, togglePopperAlive, { immediate: true });\n });\n onBeforeUnmount(() => {\n triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch();\n triggerTargetAriaStopWatch = void 0;\n });\n expose({\n popperContentRef: contentRef,\n popperInstanceRef: instanceRef,\n updatePopper,\n contentStyle\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", mergeProps({\n ref_key: \"contentRef\",\n ref: contentRef\n }, unref(contentAttrs), {\n style: unref(contentStyle),\n class: unref(contentClass),\n tabindex: \"-1\",\n onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit(\"mouseenter\", e)),\n onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit(\"mouseleave\", e))\n }), [\n createVNode(unref(ElFocusTrap), {\n trapped: unref(trapped),\n \"trap-on-focus-in\": true,\n \"focus-trap-el\": unref(contentRef),\n \"focus-start-el\": unref(focusStartRef),\n onFocusAfterTrapped: unref(onFocusAfterTrapped),\n onFocusAfterReleased: unref(onFocusAfterReleased),\n onFocusin: unref(onFocusInTrap),\n onFocusoutPrevented: unref(onFocusoutPrevented),\n onReleaseRequested: unref(onReleaseRequested)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"trapped\", \"focus-trap-el\", \"focus-start-el\", \"onFocusAfterTrapped\", \"onFocusAfterReleased\", \"onFocusin\", \"onFocusoutPrevented\", \"onReleaseRequested\"])\n ], 16);\n };\n }\n});\nvar ElPopperContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"content.vue\"]]);\n\nexport { ElPopperContent as default };\n//# sourceMappingURL=content2.mjs.map\n","import { defineComponent, ref, inject, computed, onBeforeUnmount, unref, watch, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, withDirectives, mergeProps, renderSlot, createCommentVNode, vShow } from 'vue';\nimport { onClickOutside } from '@vueuse/core';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../popper/index.mjs';\nimport { TOOLTIP_INJECTION_KEY } from './constants.mjs';\nimport { useTooltipContentProps } from './content.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { usePopperContainerId } from '../../../hooks/use-popper-container/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\nimport ElPopperContent from '../../popper/src/content2.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTooltipContent\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: useTooltipContentProps,\n setup(__props, { expose }) {\n const props = __props;\n const { selector } = usePopperContainerId();\n const ns = useNamespace(\"tooltip\");\n const contentRef = ref(null);\n const destroyed = ref(false);\n const {\n controlled,\n id,\n open,\n trigger,\n onClose,\n onOpen,\n onShow,\n onHide,\n onBeforeShow,\n onBeforeHide\n } = inject(TOOLTIP_INJECTION_KEY, void 0);\n const transitionClass = computed(() => {\n return props.transition || `${ns.namespace.value}-fade-in-linear`;\n });\n const persistentRef = computed(() => {\n if (process.env.NODE_ENV === \"test\") {\n return true;\n }\n return props.persistent;\n });\n onBeforeUnmount(() => {\n destroyed.value = true;\n });\n const shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open);\n });\n const shouldShow = computed(() => {\n return props.disabled ? false : unref(open);\n });\n const appendTo = computed(() => {\n return props.appendTo || selector.value;\n });\n const contentStyle = computed(() => {\n var _a;\n return (_a = props.style) != null ? _a : {};\n });\n const ariaHidden = computed(() => !unref(open));\n const onTransitionLeave = () => {\n onHide();\n };\n const stopWhenControlled = () => {\n if (unref(controlled))\n return true;\n };\n const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && unref(trigger) === \"hover\") {\n onOpen();\n }\n });\n const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === \"hover\") {\n onClose();\n }\n });\n const onBeforeEnter = () => {\n var _a, _b;\n (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n onBeforeShow == null ? void 0 : onBeforeShow();\n };\n const onBeforeLeave = () => {\n onBeforeHide == null ? void 0 : onBeforeHide();\n };\n const onAfterShow = () => {\n onShow();\n stopHandle = onClickOutside(computed(() => {\n var _a;\n return (_a = contentRef.value) == null ? void 0 : _a.popperContentRef;\n }), () => {\n if (unref(controlled))\n return;\n const $trigger = unref(trigger);\n if ($trigger !== \"hover\") {\n onClose();\n }\n });\n };\n const onBlur = () => {\n if (!props.virtualTriggering) {\n onClose();\n }\n };\n let stopHandle;\n watch(() => unref(open), (val) => {\n if (!val) {\n stopHandle == null ? void 0 : stopHandle();\n }\n }, {\n flush: \"post\"\n });\n watch(() => props.content, () => {\n var _a, _b;\n (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n });\n expose({\n contentRef\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Teleport, {\n disabled: !_ctx.teleported,\n to: unref(appendTo)\n }, [\n createVNode(Transition, {\n name: unref(transitionClass),\n onAfterLeave: onTransitionLeave,\n onBeforeEnter,\n onAfterEnter: onAfterShow,\n onBeforeLeave\n }, {\n default: withCtx(() => [\n unref(shouldRender) ? withDirectives((openBlock(), createBlock(unref(ElPopperContent), mergeProps({\n key: 0,\n id: unref(id),\n ref_key: \"contentRef\",\n ref: contentRef\n }, _ctx.$attrs, {\n \"aria-label\": _ctx.ariaLabel,\n \"aria-hidden\": unref(ariaHidden),\n \"boundaries-padding\": _ctx.boundariesPadding,\n \"fallback-placements\": _ctx.fallbackPlacements,\n \"gpu-acceleration\": _ctx.gpuAcceleration,\n offset: _ctx.offset,\n placement: _ctx.placement,\n \"popper-options\": _ctx.popperOptions,\n strategy: _ctx.strategy,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n pure: _ctx.pure,\n \"popper-class\": _ctx.popperClass,\n \"popper-style\": [_ctx.popperStyle, unref(contentStyle)],\n \"reference-el\": _ctx.referenceEl,\n \"trigger-target-el\": _ctx.triggerTargetEl,\n visible: unref(shouldShow),\n \"z-index\": _ctx.zIndex,\n onMouseenter: unref(onContentEnter),\n onMouseleave: unref(onContentLeave),\n onBlur,\n onClose: unref(onClose)\n }), {\n default: withCtx(() => [\n !destroyed.value ? renderSlot(_ctx.$slots, \"default\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"id\", \"aria-label\", \"aria-hidden\", \"boundaries-padding\", \"fallback-placements\", \"gpu-acceleration\", \"offset\", \"placement\", \"popper-options\", \"strategy\", \"effect\", \"enterable\", \"pure\", \"popper-class\", \"popper-style\", \"reference-el\", \"trigger-target-el\", \"visible\", \"z-index\", \"onMouseenter\", \"onMouseleave\", \"onClose\"])), [\n [vShow, unref(shouldShow)]\n ]) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"name\"])\n ], 8, [\"disabled\", \"to\"]);\n };\n }\n});\nvar ElTooltipContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"content.vue\"]]);\n\nexport { ElTooltipContent as default };\n//# sourceMappingURL=content2.mjs.map\n","import { defineComponent, inject, watch, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants.mjs';\nimport { popperArrowProps } from './arrow.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElPopperArrow\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popperArrowProps,\n setup(__props, { expose }) {\n const props = __props;\n const ns = useNamespace(\"popper\");\n const { arrowOffset, arrowRef, arrowStyle } = inject(POPPER_CONTENT_INJECTION_KEY, void 0);\n watch(() => props.arrowOffset, (val) => {\n arrowOffset.value = val;\n });\n onBeforeUnmount(() => {\n arrowRef.value = void 0;\n });\n expose({\n arrowRef\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n ref_key: \"arrowRef\",\n ref: arrowRef,\n class: normalizeClass(unref(ns).e(\"arrow\")),\n style: normalizeStyle(unref(arrowStyle)),\n \"data-popper-arrow\": \"\"\n }, null, 6);\n };\n }\n});\nvar ElPopperArrow = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"arrow.vue\"]]);\n\nexport { ElPopperArrow as default };\n//# sourceMappingURL=arrow2.mjs.map\n","import { defineComponent, ref, unref, toRef, computed, provide, readonly, watch, onDeactivated, openBlock, createBlock, withCtx, createVNode, renderSlot, createCommentVNode, createElementBlock, toDisplayString } from 'vue';\nimport { ElPopper } from '../../popper/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { TOOLTIP_INJECTION_KEY } from './constants.mjs';\nimport { useTooltipProps, tooltipEmits, useTooltipModelToggle } from './tooltip.mjs';\nimport ElTooltipTrigger from './trigger2.mjs';\nimport ElTooltipContent from './content2.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { usePopperContainer } from '../../../hooks/use-popper-container/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useDelayedToggle } from '../../../hooks/use-delayed-toggle/index.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\nimport ElPopperArrow from '../../popper/src/arrow2.mjs';\n\nconst _hoisted_1 = [\"innerHTML\"];\nconst _hoisted_2 = { key: 1 };\nconst __default__ = defineComponent({\n name: \"ElTooltip\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: useTooltipProps,\n emits: tooltipEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n usePopperContainer();\n const id = useId();\n const popperRef = ref();\n const contentRef = ref();\n const updatePopper = () => {\n var _a;\n const popperComponent = unref(popperRef);\n if (popperComponent) {\n (_a = popperComponent.popperInstanceRef) == null ? void 0 : _a.update();\n }\n };\n const open = ref(false);\n const toggleReason = ref();\n const { show, hide, hasUpdateHandler } = useTooltipModelToggle({\n indicator: open,\n toggleReason\n });\n const { onOpen, onClose } = useDelayedToggle({\n showAfter: toRef(props, \"showAfter\"),\n hideAfter: toRef(props, \"hideAfter\"),\n autoClose: toRef(props, \"autoClose\"),\n open: show,\n close: hide\n });\n const controlled = computed(() => isBoolean(props.visible) && !hasUpdateHandler.value);\n provide(TOOLTIP_INJECTION_KEY, {\n controlled,\n id,\n open: readonly(open),\n trigger: toRef(props, \"trigger\"),\n onOpen: (event) => {\n onOpen(event);\n },\n onClose: (event) => {\n onClose(event);\n },\n onToggle: (event) => {\n if (unref(open)) {\n onClose(event);\n } else {\n onOpen(event);\n }\n },\n onShow: () => {\n emit(\"show\", toggleReason.value);\n },\n onHide: () => {\n emit(\"hide\", toggleReason.value);\n },\n onBeforeShow: () => {\n emit(\"before-show\", toggleReason.value);\n },\n onBeforeHide: () => {\n emit(\"before-hide\", toggleReason.value);\n },\n updatePopper\n });\n watch(() => props.disabled, (disabled) => {\n if (disabled && open.value) {\n open.value = false;\n }\n });\n const isFocusInsideContent = (event) => {\n var _a, _b;\n const popperContent = (_b = (_a = contentRef.value) == null ? void 0 : _a.contentRef) == null ? void 0 : _b.popperContentRef;\n const activeElement = (event == null ? void 0 : event.relatedTarget) || document.activeElement;\n return popperContent && popperContent.contains(activeElement);\n };\n onDeactivated(() => open.value && hide());\n expose({\n popperRef,\n contentRef,\n isFocusInsideContent,\n updatePopper,\n onOpen,\n onClose,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElPopper), {\n ref_key: \"popperRef\",\n ref: popperRef,\n role: _ctx.role\n }, {\n default: withCtx(() => [\n createVNode(ElTooltipTrigger, {\n disabled: _ctx.disabled,\n trigger: _ctx.trigger,\n \"trigger-keys\": _ctx.triggerKeys,\n \"virtual-ref\": _ctx.virtualRef,\n \"virtual-triggering\": _ctx.virtualTriggering\n }, {\n default: withCtx(() => [\n _ctx.$slots.default ? renderSlot(_ctx.$slots, \"default\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"disabled\", \"trigger\", \"trigger-keys\", \"virtual-ref\", \"virtual-triggering\"]),\n createVNode(ElTooltipContent, {\n ref_key: \"contentRef\",\n ref: contentRef,\n \"aria-label\": _ctx.ariaLabel,\n \"boundaries-padding\": _ctx.boundariesPadding,\n content: _ctx.content,\n disabled: _ctx.disabled,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"fallback-placements\": _ctx.fallbackPlacements,\n \"hide-after\": _ctx.hideAfter,\n \"gpu-acceleration\": _ctx.gpuAcceleration,\n offset: _ctx.offset,\n persistent: _ctx.persistent,\n \"popper-class\": _ctx.popperClass,\n \"popper-style\": _ctx.popperStyle,\n placement: _ctx.placement,\n \"popper-options\": _ctx.popperOptions,\n pure: _ctx.pure,\n \"raw-content\": _ctx.rawContent,\n \"reference-el\": _ctx.referenceEl,\n \"trigger-target-el\": _ctx.triggerTargetEl,\n \"show-after\": _ctx.showAfter,\n strategy: _ctx.strategy,\n teleported: _ctx.teleported,\n transition: _ctx.transition,\n \"virtual-triggering\": _ctx.virtualTriggering,\n \"z-index\": _ctx.zIndex,\n \"append-to\": _ctx.appendTo\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"content\", {}, () => [\n _ctx.rawContent ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n innerHTML: _ctx.content\n }, null, 8, _hoisted_1)) : (openBlock(), createElementBlock(\"span\", _hoisted_2, toDisplayString(_ctx.content), 1))\n ]),\n _ctx.showArrow ? (openBlock(), createBlock(unref(ElPopperArrow), {\n key: 0,\n \"arrow-offset\": _ctx.arrowOffset\n }, null, 8, [\"arrow-offset\"])) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"aria-label\", \"boundaries-padding\", \"content\", \"disabled\", \"effect\", \"enterable\", \"fallback-placements\", \"hide-after\", \"gpu-acceleration\", \"offset\", \"persistent\", \"popper-class\", \"popper-style\", \"placement\", \"popper-options\", \"pure\", \"raw-content\", \"reference-el\", \"trigger-target-el\", \"show-after\", \"strategy\", \"teleported\", \"transition\", \"virtual-triggering\", \"z-index\", \"append-to\"])\n ]),\n _: 3\n }, 8, [\"role\"]);\n };\n }\n});\nvar Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"tooltip.vue\"]]);\n\nexport { Tooltip as default };\n//# sourceMappingURL=tooltip2.mjs.map\n","import '../../utils/index.mjs';\nimport Tooltip from './src/tooltip2.mjs';\nexport { tooltipEmits, useTooltipModelToggle, useTooltipModelToggleEmits, useTooltipModelToggleProps, useTooltipProps } from './src/tooltip.mjs';\nexport { useTooltipTriggerProps } from './src/trigger.mjs';\nexport { useTooltipContentProps } from './src/content.mjs';\nexport { TOOLTIP_INJECTION_KEY } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElTooltip = withInstall(Tooltip);\n\nexport { ElTooltip, ElTooltip as default };\n//# sourceMappingURL=index.mjs.map\n","import { NOOP, isString, isObject } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { UPDATE_MODEL_EVENT, INPUT_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst autocompleteProps = buildProps({\n valueKey: {\n type: String,\n default: \"value\"\n },\n modelValue: {\n type: [String, Number],\n default: \"\"\n },\n debounce: {\n type: Number,\n default: 300\n },\n placement: {\n type: definePropType(String),\n values: [\n \"top\",\n \"top-start\",\n \"top-end\",\n \"bottom\",\n \"bottom-start\",\n \"bottom-end\"\n ],\n default: \"bottom-start\"\n },\n fetchSuggestions: {\n type: definePropType([Function, Array]),\n default: NOOP\n },\n popperClass: {\n type: String,\n default: \"\"\n },\n triggerOnFocus: {\n type: Boolean,\n default: true\n },\n selectWhenUnmatched: {\n type: Boolean,\n default: false\n },\n hideLoading: {\n type: Boolean,\n default: false\n },\n teleported: useTooltipContentProps.teleported,\n highlightFirstItem: {\n type: Boolean,\n default: false\n },\n fitInputWidth: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n name: String,\n ...useAriaProps([\"ariaLabel\"])\n});\nconst autocompleteEmits = {\n [UPDATE_MODEL_EVENT]: (value) => isString(value),\n [INPUT_EVENT]: (value) => isString(value),\n [CHANGE_EVENT]: (value) => isString(value),\n focus: (evt) => evt instanceof FocusEvent,\n blur: (evt) => evt instanceof FocusEvent,\n clear: () => true,\n select: (item) => isObject(item)\n};\n\nexport { autocompleteEmits, autocompleteProps };\n//# sourceMappingURL=autocomplete.mjs.map\n","import { defineComponent, useAttrs as useAttrs$1, ref, computed, onMounted, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, normalizeStyle, createVNode, createElementBlock, renderSlot, Fragment, renderList, createTextVNode, toDisplayString, mergeProps, withKeys, withModifiers, createSlots } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport { onClickOutside } from '@vueuse/core';\nimport { Loading } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../form/index.mjs';\nimport { autocompleteProps, autocompleteEmits } from './autocomplete.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useAttrs } from '../../../hooks/use-attrs/index.mjs';\nimport { useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { isArray } from '@vue/shared';\nimport { throwError } from '../../../utils/error.mjs';\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst _hoisted_1 = [\"aria-expanded\", \"aria-owns\"];\nconst _hoisted_2 = { key: 0 };\nconst _hoisted_3 = [\"id\", \"aria-selected\", \"onClick\"];\nconst COMPONENT_NAME = \"ElAutocomplete\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME,\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: autocompleteProps,\n emits: autocompleteEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const attrs = useAttrs();\n const rawAttrs = useAttrs$1();\n const disabled = useFormDisabled();\n const ns = useNamespace(\"autocomplete\");\n const inputRef = ref();\n const regionRef = ref();\n const popperRef = ref();\n const listboxRef = ref();\n let readonly = false;\n let ignoreFocusEvent = false;\n const suggestions = ref([]);\n const highlightedIndex = ref(-1);\n const dropdownWidth = ref(\"\");\n const activated = ref(false);\n const suggestionDisabled = ref(false);\n const loading = ref(false);\n const listboxId = useId();\n const styles = computed(() => rawAttrs.style);\n const suggestionVisible = computed(() => {\n const isValidData = suggestions.value.length > 0;\n return (isValidData || loading.value) && activated.value;\n });\n const suggestionLoading = computed(() => !props.hideLoading && loading.value);\n const refInput = computed(() => {\n if (inputRef.value) {\n return Array.from(inputRef.value.$el.querySelectorAll(\"input\"));\n }\n return [];\n });\n const onSuggestionShow = () => {\n if (suggestionVisible.value) {\n dropdownWidth.value = `${inputRef.value.$el.offsetWidth}px`;\n }\n };\n const onHide = () => {\n highlightedIndex.value = -1;\n };\n const getData = async (queryString) => {\n if (suggestionDisabled.value)\n return;\n const cb = (suggestionList) => {\n loading.value = false;\n if (suggestionDisabled.value)\n return;\n if (isArray(suggestionList)) {\n suggestions.value = suggestionList;\n highlightedIndex.value = props.highlightFirstItem ? 0 : -1;\n } else {\n throwError(COMPONENT_NAME, \"autocomplete suggestions must be an array\");\n }\n };\n loading.value = true;\n if (isArray(props.fetchSuggestions)) {\n cb(props.fetchSuggestions);\n } else {\n const result = await props.fetchSuggestions(queryString, cb);\n if (isArray(result))\n cb(result);\n }\n };\n const debouncedGetData = debounce(getData, props.debounce);\n const handleInput = (value) => {\n const valuePresented = !!value;\n emit(INPUT_EVENT, value);\n emit(UPDATE_MODEL_EVENT, value);\n suggestionDisabled.value = false;\n activated.value || (activated.value = valuePresented);\n if (!props.triggerOnFocus && !value) {\n suggestionDisabled.value = true;\n suggestions.value = [];\n return;\n }\n debouncedGetData(value);\n };\n const handleMouseDown = (event) => {\n var _a;\n if (disabled.value)\n return;\n if (((_a = event.target) == null ? void 0 : _a.tagName) !== \"INPUT\" || refInput.value.includes(document.activeElement)) {\n activated.value = true;\n }\n };\n const handleChange = (value) => {\n emit(CHANGE_EVENT, value);\n };\n const handleFocus = (evt) => {\n if (!ignoreFocusEvent) {\n activated.value = true;\n emit(\"focus\", evt);\n if (props.triggerOnFocus && !readonly) {\n debouncedGetData(String(props.modelValue));\n }\n } else {\n ignoreFocusEvent = false;\n }\n };\n const handleBlur = (evt) => {\n setTimeout(() => {\n var _a;\n if ((_a = popperRef.value) == null ? void 0 : _a.isFocusInsideContent()) {\n ignoreFocusEvent = true;\n return;\n }\n activated.value && close();\n emit(\"blur\", evt);\n });\n };\n const handleClear = () => {\n activated.value = false;\n emit(UPDATE_MODEL_EVENT, \"\");\n emit(\"clear\");\n };\n const handleKeyEnter = async () => {\n if (suggestionVisible.value && highlightedIndex.value >= 0 && highlightedIndex.value < suggestions.value.length) {\n handleSelect(suggestions.value[highlightedIndex.value]);\n } else if (props.selectWhenUnmatched) {\n emit(\"select\", { value: props.modelValue });\n suggestions.value = [];\n highlightedIndex.value = -1;\n }\n };\n const handleKeyEscape = (evt) => {\n if (suggestionVisible.value) {\n evt.preventDefault();\n evt.stopPropagation();\n close();\n }\n };\n const close = () => {\n activated.value = false;\n };\n const focus = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.blur();\n };\n const handleSelect = async (item) => {\n emit(INPUT_EVENT, item[props.valueKey]);\n emit(UPDATE_MODEL_EVENT, item[props.valueKey]);\n emit(\"select\", item);\n suggestions.value = [];\n highlightedIndex.value = -1;\n };\n const highlight = (index) => {\n if (!suggestionVisible.value || loading.value)\n return;\n if (index < 0) {\n highlightedIndex.value = -1;\n return;\n }\n if (index >= suggestions.value.length) {\n index = suggestions.value.length - 1;\n }\n const suggestion = regionRef.value.querySelector(`.${ns.be(\"suggestion\", \"wrap\")}`);\n const suggestionList = suggestion.querySelectorAll(`.${ns.be(\"suggestion\", \"list\")} li`);\n const highlightItem = suggestionList[index];\n const scrollTop = suggestion.scrollTop;\n const { offsetTop, scrollHeight } = highlightItem;\n if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n suggestion.scrollTop += scrollHeight;\n }\n if (offsetTop < scrollTop) {\n suggestion.scrollTop -= scrollHeight;\n }\n highlightedIndex.value = index;\n inputRef.value.ref.setAttribute(\"aria-activedescendant\", `${listboxId.value}-item-${highlightedIndex.value}`);\n };\n onClickOutside(listboxRef, () => {\n suggestionVisible.value && close();\n });\n onMounted(() => {\n ;\n inputRef.value.ref.setAttribute(\"role\", \"textbox\");\n inputRef.value.ref.setAttribute(\"aria-autocomplete\", \"list\");\n inputRef.value.ref.setAttribute(\"aria-controls\", \"id\");\n inputRef.value.ref.setAttribute(\"aria-activedescendant\", `${listboxId.value}-item-${highlightedIndex.value}`);\n readonly = inputRef.value.ref.hasAttribute(\"readonly\");\n });\n expose({\n highlightedIndex,\n activated,\n loading,\n inputRef,\n popperRef,\n suggestions,\n handleSelect,\n handleKeyEnter,\n focus,\n blur,\n close,\n highlight\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), {\n ref_key: \"popperRef\",\n ref: popperRef,\n visible: unref(suggestionVisible),\n placement: _ctx.placement,\n \"fallback-placements\": [\"bottom-start\", \"top-start\"],\n \"popper-class\": [unref(ns).e(\"popper\"), _ctx.popperClass],\n teleported: _ctx.teleported,\n \"gpu-acceleration\": false,\n pure: \"\",\n \"manual-mode\": \"\",\n effect: \"light\",\n trigger: \"click\",\n transition: `${unref(ns).namespace.value}-zoom-in-top`,\n persistent: \"\",\n role: \"listbox\",\n onBeforeShow: onSuggestionShow,\n onHide\n }, {\n content: withCtx(() => [\n createElementVNode(\"div\", {\n ref_key: \"regionRef\",\n ref: regionRef,\n class: normalizeClass([unref(ns).b(\"suggestion\"), unref(ns).is(\"loading\", unref(suggestionLoading))]),\n style: normalizeStyle({\n [_ctx.fitInputWidth ? \"width\" : \"minWidth\"]: dropdownWidth.value,\n outline: \"none\"\n }),\n role: \"region\"\n }, [\n createVNode(unref(ElScrollbar), {\n id: unref(listboxId),\n tag: \"ul\",\n \"wrap-class\": unref(ns).be(\"suggestion\", \"wrap\"),\n \"view-class\": unref(ns).be(\"suggestion\", \"list\"),\n role: \"listbox\"\n }, {\n default: withCtx(() => [\n unref(suggestionLoading) ? (openBlock(), createElementBlock(\"li\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"loading\", {}, () => [\n createVNode(unref(ElIcon), {\n class: normalizeClass(unref(ns).is(\"loading\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(Loading))\n ]),\n _: 1\n }, 8, [\"class\"])\n ])\n ])) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(suggestions.value, (item, index) => {\n return openBlock(), createElementBlock(\"li\", {\n id: `${unref(listboxId)}-item-${index}`,\n key: index,\n class: normalizeClass({ highlighted: highlightedIndex.value === index }),\n role: \"option\",\n \"aria-selected\": highlightedIndex.value === index,\n onClick: ($event) => handleSelect(item)\n }, [\n renderSlot(_ctx.$slots, \"default\", { item }, () => [\n createTextVNode(toDisplayString(item[_ctx.valueKey]), 1)\n ])\n ], 10, _hoisted_3);\n }), 128))\n ]),\n _: 3\n }, 8, [\"id\", \"wrap-class\", \"view-class\"])\n ], 6)\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref_key: \"listboxRef\",\n ref: listboxRef,\n class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]),\n style: normalizeStyle(unref(styles)),\n role: \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-expanded\": unref(suggestionVisible),\n \"aria-owns\": unref(listboxId)\n }, [\n createVNode(unref(ElInput), mergeProps({\n ref_key: \"inputRef\",\n ref: inputRef\n }, unref(attrs), {\n clearable: _ctx.clearable,\n disabled: unref(disabled),\n name: _ctx.name,\n \"model-value\": _ctx.modelValue,\n \"aria-label\": _ctx.ariaLabel,\n onInput: handleInput,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onClear: handleClear,\n onKeydown: [\n _cache[0] || (_cache[0] = withKeys(withModifiers(($event) => highlight(highlightedIndex.value - 1), [\"prevent\"]), [\"up\"])),\n _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => highlight(highlightedIndex.value + 1), [\"prevent\"]), [\"down\"])),\n withKeys(handleKeyEnter, [\"enter\"]),\n withKeys(close, [\"tab\"]),\n withKeys(handleKeyEscape, [\"esc\"])\n ],\n onMousedown: handleMouseDown\n }), createSlots({ _: 2 }, [\n _ctx.$slots.prepend ? {\n name: \"prepend\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"prepend\")\n ])\n } : void 0,\n _ctx.$slots.append ? {\n name: \"append\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"append\")\n ])\n } : void 0,\n _ctx.$slots.prefix ? {\n name: \"prefix\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"prefix\")\n ])\n } : void 0,\n _ctx.$slots.suffix ? {\n name: \"suffix\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"suffix\")\n ])\n } : void 0\n ]), 1040, [\"clearable\", \"disabled\", \"name\", \"model-value\", \"aria-label\", \"onKeydown\"])\n ], 14, _hoisted_1)\n ]),\n _: 3\n }, 8, [\"visible\", \"placement\", \"popper-class\", \"teleported\", \"transition\"]);\n };\n }\n});\nvar Autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"autocomplete.vue\"]]);\n\nexport { Autocomplete as default };\n//# sourceMappingURL=autocomplete2.mjs.map\n","import '../../utils/index.mjs';\nimport Autocomplete from './src/autocomplete2.mjs';\nexport { autocompleteEmits, autocompleteProps } from './src/autocomplete.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElAutocomplete = withInstall(Autocomplete);\n\nexport { ElAutocomplete, ElAutocomplete as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { componentSizes } from '../../../constants/size.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst avatarProps = buildProps({\n size: {\n type: [Number, String],\n values: componentSizes,\n default: \"\",\n validator: (val) => isNumber(val)\n },\n shape: {\n type: String,\n values: [\"circle\", \"square\"],\n default: \"circle\"\n },\n icon: {\n type: iconPropType\n },\n src: {\n type: String,\n default: \"\"\n },\n alt: String,\n srcSet: String,\n fit: {\n type: definePropType(String),\n default: \"cover\"\n }\n});\nconst avatarEmits = {\n error: (evt) => evt instanceof Event\n};\n\nexport { avatarEmits, avatarProps };\n//# sourceMappingURL=avatar.mjs.map\n","import { defineComponent, ref, computed, watch, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, createBlock, withCtx, resolveDynamicComponent, renderSlot } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { avatarProps, avatarEmits } from './avatar.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isString } from '@vue/shared';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst _hoisted_1 = [\"src\", \"alt\", \"srcset\"];\nconst __default__ = defineComponent({\n name: \"ElAvatar\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: avatarProps,\n emits: avatarEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"avatar\");\n const hasLoadError = ref(false);\n const avatarClass = computed(() => {\n const { size, icon, shape } = props;\n const classList = [ns.b()];\n if (isString(size))\n classList.push(ns.m(size));\n if (icon)\n classList.push(ns.m(\"icon\"));\n if (shape)\n classList.push(ns.m(shape));\n return classList;\n });\n const sizeStyle = computed(() => {\n const { size } = props;\n return isNumber(size) ? ns.cssVarBlock({\n size: addUnit(size) || \"\"\n }) : void 0;\n });\n const fitStyle = computed(() => ({\n objectFit: props.fit\n }));\n watch(() => props.src, () => hasLoadError.value = false);\n function handleError(e) {\n hasLoadError.value = true;\n emit(\"error\", e);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(avatarClass)),\n style: normalizeStyle(unref(sizeStyle))\n }, [\n (_ctx.src || _ctx.srcSet) && !hasLoadError.value ? (openBlock(), createElementBlock(\"img\", {\n key: 0,\n src: _ctx.src,\n alt: _ctx.alt,\n srcset: _ctx.srcSet,\n style: normalizeStyle(unref(fitStyle)),\n onError: handleError\n }, null, 44, _hoisted_1)) : _ctx.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n })) : renderSlot(_ctx.$slots, \"default\", { key: 2 })\n ], 6);\n };\n }\n});\nvar Avatar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"avatar.vue\"]]);\n\nexport { Avatar as default };\n//# sourceMappingURL=avatar2.mjs.map\n","import '../../utils/index.mjs';\nimport Avatar from './src/avatar2.mjs';\nexport { avatarEmits, avatarProps } from './src/avatar.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElAvatar = withInstall(Avatar);\n\nexport { ElAvatar, ElAvatar as default };\n//# sourceMappingURL=index.mjs.map\n","const backtopProps = {\n visibilityHeight: {\n type: Number,\n default: 200\n },\n target: {\n type: String,\n default: \"\"\n },\n right: {\n type: Number,\n default: 40\n },\n bottom: {\n type: Number,\n default: 40\n }\n};\nconst backtopEmits = {\n click: (evt) => evt instanceof MouseEvent\n};\n\nexport { backtopEmits, backtopProps };\n//# sourceMappingURL=backtop2.mjs.map\n","import { shallowRef, ref, onMounted } from 'vue';\nimport { useThrottleFn, useEventListener } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport { throwError } from '../../../utils/error.mjs';\n\nconst useBackTop = (props, emit, componentName) => {\n const el = shallowRef();\n const container = shallowRef();\n const visible = ref(false);\n const handleScroll = () => {\n if (el.value)\n visible.value = el.value.scrollTop >= props.visibilityHeight;\n };\n const handleClick = (event) => {\n var _a;\n (_a = el.value) == null ? void 0 : _a.scrollTo({ top: 0, behavior: \"smooth\" });\n emit(\"click\", event);\n };\n const handleScrollThrottled = useThrottleFn(handleScroll, 300, true);\n useEventListener(container, \"scroll\", handleScrollThrottled);\n onMounted(() => {\n var _a;\n container.value = document;\n el.value = document.documentElement;\n if (props.target) {\n el.value = (_a = document.querySelector(props.target)) != null ? _a : void 0;\n if (!el.value) {\n throwError(componentName, `target does not exist: ${props.target}`);\n }\n container.value = el.value;\n }\n handleScroll();\n });\n return {\n visible,\n handleClick\n };\n};\n\nexport { useBackTop };\n//# sourceMappingURL=use-backtop.mjs.map\n","import { defineComponent, computed, openBlock, createBlock, Transition, unref, withCtx, createElementBlock, normalizeStyle, normalizeClass, withModifiers, renderSlot, createVNode, createCommentVNode } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { CaretTop } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport { backtopProps, backtopEmits } from './backtop2.mjs';\nimport { useBackTop } from './use-backtop.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst COMPONENT_NAME = \"ElBacktop\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: backtopProps,\n emits: backtopEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"backtop\");\n const { handleClick, visible } = useBackTop(props, emit, COMPONENT_NAME);\n const backTopStyle = computed(() => ({\n right: `${props.right}px`,\n bottom: `${props.bottom}px`\n }));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, {\n name: `${unref(ns).namespace.value}-fade-in`\n }, {\n default: withCtx(() => [\n unref(visible) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n style: normalizeStyle(unref(backTopStyle)),\n class: normalizeClass(unref(ns).b()),\n onClick: _cache[0] || (_cache[0] = withModifiers((...args) => unref(handleClick) && unref(handleClick)(...args), [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createVNode(unref(ElIcon), {\n class: normalizeClass(unref(ns).e(\"icon\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(CaretTop))\n ]),\n _: 1\n }, 8, [\"class\"])\n ])\n ], 6)) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"name\"]);\n };\n }\n});\nvar Backtop = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"backtop.vue\"]]);\n\nexport { Backtop as default };\n//# sourceMappingURL=backtop.mjs.map\n","import '../../utils/index.mjs';\nimport Backtop from './src/backtop.mjs';\nexport { backtopEmits, backtopProps } from './src/backtop2.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElBacktop = withInstall(Backtop);\n\nexport { ElBacktop, ElBacktop as default };\n//# sourceMappingURL=index.mjs.map\n","const breadcrumbKey = Symbol(\"breadcrumbKey\");\n\nexport { breadcrumbKey };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst breadcrumbProps = buildProps({\n separator: {\n type: String,\n default: \"/\"\n },\n separatorIcon: {\n type: iconPropType\n }\n});\n\nexport { breadcrumbProps };\n//# sourceMappingURL=breadcrumb.mjs.map\n","import { defineComponent, ref, provide, onMounted, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { breadcrumbKey } from './constants.mjs';\nimport { breadcrumbProps } from './breadcrumb.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"aria-label\"];\nconst __default__ = defineComponent({\n name: \"ElBreadcrumb\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: breadcrumbProps,\n setup(__props) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"breadcrumb\");\n const breadcrumb = ref();\n provide(breadcrumbKey, props);\n onMounted(() => {\n const items = breadcrumb.value.querySelectorAll(`.${ns.e(\"item\")}`);\n if (items.length) {\n items[items.length - 1].setAttribute(\"aria-current\", \"page\");\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"breadcrumb\",\n ref: breadcrumb,\n class: normalizeClass(unref(ns).b()),\n \"aria-label\": unref(t)(\"el.breadcrumb.label\"),\n role: \"navigation\"\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1);\n };\n }\n});\nvar Breadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"breadcrumb.vue\"]]);\n\nexport { Breadcrumb as default };\n//# sourceMappingURL=breadcrumb2.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst breadcrumbItemProps = buildProps({\n to: {\n type: definePropType([String, Object]),\n default: \"\"\n },\n replace: {\n type: Boolean,\n default: false\n }\n});\n\nexport { breadcrumbItemProps };\n//# sourceMappingURL=breadcrumb-item.mjs.map\n","import { defineComponent, getCurrentInstance, inject, ref, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createBlock, withCtx, resolveDynamicComponent, toDisplayString } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { breadcrumbKey } from './constants.mjs';\nimport { breadcrumbItemProps } from './breadcrumb-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElBreadcrumbItem\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: breadcrumbItemProps,\n setup(__props) {\n const props = __props;\n const instance = getCurrentInstance();\n const breadcrumbContext = inject(breadcrumbKey, void 0);\n const ns = useNamespace(\"breadcrumb\");\n const router = instance.appContext.config.globalProperties.$router;\n const link = ref();\n const onClick = () => {\n if (!props.to || !router)\n return;\n props.replace ? router.replace(props.to) : router.push(props.to);\n };\n return (_ctx, _cache) => {\n var _a, _b;\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(ns).e(\"item\"))\n }, [\n createElementVNode(\"span\", {\n ref_key: \"link\",\n ref: link,\n class: normalizeClass([unref(ns).e(\"inner\"), unref(ns).is(\"link\", !!_ctx.to)]),\n role: \"link\",\n onClick\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2),\n ((_a = unref(breadcrumbContext)) == null ? void 0 : _a.separatorIcon) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).e(\"separator\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(breadcrumbContext).separatorIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"separator\")),\n role: \"presentation\"\n }, toDisplayString((_b = unref(breadcrumbContext)) == null ? void 0 : _b.separator), 3))\n ], 2);\n };\n }\n});\nvar BreadcrumbItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"breadcrumb-item.vue\"]]);\n\nexport { BreadcrumbItem as default };\n//# sourceMappingURL=breadcrumb-item2.mjs.map\n","import '../../utils/index.mjs';\nimport Breadcrumb from './src/breadcrumb2.mjs';\nimport BreadcrumbItem from './src/breadcrumb-item2.mjs';\nexport { breadcrumbProps } from './src/breadcrumb.mjs';\nexport { breadcrumbItemProps } from './src/breadcrumb-item.mjs';\nexport { breadcrumbKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElBreadcrumb = withInstall(Breadcrumb, {\n BreadcrumbItem\n});\nconst ElBreadcrumbItem = withNoopInstall(BreadcrumbItem);\n\nexport { ElBreadcrumb, ElBreadcrumbItem, ElBreadcrumb as default };\n//# sourceMappingURL=index.mjs.map\n","import dayjs from 'dayjs';\nimport '../../../utils/index.mjs';\nimport { isDate, isArray } from '@vue/shared';\nimport { isEmpty } from '../../../utils/types.mjs';\n\nconst buildTimeList = (value, bound) => {\n return [\n value > 0 ? value - 1 : void 0,\n value,\n value < bound ? value + 1 : void 0\n ];\n};\nconst rangeArr = (n) => Array.from(Array.from({ length: n }).keys());\nconst extractDateFormat = (format) => {\n return format.replace(/\\W?m{1,2}|\\W?ZZ/g, \"\").replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, \"\").trim();\n};\nconst extractTimeFormat = (format) => {\n return format.replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?Y{2,4}/g, \"\").trim();\n};\nconst dateEquals = function(a, b) {\n const aIsDate = isDate(a);\n const bIsDate = isDate(b);\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime();\n }\n if (!aIsDate && !bIsDate) {\n return a === b;\n }\n return false;\n};\nconst valueEquals = function(a, b) {\n const aIsArray = isArray(a);\n const bIsArray = isArray(b);\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every((item, index) => dateEquals(item, b[index]));\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b);\n }\n return false;\n};\nconst parseDate = function(date, format, lang) {\n const day = isEmpty(format) || format === \"x\" ? dayjs(date).locale(lang) : dayjs(date, format).locale(lang);\n return day.isValid() ? day : void 0;\n};\nconst formatter = function(date, format, lang) {\n if (isEmpty(format))\n return date;\n if (format === \"x\")\n return +date;\n return dayjs(date).locale(lang).format(format);\n};\nconst makeList = (total, method) => {\n var _a;\n const arr = [];\n const disabledArr = method == null ? void 0 : method();\n for (let i = 0; i < total; i++) {\n arr.push((_a = disabledArr == null ? void 0 : disabledArr.includes(i)) != null ? _a : false);\n }\n return arr;\n};\n\nexport { buildTimeList, dateEquals, extractDateFormat, extractTimeFormat, formatter, makeList, parseDate, rangeArr, valueEquals };\n//# sourceMappingURL=utils.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../time-picker/index.mjs';\nimport { rangeArr } from '../../time-picker/src/utils.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isObject } from '@vue/shared';\n\nconst getPrevMonthLastDays = (date, count) => {\n const lastDay = date.subtract(1, \"month\").endOf(\"month\").date();\n return rangeArr(count).map((_, index) => lastDay - (count - index - 1));\n};\nconst getMonthDays = (date) => {\n const days = date.daysInMonth();\n return rangeArr(days).map((_, index) => index + 1);\n};\nconst toNestedArr = (days) => rangeArr(days.length / 7).map((index) => {\n const start = index * 7;\n return days.slice(start, start + 7);\n});\nconst dateTableProps = buildProps({\n selectedDay: {\n type: definePropType(Object)\n },\n range: {\n type: definePropType(Array)\n },\n date: {\n type: definePropType(Object),\n required: true\n },\n hideHeader: {\n type: Boolean\n }\n});\nconst dateTableEmits = {\n pick: (value) => isObject(value)\n};\n\nexport { dateTableEmits, dateTableProps, getMonthDays, getPrevMonthLastDays, toNestedArr };\n//# sourceMappingURL=date-table.mjs.map\n","const datePickTypes = [\n \"year\",\n \"years\",\n \"month\",\n \"date\",\n \"dates\",\n \"week\",\n \"datetime\",\n \"datetimerange\",\n \"daterange\",\n \"monthrange\"\n];\nconst WEEK_DAYS = [\n \"sun\",\n \"mon\",\n \"tue\",\n \"wed\",\n \"thu\",\n \"fri\",\n \"sat\"\n];\n\nexport { WEEK_DAYS, datePickTypes };\n//# sourceMappingURL=date.mjs.map\n","import { computed } from 'vue';\nimport dayjs from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData.js';\nimport '../../../hooks/index.mjs';\nimport '../../time-picker/index.mjs';\nimport '../../../constants/index.mjs';\nimport { getPrevMonthLastDays, getMonthDays, toNestedArr } from './date-table.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { rangeArr } from '../../time-picker/src/utils.mjs';\nimport { WEEK_DAYS } from '../../../constants/date.mjs';\n\nconst useDateTable = (props, emit) => {\n dayjs.extend(localeData);\n const firstDayOfWeek = dayjs.localeData().firstDayOfWeek();\n const { t, lang } = useLocale();\n const now = dayjs().locale(lang.value);\n const isInRange = computed(() => !!props.range && !!props.range.length);\n const rows = computed(() => {\n let days = [];\n if (isInRange.value) {\n const [start, end] = props.range;\n const currentMonthRange = rangeArr(end.date() - start.date() + 1).map((index) => ({\n text: start.date() + index,\n type: \"current\"\n }));\n let remaining = currentMonthRange.length % 7;\n remaining = remaining === 0 ? 0 : 7 - remaining;\n const nextMonthRange = rangeArr(remaining).map((_, index) => ({\n text: index + 1,\n type: \"next\"\n }));\n days = currentMonthRange.concat(nextMonthRange);\n } else {\n const firstDay = props.date.startOf(\"month\").day();\n const prevMonthDays = getPrevMonthLastDays(props.date, (firstDay - firstDayOfWeek + 7) % 7).map((day) => ({\n text: day,\n type: \"prev\"\n }));\n const currentMonthDays = getMonthDays(props.date).map((day) => ({\n text: day,\n type: \"current\"\n }));\n days = [...prevMonthDays, ...currentMonthDays];\n const remaining = 7 - (days.length % 7 || 7);\n const nextMonthDays = rangeArr(remaining).map((_, index) => ({\n text: index + 1,\n type: \"next\"\n }));\n days = days.concat(nextMonthDays);\n }\n return toNestedArr(days);\n });\n const weekDays = computed(() => {\n const start = firstDayOfWeek;\n if (start === 0) {\n return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`));\n } else {\n return WEEK_DAYS.slice(start).concat(WEEK_DAYS.slice(0, start)).map((_) => t(`el.datepicker.weeks.${_}`));\n }\n });\n const getFormattedDate = (day, type) => {\n switch (type) {\n case \"prev\":\n return props.date.startOf(\"month\").subtract(1, \"month\").date(day);\n case \"next\":\n return props.date.startOf(\"month\").add(1, \"month\").date(day);\n case \"current\":\n return props.date.date(day);\n }\n };\n const handlePickDay = ({ text, type }) => {\n const date = getFormattedDate(text, type);\n emit(\"pick\", date);\n };\n const getSlotData = ({ text, type }) => {\n const day = getFormattedDate(text, type);\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format(\"YYYY-MM-DD\"),\n date: day.toDate()\n };\n };\n return {\n now,\n isInRange,\n rows,\n weekDays,\n getFormattedDate,\n handlePickDay,\n getSlotData\n };\n};\n\nexport { useDateTable };\n//# sourceMappingURL=use-date-table.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, Fragment, renderList, toDisplayString, createCommentVNode, createElementVNode, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { dateTableProps, dateTableEmits } from './date-table.mjs';\nimport { useDateTable } from './use-date-table.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = { key: 0 };\nconst _hoisted_2 = [\"onClick\"];\nconst __default__ = defineComponent({\n name: \"DateTable\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: dateTableProps,\n emits: dateTableEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const {\n isInRange,\n now,\n rows,\n weekDays,\n getFormattedDate,\n handlePickDay,\n getSlotData\n } = useDateTable(props, emit);\n const nsTable = useNamespace(\"calendar-table\");\n const nsDay = useNamespace(\"calendar-day\");\n const getCellClass = ({ text, type }) => {\n const classes = [type];\n if (type === \"current\") {\n const date = getFormattedDate(text, type);\n if (date.isSame(props.selectedDay, \"day\")) {\n classes.push(nsDay.is(\"selected\"));\n }\n if (date.isSame(now, \"day\")) {\n classes.push(nsDay.is(\"today\"));\n }\n }\n return classes;\n };\n expose({\n getFormattedDate\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"table\", {\n class: normalizeClass([unref(nsTable).b(), unref(nsTable).is(\"range\", unref(isInRange))]),\n cellspacing: \"0\",\n cellpadding: \"0\"\n }, [\n !_ctx.hideHeader ? (openBlock(), createElementBlock(\"thead\", _hoisted_1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(weekDays), (day) => {\n return openBlock(), createElementBlock(\"th\", { key: day }, toDisplayString(day), 1);\n }), 128))\n ])) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"tbody\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), (row, index) => {\n return openBlock(), createElementBlock(\"tr\", {\n key: index,\n class: normalizeClass({\n [unref(nsTable).e(\"row\")]: true,\n [unref(nsTable).em(\"row\", \"hide-border\")]: index === 0 && _ctx.hideHeader\n })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, key) => {\n return openBlock(), createElementBlock(\"td\", {\n key,\n class: normalizeClass(getCellClass(cell)),\n onClick: ($event) => unref(handlePickDay)(cell)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsDay).b())\n }, [\n renderSlot(_ctx.$slots, \"date-cell\", {\n data: unref(getSlotData)(cell)\n }, () => [\n createElementVNode(\"span\", null, toDisplayString(cell.text), 1)\n ])\n ], 2)\n ], 10, _hoisted_2);\n }), 128))\n ], 2);\n }), 128))\n ])\n ], 2);\n };\n }\n});\nvar DateTable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"date-table.vue\"]]);\n\nexport { DateTable as default };\n//# sourceMappingURL=date-table2.mjs.map\n","import { ref, computed } from 'vue';\nimport dayjs from 'dayjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\n\nconst adjacentMonth = (start, end) => {\n const firstMonthLastDay = start.endOf(\"month\");\n const lastMonthFirstDay = end.startOf(\"month\");\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, \"week\");\n const lastMonthStartDay = isSameWeek ? lastMonthFirstDay.add(1, \"week\") : lastMonthFirstDay;\n return [\n [start, firstMonthLastDay],\n [lastMonthStartDay.startOf(\"week\"), end]\n ];\n};\nconst threeConsecutiveMonth = (start, end) => {\n const firstMonthLastDay = start.endOf(\"month\");\n const secondMonthFirstDay = start.add(1, \"month\").startOf(\"month\");\n const secondMonthStartDay = firstMonthLastDay.isSame(secondMonthFirstDay, \"week\") ? secondMonthFirstDay.add(1, \"week\") : secondMonthFirstDay;\n const secondMonthLastDay = secondMonthStartDay.endOf(\"month\");\n const lastMonthFirstDay = end.startOf(\"month\");\n const lastMonthStartDay = secondMonthLastDay.isSame(lastMonthFirstDay, \"week\") ? lastMonthFirstDay.add(1, \"week\") : lastMonthFirstDay;\n return [\n [start, firstMonthLastDay],\n [secondMonthStartDay.startOf(\"week\"), secondMonthLastDay],\n [lastMonthStartDay.startOf(\"week\"), end]\n ];\n};\nconst useCalendar = (props, emit, componentName) => {\n const { lang } = useLocale();\n const selectedDay = ref();\n const now = dayjs().locale(lang.value);\n const realSelectedDay = computed({\n get() {\n if (!props.modelValue)\n return selectedDay.value;\n return date.value;\n },\n set(val) {\n if (!val)\n return;\n selectedDay.value = val;\n const result = val.toDate();\n emit(INPUT_EVENT, result);\n emit(UPDATE_MODEL_EVENT, result);\n }\n });\n const validatedRange = computed(() => {\n if (!props.range)\n return [];\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value));\n const [startDayjs, endDayjs] = rangeArrDayjs;\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn(componentName, \"end time should be greater than start time\");\n return [];\n }\n if (startDayjs.isSame(endDayjs, \"month\")) {\n return calculateValidatedDateRange(startDayjs, endDayjs);\n } else {\n if (startDayjs.add(1, \"month\").month() !== endDayjs.month()) {\n debugWarn(componentName, \"start time and end time interval must not exceed two months\");\n return [];\n }\n return calculateValidatedDateRange(startDayjs, endDayjs);\n }\n });\n const date = computed(() => {\n if (!props.modelValue) {\n return realSelectedDay.value || (validatedRange.value.length ? validatedRange.value[0][0] : now);\n } else {\n return dayjs(props.modelValue).locale(lang.value);\n }\n });\n const prevMonthDayjs = computed(() => date.value.subtract(1, \"month\").date(1));\n const nextMonthDayjs = computed(() => date.value.add(1, \"month\").date(1));\n const prevYearDayjs = computed(() => date.value.subtract(1, \"year\").date(1));\n const nextYearDayjs = computed(() => date.value.add(1, \"year\").date(1));\n const calculateValidatedDateRange = (startDayjs, endDayjs) => {\n const firstDay = startDayjs.startOf(\"week\");\n const lastDay = endDayjs.endOf(\"week\");\n const firstMonth = firstDay.get(\"month\");\n const lastMonth = lastDay.get(\"month\");\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]];\n } else if ((firstMonth + 1) % 12 === lastMonth) {\n return adjacentMonth(firstDay, lastDay);\n } else if (firstMonth + 2 === lastMonth || (firstMonth + 1) % 11 === lastMonth) {\n return threeConsecutiveMonth(firstDay, lastDay);\n } else {\n debugWarn(componentName, \"start time and end time interval must not exceed two months\");\n return [];\n }\n };\n const pickDay = (day) => {\n realSelectedDay.value = day;\n };\n const selectDate = (type) => {\n const dateMap = {\n \"prev-month\": prevMonthDayjs.value,\n \"next-month\": nextMonthDayjs.value,\n \"prev-year\": prevYearDayjs.value,\n \"next-year\": nextYearDayjs.value,\n today: now\n };\n const day = dateMap[type];\n if (!day.isSame(date.value, \"day\")) {\n pickDay(day);\n }\n };\n return {\n calculateValidatedDateRange,\n date,\n realSelectedDay,\n pickDay,\n selectDate,\n validatedRange\n };\n};\n\nexport { useCalendar };\n//# sourceMappingURL=use-calendar.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { isArray, isDate } from '@vue/shared';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { UPDATE_MODEL_EVENT, INPUT_EVENT } from '../../../constants/event.mjs';\n\nconst isValidRange = (range) => isArray(range) && range.length === 2 && range.every((item) => isDate(item));\nconst calendarProps = buildProps({\n modelValue: {\n type: Date\n },\n range: {\n type: definePropType(Array),\n validator: isValidRange\n }\n});\nconst calendarEmits = {\n [UPDATE_MODEL_EVENT]: (value) => isDate(value),\n [INPUT_EVENT]: (value) => isDate(value)\n};\n\nexport { calendarEmits, calendarProps };\n//# sourceMappingURL=calendar.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, toDisplayString, createVNode, withCtx, createTextVNode, createCommentVNode, createSlots, normalizeProps, guardReactiveProps, Fragment, renderList, createBlock } from 'vue';\nimport { ElButtonGroup, ElButton } from '../../button/index.mjs';\nimport '../../../hooks/index.mjs';\nimport DateTable from './date-table2.mjs';\nimport { useCalendar } from './use-calendar.mjs';\nimport { calendarProps, calendarEmits } from './calendar.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\n\nconst COMPONENT_NAME = \"ElCalendar\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: calendarProps,\n emits: calendarEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const ns = useNamespace(\"calendar\");\n const {\n calculateValidatedDateRange,\n date,\n pickDay,\n realSelectedDay,\n selectDate,\n validatedRange\n } = useCalendar(props, emit, COMPONENT_NAME);\n const { t } = useLocale();\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format(\"M\")}`;\n return `${date.value.year()} ${t(\"el.datepicker.year\")} ${t(pickedMonth)}`;\n });\n expose({\n selectedDay: realSelectedDay,\n pickDay,\n selectDate,\n calculateValidatedDateRange\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n renderSlot(_ctx.$slots, \"header\", { date: unref(i18nDate) }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"title\"))\n }, toDisplayString(unref(i18nDate)), 3),\n unref(validatedRange).length === 0 ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"button-group\"))\n }, [\n createVNode(unref(ElButtonGroup), null, {\n default: withCtx(() => [\n createVNode(unref(ElButton), {\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = ($event) => unref(selectDate)(\"prev-month\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.prevMonth\")), 1)\n ]),\n _: 1\n }),\n createVNode(unref(ElButton), {\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = ($event) => unref(selectDate)(\"today\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.today\")), 1)\n ]),\n _: 1\n }),\n createVNode(unref(ElButton), {\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = ($event) => unref(selectDate)(\"next-month\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.nextMonth\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 2)) : createCommentVNode(\"v-if\", true)\n ])\n ], 2),\n unref(validatedRange).length === 0 ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"body\"))\n }, [\n createVNode(DateTable, {\n date: unref(date),\n \"selected-day\": unref(realSelectedDay),\n onPick: unref(pickDay)\n }, createSlots({ _: 2 }, [\n _ctx.$slots[\"date-cell\"] ? {\n name: \"date-cell\",\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, \"date-cell\", normalizeProps(guardReactiveProps(data)))\n ])\n } : void 0\n ]), 1032, [\"date\", \"selected-day\", \"onPick\"])\n ], 2)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"body\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(validatedRange), (range_, index) => {\n return openBlock(), createBlock(DateTable, {\n key: index,\n date: range_[0],\n \"selected-day\": unref(realSelectedDay),\n range: range_,\n \"hide-header\": index !== 0,\n onPick: unref(pickDay)\n }, createSlots({ _: 2 }, [\n _ctx.$slots[\"date-cell\"] ? {\n name: \"date-cell\",\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, \"date-cell\", normalizeProps(guardReactiveProps(data)))\n ])\n } : void 0\n ]), 1032, [\"date\", \"selected-day\", \"range\", \"hide-header\", \"onPick\"]);\n }), 128))\n ], 2))\n ], 2);\n };\n }\n});\nvar Calendar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"calendar.vue\"]]);\n\nexport { Calendar as default };\n//# sourceMappingURL=calendar2.mjs.map\n","import '../../utils/index.mjs';\nimport Calendar from './src/calendar2.mjs';\nexport { calendarEmits, calendarProps } from './src/calendar.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCalendar = withInstall(Calendar);\n\nexport { ElCalendar, ElCalendar as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst cardProps = buildProps({\n header: {\n type: String,\n default: \"\"\n },\n footer: {\n type: String,\n default: \"\"\n },\n bodyStyle: {\n type: definePropType([String, Object, Array]),\n default: \"\"\n },\n bodyClass: String,\n shadow: {\n type: String,\n values: [\"always\", \"hover\", \"never\"],\n default: \"always\"\n }\n});\n\nexport { cardProps };\n//# sourceMappingURL=card.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, normalizeStyle } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { cardProps } from './card.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElCard\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: cardProps,\n setup(__props) {\n const ns = useNamespace(\"card\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).b(), unref(ns).is(`${_ctx.shadow}-shadow`)])\n }, [\n _ctx.$slots.header || _ctx.header ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n renderSlot(_ctx.$slots, \"header\", {}, () => [\n createTextVNode(toDisplayString(_ctx.header), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).e(\"body\"), _ctx.bodyClass]),\n style: normalizeStyle(_ctx.bodyStyle)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6),\n _ctx.$slots.footer || _ctx.footer ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"footer\"))\n }, [\n renderSlot(_ctx.$slots, \"footer\", {}, () => [\n createTextVNode(toDisplayString(_ctx.footer), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar Card = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"card.vue\"]]);\n\nexport { Card as default };\n//# sourceMappingURL=card2.mjs.map\n","import '../../utils/index.mjs';\nimport Card from './src/card2.mjs';\nexport { cardProps } from './src/card.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCard = withInstall(Card);\n\nexport { ElCard, ElCard as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst carouselProps = buildProps({\n initialIndex: {\n type: Number,\n default: 0\n },\n height: {\n type: String,\n default: \"\"\n },\n trigger: {\n type: String,\n values: [\"hover\", \"click\"],\n default: \"hover\"\n },\n autoplay: {\n type: Boolean,\n default: true\n },\n interval: {\n type: Number,\n default: 3e3\n },\n indicatorPosition: {\n type: String,\n values: [\"\", \"none\", \"outside\"],\n default: \"\"\n },\n arrow: {\n type: String,\n values: [\"always\", \"hover\", \"never\"],\n default: \"hover\"\n },\n type: {\n type: String,\n values: [\"\", \"card\"],\n default: \"\"\n },\n loop: {\n type: Boolean,\n default: true\n },\n direction: {\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: \"horizontal\"\n },\n pauseOnHover: {\n type: Boolean,\n default: true\n },\n motionBlur: {\n type: Boolean,\n default: false\n }\n});\nconst carouselEmits = {\n change: (current, prev) => [current, prev].every(isNumber)\n};\n\nexport { carouselEmits, carouselProps };\n//# sourceMappingURL=carousel.mjs.map\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","const carouselContextKey = Symbol(\"carouselContextKey\");\n\nexport { carouselContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { isVNode, shallowRef } from 'vue';\nimport '../../utils/index.mjs';\nimport { flattedChildren } from '../../utils/vue/vnode.mjs';\n\nconst getOrderedChildren = (vm, childComponentName, children) => {\n const nodes = flattedChildren(vm.subTree).filter((n) => {\n var _a;\n return isVNode(n) && ((_a = n.type) == null ? void 0 : _a.name) === childComponentName && !!n.component;\n });\n const uids = nodes.map((n) => n.component.uid);\n return uids.map((uid) => children[uid]).filter((p) => !!p);\n};\nconst useOrderedChildren = (vm, childComponentName) => {\n const children = {};\n const orderedChildren = shallowRef([]);\n const addChild = (child) => {\n children[child.uid] = child;\n orderedChildren.value = getOrderedChildren(vm, childComponentName, children);\n };\n const removeChild = (uid) => {\n delete children[uid];\n orderedChildren.value = orderedChildren.value.filter((children2) => children2.uid !== uid);\n };\n return {\n children: orderedChildren,\n addChild,\n removeChild\n };\n};\n\nexport { useOrderedChildren };\n//# sourceMappingURL=index.mjs.map\n","import { getCurrentInstance, useSlots, ref, computed, unref, isVNode, watch, shallowRef, onMounted, onBeforeUnmount, provide } from 'vue';\nimport { throttle } from 'lodash-unified';\nimport { useResizeObserver } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { carouselContextKey } from './constants.mjs';\nimport { useOrderedChildren } from '../../../hooks/use-ordered-children/index.mjs';\nimport { isString } from '@vue/shared';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { flattedChildren } from '../../../utils/vue/vnode.mjs';\n\nconst THROTTLE_TIME = 300;\nconst useCarousel = (props, emit, componentName) => {\n const {\n children: items,\n addChild: addItem,\n removeChild: removeItem\n } = useOrderedChildren(getCurrentInstance(), \"ElCarouselItem\");\n const slots = useSlots();\n const activeIndex = ref(-1);\n const timer = ref(null);\n const hover = ref(false);\n const root = ref();\n const containerHeight = ref(0);\n const isItemsTwoLength = ref(true);\n const isFirstCall = ref(true);\n const isTransitioning = ref(false);\n const arrowDisplay = computed(() => props.arrow !== \"never\" && !unref(isVertical));\n const hasLabel = computed(() => {\n return items.value.some((item) => item.props.label.toString().length > 0);\n });\n const isCardType = computed(() => props.type === \"card\");\n const isVertical = computed(() => props.direction === \"vertical\");\n const containerStyle = computed(() => {\n if (props.height !== \"auto\") {\n return {\n height: props.height\n };\n }\n return {\n height: `${containerHeight.value}px`,\n overflow: \"hidden\"\n };\n });\n const throttledArrowClick = throttle((index) => {\n setActiveItem(index);\n }, THROTTLE_TIME, { trailing: true });\n const throttledIndicatorHover = throttle((index) => {\n handleIndicatorHover(index);\n }, THROTTLE_TIME);\n const isTwoLengthShow = (index) => {\n if (!isItemsTwoLength.value)\n return true;\n return activeIndex.value <= 1 ? index <= 1 : index > 1;\n };\n function pauseTimer() {\n if (timer.value) {\n clearInterval(timer.value);\n timer.value = null;\n }\n }\n function startTimer() {\n if (props.interval <= 0 || !props.autoplay || timer.value)\n return;\n timer.value = setInterval(() => playSlides(), props.interval);\n }\n const playSlides = () => {\n if (!isFirstCall.value) {\n isTransitioning.value = true;\n }\n isFirstCall.value = false;\n if (activeIndex.value < items.value.length - 1) {\n activeIndex.value = activeIndex.value + 1;\n } else if (props.loop) {\n activeIndex.value = 0;\n }\n };\n function setActiveItem(index) {\n if (!isFirstCall.value) {\n isTransitioning.value = true;\n }\n isFirstCall.value = false;\n if (isString(index)) {\n const filteredItems = items.value.filter((item) => item.props.name === index);\n if (filteredItems.length > 0) {\n index = items.value.indexOf(filteredItems[0]);\n }\n }\n index = Number(index);\n if (Number.isNaN(index) || index !== Math.floor(index)) {\n debugWarn(componentName, \"index must be integer.\");\n return;\n }\n const itemCount = items.value.length;\n const oldIndex = activeIndex.value;\n if (index < 0) {\n activeIndex.value = props.loop ? itemCount - 1 : 0;\n } else if (index >= itemCount) {\n activeIndex.value = props.loop ? 0 : itemCount - 1;\n } else {\n activeIndex.value = index;\n }\n if (oldIndex === activeIndex.value) {\n resetItemPosition(oldIndex);\n }\n resetTimer();\n }\n function resetItemPosition(oldIndex) {\n items.value.forEach((item, index) => {\n item.translateItem(index, activeIndex.value, oldIndex);\n });\n }\n function itemInStage(item, index) {\n var _a, _b, _c, _d;\n const _items = unref(items);\n const itemCount = _items.length;\n if (itemCount === 0 || !item.states.inStage)\n return false;\n const nextItemIndex = index + 1;\n const prevItemIndex = index - 1;\n const lastItemIndex = itemCount - 1;\n const isLastItemActive = _items[lastItemIndex].states.active;\n const isFirstItemActive = _items[0].states.active;\n const isNextItemActive = (_b = (_a = _items[nextItemIndex]) == null ? void 0 : _a.states) == null ? void 0 : _b.active;\n const isPrevItemActive = (_d = (_c = _items[prevItemIndex]) == null ? void 0 : _c.states) == null ? void 0 : _d.active;\n if (index === lastItemIndex && isFirstItemActive || isNextItemActive) {\n return \"left\";\n } else if (index === 0 && isLastItemActive || isPrevItemActive) {\n return \"right\";\n }\n return false;\n }\n function handleMouseEnter() {\n hover.value = true;\n if (props.pauseOnHover) {\n pauseTimer();\n }\n }\n function handleMouseLeave() {\n hover.value = false;\n startTimer();\n }\n function handleTransitionEnd() {\n isTransitioning.value = false;\n }\n function handleButtonEnter(arrow) {\n if (unref(isVertical))\n return;\n items.value.forEach((item, index) => {\n if (arrow === itemInStage(item, index)) {\n item.states.hover = true;\n }\n });\n }\n function handleButtonLeave() {\n if (unref(isVertical))\n return;\n items.value.forEach((item) => {\n item.states.hover = false;\n });\n }\n function handleIndicatorClick(index) {\n if (index !== activeIndex.value) {\n if (!isFirstCall.value) {\n isTransitioning.value = true;\n }\n }\n activeIndex.value = index;\n }\n function handleIndicatorHover(index) {\n if (props.trigger === \"hover\" && index !== activeIndex.value) {\n activeIndex.value = index;\n if (!isFirstCall.value) {\n isTransitioning.value = true;\n }\n }\n }\n function prev() {\n setActiveItem(activeIndex.value - 1);\n }\n function next() {\n setActiveItem(activeIndex.value + 1);\n }\n function resetTimer() {\n pauseTimer();\n if (!props.pauseOnHover)\n startTimer();\n }\n function setContainerHeight(height) {\n if (props.height !== \"auto\")\n return;\n containerHeight.value = height;\n }\n function PlaceholderItem() {\n var _a;\n const defaultSlots = (_a = slots.default) == null ? void 0 : _a.call(slots);\n if (!defaultSlots)\n return null;\n const flatSlots = flattedChildren(defaultSlots);\n const carouselItemsName = \"ElCarouselItem\";\n const normalizeSlots = flatSlots.filter((slot) => {\n return isVNode(slot) && slot.type.name === carouselItemsName;\n });\n if ((normalizeSlots == null ? void 0 : normalizeSlots.length) === 2 && props.loop && !isCardType.value) {\n isItemsTwoLength.value = true;\n return normalizeSlots;\n }\n isItemsTwoLength.value = false;\n return null;\n }\n watch(() => activeIndex.value, (current, prev2) => {\n resetItemPosition(prev2);\n if (isItemsTwoLength.value) {\n current = current % 2;\n prev2 = prev2 % 2;\n }\n if (prev2 > -1) {\n emit(\"change\", current, prev2);\n }\n });\n watch(() => props.autoplay, (autoplay) => {\n autoplay ? startTimer() : pauseTimer();\n });\n watch(() => props.loop, () => {\n setActiveItem(activeIndex.value);\n });\n watch(() => props.interval, () => {\n resetTimer();\n });\n const resizeObserver = shallowRef();\n onMounted(() => {\n watch(() => items.value, () => {\n if (items.value.length > 0)\n setActiveItem(props.initialIndex);\n }, {\n immediate: true\n });\n resizeObserver.value = useResizeObserver(root.value, () => {\n resetItemPosition();\n });\n startTimer();\n });\n onBeforeUnmount(() => {\n pauseTimer();\n if (root.value && resizeObserver.value)\n resizeObserver.value.stop();\n });\n provide(carouselContextKey, {\n root,\n isCardType,\n isVertical,\n items,\n loop: props.loop,\n addItem,\n removeItem,\n setActiveItem,\n setContainerHeight\n });\n return {\n root,\n activeIndex,\n arrowDisplay,\n hasLabel,\n hover,\n isCardType,\n isTransitioning,\n items,\n isVertical,\n containerStyle,\n isItemsTwoLength,\n handleButtonEnter,\n handleTransitionEnd,\n handleButtonLeave,\n handleIndicatorClick,\n handleMouseEnter,\n handleMouseLeave,\n setActiveItem,\n prev,\n next,\n PlaceholderItem,\n isTwoLengthShow,\n throttledArrowClick,\n throttledIndicatorHover\n };\n};\n\nexport { useCarousel };\n//# sourceMappingURL=use-carousel.mjs.map\n","import { createElementVNode, defineComponent, computed, unref, openBlock, createElementBlock, normalizeClass, withModifiers, createBlock, Transition, withCtx, withDirectives, createVNode, vShow, createCommentVNode, normalizeStyle, renderSlot, Fragment, renderList, toDisplayString } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport { carouselProps, carouselEmits } from './carousel.mjs';\nimport { useCarousel } from './use-carousel.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\n\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = [\"onMouseenter\", \"onClick\"];\nconst _hoisted_4 = [\"aria-label\"];\nconst _hoisted_5 = { key: 0 };\nconst _hoisted_6 = {\n key: 3,\n xmlns: \"http://www.w3.org/2000/svg\",\n version: \"1.1\",\n style: { \"display\": \"none\" }\n};\nconst _hoisted_7 = /* @__PURE__ */ createElementVNode(\"defs\", null, [\n /* @__PURE__ */ createElementVNode(\"filter\", { id: \"elCarouselHorizontal\" }, [\n /* @__PURE__ */ createElementVNode(\"feGaussianBlur\", {\n in: \"SourceGraphic\",\n stdDeviation: \"12,0\"\n })\n ]),\n /* @__PURE__ */ createElementVNode(\"filter\", { id: \"elCarouselVertical\" }, [\n /* @__PURE__ */ createElementVNode(\"feGaussianBlur\", {\n in: \"SourceGraphic\",\n stdDeviation: \"0,10\"\n })\n ])\n], -1);\nconst _hoisted_8 = [\n _hoisted_7\n];\nconst COMPONENT_NAME = \"ElCarousel\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: carouselProps,\n emits: carouselEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const {\n root,\n activeIndex,\n arrowDisplay,\n hasLabel,\n hover,\n isCardType,\n items,\n isVertical,\n containerStyle,\n handleButtonEnter,\n handleButtonLeave,\n isTransitioning,\n handleIndicatorClick,\n handleMouseEnter,\n handleMouseLeave,\n handleTransitionEnd,\n setActiveItem,\n prev,\n next,\n PlaceholderItem,\n isTwoLengthShow,\n throttledArrowClick,\n throttledIndicatorHover\n } = useCarousel(props, emit, COMPONENT_NAME);\n const ns = useNamespace(\"carousel\");\n const { t } = useLocale();\n const carouselClasses = computed(() => {\n const classes = [ns.b(), ns.m(props.direction)];\n if (unref(isCardType)) {\n classes.push(ns.m(\"card\"));\n }\n return classes;\n });\n const carouselContainer = computed(() => {\n const classes = [ns.e(\"container\")];\n if (props.motionBlur && unref(isTransitioning)) {\n classes.push(unref(isVertical) ? `${ns.namespace.value}-transitioning-vertical` : `${ns.namespace.value}-transitioning`);\n }\n return classes;\n });\n const indicatorsClasses = computed(() => {\n const classes = [ns.e(\"indicators\"), ns.em(\"indicators\", props.direction)];\n if (unref(hasLabel)) {\n classes.push(ns.em(\"indicators\", \"labels\"));\n }\n if (props.indicatorPosition === \"outside\") {\n classes.push(ns.em(\"indicators\", \"outside\"));\n }\n if (unref(isVertical)) {\n classes.push(ns.em(\"indicators\", \"right\"));\n }\n return classes;\n });\n expose({\n setActiveItem,\n prev,\n next\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"root\",\n ref: root,\n class: normalizeClass(unref(carouselClasses)),\n onMouseenter: _cache[7] || (_cache[7] = withModifiers((...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args), [\"stop\"])),\n onMouseleave: _cache[8] || (_cache[8] = withModifiers((...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args), [\"stop\"]))\n }, [\n unref(arrowDisplay) ? (openBlock(), createBlock(Transition, {\n key: 0,\n name: \"carousel-arrow-left\",\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ns).e(\"arrow\"), unref(ns).em(\"arrow\", \"left\")]),\n \"aria-label\": unref(t)(\"el.carousel.leftArrow\"),\n onMouseenter: _cache[0] || (_cache[0] = ($event) => unref(handleButtonEnter)(\"left\")),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => unref(handleButtonLeave) && unref(handleButtonLeave)(...args)),\n onClick: _cache[2] || (_cache[2] = withModifiers(($event) => unref(throttledArrowClick)(unref(activeIndex) - 1), [\"stop\"]))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowLeft))\n ]),\n _: 1\n })\n ], 42, _hoisted_1), [\n [\n vShow,\n (_ctx.arrow === \"always\" || unref(hover)) && (props.loop || unref(activeIndex) > 0)\n ]\n ])\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true),\n unref(arrowDisplay) ? (openBlock(), createBlock(Transition, {\n key: 1,\n name: \"carousel-arrow-right\",\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ns).e(\"arrow\"), unref(ns).em(\"arrow\", \"right\")]),\n \"aria-label\": unref(t)(\"el.carousel.rightArrow\"),\n onMouseenter: _cache[3] || (_cache[3] = ($event) => unref(handleButtonEnter)(\"right\")),\n onMouseleave: _cache[4] || (_cache[4] = (...args) => unref(handleButtonLeave) && unref(handleButtonLeave)(...args)),\n onClick: _cache[5] || (_cache[5] = withModifiers(($event) => unref(throttledArrowClick)(unref(activeIndex) + 1), [\"stop\"]))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n })\n ], 42, _hoisted_2), [\n [\n vShow,\n (_ctx.arrow === \"always\" || unref(hover)) && (props.loop || unref(activeIndex) < unref(items).length - 1)\n ]\n ])\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(carouselContainer)),\n style: normalizeStyle(unref(containerStyle)),\n onTransitionend: _cache[6] || (_cache[6] = (...args) => unref(handleTransitionEnd) && unref(handleTransitionEnd)(...args))\n }, [\n createVNode(unref(PlaceholderItem)),\n renderSlot(_ctx.$slots, \"default\")\n ], 38),\n _ctx.indicatorPosition !== \"none\" ? (openBlock(), createElementBlock(\"ul\", {\n key: 2,\n class: normalizeClass(unref(indicatorsClasses))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(items), (item, index) => {\n return withDirectives((openBlock(), createElementBlock(\"li\", {\n key: index,\n class: normalizeClass([\n unref(ns).e(\"indicator\"),\n unref(ns).em(\"indicator\", _ctx.direction),\n unref(ns).is(\"active\", index === unref(activeIndex))\n ]),\n onMouseenter: ($event) => unref(throttledIndicatorHover)(index),\n onClick: withModifiers(($event) => unref(handleIndicatorClick)(index), [\"stop\"])\n }, [\n createElementVNode(\"button\", {\n class: normalizeClass(unref(ns).e(\"button\")),\n \"aria-label\": unref(t)(\"el.carousel.indicator\", { index: index + 1 })\n }, [\n unref(hasLabel) ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString(item.props.label), 1)) : createCommentVNode(\"v-if\", true)\n ], 10, _hoisted_4)\n ], 42, _hoisted_3)), [\n [vShow, unref(isTwoLengthShow)(index)]\n ]);\n }), 128))\n ], 2)) : createCommentVNode(\"v-if\", true),\n props.motionBlur ? (openBlock(), createElementBlock(\"svg\", _hoisted_6, _hoisted_8)) : createCommentVNode(\"v-if\", true)\n ], 34);\n };\n }\n});\nvar Carousel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"carousel.vue\"]]);\n\nexport { Carousel as default };\n//# sourceMappingURL=carousel2.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst carouselItemProps = buildProps({\n name: { type: String, default: \"\" },\n label: {\n type: [String, Number],\n default: \"\"\n }\n});\n\nexport { carouselItemProps };\n//# sourceMappingURL=carousel-item.mjs.map\n","import { inject, getCurrentInstance, ref, unref, onMounted, reactive, onUnmounted } from 'vue';\nimport '../../../utils/index.mjs';\nimport { carouselContextKey } from './constants.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isUndefined } from '../../../utils/types.mjs';\n\nconst useCarouselItem = (props, componentName) => {\n const carouselContext = inject(carouselContextKey);\n const instance = getCurrentInstance();\n if (!carouselContext) {\n debugWarn(componentName, \"usage: \");\n }\n if (!instance) {\n debugWarn(componentName, \"compositional hook can only be invoked inside setups\");\n }\n const CARD_SCALE = 0.83;\n const carouselItemRef = ref();\n const hover = ref(false);\n const translate = ref(0);\n const scale = ref(1);\n const active = ref(false);\n const ready = ref(false);\n const inStage = ref(false);\n const animating = ref(false);\n const { isCardType, isVertical } = carouselContext;\n function processIndex(index, activeIndex, length) {\n const lastItemIndex = length - 1;\n const prevItemIndex = activeIndex - 1;\n const nextItemIndex = activeIndex + 1;\n const halfItemIndex = length / 2;\n if (activeIndex === 0 && index === lastItemIndex) {\n return -1;\n } else if (activeIndex === lastItemIndex && index === 0) {\n return length;\n } else if (index < prevItemIndex && activeIndex - index >= halfItemIndex) {\n return length + 1;\n } else if (index > nextItemIndex && index - activeIndex >= halfItemIndex) {\n return -2;\n }\n return index;\n }\n function calcCardTranslate(index, activeIndex) {\n var _a, _b;\n const parentWidth = unref(isVertical) ? ((_a = carouselContext.root.value) == null ? void 0 : _a.offsetHeight) || 0 : ((_b = carouselContext.root.value) == null ? void 0 : _b.offsetWidth) || 0;\n if (inStage.value) {\n return parentWidth * ((2 - CARD_SCALE) * (index - activeIndex) + 1) / 4;\n } else if (index < activeIndex) {\n return -(1 + CARD_SCALE) * parentWidth / 4;\n } else {\n return (3 + CARD_SCALE) * parentWidth / 4;\n }\n }\n function calcTranslate(index, activeIndex, isVertical2) {\n const rootEl = carouselContext.root.value;\n if (!rootEl)\n return 0;\n const distance = (isVertical2 ? rootEl.offsetHeight : rootEl.offsetWidth) || 0;\n return distance * (index - activeIndex);\n }\n const translateItem = (index, activeIndex, oldIndex) => {\n var _a;\n const _isCardType = unref(isCardType);\n const carouselItemLength = (_a = carouselContext.items.value.length) != null ? _a : Number.NaN;\n const isActive = index === activeIndex;\n if (!_isCardType && !isUndefined(oldIndex)) {\n animating.value = isActive || index === oldIndex;\n }\n if (!isActive && carouselItemLength > 2 && carouselContext.loop) {\n index = processIndex(index, activeIndex, carouselItemLength);\n }\n const _isVertical = unref(isVertical);\n active.value = isActive;\n if (_isCardType) {\n inStage.value = Math.round(Math.abs(index - activeIndex)) <= 1;\n translate.value = calcCardTranslate(index, activeIndex);\n scale.value = unref(active) ? 1 : CARD_SCALE;\n } else {\n translate.value = calcTranslate(index, activeIndex, _isVertical);\n }\n ready.value = true;\n if (isActive && carouselItemRef.value) {\n carouselContext.setContainerHeight(carouselItemRef.value.offsetHeight);\n }\n };\n function handleItemClick() {\n if (carouselContext && unref(isCardType)) {\n const index = carouselContext.items.value.findIndex(({ uid }) => uid === instance.uid);\n carouselContext.setActiveItem(index);\n }\n }\n onMounted(() => {\n carouselContext.addItem({\n props,\n states: reactive({\n hover,\n translate,\n scale,\n active,\n ready,\n inStage,\n animating\n }),\n uid: instance.uid,\n translateItem\n });\n });\n onUnmounted(() => {\n carouselContext.removeItem(instance.uid);\n });\n return {\n carouselItemRef,\n active,\n animating,\n hover,\n inStage,\n isVertical,\n translate,\n isCardType,\n scale,\n ready,\n handleItemClick\n };\n};\n\nexport { useCarouselItem };\n//# sourceMappingURL=use-carousel-item.mjs.map\n","import { defineComponent, computed, unref, withDirectives, openBlock, createElementBlock, normalizeClass, normalizeStyle, vShow, createCommentVNode, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { carouselItemProps } from './carousel-item.mjs';\nimport { useCarouselItem } from './use-carousel-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst COMPONENT_NAME = \"ElCarouselItem\";\nconst __default__ = defineComponent({\n name: \"ElCarouselItem\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: carouselItemProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"carousel\");\n const {\n carouselItemRef,\n active,\n animating,\n hover,\n inStage,\n isVertical,\n translate,\n isCardType,\n scale,\n ready,\n handleItemClick\n } = useCarouselItem(props, COMPONENT_NAME);\n const itemKls = computed(() => [\n ns.e(\"item\"),\n ns.is(\"active\", active.value),\n ns.is(\"in-stage\", inStage.value),\n ns.is(\"hover\", hover.value),\n ns.is(\"animating\", animating.value),\n {\n [ns.em(\"item\", \"card\")]: isCardType.value,\n [ns.em(\"item\", \"card-vertical\")]: isCardType.value && isVertical.value\n }\n ]);\n const itemStyle = computed(() => {\n const translateType = `translate${unref(isVertical) ? \"Y\" : \"X\"}`;\n const _translate = `${translateType}(${unref(translate)}px)`;\n const _scale = `scale(${unref(scale)})`;\n const transform = [_translate, _scale].join(\" \");\n return {\n transform\n };\n });\n return (_ctx, _cache) => {\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n ref_key: \"carouselItemRef\",\n ref: carouselItemRef,\n class: normalizeClass(unref(itemKls)),\n style: normalizeStyle(unref(itemStyle)),\n onClick: _cache[0] || (_cache[0] = (...args) => unref(handleItemClick) && unref(handleItemClick)(...args))\n }, [\n unref(isCardType) ? withDirectives((openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"mask\"))\n }, null, 2)), [\n [vShow, !unref(active)]\n ]) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\")\n ], 6)), [\n [vShow, unref(ready)]\n ]);\n };\n }\n});\nvar CarouselItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"carousel-item.vue\"]]);\n\nexport { CarouselItem as default };\n//# sourceMappingURL=carousel-item2.mjs.map\n","import '../../utils/index.mjs';\nimport Carousel from './src/carousel2.mjs';\nimport CarouselItem from './src/carousel-item2.mjs';\nexport { carouselEmits, carouselProps } from './src/carousel.mjs';\nexport { carouselItemProps } from './src/carousel-item.mjs';\nexport { carouselContextKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElCarousel = withInstall(Carousel, {\n CarouselItem\n});\nconst ElCarouselItem = withNoopInstall(CarouselItem);\n\nexport { ElCarousel, ElCarouselItem, ElCarousel as default };\n//# sourceMappingURL=index.mjs.map\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n","import '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { isString } from '@vue/shared';\nimport { isNumber, isBoolean } from '../../../utils/types.mjs';\n\nconst checkboxProps = {\n modelValue: {\n type: [Number, String, Boolean],\n default: void 0\n },\n label: {\n type: [String, Boolean, Number, Object],\n default: void 0\n },\n value: {\n type: [String, Boolean, Number, Object],\n default: void 0\n },\n indeterminate: Boolean,\n disabled: Boolean,\n checked: Boolean,\n name: {\n type: String,\n default: void 0\n },\n trueValue: {\n type: [String, Number],\n default: void 0\n },\n falseValue: {\n type: [String, Number],\n default: void 0\n },\n trueLabel: {\n type: [String, Number],\n default: void 0\n },\n falseLabel: {\n type: [String, Number],\n default: void 0\n },\n id: {\n type: String,\n default: void 0\n },\n controls: {\n type: String,\n default: void 0\n },\n border: Boolean,\n size: useSizeProp,\n tabindex: [String, Number],\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useAriaProps([\"ariaControls\"])\n};\nconst checkboxEmits = {\n [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),\n change: (val) => isString(val) || isNumber(val) || isBoolean(val)\n};\n\nexport { checkboxEmits, checkboxProps };\n//# sourceMappingURL=checkbox.mjs.map\n","const checkboxGroupContextKey = Symbol(\"checkboxGroupContextKey\");\n\nexport { checkboxGroupContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { inject, computed } from 'vue';\nimport '../../../form/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { checkboxGroupContextKey } from '../constants.mjs';\nimport { isUndefined } from '../../../../utils/types.mjs';\nimport { useFormDisabled } from '../../../form/src/hooks/use-form-common-props.mjs';\n\nconst useCheckboxDisabled = ({\n model,\n isChecked\n}) => {\n const checkboxGroup = inject(checkboxGroupContextKey, void 0);\n const isLimitDisabled = computed(() => {\n var _a, _b;\n const max = (_a = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a.value;\n const min = (_b = checkboxGroup == null ? void 0 : checkboxGroup.min) == null ? void 0 : _b.value;\n return !isUndefined(max) && model.value.length >= max && !isChecked.value || !isUndefined(min) && model.value.length <= min && isChecked.value;\n });\n const isDisabled = useFormDisabled(computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.disabled.value) || isLimitDisabled.value));\n return {\n isDisabled,\n isLimitDisabled\n };\n};\n\nexport { useCheckboxDisabled };\n//# sourceMappingURL=use-checkbox-disabled.mjs.map\n","import { inject, getCurrentInstance, nextTick, computed, watch } from 'vue';\nimport '../../../form/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { checkboxGroupContextKey } from '../constants.mjs';\nimport { useFormItem } from '../../../form/src/hooks/use-form-item.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\n\nconst useCheckboxEvent = (props, {\n model,\n isLimitExceeded,\n hasOwnLabel,\n isDisabled,\n isLabeledByFormItem\n}) => {\n const checkboxGroup = inject(checkboxGroupContextKey, void 0);\n const { formItem } = useFormItem();\n const { emit } = getCurrentInstance();\n function getLabeledValue(value) {\n var _a, _b, _c, _d;\n return [true, props.trueValue, props.trueLabel].includes(value) ? (_b = (_a = props.trueValue) != null ? _a : props.trueLabel) != null ? _b : true : (_d = (_c = props.falseValue) != null ? _c : props.falseLabel) != null ? _d : false;\n }\n function emitChangeEvent(checked, e) {\n emit(\"change\", getLabeledValue(checked), e);\n }\n function handleChange(e) {\n if (isLimitExceeded.value)\n return;\n const target = e.target;\n emit(\"change\", getLabeledValue(target.checked), e);\n }\n async function onClickRoot(e) {\n if (isLimitExceeded.value)\n return;\n if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) {\n const eventTargets = e.composedPath();\n const hasLabel = eventTargets.some((item) => item.tagName === \"LABEL\");\n if (!hasLabel) {\n model.value = getLabeledValue([false, props.falseValue, props.falseLabel].includes(model.value));\n await nextTick();\n emitChangeEvent(model.value, e);\n }\n }\n }\n const validateEvent = computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props.validateEvent);\n watch(() => props.modelValue, () => {\n if (validateEvent.value) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n });\n return {\n handleChange,\n onClickRoot\n };\n};\n\nexport { useCheckboxEvent };\n//# sourceMappingURL=use-checkbox-event.mjs.map\n","import { ref, getCurrentInstance, inject, computed } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { checkboxGroupContextKey } from '../constants.mjs';\nimport { isUndefined } from '../../../../utils/types.mjs';\nimport { isArray } from '@vue/shared';\nimport { UPDATE_MODEL_EVENT } from '../../../../constants/event.mjs';\n\nconst useCheckboxModel = (props) => {\n const selfModel = ref(false);\n const { emit } = getCurrentInstance();\n const checkboxGroup = inject(checkboxGroupContextKey, void 0);\n const isGroup = computed(() => isUndefined(checkboxGroup) === false);\n const isLimitExceeded = ref(false);\n const model = computed({\n get() {\n var _a, _b;\n return isGroup.value ? (_a = checkboxGroup == null ? void 0 : checkboxGroup.modelValue) == null ? void 0 : _a.value : (_b = props.modelValue) != null ? _b : selfModel.value;\n },\n set(val) {\n var _a, _b;\n if (isGroup.value && isArray(val)) {\n isLimitExceeded.value = ((_a = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a.value) !== void 0 && val.length > (checkboxGroup == null ? void 0 : checkboxGroup.max.value) && val.length > model.value.length;\n isLimitExceeded.value === false && ((_b = checkboxGroup == null ? void 0 : checkboxGroup.changeEvent) == null ? void 0 : _b.call(checkboxGroup, val));\n } else {\n emit(UPDATE_MODEL_EVENT, val);\n selfModel.value = val;\n }\n }\n });\n return {\n model,\n isGroup,\n isLimitExceeded\n };\n};\n\nexport { useCheckboxModel };\n//# sourceMappingURL=use-checkbox-model.mjs.map\n","import { inject, ref, computed, toRaw } from 'vue';\nimport { isEqual } from 'lodash-unified';\nimport '../../../form/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { checkboxGroupContextKey } from '../constants.mjs';\nimport { isPropAbsent, isBoolean } from '../../../../utils/types.mjs';\nimport { isArray, isObject } from '@vue/shared';\nimport { useFormSize } from '../../../form/src/hooks/use-form-common-props.mjs';\n\nconst useCheckboxStatus = (props, slots, { model }) => {\n const checkboxGroup = inject(checkboxGroupContextKey, void 0);\n const isFocused = ref(false);\n const actualValue = computed(() => {\n if (!isPropAbsent(props.value)) {\n return props.value;\n }\n return props.label;\n });\n const isChecked = computed(() => {\n const value = model.value;\n if (isBoolean(value)) {\n return value;\n } else if (isArray(value)) {\n if (isObject(actualValue.value)) {\n return value.map(toRaw).some((o) => isEqual(o, actualValue.value));\n } else {\n return value.map(toRaw).includes(actualValue.value);\n }\n } else if (value !== null && value !== void 0) {\n return value === props.trueValue || value === props.trueLabel;\n } else {\n return !!value;\n }\n });\n const checkboxButtonSize = useFormSize(computed(() => {\n var _a;\n return (_a = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a.value;\n }), {\n prop: true\n });\n const checkboxSize = useFormSize(computed(() => {\n var _a;\n return (_a = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a.value;\n }));\n const hasOwnLabel = computed(() => {\n return !!slots.default || !isPropAbsent(actualValue.value);\n });\n return {\n checkboxButtonSize,\n isChecked,\n isFocused,\n checkboxSize,\n hasOwnLabel,\n actualValue\n };\n};\n\nexport { useCheckboxStatus };\n//# sourceMappingURL=use-checkbox-status.mjs.map\n","import { computed } from 'vue';\nimport '../../../form/index.mjs';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { useCheckboxDisabled } from './use-checkbox-disabled.mjs';\nimport { useCheckboxEvent } from './use-checkbox-event.mjs';\nimport { useCheckboxModel } from './use-checkbox-model.mjs';\nimport { useCheckboxStatus } from './use-checkbox-status.mjs';\nimport { useFormItem, useFormItemInputId } from '../../../form/src/hooks/use-form-item.mjs';\nimport { isArray } from '@vue/shared';\nimport { useDeprecated } from '../../../../hooks/use-deprecated/index.mjs';\nimport { isPropAbsent } from '../../../../utils/types.mjs';\n\nconst useCheckbox = (props, slots) => {\n const { formItem: elFormItem } = useFormItem();\n const { model, isGroup, isLimitExceeded } = useCheckboxModel(props);\n const {\n isFocused,\n isChecked,\n checkboxButtonSize,\n checkboxSize,\n hasOwnLabel,\n actualValue\n } = useCheckboxStatus(props, slots, { model });\n const { isDisabled } = useCheckboxDisabled({ model, isChecked });\n const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n disableIdGeneration: hasOwnLabel,\n disableIdManagement: isGroup\n });\n const { handleChange, onClickRoot } = useCheckboxEvent(props, {\n model,\n isLimitExceeded,\n hasOwnLabel,\n isDisabled,\n isLabeledByFormItem\n });\n const setStoreValue = () => {\n function addToStore() {\n var _a, _b;\n if (isArray(model.value) && !model.value.includes(actualValue.value)) {\n model.value.push(actualValue.value);\n } else {\n model.value = (_b = (_a = props.trueValue) != null ? _a : props.trueLabel) != null ? _b : true;\n }\n }\n props.checked && addToStore();\n };\n setStoreValue();\n useDeprecated({\n from: \"controls\",\n replacement: \"aria-controls\",\n version: \"2.8.0\",\n scope: \"el-checkbox\",\n ref: \"https://element-plus.org/en-US/component/checkbox.html\"\n }, computed(() => !!props.controls));\n useDeprecated({\n from: \"label act as value\",\n replacement: \"value\",\n version: \"3.0.0\",\n scope: \"el-checkbox\",\n ref: \"https://element-plus.org/en-US/component/checkbox.html\"\n }, computed(() => isGroup.value && isPropAbsent(props.value)));\n useDeprecated({\n from: \"true-label\",\n replacement: \"true-value\",\n version: \"3.0.0\",\n scope: \"el-checkbox\",\n ref: \"https://element-plus.org/en-US/component/checkbox.html\"\n }, computed(() => !!props.trueLabel));\n useDeprecated({\n from: \"false-label\",\n replacement: \"false-value\",\n version: \"3.0.0\",\n scope: \"el-checkbox\",\n ref: \"https://element-plus.org/en-US/component/checkbox.html\"\n }, computed(() => !!props.falseLabel));\n return {\n inputId,\n isLabeledByFormItem,\n isChecked,\n isDisabled,\n isFocused,\n checkboxButtonSize,\n checkboxSize,\n hasOwnLabel,\n model,\n actualValue,\n handleChange,\n onClickRoot\n };\n};\n\nexport { useCheckbox };\n//# sourceMappingURL=use-checkbox.mjs.map\n","import { defineComponent, useSlots, computed, openBlock, createBlock, resolveDynamicComponent, unref, normalizeClass, withCtx, createElementVNode, withDirectives, createElementBlock, isRef, withModifiers, vModelCheckbox, renderSlot, Fragment, createTextVNode, toDisplayString, createCommentVNode } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { checkboxProps, checkboxEmits } from './checkbox.mjs';\nimport './composables/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useCheckbox } from './composables/use-checkbox.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"id\", \"indeterminate\", \"name\", \"tabindex\", \"disabled\", \"true-value\", \"false-value\"];\nconst _hoisted_2 = [\"id\", \"indeterminate\", \"disabled\", \"value\", \"name\", \"tabindex\"];\nconst __default__ = defineComponent({\n name: \"ElCheckbox\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: checkboxProps,\n emits: checkboxEmits,\n setup(__props) {\n const props = __props;\n const slots = useSlots();\n const {\n inputId,\n isLabeledByFormItem,\n isChecked,\n isDisabled,\n isFocused,\n checkboxSize,\n hasOwnLabel,\n model,\n actualValue,\n handleChange,\n onClickRoot\n } = useCheckbox(props, slots);\n const ns = useNamespace(\"checkbox\");\n const compKls = computed(() => {\n return [\n ns.b(),\n ns.m(checkboxSize.value),\n ns.is(\"disabled\", isDisabled.value),\n ns.is(\"bordered\", props.border),\n ns.is(\"checked\", isChecked.value)\n ];\n });\n const spanKls = computed(() => {\n return [\n ns.e(\"input\"),\n ns.is(\"disabled\", isDisabled.value),\n ns.is(\"checked\", isChecked.value),\n ns.is(\"indeterminate\", props.indeterminate),\n ns.is(\"focus\", isFocused.value)\n ];\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(!unref(hasOwnLabel) && unref(isLabeledByFormItem) ? \"span\" : \"label\"), {\n class: normalizeClass(unref(compKls)),\n \"aria-controls\": _ctx.indeterminate ? _ctx.controls || _ctx.ariaControls : null,\n onClick: unref(onClickRoot)\n }, {\n default: withCtx(() => {\n var _a, _b;\n return [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(spanKls))\n }, [\n _ctx.trueValue || _ctx.falseValue || _ctx.trueLabel || _ctx.falseLabel ? withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 0,\n id: unref(inputId),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),\n class: normalizeClass(unref(ns).e(\"original\")),\n type: \"checkbox\",\n indeterminate: _ctx.indeterminate,\n name: _ctx.name,\n tabindex: _ctx.tabindex,\n disabled: unref(isDisabled),\n \"true-value\": (_a = _ctx.trueValue) != null ? _a : _ctx.trueLabel,\n \"false-value\": (_b = _ctx.falseValue) != null ? _b : _ctx.falseLabel,\n onChange: _cache[1] || (_cache[1] = (...args) => unref(handleChange) && unref(handleChange)(...args)),\n onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true),\n onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false),\n onClick: _cache[4] || (_cache[4] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 42, _hoisted_1)), [\n [vModelCheckbox, unref(model)]\n ]) : withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 1,\n id: unref(inputId),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => isRef(model) ? model.value = $event : null),\n class: normalizeClass(unref(ns).e(\"original\")),\n type: \"checkbox\",\n indeterminate: _ctx.indeterminate,\n disabled: unref(isDisabled),\n value: unref(actualValue),\n name: _ctx.name,\n tabindex: _ctx.tabindex,\n onChange: _cache[6] || (_cache[6] = (...args) => unref(handleChange) && unref(handleChange)(...args)),\n onFocus: _cache[7] || (_cache[7] = ($event) => isFocused.value = true),\n onBlur: _cache[8] || (_cache[8] = ($event) => isFocused.value = false),\n onClick: _cache[9] || (_cache[9] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 42, _hoisted_2)), [\n [vModelCheckbox, unref(model)]\n ]),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).e(\"inner\"))\n }, null, 2)\n ], 2),\n unref(hasOwnLabel) ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"label\"))\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n !_ctx.$slots.default ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ], 64)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true)\n ];\n }),\n _: 3\n }, 8, [\"class\", \"aria-controls\", \"onClick\"]);\n };\n }\n});\nvar Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"checkbox.vue\"]]);\n\nexport { Checkbox as default };\n//# sourceMappingURL=checkbox2.mjs.map\n","import { defineComponent, useSlots, inject, computed, openBlock, createElementBlock, normalizeClass, unref, withDirectives, isRef, withModifiers, vModelCheckbox, normalizeStyle, renderSlot, createTextVNode, toDisplayString, createCommentVNode } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { checkboxGroupContextKey } from './constants.mjs';\nimport './composables/index.mjs';\nimport { checkboxProps, checkboxEmits } from './checkbox.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useCheckbox } from './composables/use-checkbox.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"name\", \"tabindex\", \"disabled\", \"true-value\", \"false-value\"];\nconst _hoisted_2 = [\"name\", \"tabindex\", \"disabled\", \"value\"];\nconst __default__ = defineComponent({\n name: \"ElCheckboxButton\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: checkboxProps,\n emits: checkboxEmits,\n setup(__props) {\n const props = __props;\n const slots = useSlots();\n const {\n isFocused,\n isChecked,\n isDisabled,\n checkboxButtonSize,\n model,\n actualValue,\n handleChange\n } = useCheckbox(props, slots);\n const checkboxGroup = inject(checkboxGroupContextKey, void 0);\n const ns = useNamespace(\"checkbox\");\n const activeStyle = computed(() => {\n var _a, _b, _c, _d;\n const fillValue = (_b = (_a = checkboxGroup == null ? void 0 : checkboxGroup.fill) == null ? void 0 : _a.value) != null ? _b : \"\";\n return {\n backgroundColor: fillValue,\n borderColor: fillValue,\n color: (_d = (_c = checkboxGroup == null ? void 0 : checkboxGroup.textColor) == null ? void 0 : _c.value) != null ? _d : \"\",\n boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : void 0\n };\n });\n const labelKls = computed(() => {\n return [\n ns.b(\"button\"),\n ns.bm(\"button\", checkboxButtonSize.value),\n ns.is(\"disabled\", isDisabled.value),\n ns.is(\"checked\", isChecked.value),\n ns.is(\"focus\", isFocused.value)\n ];\n });\n return (_ctx, _cache) => {\n var _a, _b;\n return openBlock(), createElementBlock(\"label\", {\n class: normalizeClass(unref(labelKls))\n }, [\n _ctx.trueValue || _ctx.falseValue || _ctx.trueLabel || _ctx.falseLabel ? withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 0,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),\n class: normalizeClass(unref(ns).be(\"button\", \"original\")),\n type: \"checkbox\",\n name: _ctx.name,\n tabindex: _ctx.tabindex,\n disabled: unref(isDisabled),\n \"true-value\": (_a = _ctx.trueValue) != null ? _a : _ctx.trueLabel,\n \"false-value\": (_b = _ctx.falseValue) != null ? _b : _ctx.falseLabel,\n onChange: _cache[1] || (_cache[1] = (...args) => unref(handleChange) && unref(handleChange)(...args)),\n onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true),\n onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false),\n onClick: _cache[4] || (_cache[4] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 42, _hoisted_1)), [\n [vModelCheckbox, unref(model)]\n ]) : withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 1,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => isRef(model) ? model.value = $event : null),\n class: normalizeClass(unref(ns).be(\"button\", \"original\")),\n type: \"checkbox\",\n name: _ctx.name,\n tabindex: _ctx.tabindex,\n disabled: unref(isDisabled),\n value: unref(actualValue),\n onChange: _cache[6] || (_cache[6] = (...args) => unref(handleChange) && unref(handleChange)(...args)),\n onFocus: _cache[7] || (_cache[7] = ($event) => isFocused.value = true),\n onBlur: _cache[8] || (_cache[8] = ($event) => isFocused.value = false),\n onClick: _cache[9] || (_cache[9] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 42, _hoisted_2)), [\n [vModelCheckbox, unref(model)]\n ]),\n _ctx.$slots.default || _ctx.label ? (openBlock(), createElementBlock(\"span\", {\n key: 2,\n class: normalizeClass(unref(ns).be(\"button\", \"inner\")),\n style: normalizeStyle(unref(isChecked) ? unref(activeStyle) : void 0)\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ])\n ], 6)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar CheckboxButton = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"checkbox-button.vue\"]]);\n\nexport { CheckboxButton as default };\n//# sourceMappingURL=checkbox-button.mjs.map\n","import '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { isArray } from '@vue/shared';\n\nconst checkboxGroupProps = buildProps({\n modelValue: {\n type: definePropType(Array),\n default: () => []\n },\n disabled: Boolean,\n min: Number,\n max: Number,\n size: useSizeProp,\n label: String,\n fill: String,\n textColor: String,\n tag: {\n type: String,\n default: \"div\"\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst checkboxGroupEmits = {\n [UPDATE_MODEL_EVENT]: (val) => isArray(val),\n change: (val) => isArray(val)\n};\n\nexport { checkboxGroupEmits, checkboxGroupProps };\n//# sourceMappingURL=checkbox-group.mjs.map\n","import { defineComponent, nextTick, computed, provide, toRefs, watch, openBlock, createBlock, resolveDynamicComponent, unref, normalizeClass, withCtx, renderSlot } from 'vue';\nimport { pick } from 'lodash-unified';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../form/index.mjs';\nimport { checkboxGroupProps, checkboxGroupEmits } from './checkbox-group.mjs';\nimport { checkboxGroupContextKey } from './constants.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElCheckboxGroup\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: checkboxGroupProps,\n emits: checkboxGroupEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"checkbox\");\n const { formItem } = useFormItem();\n const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem\n });\n const changeEvent = async (value) => {\n emit(UPDATE_MODEL_EVENT, value);\n await nextTick();\n emit(\"change\", value);\n };\n const modelValue = computed({\n get() {\n return props.modelValue;\n },\n set(val) {\n changeEvent(val);\n }\n });\n provide(checkboxGroupContextKey, {\n ...pick(toRefs(props), [\n \"size\",\n \"min\",\n \"max\",\n \"disabled\",\n \"validateEvent\",\n \"fill\",\n \"textColor\"\n ]),\n modelValue,\n changeEvent\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-checkbox-group\",\n ref: \"https://element-plus.org/en-US/component/checkbox.html\"\n }, computed(() => !!props.label));\n watch(() => props.modelValue, () => {\n if (props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n });\n return (_ctx, _cache) => {\n var _a;\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), {\n id: unref(groupId),\n class: normalizeClass(unref(ns).b(\"group\")),\n role: \"group\",\n \"aria-label\": !unref(isLabeledByFormItem) ? _ctx.label || _ctx.ariaLabel || \"checkbox-group\" : void 0,\n \"aria-labelledby\": unref(isLabeledByFormItem) ? (_a = unref(formItem)) == null ? void 0 : _a.labelId : void 0\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"class\", \"aria-label\", \"aria-labelledby\"]);\n };\n }\n});\nvar CheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"checkbox-group.vue\"]]);\n\nexport { CheckboxGroup as default };\n//# sourceMappingURL=checkbox-group2.mjs.map\n","import '../../utils/index.mjs';\nimport Checkbox from './src/checkbox2.mjs';\nimport CheckboxButton from './src/checkbox-button.mjs';\nimport CheckboxGroup from './src/checkbox-group2.mjs';\nexport { checkboxGroupEmits, checkboxGroupProps } from './src/checkbox-group.mjs';\nexport { checkboxEmits, checkboxProps } from './src/checkbox.mjs';\nexport { checkboxGroupContextKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElCheckbox = withInstall(Checkbox, {\n CheckboxButton,\n CheckboxGroup\n});\nconst ElCheckboxButton = withNoopInstall(CheckboxButton);\nconst ElCheckboxGroup = withNoopInstall(CheckboxGroup);\n\nexport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup, ElCheckbox as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isString } from '@vue/shared';\nimport { isNumber, isBoolean } from '../../../utils/types.mjs';\n\nconst radioPropsBase = buildProps({\n modelValue: {\n type: [String, Number, Boolean],\n default: void 0\n },\n size: useSizeProp,\n disabled: Boolean,\n label: {\n type: [String, Number, Boolean],\n default: void 0\n },\n value: {\n type: [String, Number, Boolean],\n default: void 0\n },\n name: {\n type: String,\n default: void 0\n }\n});\nconst radioProps = buildProps({\n ...radioPropsBase,\n border: Boolean\n});\nconst radioEmits = {\n [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),\n [CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val)\n};\n\nexport { radioEmits, radioProps, radioPropsBase };\n//# sourceMappingURL=radio.mjs.map\n","const radioGroupKey = Symbol(\"radioGroupKey\");\n\nexport { radioGroupKey };\n//# sourceMappingURL=constants.mjs.map\n","import { ref, inject, computed } from 'vue';\nimport '../../../constants/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { radioGroupKey } from './constants.mjs';\nimport { isPropAbsent } from '../../../utils/types.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst useRadio = (props, emit) => {\n const radioRef = ref();\n const radioGroup = inject(radioGroupKey, void 0);\n const isGroup = computed(() => !!radioGroup);\n const actualValue = computed(() => {\n if (!isPropAbsent(props.value)) {\n return props.value;\n }\n return props.label;\n });\n const modelValue = computed({\n get() {\n return isGroup.value ? radioGroup.modelValue : props.modelValue;\n },\n set(val) {\n if (isGroup.value) {\n radioGroup.changeEvent(val);\n } else {\n emit && emit(UPDATE_MODEL_EVENT, val);\n }\n radioRef.value.checked = props.modelValue === actualValue.value;\n }\n });\n const size = useFormSize(computed(() => radioGroup == null ? void 0 : radioGroup.size));\n const disabled = useFormDisabled(computed(() => radioGroup == null ? void 0 : radioGroup.disabled));\n const focus = ref(false);\n const tabIndex = computed(() => {\n return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0;\n });\n useDeprecated({\n from: \"label act as value\",\n replacement: \"value\",\n version: \"3.0.0\",\n scope: \"el-radio\",\n ref: \"https://element-plus.org/en-US/component/radio.html\"\n }, computed(() => isGroup.value && isPropAbsent(props.value)));\n return {\n radioRef,\n isGroup,\n radioGroup,\n focus,\n size,\n disabled,\n tabIndex,\n modelValue,\n actualValue\n };\n};\n\nexport { useRadio };\n//# sourceMappingURL=use-radio.mjs.map\n","import { defineComponent, nextTick, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, withDirectives, isRef, withModifiers, vModelRadio, renderSlot, createTextVNode, toDisplayString } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { radioProps, radioEmits } from './radio.mjs';\nimport { useRadio } from './use-radio.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"value\", \"name\", \"disabled\"];\nconst __default__ = defineComponent({\n name: \"ElRadio\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: radioProps,\n emits: radioEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"radio\");\n const { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } = useRadio(props, emit);\n function handleChange() {\n nextTick(() => emit(\"change\", modelValue.value));\n }\n return (_ctx, _cache) => {\n var _a;\n return openBlock(), createElementBlock(\"label\", {\n class: normalizeClass([\n unref(ns).b(),\n unref(ns).is(\"disabled\", unref(disabled)),\n unref(ns).is(\"focus\", unref(focus)),\n unref(ns).is(\"bordered\", _ctx.border),\n unref(ns).is(\"checked\", unref(modelValue) === unref(actualValue)),\n unref(ns).m(unref(size))\n ])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([\n unref(ns).e(\"input\"),\n unref(ns).is(\"disabled\", unref(disabled)),\n unref(ns).is(\"checked\", unref(modelValue) === unref(actualValue))\n ])\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref_key: \"radioRef\",\n ref: radioRef,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),\n class: normalizeClass(unref(ns).e(\"original\")),\n value: unref(actualValue),\n name: _ctx.name || ((_a = unref(radioGroup)) == null ? void 0 : _a.name),\n disabled: unref(disabled),\n type: \"radio\",\n onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),\n onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),\n onChange: handleChange,\n onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 42, _hoisted_1), [\n [vModelRadio, unref(modelValue)]\n ]),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).e(\"inner\"))\n }, null, 2)\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).e(\"label\")),\n onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {\n }, [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ])\n ], 34)\n ], 2);\n };\n }\n});\nvar Radio = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"radio.vue\"]]);\n\nexport { Radio as default };\n//# sourceMappingURL=radio2.mjs.map\n","import '../../../utils/index.mjs';\nimport { radioPropsBase } from './radio.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst radioButtonProps = buildProps({\n ...radioPropsBase\n});\n\nexport { radioButtonProps };\n//# sourceMappingURL=radio-button.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, withDirectives, createElementVNode, isRef, withModifiers, vModelRadio, normalizeStyle, renderSlot, createTextVNode, toDisplayString } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { useRadio } from './use-radio.mjs';\nimport { radioButtonProps } from './radio-button.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"value\", \"name\", \"disabled\"];\nconst __default__ = defineComponent({\n name: \"ElRadioButton\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: radioButtonProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"radio\");\n const { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } = useRadio(props);\n const activeStyle = computed(() => {\n return {\n backgroundColor: (radioGroup == null ? void 0 : radioGroup.fill) || \"\",\n borderColor: (radioGroup == null ? void 0 : radioGroup.fill) || \"\",\n boxShadow: (radioGroup == null ? void 0 : radioGroup.fill) ? `-1px 0 0 0 ${radioGroup.fill}` : \"\",\n color: (radioGroup == null ? void 0 : radioGroup.textColor) || \"\"\n };\n });\n return (_ctx, _cache) => {\n var _a;\n return openBlock(), createElementBlock(\"label\", {\n class: normalizeClass([\n unref(ns).b(\"button\"),\n unref(ns).is(\"active\", unref(modelValue) === unref(actualValue)),\n unref(ns).is(\"disabled\", unref(disabled)),\n unref(ns).is(\"focus\", unref(focus)),\n unref(ns).bm(\"button\", unref(size))\n ])\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref_key: \"radioRef\",\n ref: radioRef,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),\n class: normalizeClass(unref(ns).be(\"button\", \"original-radio\")),\n value: unref(actualValue),\n type: \"radio\",\n name: _ctx.name || ((_a = unref(radioGroup)) == null ? void 0 : _a.name),\n disabled: unref(disabled),\n onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),\n onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),\n onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 42, _hoisted_1), [\n [vModelRadio, unref(modelValue)]\n ]),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).be(\"button\", \"inner\")),\n style: normalizeStyle(unref(modelValue) === unref(actualValue) ? unref(activeStyle) : {}),\n onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {\n }, [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ])\n ], 38)\n ], 2);\n };\n }\n});\nvar RadioButton = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"radio-button.vue\"]]);\n\nexport { RadioButton as default };\n//# sourceMappingURL=radio-button2.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { radioEmits } from './radio.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\n\nconst radioGroupProps = buildProps({\n id: {\n type: String,\n default: void 0\n },\n size: useSizeProp,\n disabled: Boolean,\n modelValue: {\n type: [String, Number, Boolean],\n default: void 0\n },\n fill: {\n type: String,\n default: \"\"\n },\n label: {\n type: String,\n default: void 0\n },\n textColor: {\n type: String,\n default: \"\"\n },\n name: {\n type: String,\n default: void 0\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst radioGroupEmits = radioEmits;\n\nexport { radioGroupEmits, radioGroupProps };\n//# sourceMappingURL=radio-group.mjs.map\n","import { defineComponent, ref, nextTick, onMounted, computed, provide, reactive, toRefs, watch, openBlock, createElementBlock, unref, normalizeClass, renderSlot } from 'vue';\nimport '../../form/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { radioGroupProps, radioGroupEmits } from './radio-group.mjs';\nimport { radioGroupKey } from './constants.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"id\", \"aria-label\", \"aria-labelledby\"];\nconst __default__ = defineComponent({\n name: \"ElRadioGroup\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: radioGroupProps,\n emits: radioGroupEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"radio\");\n const radioId = useId();\n const radioGroupRef = ref();\n const { formItem } = useFormItem();\n const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem\n });\n const changeEvent = (value) => {\n emit(UPDATE_MODEL_EVENT, value);\n nextTick(() => emit(\"change\", value));\n };\n onMounted(() => {\n const radios = radioGroupRef.value.querySelectorAll(\"[type=radio]\");\n const firstLabel = radios[0];\n if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n firstLabel.tabIndex = 0;\n }\n });\n const name = computed(() => {\n return props.name || radioId.value;\n });\n provide(radioGroupKey, reactive({\n ...toRefs(props),\n changeEvent,\n name\n }));\n watch(() => props.modelValue, () => {\n if (props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-radio-group\",\n ref: \"https://element-plus.org/en-US/component/radio.html\"\n }, computed(() => !!props.label));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: unref(groupId),\n ref_key: \"radioGroupRef\",\n ref: radioGroupRef,\n class: normalizeClass(unref(ns).b(\"group\")),\n role: \"radiogroup\",\n \"aria-label\": !unref(isLabeledByFormItem) ? _ctx.label || _ctx.ariaLabel || \"radio-group\" : void 0,\n \"aria-labelledby\": unref(isLabeledByFormItem) ? unref(formItem).labelId : void 0\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1);\n };\n }\n});\nvar RadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"radio-group.vue\"]]);\n\nexport { RadioGroup as default };\n//# sourceMappingURL=radio-group2.mjs.map\n","import '../../utils/index.mjs';\nimport Radio from './src/radio2.mjs';\nimport RadioButton from './src/radio-button2.mjs';\nimport RadioGroup from './src/radio-group2.mjs';\nexport { radioEmits, radioProps, radioPropsBase } from './src/radio.mjs';\nexport { radioGroupEmits, radioGroupProps } from './src/radio-group.mjs';\nexport { radioButtonProps } from './src/radio-button.mjs';\nexport { radioGroupKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElRadio = withInstall(Radio, {\n RadioButton,\n RadioGroup\n});\nconst ElRadioGroup = withNoopInstall(RadioGroup);\nconst ElRadioButton = withNoopInstall(RadioButton);\n\nexport { ElRadio, ElRadioButton, ElRadioGroup, ElRadio as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, h } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nvar NodeContent = defineComponent({\n name: \"NodeContent\",\n setup() {\n const ns = useNamespace(\"cascader-node\");\n return {\n ns\n };\n },\n render() {\n const { ns } = this;\n const { node, panel } = this.$parent;\n const { data, label } = node;\n const { renderLabelFn } = panel;\n return h(\"span\", { class: ns.e(\"label\") }, renderLabelFn ? renderLabelFn({ node, data }) : label);\n }\n});\n\nexport { NodeContent as default };\n//# sourceMappingURL=node-content.mjs.map\n","const CASCADER_PANEL_INJECTION_KEY = Symbol();\n\nexport { CASCADER_PANEL_INJECTION_KEY };\n//# sourceMappingURL=types.mjs.map\n","import { defineComponent, inject, computed, createElementVNode, resolveComponent, openBlock, createElementBlock, normalizeClass, createCommentVNode, createBlock, withModifiers, withCtx, createVNode, Fragment } from 'vue';\nimport { ElCheckbox } from '../../checkbox/index.mjs';\nimport { ElRadio } from '../../radio/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { Check, Loading, ArrowRight } from '@element-plus/icons-vue';\nimport NodeContent from './node-content.mjs';\nimport { CASCADER_PANEL_INJECTION_KEY } from './types.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElCascaderNode\",\n components: {\n ElCheckbox,\n ElRadio,\n NodeContent,\n ElIcon,\n Check,\n Loading,\n ArrowRight\n },\n props: {\n node: {\n type: Object,\n required: true\n },\n menuId: String\n },\n emits: [\"expand\"],\n setup(props, { emit }) {\n const panel = inject(CASCADER_PANEL_INJECTION_KEY);\n const ns = useNamespace(\"cascader-node\");\n const isHoverMenu = computed(() => panel.isHoverMenu);\n const multiple = computed(() => panel.config.multiple);\n const checkStrictly = computed(() => panel.config.checkStrictly);\n const checkedNodeId = computed(() => {\n var _a;\n return (_a = panel.checkedNodes[0]) == null ? void 0 : _a.uid;\n });\n const isDisabled = computed(() => props.node.isDisabled);\n const isLeaf = computed(() => props.node.isLeaf);\n const expandable = computed(() => checkStrictly.value && !isLeaf.value || !isDisabled.value);\n const inExpandingPath = computed(() => isInPath(panel.expandingNode));\n const inCheckedPath = computed(() => checkStrictly.value && panel.checkedNodes.some(isInPath));\n const isInPath = (node) => {\n var _a;\n const { level, uid } = props.node;\n return ((_a = node == null ? void 0 : node.pathNodes[level - 1]) == null ? void 0 : _a.uid) === uid;\n };\n const doExpand = () => {\n if (inExpandingPath.value)\n return;\n panel.expandNode(props.node);\n };\n const doCheck = (checked) => {\n const { node } = props;\n if (checked === node.checked)\n return;\n panel.handleCheckChange(node, checked);\n };\n const doLoad = () => {\n panel.lazyLoad(props.node, () => {\n if (!isLeaf.value)\n doExpand();\n });\n };\n const handleHoverExpand = (e) => {\n if (!isHoverMenu.value)\n return;\n handleExpand();\n !isLeaf.value && emit(\"expand\", e);\n };\n const handleExpand = () => {\n const { node } = props;\n if (!expandable.value || node.loading)\n return;\n node.loaded ? doExpand() : doLoad();\n };\n const handleClick = () => {\n if (isHoverMenu.value && !isLeaf.value)\n return;\n if (isLeaf.value && !isDisabled.value && !checkStrictly.value && !multiple.value) {\n handleCheck(true);\n } else {\n handleExpand();\n }\n };\n const handleSelectCheck = (checked) => {\n if (checkStrictly.value) {\n doCheck(checked);\n if (props.node.loaded) {\n doExpand();\n }\n } else {\n handleCheck(checked);\n }\n };\n const handleCheck = (checked) => {\n if (!props.node.loaded) {\n doLoad();\n } else {\n doCheck(checked);\n !checkStrictly.value && doExpand();\n }\n };\n return {\n panel,\n isHoverMenu,\n multiple,\n checkStrictly,\n checkedNodeId,\n isDisabled,\n isLeaf,\n expandable,\n inExpandingPath,\n inCheckedPath,\n ns,\n handleHoverExpand,\n handleExpand,\n handleClick,\n handleCheck,\n handleSelectCheck\n };\n }\n});\nconst _hoisted_1 = [\"id\", \"aria-haspopup\", \"aria-owns\", \"aria-expanded\", \"tabindex\"];\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"span\", null, null, -1);\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = resolveComponent(\"el-checkbox\");\n const _component_el_radio = resolveComponent(\"el-radio\");\n const _component_check = resolveComponent(\"check\");\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_node_content = resolveComponent(\"node-content\");\n const _component_loading = resolveComponent(\"loading\");\n const _component_arrow_right = resolveComponent(\"arrow-right\");\n return openBlock(), createElementBlock(\"li\", {\n id: `${_ctx.menuId}-${_ctx.node.uid}`,\n role: \"menuitem\",\n \"aria-haspopup\": !_ctx.isLeaf,\n \"aria-owns\": _ctx.isLeaf ? null : _ctx.menuId,\n \"aria-expanded\": _ctx.inExpandingPath,\n tabindex: _ctx.expandable ? -1 : void 0,\n class: normalizeClass([\n _ctx.ns.b(),\n _ctx.ns.is(\"selectable\", _ctx.checkStrictly),\n _ctx.ns.is(\"active\", _ctx.node.checked),\n _ctx.ns.is(\"disabled\", !_ctx.expandable),\n _ctx.inExpandingPath && \"in-active-path\",\n _ctx.inCheckedPath && \"in-checked-path\"\n ]),\n onMouseenter: _cache[2] || (_cache[2] = (...args) => _ctx.handleHoverExpand && _ctx.handleHoverExpand(...args)),\n onFocus: _cache[3] || (_cache[3] = (...args) => _ctx.handleHoverExpand && _ctx.handleHoverExpand(...args)),\n onClick: _cache[4] || (_cache[4] = (...args) => _ctx.handleClick && _ctx.handleClick(...args))\n }, [\n createCommentVNode(\" prefix \"),\n _ctx.multiple ? (openBlock(), createBlock(_component_el_checkbox, {\n key: 0,\n \"model-value\": _ctx.node.checked,\n indeterminate: _ctx.node.indeterminate,\n disabled: _ctx.isDisabled,\n onClick: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"stop\"])),\n \"onUpdate:modelValue\": _ctx.handleSelectCheck\n }, null, 8, [\"model-value\", \"indeterminate\", \"disabled\", \"onUpdate:modelValue\"])) : _ctx.checkStrictly ? (openBlock(), createBlock(_component_el_radio, {\n key: 1,\n \"model-value\": _ctx.checkedNodeId,\n label: _ctx.node.uid,\n disabled: _ctx.isDisabled,\n \"onUpdate:modelValue\": _ctx.handleSelectCheck,\n onClick: _cache[1] || (_cache[1] = withModifiers(() => {\n }, [\"stop\"]))\n }, {\n default: withCtx(() => [\n createCommentVNode(\"\\n Add an empty element to avoid render label,\\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\\n \"),\n _hoisted_2\n ]),\n _: 1\n }, 8, [\"model-value\", \"label\", \"disabled\", \"onUpdate:modelValue\"])) : _ctx.isLeaf && _ctx.node.checked ? (openBlock(), createBlock(_component_el_icon, {\n key: 2,\n class: normalizeClass(_ctx.ns.e(\"prefix\"))\n }, {\n default: withCtx(() => [\n createVNode(_component_check)\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" content \"),\n createVNode(_component_node_content),\n createCommentVNode(\" postfix \"),\n !_ctx.isLeaf ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [\n _ctx.node.loading ? (openBlock(), createBlock(_component_el_icon, {\n key: 0,\n class: normalizeClass([_ctx.ns.is(\"loading\"), _ctx.ns.e(\"postfix\")])\n }, {\n default: withCtx(() => [\n createVNode(_component_loading)\n ]),\n _: 1\n }, 8, [\"class\"])) : (openBlock(), createBlock(_component_el_icon, {\n key: 1,\n class: normalizeClass([\"arrow-right\", _ctx.ns.e(\"postfix\")])\n }, {\n default: withCtx(() => [\n createVNode(_component_arrow_right)\n ]),\n _: 1\n }, 8, [\"class\"]))\n ], 64)) : createCommentVNode(\"v-if\", true)\n ], 42, _hoisted_1);\n}\nvar ElCascaderNode = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"node.vue\"]]);\n\nexport { ElCascaderNode as default };\n//# sourceMappingURL=node2.mjs.map\n","import { defineComponent, getCurrentInstance, inject, ref, computed, resolveComponent, openBlock, createBlock, normalizeClass, withCtx, createElementBlock, Fragment, renderList, createVNode, createTextVNode, toDisplayString, createCommentVNode } from 'vue';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { Loading } from '@element-plus/icons-vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport ElCascaderNode from './node2.mjs';\nimport { CASCADER_PANEL_INJECTION_KEY } from './types.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElCascaderMenu\",\n components: {\n Loading,\n ElIcon,\n ElScrollbar,\n ElCascaderNode\n },\n props: {\n nodes: {\n type: Array,\n required: true\n },\n index: {\n type: Number,\n required: true\n }\n },\n setup(props) {\n const instance = getCurrentInstance();\n const ns = useNamespace(\"cascader-menu\");\n const { t } = useLocale();\n const id = useId();\n let activeNode = null;\n let hoverTimer = null;\n const panel = inject(CASCADER_PANEL_INJECTION_KEY);\n const hoverZone = ref(null);\n const isEmpty = computed(() => !props.nodes.length);\n const isLoading = computed(() => !panel.initialLoaded);\n const menuId = computed(() => `${id.value}-${props.index}`);\n const handleExpand = (e) => {\n activeNode = e.target;\n };\n const handleMouseMove = (e) => {\n if (!panel.isHoverMenu || !activeNode || !hoverZone.value)\n return;\n if (activeNode.contains(e.target)) {\n clearHoverTimer();\n const el = instance.vnode.el;\n const { left } = el.getBoundingClientRect();\n const { offsetWidth, offsetHeight } = el;\n const startX = e.clientX - left;\n const top = activeNode.offsetTop;\n const bottom = top + activeNode.offsetHeight;\n hoverZone.value.innerHTML = `\n \n \n `;\n } else if (!hoverTimer) {\n hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold);\n }\n };\n const clearHoverTimer = () => {\n if (!hoverTimer)\n return;\n clearTimeout(hoverTimer);\n hoverTimer = null;\n };\n const clearHoverZone = () => {\n if (!hoverZone.value)\n return;\n hoverZone.value.innerHTML = \"\";\n clearHoverTimer();\n };\n return {\n ns,\n panel,\n hoverZone,\n isEmpty,\n isLoading,\n menuId,\n t,\n handleExpand,\n handleMouseMove,\n clearHoverZone\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_cascader_node = resolveComponent(\"el-cascader-node\");\n const _component_loading = resolveComponent(\"loading\");\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_el_scrollbar = resolveComponent(\"el-scrollbar\");\n return openBlock(), createBlock(_component_el_scrollbar, {\n key: _ctx.menuId,\n tag: \"ul\",\n role: \"menu\",\n class: normalizeClass(_ctx.ns.b()),\n \"wrap-class\": _ctx.ns.e(\"wrap\"),\n \"view-class\": [_ctx.ns.e(\"list\"), _ctx.ns.is(\"empty\", _ctx.isEmpty)],\n onMousemove: _ctx.handleMouseMove,\n onMouseleave: _ctx.clearHoverZone\n }, {\n default: withCtx(() => {\n var _a;\n return [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, (node) => {\n return openBlock(), createBlock(_component_el_cascader_node, {\n key: node.uid,\n node,\n \"menu-id\": _ctx.menuId,\n onExpand: _ctx.handleExpand\n }, null, 8, [\"node\", \"menu-id\", \"onExpand\"]);\n }), 128)),\n _ctx.isLoading ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(_ctx.ns.e(\"empty-text\"))\n }, [\n createVNode(_component_el_icon, {\n size: \"14\",\n class: normalizeClass(_ctx.ns.is(\"loading\"))\n }, {\n default: withCtx(() => [\n createVNode(_component_loading)\n ]),\n _: 1\n }, 8, [\"class\"]),\n createTextVNode(\" \" + toDisplayString(_ctx.t(\"el.cascader.loading\")), 1)\n ], 2)) : _ctx.isEmpty ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(_ctx.ns.e(\"empty-text\"))\n }, toDisplayString(_ctx.t(\"el.cascader.noData\")), 3)) : ((_a = _ctx.panel) == null ? void 0 : _a.isHoverMenu) ? (openBlock(), createElementBlock(\"svg\", {\n key: 2,\n ref: \"hoverZone\",\n class: normalizeClass(_ctx.ns.e(\"hover-zone\"))\n }, null, 2)) : createCommentVNode(\"v-if\", true)\n ];\n }),\n _: 1\n }, 8, [\"class\", \"wrap-class\", \"view-class\", \"onMousemove\", \"onMouseleave\"]);\n}\nvar ElCascaderMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"menu.vue\"]]);\n\nexport { ElCascaderMenu as default };\n//# sourceMappingURL=menu.mjs.map\n","import { capitalize as capitalize$1 } from '@vue/shared';\nexport { camelize, hyphenate, hyphenate as kebabCase } from '@vue/shared';\n\nconst escapeStringRegexp = (string = \"\") => string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\nconst capitalize = (str) => capitalize$1(str);\n\nexport { capitalize, escapeStringRegexp };\n//# sourceMappingURL=strings.mjs.map\n","import { isFunction } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport { isEmpty, isUndefined } from '../../../utils/types.mjs';\nimport { capitalize } from '../../../utils/strings.mjs';\n\nlet uid = 0;\nconst calculatePathNodes = (node) => {\n const nodes = [node];\n let { parent } = node;\n while (parent) {\n nodes.unshift(parent);\n parent = parent.parent;\n }\n return nodes;\n};\nclass Node {\n constructor(data, config, parent, root = false) {\n this.data = data;\n this.config = config;\n this.parent = parent;\n this.root = root;\n this.uid = uid++;\n this.checked = false;\n this.indeterminate = false;\n this.loading = false;\n const { value: valueKey, label: labelKey, children: childrenKey } = config;\n const childrenData = data[childrenKey];\n const pathNodes = calculatePathNodes(this);\n this.level = root ? 0 : parent ? parent.level + 1 : 1;\n this.value = data[valueKey];\n this.label = data[labelKey];\n this.pathNodes = pathNodes;\n this.pathValues = pathNodes.map((node) => node.value);\n this.pathLabels = pathNodes.map((node) => node.label);\n this.childrenData = childrenData;\n this.children = (childrenData || []).map((child) => new Node(child, config, this));\n this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData);\n }\n get isDisabled() {\n const { data, parent, config } = this;\n const { disabled, checkStrictly } = config;\n const isDisabled = isFunction(disabled) ? disabled(data, this) : !!data[disabled];\n return isDisabled || !checkStrictly && (parent == null ? void 0 : parent.isDisabled);\n }\n get isLeaf() {\n const { data, config, childrenData, loaded } = this;\n const { lazy, leaf } = config;\n const isLeaf = isFunction(leaf) ? leaf(data, this) : data[leaf];\n return isUndefined(isLeaf) ? lazy && !loaded ? false : !(Array.isArray(childrenData) && childrenData.length) : !!isLeaf;\n }\n get valueByOption() {\n return this.config.emitPath ? this.pathValues : this.value;\n }\n appendChild(childData) {\n const { childrenData, children } = this;\n const node = new Node(childData, this.config, this);\n if (Array.isArray(childrenData)) {\n childrenData.push(childData);\n } else {\n this.childrenData = [childData];\n }\n children.push(node);\n return node;\n }\n calcText(allLevels, separator) {\n const text = allLevels ? this.pathLabels.join(separator) : this.label;\n this.text = text;\n return text;\n }\n broadcast(event, ...args) {\n const handlerName = `onParent${capitalize(event)}`;\n this.children.forEach((child) => {\n if (child) {\n child.broadcast(event, ...args);\n child[handlerName] && child[handlerName](...args);\n }\n });\n }\n emit(event, ...args) {\n const { parent } = this;\n const handlerName = `onChild${capitalize(event)}`;\n if (parent) {\n parent[handlerName] && parent[handlerName](...args);\n parent.emit(event, ...args);\n }\n }\n onParentCheck(checked) {\n if (!this.isDisabled) {\n this.setCheckState(checked);\n }\n }\n onChildCheck() {\n const { children } = this;\n const validChildren = children.filter((child) => !child.isDisabled);\n const checked = validChildren.length ? validChildren.every((child) => child.checked) : false;\n this.setCheckState(checked);\n }\n setCheckState(checked) {\n const totalNum = this.children.length;\n const checkedNum = this.children.reduce((c, p) => {\n const num = p.checked ? 1 : p.indeterminate ? 0.5 : 0;\n return c + num;\n }, 0);\n this.checked = this.loaded && this.children.filter((child) => !child.isDisabled).every((child) => child.loaded && child.checked) && checked;\n this.indeterminate = this.loaded && checkedNum !== totalNum && checkedNum > 0;\n }\n doCheck(checked) {\n if (this.checked === checked)\n return;\n const { checkStrictly, multiple } = this.config;\n if (checkStrictly || !multiple) {\n this.checked = checked;\n } else {\n this.broadcast(\"check\", checked);\n this.setCheckState(checked);\n this.emit(\"check\");\n }\n }\n}\n\nexport { Node as default };\n//# sourceMappingURL=node.mjs.map\n","import { isEqual } from 'lodash-unified';\nimport Node from './node.mjs';\n\nconst flatNodes = (nodes, leafOnly) => {\n return nodes.reduce((res, node) => {\n if (node.isLeaf) {\n res.push(node);\n } else {\n !leafOnly && res.push(node);\n res = res.concat(flatNodes(node.children, leafOnly));\n }\n return res;\n }, []);\n};\nclass Store {\n constructor(data, config) {\n this.config = config;\n const nodes = (data || []).map((nodeData) => new Node(nodeData, this.config));\n this.nodes = nodes;\n this.allNodes = flatNodes(nodes, false);\n this.leafNodes = flatNodes(nodes, true);\n }\n getNodes() {\n return this.nodes;\n }\n getFlattedNodes(leafOnly) {\n return leafOnly ? this.leafNodes : this.allNodes;\n }\n appendNode(nodeData, parentNode) {\n const node = parentNode ? parentNode.appendChild(nodeData) : new Node(nodeData, this.config);\n if (!parentNode)\n this.nodes.push(node);\n this.allNodes.push(node);\n node.isLeaf && this.leafNodes.push(node);\n }\n appendNodes(nodeDataList, parentNode) {\n nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode));\n }\n getNodeByValue(value, leafOnly = false) {\n if (!value && value !== 0)\n return null;\n const node = this.getFlattedNodes(leafOnly).find((node2) => isEqual(node2.value, value) || isEqual(node2.pathValues, value));\n return node || null;\n }\n getSameNode(node) {\n if (!node)\n return null;\n const node_ = this.getFlattedNodes(false).find(({ value, level }) => isEqual(node.value, value) && node.level === level);\n return node_ || null;\n }\n}\n\nexport { Store as default };\n//# sourceMappingURL=store.mjs.map\n","import { computed } from 'vue';\nimport { NOOP } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst CommonProps = buildProps({\n modelValue: {\n type: definePropType([Number, String, Array])\n },\n options: {\n type: definePropType(Array),\n default: () => []\n },\n props: {\n type: definePropType(Object),\n default: () => ({})\n }\n});\nconst DefaultProps = {\n expandTrigger: \"click\",\n multiple: false,\n checkStrictly: false,\n emitPath: true,\n lazy: false,\n lazyLoad: NOOP,\n value: \"value\",\n label: \"label\",\n children: \"children\",\n leaf: \"leaf\",\n disabled: \"disabled\",\n hoverThreshold: 500\n};\nconst useCascaderConfig = (props) => {\n return computed(() => ({\n ...DefaultProps,\n ...props.props\n }));\n};\n\nexport { CommonProps, DefaultProps, useCascaderConfig };\n//# sourceMappingURL=config.mjs.map\n","import '../../../utils/index.mjs';\nimport { isLeaf } from '../../../utils/dom/aria.mjs';\n\nconst getMenuIndex = (el) => {\n if (!el)\n return 0;\n const pieces = el.id.split(\"-\");\n return Number(pieces[pieces.length - 2]);\n};\nconst checkNode = (el) => {\n if (!el)\n return;\n const input = el.querySelector(\"input\");\n if (input) {\n input.click();\n } else if (isLeaf(el)) {\n el.click();\n }\n};\nconst sortByOriginalOrder = (oldNodes, newNodes) => {\n const newNodesCopy = newNodes.slice(0);\n const newIds = newNodesCopy.map((node) => node.uid);\n const res = oldNodes.reduce((acc, item) => {\n const index = newIds.indexOf(item.uid);\n if (index > -1) {\n acc.push(item);\n newNodesCopy.splice(index, 1);\n newIds.splice(index, 1);\n }\n return acc;\n }, []);\n res.push(...newNodesCopy);\n return res;\n};\n\nexport { checkNode, getMenuIndex, sortByOriginalOrder };\n//# sourceMappingURL=utils.mjs.map\n","export { castArray as ensureArray } from 'lodash-unified';\n\nconst unique = (arr) => [...new Set(arr)];\nconst castArray = (arr) => {\n if (!arr && arr !== 0)\n return [];\n return Array.isArray(arr) ? arr : [arr];\n};\n\nexport { castArray, unique };\n//# sourceMappingURL=arrays.mjs.map\n","import { defineComponent, ref, computed, reactive, nextTick, provide, watch, onBeforeUpdate, onMounted, resolveComponent, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createBlock } from 'vue';\nimport { isEqual, flattenDeep, cloneDeep } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport ElCascaderMenu from './menu.mjs';\nimport Store from './store.mjs';\nimport Node from './node.mjs';\nimport { CommonProps, useCascaderConfig } from './config.mjs';\nimport { sortByOriginalOrder, checkNode, getMenuIndex } from './utils.mjs';\nimport { CASCADER_PANEL_INJECTION_KEY } from './types.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isEmpty } from '../../../utils/types.mjs';\nimport { unique, castArray } from '../../../utils/arrays.mjs';\nimport { isClient } from '@vueuse/core';\nimport { scrollIntoView } from '../../../utils/dom/scroll.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { focusNode, getSibling } from '../../../utils/dom/aria.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElCascaderPanel\",\n components: {\n ElCascaderMenu\n },\n props: {\n ...CommonProps,\n border: {\n type: Boolean,\n default: true\n },\n renderLabel: Function\n },\n emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, \"close\", \"expand-change\"],\n setup(props, { emit, slots }) {\n let manualChecked = false;\n const ns = useNamespace(\"cascader\");\n const config = useCascaderConfig(props);\n let store = null;\n const initialLoaded = ref(true);\n const menuList = ref([]);\n const checkedValue = ref(null);\n const menus = ref([]);\n const expandingNode = ref(null);\n const checkedNodes = ref([]);\n const isHoverMenu = computed(() => config.value.expandTrigger === \"hover\");\n const renderLabelFn = computed(() => props.renderLabel || slots.default);\n const initStore = () => {\n const { options } = props;\n const cfg = config.value;\n manualChecked = false;\n store = new Store(options, cfg);\n menus.value = [store.getNodes()];\n if (cfg.lazy && isEmpty(props.options)) {\n initialLoaded.value = false;\n lazyLoad(void 0, (list) => {\n if (list) {\n store = new Store(list, cfg);\n menus.value = [store.getNodes()];\n }\n initialLoaded.value = true;\n syncCheckedValue(false, true);\n });\n } else {\n syncCheckedValue(false, true);\n }\n };\n const lazyLoad = (node, cb) => {\n const cfg = config.value;\n node = node || new Node({}, cfg, void 0, true);\n node.loading = true;\n const resolve = (dataList) => {\n const _node = node;\n const parent = _node.root ? null : _node;\n dataList && (store == null ? void 0 : store.appendNodes(dataList, parent));\n _node.loading = false;\n _node.loaded = true;\n _node.childrenData = _node.childrenData || [];\n cb && cb(dataList);\n };\n cfg.lazyLoad(node, resolve);\n };\n const expandNode = (node, silent) => {\n var _a;\n const { level } = node;\n const newMenus = menus.value.slice(0, level);\n let newExpandingNode;\n if (node.isLeaf) {\n newExpandingNode = node.pathNodes[level - 2];\n } else {\n newExpandingNode = node;\n newMenus.push(node.children);\n }\n if (((_a = expandingNode.value) == null ? void 0 : _a.uid) !== (newExpandingNode == null ? void 0 : newExpandingNode.uid)) {\n expandingNode.value = node;\n menus.value = newMenus;\n !silent && emit(\"expand-change\", (node == null ? void 0 : node.pathValues) || []);\n }\n };\n const handleCheckChange = (node, checked, emitClose = true) => {\n const { checkStrictly, multiple } = config.value;\n const oldNode = checkedNodes.value[0];\n manualChecked = true;\n !multiple && (oldNode == null ? void 0 : oldNode.doCheck(false));\n node.doCheck(checked);\n calculateCheckedValue();\n emitClose && !multiple && !checkStrictly && emit(\"close\");\n !emitClose && !multiple && !checkStrictly && expandParentNode(node);\n };\n const expandParentNode = (node) => {\n if (!node)\n return;\n node = node.parent;\n expandParentNode(node);\n node && expandNode(node);\n };\n const getFlattedNodes = (leafOnly) => {\n return store == null ? void 0 : store.getFlattedNodes(leafOnly);\n };\n const getCheckedNodes = (leafOnly) => {\n var _a;\n return (_a = getFlattedNodes(leafOnly)) == null ? void 0 : _a.filter((node) => node.checked !== false);\n };\n const clearCheckedNodes = () => {\n checkedNodes.value.forEach((node) => node.doCheck(false));\n calculateCheckedValue();\n menus.value = menus.value.slice(0, 1);\n expandingNode.value = null;\n emit(\"expand-change\", []);\n };\n const calculateCheckedValue = () => {\n var _a;\n const { checkStrictly, multiple } = config.value;\n const oldNodes = checkedNodes.value;\n const newNodes = getCheckedNodes(!checkStrictly);\n const nodes = sortByOriginalOrder(oldNodes, newNodes);\n const values = nodes.map((node) => node.valueByOption);\n checkedNodes.value = nodes;\n checkedValue.value = multiple ? values : (_a = values[0]) != null ? _a : null;\n };\n const syncCheckedValue = (loaded = false, forced = false) => {\n const { modelValue } = props;\n const { lazy, multiple, checkStrictly } = config.value;\n const leafOnly = !checkStrictly;\n if (!initialLoaded.value || manualChecked || !forced && isEqual(modelValue, checkedValue.value))\n return;\n if (lazy && !loaded) {\n const values = unique(flattenDeep(castArray(modelValue)));\n const nodes = values.map((val) => store == null ? void 0 : store.getNodeByValue(val)).filter((node) => !!node && !node.loaded && !node.loading);\n if (nodes.length) {\n nodes.forEach((node) => {\n lazyLoad(node, () => syncCheckedValue(false, forced));\n });\n } else {\n syncCheckedValue(true, forced);\n }\n } else {\n const values = multiple ? castArray(modelValue) : [modelValue];\n const nodes = unique(values.map((val) => store == null ? void 0 : store.getNodeByValue(val, leafOnly)));\n syncMenuState(nodes, forced);\n checkedValue.value = cloneDeep(modelValue);\n }\n };\n const syncMenuState = (newCheckedNodes, reserveExpandingState = true) => {\n const { checkStrictly } = config.value;\n const oldNodes = checkedNodes.value;\n const newNodes = newCheckedNodes.filter((node) => !!node && (checkStrictly || node.isLeaf));\n const oldExpandingNode = store == null ? void 0 : store.getSameNode(expandingNode.value);\n const newExpandingNode = reserveExpandingState && oldExpandingNode || newNodes[0];\n if (newExpandingNode) {\n newExpandingNode.pathNodes.forEach((node) => expandNode(node, true));\n } else {\n expandingNode.value = null;\n }\n oldNodes.forEach((node) => node.doCheck(false));\n reactive(newNodes).forEach((node) => node.doCheck(true));\n checkedNodes.value = newNodes;\n nextTick(scrollToExpandingNode);\n };\n const scrollToExpandingNode = () => {\n if (!isClient)\n return;\n menuList.value.forEach((menu) => {\n const menuElement = menu == null ? void 0 : menu.$el;\n if (menuElement) {\n const container = menuElement.querySelector(`.${ns.namespace.value}-scrollbar__wrap`);\n const activeNode = menuElement.querySelector(`.${ns.b(\"node\")}.${ns.is(\"active\")}`) || menuElement.querySelector(`.${ns.b(\"node\")}.in-active-path`);\n scrollIntoView(container, activeNode);\n }\n });\n };\n const handleKeyDown = (e) => {\n const target = e.target;\n const { code } = e;\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n e.preventDefault();\n const distance = code === EVENT_CODE.up ? -1 : 1;\n focusNode(getSibling(target, distance, `.${ns.b(\"node\")}[tabindex=\"-1\"]`));\n break;\n }\n case EVENT_CODE.left: {\n e.preventDefault();\n const preMenu = menuList.value[getMenuIndex(target) - 1];\n const expandedNode = preMenu == null ? void 0 : preMenu.$el.querySelector(`.${ns.b(\"node\")}[aria-expanded=\"true\"]`);\n focusNode(expandedNode);\n break;\n }\n case EVENT_CODE.right: {\n e.preventDefault();\n const nextMenu = menuList.value[getMenuIndex(target) + 1];\n const firstNode = nextMenu == null ? void 0 : nextMenu.$el.querySelector(`.${ns.b(\"node\")}[tabindex=\"-1\"]`);\n focusNode(firstNode);\n break;\n }\n case EVENT_CODE.enter:\n checkNode(target);\n break;\n }\n };\n provide(CASCADER_PANEL_INJECTION_KEY, reactive({\n config,\n expandingNode,\n checkedNodes,\n isHoverMenu,\n initialLoaded,\n renderLabelFn,\n lazyLoad,\n expandNode,\n handleCheckChange\n }));\n watch([config, () => props.options], initStore, {\n deep: true,\n immediate: true\n });\n watch(() => props.modelValue, () => {\n manualChecked = false;\n syncCheckedValue();\n }, {\n deep: true\n });\n watch(() => checkedValue.value, (val) => {\n if (!isEqual(val, props.modelValue)) {\n emit(UPDATE_MODEL_EVENT, val);\n emit(CHANGE_EVENT, val);\n }\n });\n onBeforeUpdate(() => menuList.value = []);\n onMounted(() => !isEmpty(props.modelValue) && syncCheckedValue());\n return {\n ns,\n menuList,\n menus,\n checkedNodes,\n handleKeyDown,\n handleCheckChange,\n getFlattedNodes,\n getCheckedNodes,\n clearCheckedNodes,\n calculateCheckedValue,\n scrollToExpandingNode\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_cascader_menu = resolveComponent(\"el-cascader-menu\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.ns.b(\"panel\"), _ctx.ns.is(\"bordered\", _ctx.border)]),\n onKeydown: _cache[0] || (_cache[0] = (...args) => _ctx.handleKeyDown && _ctx.handleKeyDown(...args))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menus, (menu, index) => {\n return openBlock(), createBlock(_component_el_cascader_menu, {\n key: index,\n ref_for: true,\n ref: (item) => _ctx.menuList[index] = item,\n index,\n nodes: [...menu]\n }, null, 8, [\"index\", \"nodes\"]);\n }), 128))\n ], 34);\n}\nvar CascaderPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"index.vue\"]]);\n\nexport { CascaderPanel as default };\n//# sourceMappingURL=index.mjs.map\n","import CascaderPanel from './src/index.mjs';\nexport { CASCADER_PANEL_INJECTION_KEY } from './src/types.mjs';\nexport { CommonProps, DefaultProps, useCascaderConfig } from './src/config.mjs';\nimport './src/instance.mjs';\n\nCascaderPanel.install = (app) => {\n app.component(CascaderPanel.name, CascaderPanel);\n};\nconst _CascaderPanel = CascaderPanel;\nconst ElCascaderPanel = _CascaderPanel;\n\nexport { ElCascaderPanel, _CascaderPanel as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { componentSizes } from '../../../constants/size.mjs';\n\nconst tagProps = buildProps({\n type: {\n type: String,\n values: [\"primary\", \"success\", \"info\", \"warning\", \"danger\"],\n default: \"primary\"\n },\n closable: Boolean,\n disableTransitions: Boolean,\n hit: Boolean,\n color: String,\n size: {\n type: String,\n values: componentSizes\n },\n effect: {\n type: String,\n values: [\"dark\", \"light\", \"plain\"],\n default: \"light\"\n },\n round: Boolean\n});\nconst tagEmits = {\n close: (evt) => evt instanceof MouseEvent,\n click: (evt) => evt instanceof MouseEvent\n};\n\nexport { tagEmits, tagProps };\n//# sourceMappingURL=tag.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, createElementVNode, renderSlot, createBlock, withModifiers, withCtx, createVNode, createCommentVNode, Transition } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { Close } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport '../../form/index.mjs';\nimport { tagProps, tagEmits } from './tag.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTag\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: tagProps,\n emits: tagEmits,\n setup(__props, { emit }) {\n const props = __props;\n const tagSize = useFormSize();\n const ns = useNamespace(\"tag\");\n const containerKls = computed(() => {\n const { type, hit, effect, closable, round } = props;\n return [\n ns.b(),\n ns.is(\"closable\", closable),\n ns.m(type || \"primary\"),\n ns.m(tagSize.value),\n ns.m(effect),\n ns.is(\"hit\", hit),\n ns.is(\"round\", round)\n ];\n });\n const handleClose = (event) => {\n emit(\"close\", event);\n };\n const handleClick = (event) => {\n emit(\"click\", event);\n };\n return (_ctx, _cache) => {\n return _ctx.disableTransitions ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass(unref(containerKls)),\n style: normalizeStyle({ backgroundColor: _ctx.color }),\n onClick: handleClick\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).e(\"content\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2),\n _ctx.closable ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).e(\"close\")),\n onClick: withModifiers(handleClose, [\"stop\"])\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true)\n ], 6)) : (openBlock(), createBlock(Transition, {\n key: 1,\n name: `${unref(ns).namespace.value}-zoom-in-center`,\n appear: \"\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(containerKls)),\n style: normalizeStyle({ backgroundColor: _ctx.color }),\n onClick: handleClick\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).e(\"content\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2),\n _ctx.closable ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).e(\"close\")),\n onClick: withModifiers(handleClose, [\"stop\"])\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true)\n ], 6)\n ]),\n _: 3\n }, 8, [\"name\"]));\n };\n }\n});\nvar Tag = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"tag.vue\"]]);\n\nexport { Tag as default };\n//# sourceMappingURL=tag2.mjs.map\n","import '../../utils/index.mjs';\nimport Tag from './src/tag2.mjs';\nexport { tagEmits, tagProps } from './src/tag.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElTag = withInstall(Tag);\n\nexport { ElTag, ElTag as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../cascader-panel/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../tag/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { CommonProps } from '../../cascader-panel/src/config.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { tagProps } from '../../tag/src/tag.mjs';\nimport { useEmptyValuesProps } from '../../../hooks/use-empty-values/index.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\n\nconst cascaderProps = buildProps({\n ...CommonProps,\n size: useSizeProp,\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: {\n type: definePropType(Function),\n default: (node, keyword) => node.text.includes(keyword)\n },\n separator: {\n type: String,\n default: \" / \"\n },\n showAllLevels: {\n type: Boolean,\n default: true\n },\n collapseTags: Boolean,\n maxCollapseTags: {\n type: Number,\n default: 1\n },\n collapseTagsTooltip: {\n type: Boolean,\n default: false\n },\n debounce: {\n type: Number,\n default: 300\n },\n beforeFilter: {\n type: definePropType(Function),\n default: () => true\n },\n popperClass: {\n type: String,\n default: \"\"\n },\n teleported: useTooltipContentProps.teleported,\n tagType: { ...tagProps.type, default: \"info\" },\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useEmptyValuesProps\n});\nconst cascaderEmits = {\n [UPDATE_MODEL_EVENT]: (_) => true,\n [CHANGE_EVENT]: (_) => true,\n focus: (evt) => evt instanceof FocusEvent,\n blur: (evt) => evt instanceof FocusEvent,\n visibleChange: (val) => isBoolean(val),\n expandChange: (val) => !!val,\n removeTag: (val) => !!val\n};\n\nexport { cascaderEmits, cascaderProps };\n//# sourceMappingURL=cascader.mjs.map\n","import '../../utils/index.mjs';\nimport { isClient } from '@vueuse/core';\nimport { isElement } from '../../utils/types.mjs';\n\nconst nodeList = /* @__PURE__ */ new Map();\nlet startClick;\nif (isClient) {\n document.addEventListener(\"mousedown\", (e) => startClick = e);\n document.addEventListener(\"mouseup\", (e) => {\n for (const handlers of nodeList.values()) {\n for (const { documentHandler } of handlers) {\n documentHandler(e, startClick);\n }\n }\n });\n}\nfunction createDocumentHandler(el, binding) {\n let excludes = [];\n if (Array.isArray(binding.arg)) {\n excludes = binding.arg;\n } else if (isElement(binding.arg)) {\n excludes.push(binding.arg);\n }\n return function(mouseup, mousedown) {\n const popperRef = binding.instance.popperRef;\n const mouseUpTarget = mouseup.target;\n const mouseDownTarget = mousedown == null ? void 0 : mousedown.target;\n const isBound = !binding || !binding.instance;\n const isTargetExists = !mouseUpTarget || !mouseDownTarget;\n const isContainedByEl = el.contains(mouseUpTarget) || el.contains(mouseDownTarget);\n const isSelf = el === mouseUpTarget;\n const isTargetExcluded = excludes.length && excludes.some((item) => item == null ? void 0 : item.contains(mouseUpTarget)) || excludes.length && excludes.includes(mouseDownTarget);\n const isContainedByPopper = popperRef && (popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget));\n if (isBound || isTargetExists || isContainedByEl || isSelf || isTargetExcluded || isContainedByPopper) {\n return;\n }\n binding.value(mouseup, mousedown);\n };\n}\nconst ClickOutside = {\n beforeMount(el, binding) {\n if (!nodeList.has(el)) {\n nodeList.set(el, []);\n }\n nodeList.get(el).push({\n documentHandler: createDocumentHandler(el, binding),\n bindingFn: binding.value\n });\n },\n updated(el, binding) {\n if (!nodeList.has(el)) {\n nodeList.set(el, []);\n }\n const handlers = nodeList.get(el);\n const oldHandlerIndex = handlers.findIndex((item) => item.bindingFn === binding.oldValue);\n const newHandler = {\n documentHandler: createDocumentHandler(el, binding),\n bindingFn: binding.value\n };\n if (oldHandlerIndex >= 0) {\n handlers.splice(oldHandlerIndex, 1, newHandler);\n } else {\n handlers.push(newHandler);\n }\n },\n unmounted(el) {\n nodeList.delete(el);\n }\n};\n\nexport { ClickOutside as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, useAttrs, ref, computed, nextTick, watch, onMounted, openBlock, createBlock, unref, withCtx, withDirectives, createElementBlock, normalizeClass, normalizeStyle, createVNode, withModifiers, Fragment, renderList, toDisplayString, createElementVNode, withKeys, vModelText, createCommentVNode, isRef, vShow, renderSlot } from 'vue';\nimport { isPromise } from '@vue/shared';\nimport { cloneDeep, debounce } from 'lodash-unified';\nimport { isClient, useCssVar, useResizeObserver } from '@vueuse/core';\nimport _CascaderPanel from '../../cascader-panel/index.mjs';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport { ElTag } from '../../tag/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { CircleClose, ArrowDown, Check } from '@element-plus/icons-vue';\nimport { cascaderProps, cascaderEmits } from './cascader.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useFormItem } from '../../form/src/hooks/use-form-item.mjs';\nimport { useEmptyValues } from '../../../hooks/use-empty-values/index.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isKorean } from '../../../utils/i18n.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { focusNode, getSibling } from '../../../utils/dom/aria.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\n\nconst _hoisted_1 = { key: 0 };\nconst _hoisted_2 = [\"placeholder\", \"onKeydown\"];\nconst _hoisted_3 = [\"onClick\"];\nconst COMPONENT_NAME = \"ElCascader\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: cascaderProps,\n emits: cascaderEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const popperOptions = {\n modifiers: [\n {\n name: \"arrowPosition\",\n enabled: true,\n phase: \"main\",\n fn: ({ state }) => {\n const { modifiersData, placement } = state;\n if ([\"right\", \"left\", \"bottom\", \"top\"].includes(placement))\n return;\n modifiersData.arrow.x = 35;\n },\n requires: [\"arrow\"]\n }\n ]\n };\n const attrs = useAttrs();\n let inputInitialHeight = 0;\n let pressDeleteCount = 0;\n const nsCascader = useNamespace(\"cascader\");\n const nsInput = useNamespace(\"input\");\n const { t } = useLocale();\n const { form, formItem } = useFormItem();\n const { valueOnClear } = useEmptyValues(props);\n const tooltipRef = ref(null);\n const input = ref(null);\n const tagWrapper = ref(null);\n const cascaderPanelRef = ref(null);\n const suggestionPanel = ref(null);\n const popperVisible = ref(false);\n const inputHover = ref(false);\n const filtering = ref(false);\n const filterFocus = ref(false);\n const inputValue = ref(\"\");\n const searchInputValue = ref(\"\");\n const presentTags = ref([]);\n const allPresentTags = ref([]);\n const suggestions = ref([]);\n const isOnComposition = ref(false);\n const cascaderStyle = computed(() => {\n return attrs.style;\n });\n const isDisabled = computed(() => props.disabled || (form == null ? void 0 : form.disabled));\n const inputPlaceholder = computed(() => props.placeholder || t(\"el.cascader.placeholder\"));\n const currentPlaceholder = computed(() => searchInputValue.value || presentTags.value.length > 0 || isOnComposition.value ? \"\" : inputPlaceholder.value);\n const realSize = useFormSize();\n const tagSize = computed(() => [\"small\"].includes(realSize.value) ? \"small\" : \"default\");\n const multiple = computed(() => !!props.props.multiple);\n const readonly = computed(() => !props.filterable || multiple.value);\n const searchKeyword = computed(() => multiple.value ? searchInputValue.value : inputValue.value);\n const checkedNodes = computed(() => {\n var _a;\n return ((_a = cascaderPanelRef.value) == null ? void 0 : _a.checkedNodes) || [];\n });\n const clearBtnVisible = computed(() => {\n if (!props.clearable || isDisabled.value || filtering.value || !inputHover.value)\n return false;\n return !!checkedNodes.value.length;\n });\n const presentText = computed(() => {\n const { showAllLevels, separator } = props;\n const nodes = checkedNodes.value;\n return nodes.length ? multiple.value ? \"\" : nodes[0].calcText(showAllLevels, separator) : \"\";\n });\n const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || \"\");\n const checkedValue = computed({\n get() {\n return cloneDeep(props.modelValue);\n },\n set(val) {\n const value = val || valueOnClear.value;\n emit(UPDATE_MODEL_EVENT, value);\n emit(CHANGE_EVENT, value);\n if (props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n }\n });\n const cascaderKls = computed(() => {\n return [\n nsCascader.b(),\n nsCascader.m(realSize.value),\n nsCascader.is(\"disabled\", isDisabled.value),\n attrs.class\n ];\n });\n const cascaderIconKls = computed(() => {\n return [\n nsInput.e(\"icon\"),\n \"icon-arrow-down\",\n nsCascader.is(\"reverse\", popperVisible.value)\n ];\n });\n const inputClass = computed(() => {\n return nsCascader.is(\"focus\", popperVisible.value || filterFocus.value);\n });\n const contentRef = computed(() => {\n var _a, _b;\n return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n const togglePopperVisible = (visible) => {\n var _a, _b, _c;\n if (isDisabled.value)\n return;\n visible = visible != null ? visible : !popperVisible.value;\n if (visible !== popperVisible.value) {\n popperVisible.value = visible;\n (_b = (_a = input.value) == null ? void 0 : _a.input) == null ? void 0 : _b.setAttribute(\"aria-expanded\", `${visible}`);\n if (visible) {\n updatePopperPosition();\n nextTick((_c = cascaderPanelRef.value) == null ? void 0 : _c.scrollToExpandingNode);\n } else if (props.filterable) {\n syncPresentTextValue();\n }\n emit(\"visibleChange\", visible);\n }\n };\n const updatePopperPosition = () => {\n nextTick(() => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper();\n });\n };\n const hideSuggestionPanel = () => {\n filtering.value = false;\n };\n const genTag = (node) => {\n const { showAllLevels, separator } = props;\n return {\n node,\n key: node.uid,\n text: node.calcText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled.value && !node.isDisabled,\n isCollapseTag: false\n };\n };\n const deleteTag = (tag) => {\n var _a;\n const node = tag.node;\n node.doCheck(false);\n (_a = cascaderPanelRef.value) == null ? void 0 : _a.calculateCheckedValue();\n emit(\"removeTag\", node.valueByOption);\n };\n const calculatePresentTags = () => {\n if (!multiple.value)\n return;\n const nodes = checkedNodes.value;\n const tags = [];\n const allTags = [];\n nodes.forEach((node) => allTags.push(genTag(node)));\n allPresentTags.value = allTags;\n if (nodes.length) {\n nodes.slice(0, props.maxCollapseTags).forEach((node) => tags.push(genTag(node)));\n const rest = nodes.slice(props.maxCollapseTags);\n const restCount = rest.length;\n if (restCount) {\n if (props.collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false,\n isCollapseTag: true\n });\n } else {\n rest.forEach((node) => tags.push(genTag(node)));\n }\n }\n }\n presentTags.value = tags;\n };\n const calculateSuggestions = () => {\n var _a, _b;\n const { filterMethod, showAllLevels, separator } = props;\n const res = (_b = (_a = cascaderPanelRef.value) == null ? void 0 : _a.getFlattedNodes(!props.props.checkStrictly)) == null ? void 0 : _b.filter((node) => {\n if (node.isDisabled)\n return false;\n node.calcText(showAllLevels, separator);\n return filterMethod(node, searchKeyword.value);\n });\n if (multiple.value) {\n presentTags.value.forEach((tag) => {\n tag.hitState = false;\n });\n allPresentTags.value.forEach((tag) => {\n tag.hitState = false;\n });\n }\n filtering.value = true;\n suggestions.value = res;\n updatePopperPosition();\n };\n const focusFirstNode = () => {\n var _a;\n let firstNode;\n if (filtering.value && suggestionPanel.value) {\n firstNode = suggestionPanel.value.$el.querySelector(`.${nsCascader.e(\"suggestion-item\")}`);\n } else {\n firstNode = (_a = cascaderPanelRef.value) == null ? void 0 : _a.$el.querySelector(`.${nsCascader.b(\"node\")}[tabindex=\"-1\"]`);\n }\n if (firstNode) {\n firstNode.focus();\n !filtering.value && firstNode.click();\n }\n };\n const updateStyle = () => {\n var _a, _b;\n const inputInner = (_a = input.value) == null ? void 0 : _a.input;\n const tagWrapperEl = tagWrapper.value;\n const suggestionPanelEl = (_b = suggestionPanel.value) == null ? void 0 : _b.$el;\n if (!isClient || !inputInner)\n return;\n if (suggestionPanelEl) {\n const suggestionList = suggestionPanelEl.querySelector(`.${nsCascader.e(\"suggestion-list\")}`);\n suggestionList.style.minWidth = `${inputInner.offsetWidth}px`;\n }\n if (tagWrapperEl) {\n const { offsetHeight } = tagWrapperEl;\n const height = presentTags.value.length > 0 ? `${Math.max(offsetHeight + 6, inputInitialHeight)}px` : `${inputInitialHeight}px`;\n inputInner.style.height = height;\n updatePopperPosition();\n }\n };\n const getCheckedNodes = (leafOnly) => {\n var _a;\n return (_a = cascaderPanelRef.value) == null ? void 0 : _a.getCheckedNodes(leafOnly);\n };\n const handleExpandChange = (value) => {\n updatePopperPosition();\n emit(\"expandChange\", value);\n };\n const handleComposition = (event) => {\n var _a;\n const text = (_a = event.target) == null ? void 0 : _a.value;\n if (event.type === \"compositionend\") {\n isOnComposition.value = false;\n nextTick(() => handleInput(text));\n } else {\n const lastCharacter = text[text.length - 1] || \"\";\n isOnComposition.value = !isKorean(lastCharacter);\n }\n };\n const handleKeyDown = (e) => {\n if (isOnComposition.value)\n return;\n switch (e.code) {\n case EVENT_CODE.enter:\n togglePopperVisible();\n break;\n case EVENT_CODE.down:\n togglePopperVisible(true);\n nextTick(focusFirstNode);\n e.preventDefault();\n break;\n case EVENT_CODE.esc:\n if (popperVisible.value === true) {\n e.preventDefault();\n e.stopPropagation();\n togglePopperVisible(false);\n }\n break;\n case EVENT_CODE.tab:\n togglePopperVisible(false);\n break;\n }\n };\n const handleClear = () => {\n var _a;\n (_a = cascaderPanelRef.value) == null ? void 0 : _a.clearCheckedNodes();\n if (!popperVisible.value && props.filterable) {\n syncPresentTextValue();\n }\n togglePopperVisible(false);\n };\n const syncPresentTextValue = () => {\n const { value } = presentText;\n inputValue.value = value;\n searchInputValue.value = value;\n };\n const handleSuggestionClick = (node) => {\n var _a, _b;\n const { checked } = node;\n if (multiple.value) {\n (_a = cascaderPanelRef.value) == null ? void 0 : _a.handleCheckChange(node, !checked, false);\n } else {\n !checked && ((_b = cascaderPanelRef.value) == null ? void 0 : _b.handleCheckChange(node, true, false));\n togglePopperVisible(false);\n }\n };\n const handleSuggestionKeyDown = (e) => {\n const target = e.target;\n const { code } = e;\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n const distance = code === EVENT_CODE.up ? -1 : 1;\n focusNode(getSibling(target, distance, `.${nsCascader.e(\"suggestion-item\")}[tabindex=\"-1\"]`));\n break;\n }\n case EVENT_CODE.enter:\n target.click();\n break;\n }\n };\n const handleDelete = () => {\n const tags = presentTags.value;\n const lastTag = tags[tags.length - 1];\n pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1;\n if (!lastTag || !pressDeleteCount || props.collapseTags && tags.length > 1)\n return;\n if (lastTag.hitState) {\n deleteTag(lastTag);\n } else {\n lastTag.hitState = true;\n }\n };\n const handleFocus = (e) => {\n const el = e.target;\n const name = nsCascader.e(\"search-input\");\n if (el.className === name) {\n filterFocus.value = true;\n }\n emit(\"focus\", e);\n };\n const handleBlur = (e) => {\n filterFocus.value = false;\n emit(\"blur\", e);\n };\n const handleFilter = debounce(() => {\n const { value } = searchKeyword;\n if (!value)\n return;\n const passed = props.beforeFilter(value);\n if (isPromise(passed)) {\n passed.then(calculateSuggestions).catch(() => {\n });\n } else if (passed !== false) {\n calculateSuggestions();\n } else {\n hideSuggestionPanel();\n }\n }, props.debounce);\n const handleInput = (val, e) => {\n !popperVisible.value && togglePopperVisible(true);\n if (e == null ? void 0 : e.isComposing)\n return;\n val ? handleFilter() : hideSuggestionPanel();\n };\n const getInputInnerHeight = (inputInner) => Number.parseFloat(useCssVar(nsInput.cssVarName(\"input-height\"), inputInner).value) - 2;\n watch(filtering, updatePopperPosition);\n watch([checkedNodes, isDisabled], calculatePresentTags);\n watch(presentTags, () => {\n nextTick(() => updateStyle());\n });\n watch(realSize, async () => {\n await nextTick();\n const inputInner = input.value.input;\n inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight;\n updateStyle();\n });\n watch(presentText, syncPresentTextValue, { immediate: true });\n onMounted(() => {\n const inputInner = input.value.input;\n const inputInnerHeight = getInputInnerHeight(inputInner);\n inputInitialHeight = inputInner.offsetHeight || inputInnerHeight;\n useResizeObserver(inputInner, updateStyle);\n });\n expose({\n getCheckedNodes,\n cascaderPanelRef,\n togglePopperVisible,\n contentRef\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), {\n ref_key: \"tooltipRef\",\n ref: tooltipRef,\n visible: popperVisible.value,\n teleported: _ctx.teleported,\n \"popper-class\": [unref(nsCascader).e(\"dropdown\"), _ctx.popperClass],\n \"popper-options\": popperOptions,\n \"fallback-placements\": [\n \"bottom-start\",\n \"bottom\",\n \"top-start\",\n \"top\",\n \"right\",\n \"left\"\n ],\n \"stop-popper-mouse-event\": false,\n \"gpu-acceleration\": false,\n placement: \"bottom-start\",\n transition: `${unref(nsCascader).namespace.value}-zoom-in-top`,\n effect: \"light\",\n pure: \"\",\n persistent: \"\",\n onHide: hideSuggestionPanel\n }, {\n default: withCtx(() => [\n withDirectives((openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(cascaderKls)),\n style: normalizeStyle(unref(cascaderStyle)),\n onClick: _cache[5] || (_cache[5] = () => togglePopperVisible(unref(readonly) ? void 0 : true)),\n onKeydown: handleKeyDown,\n onMouseenter: _cache[6] || (_cache[6] = ($event) => inputHover.value = true),\n onMouseleave: _cache[7] || (_cache[7] = ($event) => inputHover.value = false)\n }, [\n createVNode(unref(ElInput), {\n ref_key: \"input\",\n ref: input,\n modelValue: inputValue.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => inputValue.value = $event),\n placeholder: unref(currentPlaceholder),\n readonly: unref(readonly),\n disabled: unref(isDisabled),\n \"validate-event\": false,\n size: unref(realSize),\n class: normalizeClass(unref(inputClass)),\n tabindex: unref(multiple) && _ctx.filterable && !unref(isDisabled) ? -1 : void 0,\n onCompositionstart: handleComposition,\n onCompositionupdate: handleComposition,\n onCompositionend: handleComposition,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onInput: handleInput\n }, {\n suffix: withCtx(() => [\n unref(clearBtnVisible) ? (openBlock(), createBlock(unref(ElIcon), {\n key: \"clear\",\n class: normalizeClass([unref(nsInput).e(\"icon\"), \"icon-circle-close\"]),\n onClick: withModifiers(handleClear, [\"stop\"])\n }, {\n default: withCtx(() => [\n createVNode(unref(CircleClose))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : (openBlock(), createBlock(unref(ElIcon), {\n key: \"arrow-down\",\n class: normalizeClass(unref(cascaderIconKls)),\n onClick: _cache[0] || (_cache[0] = withModifiers(($event) => togglePopperVisible(), [\"stop\"]))\n }, {\n default: withCtx(() => [\n createVNode(unref(ArrowDown))\n ]),\n _: 1\n }, 8, [\"class\"]))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"readonly\", \"disabled\", \"size\", \"class\", \"tabindex\"]),\n unref(multiple) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref_key: \"tagWrapper\",\n ref: tagWrapper,\n class: normalizeClass([\n unref(nsCascader).e(\"tags\"),\n unref(nsCascader).is(\"validate\", Boolean(unref(validateState)))\n ])\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(presentTags.value, (tag) => {\n return openBlock(), createBlock(unref(ElTag), {\n key: tag.key,\n type: _ctx.tagType,\n size: unref(tagSize),\n hit: tag.hitState,\n closable: tag.closable,\n \"disable-transitions\": \"\",\n onClose: ($event) => deleteTag(tag)\n }, {\n default: withCtx(() => [\n tag.isCollapseTag === false ? (openBlock(), createElementBlock(\"span\", _hoisted_1, toDisplayString(tag.text), 1)) : (openBlock(), createBlock(unref(ElTooltip), {\n key: 1,\n disabled: popperVisible.value || !_ctx.collapseTagsTooltip,\n \"fallback-placements\": [\"bottom\", \"top\", \"right\", \"left\"],\n placement: \"bottom\",\n effect: \"light\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", null, toDisplayString(tag.text), 1)\n ]),\n content: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsCascader).e(\"collapse-tags\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(allPresentTags.value.slice(_ctx.maxCollapseTags), (tag2, idx) => {\n return openBlock(), createElementBlock(\"div\", {\n key: idx,\n class: normalizeClass(unref(nsCascader).e(\"collapse-tag\"))\n }, [\n (openBlock(), createBlock(unref(ElTag), {\n key: tag2.key,\n class: \"in-tooltip\",\n type: _ctx.tagType,\n size: unref(tagSize),\n hit: tag2.hitState,\n closable: tag2.closable,\n \"disable-transitions\": \"\",\n onClose: ($event) => deleteTag(tag2)\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", null, toDisplayString(tag2.text), 1)\n ]),\n _: 2\n }, 1032, [\"type\", \"size\", \"hit\", \"closable\", \"onClose\"]))\n ], 2);\n }), 128))\n ], 2)\n ]),\n _: 2\n }, 1032, [\"disabled\"]))\n ]),\n _: 2\n }, 1032, [\"type\", \"size\", \"hit\", \"closable\", \"onClose\"]);\n }), 128)),\n _ctx.filterable && !unref(isDisabled) ? withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 0,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => searchInputValue.value = $event),\n type: \"text\",\n class: normalizeClass(unref(nsCascader).e(\"search-input\")),\n placeholder: unref(presentText) ? \"\" : unref(inputPlaceholder),\n onInput: _cache[3] || (_cache[3] = (e) => handleInput(searchInputValue.value, e)),\n onClick: _cache[4] || (_cache[4] = withModifiers(($event) => togglePopperVisible(true), [\"stop\"])),\n onKeydown: withKeys(handleDelete, [\"delete\"]),\n onCompositionstart: handleComposition,\n onCompositionupdate: handleComposition,\n onCompositionend: handleComposition,\n onFocus: handleFocus,\n onBlur: handleBlur\n }, null, 42, _hoisted_2)), [\n [vModelText, searchInputValue.value]\n ]) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 38)), [\n [unref(ClickOutside), () => togglePopperVisible(false), unref(contentRef)]\n ])\n ]),\n content: withCtx(() => [\n withDirectives(createVNode(unref(_CascaderPanel), {\n ref_key: \"cascaderPanelRef\",\n ref: cascaderPanelRef,\n modelValue: unref(checkedValue),\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event) => isRef(checkedValue) ? checkedValue.value = $event : null),\n options: _ctx.options,\n props: props.props,\n border: false,\n \"render-label\": _ctx.$slots.default,\n onExpandChange: handleExpandChange,\n onClose: _cache[9] || (_cache[9] = ($event) => _ctx.$nextTick(() => togglePopperVisible(false)))\n }, null, 8, [\"modelValue\", \"options\", \"props\", \"render-label\"]), [\n [vShow, !filtering.value]\n ]),\n _ctx.filterable ? withDirectives((openBlock(), createBlock(unref(ElScrollbar), {\n key: 0,\n ref_key: \"suggestionPanel\",\n ref: suggestionPanel,\n tag: \"ul\",\n class: normalizeClass(unref(nsCascader).e(\"suggestion-panel\")),\n \"view-class\": unref(nsCascader).e(\"suggestion-list\"),\n onKeydown: handleSuggestionKeyDown\n }, {\n default: withCtx(() => [\n suggestions.value.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(suggestions.value, (item) => {\n return openBlock(), createElementBlock(\"li\", {\n key: item.uid,\n class: normalizeClass([\n unref(nsCascader).e(\"suggestion-item\"),\n unref(nsCascader).is(\"checked\", item.checked)\n ]),\n tabindex: -1,\n onClick: ($event) => handleSuggestionClick(item)\n }, [\n createElementVNode(\"span\", null, toDisplayString(item.text), 1),\n item.checked ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n createVNode(unref(Check))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true)\n ], 10, _hoisted_3);\n }), 128)) : renderSlot(_ctx.$slots, \"empty\", { key: 1 }, () => [\n createElementVNode(\"li\", {\n class: normalizeClass(unref(nsCascader).e(\"empty-text\"))\n }, toDisplayString(unref(t)(\"el.cascader.noMatch\")), 3)\n ])\n ]),\n _: 3\n }, 8, [\"class\", \"view-class\"])), [\n [vShow, filtering.value]\n ]) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"visible\", \"teleported\", \"popper-class\", \"transition\"]);\n };\n }\n});\nvar Cascader = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"cascader.vue\"]]);\n\nexport { Cascader as default };\n//# sourceMappingURL=cascader2.mjs.map\n","import Cascader from './src/cascader2.mjs';\nexport { cascaderEmits, cascaderProps } from './src/cascader.mjs';\nimport './src/instances.mjs';\n\nCascader.install = (app) => {\n app.component(Cascader.name, Cascader);\n};\nconst _Cascader = Cascader;\nconst ElCascader = _Cascader;\n\nexport { ElCascader, _Cascader as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\nimport { CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst checkTagProps = buildProps({\n checked: {\n type: Boolean,\n default: false\n },\n type: {\n type: String,\n values: [\"primary\", \"success\", \"info\", \"warning\", \"danger\"],\n default: \"primary\"\n }\n});\nconst checkTagEmits = {\n \"update:checked\": (value) => isBoolean(value),\n [CHANGE_EVENT]: (value) => isBoolean(value)\n};\n\nexport { checkTagEmits, checkTagProps };\n//# sourceMappingURL=check-tag.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { checkTagProps, checkTagEmits } from './check-tag.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElCheckTag\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: checkTagProps,\n emits: checkTagEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"check-tag\");\n const containerKls = computed(() => [\n ns.b(),\n ns.is(\"checked\", props.checked),\n ns.m(props.type || \"primary\")\n ]);\n const handleChange = () => {\n const checked = !props.checked;\n emit(CHANGE_EVENT, checked);\n emit(\"update:checked\", checked);\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(containerKls)),\n onClick: handleChange\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar CheckTag = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"check-tag.vue\"]]);\n\nexport { CheckTag as default };\n//# sourceMappingURL=check-tag2.mjs.map\n","import '../../utils/index.mjs';\nimport CheckTag from './src/check-tag2.mjs';\nexport { checkTagEmits, checkTagProps } from './src/check-tag.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCheckTag = withInstall(CheckTag);\n\nexport { ElCheckTag, ElCheckTag as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\n\nconst colProps = buildProps({\n tag: {\n type: String,\n default: \"div\"\n },\n span: {\n type: Number,\n default: 24\n },\n offset: {\n type: Number,\n default: 0\n },\n pull: {\n type: Number,\n default: 0\n },\n push: {\n type: Number,\n default: 0\n },\n xs: {\n type: definePropType([Number, Object]),\n default: () => mutable({})\n },\n sm: {\n type: definePropType([Number, Object]),\n default: () => mutable({})\n },\n md: {\n type: definePropType([Number, Object]),\n default: () => mutable({})\n },\n lg: {\n type: definePropType([Number, Object]),\n default: () => mutable({})\n },\n xl: {\n type: definePropType([Number, Object]),\n default: () => mutable({})\n }\n});\n\nexport { colProps };\n//# sourceMappingURL=col.mjs.map\n","const rowContextKey = Symbol(\"rowContextKey\");\n\nexport { rowContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { defineComponent, inject, computed, openBlock, createBlock, resolveDynamicComponent, normalizeClass, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../row/index.mjs';\nimport { colProps } from './col.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { rowContextKey } from '../../row/src/constants.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { isObject } from '@vue/shared';\n\nconst __default__ = defineComponent({\n name: \"ElCol\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: colProps,\n setup(__props) {\n const props = __props;\n const { gutter } = inject(rowContextKey, { gutter: computed(() => 0) });\n const ns = useNamespace(\"col\");\n const style = computed(() => {\n const styles = {};\n if (gutter.value) {\n styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`;\n }\n return styles;\n });\n const colKls = computed(() => {\n const classes = [];\n const pos = [\"span\", \"offset\", \"pull\", \"push\"];\n pos.forEach((prop) => {\n const size = props[prop];\n if (isNumber(size)) {\n if (prop === \"span\")\n classes.push(ns.b(`${props[prop]}`));\n else if (size > 0)\n classes.push(ns.b(`${prop}-${props[prop]}`));\n }\n });\n const sizes = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\n sizes.forEach((size) => {\n if (isNumber(props[size])) {\n classes.push(ns.b(`${size}-${props[size]}`));\n } else if (isObject(props[size])) {\n Object.entries(props[size]).forEach(([prop, sizeProp]) => {\n classes.push(prop !== \"span\" ? ns.b(`${size}-${prop}-${sizeProp}`) : ns.b(`${size}-${sizeProp}`));\n });\n }\n });\n if (gutter.value) {\n classes.push(ns.is(\"guttered\"));\n }\n return [ns.b(), classes];\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), {\n class: normalizeClass(unref(colKls)),\n style: normalizeStyle(unref(style))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"style\"]);\n };\n }\n});\nvar Col = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"col.vue\"]]);\n\nexport { Col as default };\n//# sourceMappingURL=col2.mjs.map\n","import '../../utils/index.mjs';\nimport Col from './src/col2.mjs';\nexport { colProps } from './src/col.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCol = withInstall(Col);\n\nexport { ElCol, ElCol as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { isString, isArray } from '@vue/shared';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst emitChangeFn = (value) => isNumber(value) || isString(value) || isArray(value);\nconst collapseProps = buildProps({\n accordion: Boolean,\n modelValue: {\n type: definePropType([Array, String, Number]),\n default: () => mutable([])\n }\n});\nconst collapseEmits = {\n [UPDATE_MODEL_EVENT]: emitChangeFn,\n [CHANGE_EVENT]: emitChangeFn\n};\n\nexport { collapseEmits, collapseProps, emitChangeFn };\n//# sourceMappingURL=collapse.mjs.map\n","const collapseContextKey = Symbol(\"collapseContextKey\");\n\nexport { collapseContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import isArray from './isArray.js';\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n}\n\nexport default castArray;\n","import { ref, watch, provide, computed } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport { collapseContextKey } from './constants.mjs';\nimport { castArray } from 'lodash-unified';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst useCollapse = (props, emit) => {\n const activeNames = ref(castArray(props.modelValue));\n const setActiveNames = (_activeNames) => {\n activeNames.value = _activeNames;\n const value = props.accordion ? activeNames.value[0] : activeNames.value;\n emit(UPDATE_MODEL_EVENT, value);\n emit(CHANGE_EVENT, value);\n };\n const handleItemClick = (name) => {\n if (props.accordion) {\n setActiveNames([activeNames.value[0] === name ? \"\" : name]);\n } else {\n const _activeNames = [...activeNames.value];\n const index = _activeNames.indexOf(name);\n if (index > -1) {\n _activeNames.splice(index, 1);\n } else {\n _activeNames.push(name);\n }\n setActiveNames(_activeNames);\n }\n };\n watch(() => props.modelValue, () => activeNames.value = castArray(props.modelValue), { deep: true });\n provide(collapseContextKey, {\n activeNames,\n handleItemClick\n });\n return {\n activeNames,\n setActiveNames\n };\n};\nconst useCollapseDOM = () => {\n const ns = useNamespace(\"collapse\");\n const rootKls = computed(() => ns.b());\n return {\n rootKls\n };\n};\n\nexport { useCollapse, useCollapseDOM };\n//# sourceMappingURL=use-collapse.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport { collapseProps, collapseEmits } from './collapse.mjs';\nimport { useCollapse, useCollapseDOM } from './use-collapse.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElCollapse\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: collapseProps,\n emits: collapseEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const { activeNames, setActiveNames } = useCollapse(props, emit);\n const { rootKls } = useCollapseDOM();\n expose({\n activeNames,\n setActiveNames\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(rootKls))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar Collapse = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"collapse.vue\"]]);\n\nexport { Collapse as default };\n//# sourceMappingURL=collapse2.mjs.map\n","import { defineComponent, openBlock, createBlock, Transition, mergeProps, unref, toHandlers, withCtx, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElCollapseTransition\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n setup(__props) {\n const ns = useNamespace(\"collapse-transition\");\n const reset = (el) => {\n el.style.maxHeight = \"\";\n el.style.overflow = el.dataset.oldOverflow;\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n };\n const on = {\n beforeEnter(el) {\n if (!el.dataset)\n el.dataset = {};\n el.dataset.oldPaddingTop = el.style.paddingTop;\n el.dataset.oldPaddingBottom = el.style.paddingBottom;\n if (el.style.height)\n el.dataset.elExistsHeight = el.style.height;\n el.style.maxHeight = 0;\n el.style.paddingTop = 0;\n el.style.paddingBottom = 0;\n },\n enter(el) {\n requestAnimationFrame(() => {\n el.dataset.oldOverflow = el.style.overflow;\n if (el.dataset.elExistsHeight) {\n el.style.maxHeight = el.dataset.elExistsHeight;\n } else if (el.scrollHeight !== 0) {\n el.style.maxHeight = `${el.scrollHeight}px`;\n } else {\n el.style.maxHeight = 0;\n }\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n el.style.overflow = \"hidden\";\n });\n },\n afterEnter(el) {\n el.style.maxHeight = \"\";\n el.style.overflow = el.dataset.oldOverflow;\n },\n enterCancelled(el) {\n reset(el);\n },\n beforeLeave(el) {\n if (!el.dataset)\n el.dataset = {};\n el.dataset.oldPaddingTop = el.style.paddingTop;\n el.dataset.oldPaddingBottom = el.style.paddingBottom;\n el.dataset.oldOverflow = el.style.overflow;\n el.style.maxHeight = `${el.scrollHeight}px`;\n el.style.overflow = \"hidden\";\n },\n leave(el) {\n if (el.scrollHeight !== 0) {\n el.style.maxHeight = 0;\n el.style.paddingTop = 0;\n el.style.paddingBottom = 0;\n }\n },\n afterLeave(el) {\n reset(el);\n },\n leaveCancelled(el) {\n reset(el);\n }\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, mergeProps({\n name: unref(ns).b()\n }, toHandlers(on)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"name\"]);\n };\n }\n});\nvar CollapseTransition = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"collapse-transition.vue\"]]);\n\nexport { CollapseTransition as default };\n//# sourceMappingURL=collapse-transition.mjs.map\n","import CollapseTransition from './src/collapse-transition.mjs';\n\nCollapseTransition.install = (app) => {\n app.component(CollapseTransition.name, CollapseTransition);\n};\nconst _CollapseTransition = CollapseTransition;\nconst ElCollapseTransition = _CollapseTransition;\n\nexport { ElCollapseTransition, _CollapseTransition as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst collapseItemProps = buildProps({\n title: {\n type: String,\n default: \"\"\n },\n name: {\n type: definePropType([String, Number]),\n default: void 0\n },\n disabled: Boolean\n});\n\nexport { collapseItemProps };\n//# sourceMappingURL=collapse-item.mjs.map\n","import { inject, ref, computed, unref } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { collapseContextKey } from './constants.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useIdInjection } from '../../../hooks/use-id/index.mjs';\n\nconst useCollapseItem = (props) => {\n const collapse = inject(collapseContextKey);\n const { namespace } = useNamespace(\"collapse\");\n const focusing = ref(false);\n const isClick = ref(false);\n const idInjection = useIdInjection();\n const id = computed(() => idInjection.current++);\n const name = computed(() => {\n var _a;\n return (_a = props.name) != null ? _a : `${namespace.value}-id-${idInjection.prefix}-${unref(id)}`;\n });\n const isActive = computed(() => collapse == null ? void 0 : collapse.activeNames.value.includes(unref(name)));\n const handleFocus = () => {\n setTimeout(() => {\n if (!isClick.value) {\n focusing.value = true;\n } else {\n isClick.value = false;\n }\n }, 50);\n };\n const handleHeaderClick = () => {\n if (props.disabled)\n return;\n collapse == null ? void 0 : collapse.handleItemClick(unref(name));\n focusing.value = false;\n isClick.value = true;\n };\n const handleEnterClick = () => {\n collapse == null ? void 0 : collapse.handleItemClick(unref(name));\n };\n return {\n focusing,\n id,\n isActive,\n handleFocus,\n handleHeaderClick,\n handleEnterClick\n };\n};\nconst useCollapseItemDOM = (props, { focusing, isActive, id }) => {\n const ns = useNamespace(\"collapse\");\n const rootKls = computed(() => [\n ns.b(\"item\"),\n ns.is(\"active\", unref(isActive)),\n ns.is(\"disabled\", props.disabled)\n ]);\n const headKls = computed(() => [\n ns.be(\"item\", \"header\"),\n ns.is(\"active\", unref(isActive)),\n { focusing: unref(focusing) && !props.disabled }\n ]);\n const arrowKls = computed(() => [\n ns.be(\"item\", \"arrow\"),\n ns.is(\"active\", unref(isActive))\n ]);\n const itemWrapperKls = computed(() => ns.be(\"item\", \"wrap\"));\n const itemContentKls = computed(() => ns.be(\"item\", \"content\"));\n const scopedContentId = computed(() => ns.b(`content-${unref(id)}`));\n const scopedHeadId = computed(() => ns.b(`head-${unref(id)}`));\n return {\n arrowKls,\n headKls,\n rootKls,\n itemWrapperKls,\n itemContentKls,\n scopedContentId,\n scopedHeadId\n };\n};\n\nexport { useCollapseItem, useCollapseItemDOM };\n//# sourceMappingURL=use-collapse-item.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, withKeys, withModifiers, renderSlot, createTextVNode, toDisplayString, createVNode, withCtx, withDirectives, vShow } from 'vue';\nimport _CollapseTransition from '../../collapse-transition/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ArrowRight } from '@element-plus/icons-vue';\nimport { collapseItemProps } from './collapse-item.mjs';\nimport { useCollapseItem, useCollapseItemDOM } from './use-collapse-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _hoisted_1 = [\"id\", \"aria-expanded\", \"aria-controls\", \"aria-describedby\", \"tabindex\"];\nconst _hoisted_2 = [\"id\", \"aria-hidden\", \"aria-labelledby\"];\nconst __default__ = defineComponent({\n name: \"ElCollapseItem\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: collapseItemProps,\n setup(__props, { expose }) {\n const props = __props;\n const {\n focusing,\n id,\n isActive,\n handleFocus,\n handleHeaderClick,\n handleEnterClick\n } = useCollapseItem(props);\n const {\n arrowKls,\n headKls,\n rootKls,\n itemWrapperKls,\n itemContentKls,\n scopedContentId,\n scopedHeadId\n } = useCollapseItemDOM(props, { focusing, isActive, id });\n expose({\n isActive\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(rootKls))\n }, [\n createElementVNode(\"button\", {\n id: unref(scopedHeadId),\n class: normalizeClass(unref(headKls)),\n \"aria-expanded\": unref(isActive),\n \"aria-controls\": unref(scopedContentId),\n \"aria-describedby\": unref(scopedContentId),\n tabindex: _ctx.disabled ? -1 : 0,\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = (...args) => unref(handleHeaderClick) && unref(handleHeaderClick)(...args)),\n onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => unref(handleEnterClick) && unref(handleEnterClick)(...args), [\"stop\", \"prevent\"]), [\"space\", \"enter\"])),\n onFocus: _cache[2] || (_cache[2] = (...args) => unref(handleFocus) && unref(handleFocus)(...args)),\n onBlur: _cache[3] || (_cache[3] = ($event) => focusing.value = false)\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ]),\n createVNode(unref(ElIcon), {\n class: normalizeClass(unref(arrowKls))\n }, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 42, _hoisted_1),\n createVNode(unref(_CollapseTransition), null, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: unref(scopedContentId),\n role: \"region\",\n class: normalizeClass(unref(itemWrapperKls)),\n \"aria-hidden\": !unref(isActive),\n \"aria-labelledby\": unref(scopedHeadId)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(itemContentKls))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ], 10, _hoisted_2), [\n [vShow, unref(isActive)]\n ])\n ]),\n _: 3\n })\n ], 2);\n };\n }\n});\nvar CollapseItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"collapse-item.vue\"]]);\n\nexport { CollapseItem as default };\n//# sourceMappingURL=collapse-item2.mjs.map\n","import '../../utils/index.mjs';\nimport Collapse from './src/collapse2.mjs';\nimport CollapseItem from './src/collapse-item2.mjs';\nexport { collapseEmits, collapseProps, emitChangeFn } from './src/collapse.mjs';\nexport { collapseItemProps } from './src/collapse-item.mjs';\nexport { collapseContextKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElCollapse = withInstall(Collapse, {\n CollapseItem\n});\nconst ElCollapseItem = withNoopInstall(CollapseItem);\n\nexport { ElCollapse, ElCollapseItem, ElCollapse as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst alphaSliderProps = buildProps({\n color: {\n type: definePropType(Object),\n required: true\n },\n vertical: {\n type: Boolean,\n default: false\n }\n});\n\nexport { alphaSliderProps };\n//# sourceMappingURL=alpha-slider.mjs.map\n","import '../../../../utils/index.mjs';\nimport { isClient } from '@vueuse/core';\n\nlet isDragging = false;\nfunction draggable(element, options) {\n if (!isClient)\n return;\n const moveFn = function(event) {\n var _a;\n (_a = options.drag) == null ? void 0 : _a.call(options, event);\n };\n const upFn = function(event) {\n var _a;\n document.removeEventListener(\"mousemove\", moveFn);\n document.removeEventListener(\"mouseup\", upFn);\n document.removeEventListener(\"touchmove\", moveFn);\n document.removeEventListener(\"touchend\", upFn);\n document.onselectstart = null;\n document.ondragstart = null;\n isDragging = false;\n (_a = options.end) == null ? void 0 : _a.call(options, event);\n };\n const downFn = function(event) {\n var _a;\n if (isDragging)\n return;\n event.preventDefault();\n document.onselectstart = () => false;\n document.ondragstart = () => false;\n document.addEventListener(\"mousemove\", moveFn);\n document.addEventListener(\"mouseup\", upFn);\n document.addEventListener(\"touchmove\", moveFn);\n document.addEventListener(\"touchend\", upFn);\n isDragging = true;\n (_a = options.start) == null ? void 0 : _a.call(options, event);\n };\n element.addEventListener(\"mousedown\", downFn);\n element.addEventListener(\"touchstart\", downFn);\n}\n\nexport { draggable };\n//# sourceMappingURL=draggable.mjs.map\n","import '../browser.mjs';\nimport { isClient } from '@vueuse/core';\n\nconst isInContainer = (el, container) => {\n if (!isClient || !el || !container)\n return false;\n const elRect = el.getBoundingClientRect();\n let containerRect;\n if (container instanceof Element) {\n containerRect = container.getBoundingClientRect();\n } else {\n containerRect = {\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n left: 0\n };\n }\n return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;\n};\nconst getOffsetTop = (el) => {\n let offset = 0;\n let parent = el;\n while (parent) {\n offset += parent.offsetTop;\n parent = parent.offsetParent;\n }\n return offset;\n};\nconst getOffsetTopDistance = (el, containerEl) => {\n return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl));\n};\nconst getClientXY = (event) => {\n let clientX;\n let clientY;\n if (event.type === \"touchend\") {\n clientY = event.changedTouches[0].clientY;\n clientX = event.changedTouches[0].clientX;\n } else if (event.type.startsWith(\"touch\")) {\n clientY = event.touches[0].clientY;\n clientX = event.touches[0].clientX;\n } else {\n clientY = event.clientY;\n clientX = event.clientX;\n }\n return {\n clientX,\n clientY\n };\n};\n\nexport { getClientXY, getOffsetTop, getOffsetTopDistance, isInContainer };\n//# sourceMappingURL=position.mjs.map\n","import { getCurrentInstance, shallowRef, ref, onMounted, watch, computed } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { draggable } from '../utils/draggable.mjs';\nimport { getClientXY } from '../../../../utils/dom/position.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../../utils/dom/style.mjs';\n\nconst useAlphaSlider = (props) => {\n const instance = getCurrentInstance();\n const thumb = shallowRef();\n const bar = shallowRef();\n function handleClick(event) {\n const target = event.target;\n if (target !== thumb.value) {\n handleDrag(event);\n }\n }\n function handleDrag(event) {\n if (!bar.value || !thumb.value)\n return;\n const el = instance.vnode.el;\n const rect = el.getBoundingClientRect();\n const { clientX, clientY } = getClientXY(event);\n if (!props.vertical) {\n let left = clientX - rect.left;\n left = Math.max(thumb.value.offsetWidth / 2, left);\n left = Math.min(left, rect.width - thumb.value.offsetWidth / 2);\n props.color.set(\"alpha\", Math.round((left - thumb.value.offsetWidth / 2) / (rect.width - thumb.value.offsetWidth) * 100));\n } else {\n let top = clientY - rect.top;\n top = Math.max(thumb.value.offsetHeight / 2, top);\n top = Math.min(top, rect.height - thumb.value.offsetHeight / 2);\n props.color.set(\"alpha\", Math.round((top - thumb.value.offsetHeight / 2) / (rect.height - thumb.value.offsetHeight) * 100));\n }\n }\n return {\n thumb,\n bar,\n handleDrag,\n handleClick\n };\n};\nconst useAlphaSliderDOM = (props, {\n bar,\n thumb,\n handleDrag\n}) => {\n const instance = getCurrentInstance();\n const ns = useNamespace(\"color-alpha-slider\");\n const thumbLeft = ref(0);\n const thumbTop = ref(0);\n const background = ref();\n function getThumbLeft() {\n if (!thumb.value)\n return 0;\n if (props.vertical)\n return 0;\n const el = instance.vnode.el;\n const alpha = props.color.get(\"alpha\");\n if (!el)\n return 0;\n return Math.round(alpha * (el.offsetWidth - thumb.value.offsetWidth / 2) / 100);\n }\n function getThumbTop() {\n if (!thumb.value)\n return 0;\n const el = instance.vnode.el;\n if (!props.vertical)\n return 0;\n const alpha = props.color.get(\"alpha\");\n if (!el)\n return 0;\n return Math.round(alpha * (el.offsetHeight - thumb.value.offsetHeight / 2) / 100);\n }\n function getBackground() {\n if (props.color && props.color.value) {\n const { r, g, b } = props.color.toRgb();\n return `linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0) 0%, rgba(${r}, ${g}, ${b}, 1) 100%)`;\n }\n return \"\";\n }\n function update() {\n thumbLeft.value = getThumbLeft();\n thumbTop.value = getThumbTop();\n background.value = getBackground();\n }\n onMounted(() => {\n if (!bar.value || !thumb.value)\n return;\n const dragConfig = {\n drag: (event) => {\n handleDrag(event);\n },\n end: (event) => {\n handleDrag(event);\n }\n };\n draggable(bar.value, dragConfig);\n draggable(thumb.value, dragConfig);\n update();\n });\n watch(() => props.color.get(\"alpha\"), () => update());\n watch(() => props.color.value, () => update());\n const rootKls = computed(() => [ns.b(), ns.is(\"vertical\", props.vertical)]);\n const barKls = computed(() => ns.e(\"bar\"));\n const thumbKls = computed(() => ns.e(\"thumb\"));\n const barStyle = computed(() => ({ background: background.value }));\n const thumbStyle = computed(() => ({\n left: addUnit(thumbLeft.value),\n top: addUnit(thumbTop.value)\n }));\n return { rootKls, barKls, barStyle, thumbKls, thumbStyle, update };\n};\n\nexport { useAlphaSlider, useAlphaSliderDOM };\n//# sourceMappingURL=use-alpha-slider.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, normalizeStyle } from 'vue';\nimport { alphaSliderProps } from '../props/alpha-slider.mjs';\nimport { useAlphaSlider, useAlphaSliderDOM } from '../composables/use-alpha-slider.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst COMPONENT_NAME = \"ElColorAlphaSlider\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: alphaSliderProps,\n setup(__props, { expose }) {\n const props = __props;\n const { bar, thumb, handleDrag, handleClick } = useAlphaSlider(props);\n const { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } = useAlphaSliderDOM(props, {\n bar,\n thumb,\n handleDrag\n });\n expose({\n update,\n bar,\n thumb\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(rootKls))\n }, [\n createElementVNode(\"div\", {\n ref_key: \"bar\",\n ref: bar,\n class: normalizeClass(unref(barKls)),\n style: normalizeStyle(unref(barStyle)),\n onClick: _cache[0] || (_cache[0] = (...args) => unref(handleClick) && unref(handleClick)(...args))\n }, null, 6),\n createElementVNode(\"div\", {\n ref_key: \"thumb\",\n ref: thumb,\n class: normalizeClass(unref(thumbKls)),\n style: normalizeStyle(unref(thumbStyle))\n }, null, 6)\n ], 2);\n };\n }\n});\nvar AlphaSlider = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"alpha-slider.vue\"]]);\n\nexport { AlphaSlider as default };\n//# sourceMappingURL=alpha-slider.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, watch, onMounted, openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { draggable } from '../utils/draggable.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { getClientXY } from '../../../../utils/dom/position.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElColorHueSlider\",\n props: {\n color: {\n type: Object,\n required: true\n },\n vertical: Boolean\n },\n setup(props) {\n const ns = useNamespace(\"color-hue-slider\");\n const instance = getCurrentInstance();\n const thumb = ref();\n const bar = ref();\n const thumbLeft = ref(0);\n const thumbTop = ref(0);\n const hueValue = computed(() => {\n return props.color.get(\"hue\");\n });\n watch(() => hueValue.value, () => {\n update();\n });\n function handleClick(event) {\n const target = event.target;\n if (target !== thumb.value) {\n handleDrag(event);\n }\n }\n function handleDrag(event) {\n if (!bar.value || !thumb.value)\n return;\n const el = instance.vnode.el;\n const rect = el.getBoundingClientRect();\n const { clientX, clientY } = getClientXY(event);\n let hue;\n if (!props.vertical) {\n let left = clientX - rect.left;\n left = Math.min(left, rect.width - thumb.value.offsetWidth / 2);\n left = Math.max(thumb.value.offsetWidth / 2, left);\n hue = Math.round((left - thumb.value.offsetWidth / 2) / (rect.width - thumb.value.offsetWidth) * 360);\n } else {\n let top = clientY - rect.top;\n top = Math.min(top, rect.height - thumb.value.offsetHeight / 2);\n top = Math.max(thumb.value.offsetHeight / 2, top);\n hue = Math.round((top - thumb.value.offsetHeight / 2) / (rect.height - thumb.value.offsetHeight) * 360);\n }\n props.color.set(\"hue\", hue);\n }\n function getThumbLeft() {\n if (!thumb.value)\n return 0;\n const el = instance.vnode.el;\n if (props.vertical)\n return 0;\n const hue = props.color.get(\"hue\");\n if (!el)\n return 0;\n return Math.round(hue * (el.offsetWidth - thumb.value.offsetWidth / 2) / 360);\n }\n function getThumbTop() {\n if (!thumb.value)\n return 0;\n const el = instance.vnode.el;\n if (!props.vertical)\n return 0;\n const hue = props.color.get(\"hue\");\n if (!el)\n return 0;\n return Math.round(hue * (el.offsetHeight - thumb.value.offsetHeight / 2) / 360);\n }\n function update() {\n thumbLeft.value = getThumbLeft();\n thumbTop.value = getThumbTop();\n }\n onMounted(() => {\n if (!bar.value || !thumb.value)\n return;\n const dragConfig = {\n drag: (event) => {\n handleDrag(event);\n },\n end: (event) => {\n handleDrag(event);\n }\n };\n draggable(bar.value, dragConfig);\n draggable(thumb.value, dragConfig);\n update();\n });\n return {\n bar,\n thumb,\n thumbLeft,\n thumbTop,\n hueValue,\n handleClick,\n update,\n ns\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.ns.b(), _ctx.ns.is(\"vertical\", _ctx.vertical)])\n }, [\n createElementVNode(\"div\", {\n ref: \"bar\",\n class: normalizeClass(_ctx.ns.e(\"bar\")),\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClick && _ctx.handleClick(...args))\n }, null, 2),\n createElementVNode(\"div\", {\n ref: \"thumb\",\n class: normalizeClass(_ctx.ns.e(\"thumb\")),\n style: normalizeStyle({\n left: _ctx.thumbLeft + \"px\",\n top: _ctx.thumbTop + \"px\"\n })\n }, null, 6)\n ], 2);\n}\nvar HueSlider = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"hue-slider.vue\"]]);\n\nexport { HueSlider as default };\n//# sourceMappingURL=hue-slider.mjs.map\n","import { isNil } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isString } from '@vue/shared';\n\nconst colorPickerProps = buildProps({\n modelValue: String,\n id: String,\n showAlpha: Boolean,\n colorFormat: String,\n disabled: Boolean,\n size: useSizeProp,\n popperClass: {\n type: String,\n default: \"\"\n },\n label: {\n type: String,\n default: void 0\n },\n tabindex: {\n type: [String, Number],\n default: 0\n },\n teleported: useTooltipContentProps.teleported,\n predefine: {\n type: definePropType(Array)\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst colorPickerEmits = {\n [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNil(val),\n [CHANGE_EVENT]: (val) => isString(val) || isNil(val),\n activeChange: (val) => isString(val) || isNil(val),\n focus: (event) => event instanceof FocusEvent,\n blur: (event) => event instanceof FocusEvent\n};\nconst colorPickerContextKey = Symbol(\"colorPickerContextKey\");\n\nexport { colorPickerContextKey, colorPickerEmits, colorPickerProps };\n//# sourceMappingURL=color-picker.mjs.map\n","import '../../../../utils/index.mjs';\nimport { hasOwn } from '@vue/shared';\n\nconst hsv2hsl = function(hue, sat, val) {\n return [\n hue,\n sat * val / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0,\n hue / 2\n ];\n};\nconst isOnePointZero = function(n) {\n return typeof n === \"string\" && n.includes(\".\") && Number.parseFloat(n) === 1;\n};\nconst isPercentage = function(n) {\n return typeof n === \"string\" && n.includes(\"%\");\n};\nconst bound01 = function(value, max) {\n if (isOnePointZero(value))\n value = \"100%\";\n const processPercent = isPercentage(value);\n value = Math.min(max, Math.max(0, Number.parseFloat(`${value}`)));\n if (processPercent) {\n value = Number.parseInt(`${value * max}`, 10) / 100;\n }\n if (Math.abs(value - max) < 1e-6) {\n return 1;\n }\n return value % max / Number.parseFloat(max);\n};\nconst INT_HEX_MAP = {\n 10: \"A\",\n 11: \"B\",\n 12: \"C\",\n 13: \"D\",\n 14: \"E\",\n 15: \"F\"\n};\nconst hexOne = (value) => {\n value = Math.min(Math.round(value), 255);\n const high = Math.floor(value / 16);\n const low = value % 16;\n return `${INT_HEX_MAP[high] || high}${INT_HEX_MAP[low] || low}`;\n};\nconst toHex = function({ r, g, b }) {\n if (Number.isNaN(+r) || Number.isNaN(+g) || Number.isNaN(+b))\n return \"\";\n return `#${hexOne(r)}${hexOne(g)}${hexOne(b)}`;\n};\nconst HEX_INT_MAP = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15\n};\nconst parseHexChannel = function(hex) {\n if (hex.length === 2) {\n return (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 + (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]);\n }\n return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1];\n};\nconst hsl2hsv = function(hue, sat, light) {\n sat = sat / 100;\n light = light / 100;\n let smin = sat;\n const lmin = Math.max(light, 0.01);\n light *= 2;\n sat *= light <= 1 ? light : 2 - light;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n const v = (light + sat) / 2;\n const sv = light === 0 ? 2 * smin / (lmin + smin) : 2 * sat / (light + sat);\n return {\n h: hue,\n s: sv * 100,\n v: v * 100\n };\n};\nconst rgb2hsv = (r, g, b) => {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h;\n const v = max;\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r: {\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n }\n case g: {\n h = (b - r) / d + 2;\n break;\n }\n case b: {\n h = (r - g) / d + 4;\n break;\n }\n }\n h /= 6;\n }\n return { h: h * 360, s: s * 100, v: v * 100 };\n};\nconst hsv2rgb = function(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n const mod = i % 6;\n const r = [v, q, p, p, t, v][mod];\n const g = [t, v, v, q, p, p][mod];\n const b = [p, p, t, v, v, q][mod];\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n};\nclass Color {\n constructor(options = {}) {\n this._hue = 0;\n this._saturation = 100;\n this._value = 100;\n this._alpha = 100;\n this.enableAlpha = false;\n this.format = \"hex\";\n this.value = \"\";\n for (const option in options) {\n if (hasOwn(options, option)) {\n this[option] = options[option];\n }\n }\n if (options.value) {\n this.fromString(options.value);\n } else {\n this.doOnChange();\n }\n }\n set(prop, value) {\n if (arguments.length === 1 && typeof prop === \"object\") {\n for (const p in prop) {\n if (hasOwn(prop, p)) {\n this.set(p, prop[p]);\n }\n }\n return;\n }\n ;\n this[`_${prop}`] = value;\n this.doOnChange();\n }\n get(prop) {\n if (prop === \"alpha\") {\n return Math.floor(this[`_${prop}`]);\n }\n return this[`_${prop}`];\n }\n toRgb() {\n return hsv2rgb(this._hue, this._saturation, this._value);\n }\n fromString(value) {\n if (!value) {\n this._hue = 0;\n this._saturation = 100;\n this._value = 100;\n this.doOnChange();\n return;\n }\n const fromHSV = (h, s, v) => {\n this._hue = Math.max(0, Math.min(360, h));\n this._saturation = Math.max(0, Math.min(100, s));\n this._value = Math.max(0, Math.min(100, v));\n this.doOnChange();\n };\n if (value.includes(\"hsl\")) {\n const parts = value.replace(/hsla|hsl|\\(|\\)/gm, \"\").split(/\\s|,/g).filter((val) => val !== \"\").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10));\n if (parts.length === 4) {\n this._alpha = Number.parseFloat(parts[3]) * 100;\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n const { h, s, v } = hsl2hsv(parts[0], parts[1], parts[2]);\n fromHSV(h, s, v);\n }\n } else if (value.includes(\"hsv\")) {\n const parts = value.replace(/hsva|hsv|\\(|\\)/gm, \"\").split(/\\s|,/g).filter((val) => val !== \"\").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10));\n if (parts.length === 4) {\n this._alpha = Number.parseFloat(parts[3]) * 100;\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n fromHSV(parts[0], parts[1], parts[2]);\n }\n } else if (value.includes(\"rgb\")) {\n const parts = value.replace(/rgba|rgb|\\(|\\)/gm, \"\").split(/\\s|,/g).filter((val) => val !== \"\").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10));\n if (parts.length === 4) {\n this._alpha = Number.parseFloat(parts[3]) * 100;\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n const { h, s, v } = rgb2hsv(parts[0], parts[1], parts[2]);\n fromHSV(h, s, v);\n }\n } else if (value.includes(\"#\")) {\n const hex = value.replace(\"#\", \"\").trim();\n if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(hex))\n return;\n let r, g, b;\n if (hex.length === 3) {\n r = parseHexChannel(hex[0] + hex[0]);\n g = parseHexChannel(hex[1] + hex[1]);\n b = parseHexChannel(hex[2] + hex[2]);\n } else if (hex.length === 6 || hex.length === 8) {\n r = parseHexChannel(hex.slice(0, 2));\n g = parseHexChannel(hex.slice(2, 4));\n b = parseHexChannel(hex.slice(4, 6));\n }\n if (hex.length === 8) {\n this._alpha = parseHexChannel(hex.slice(6)) / 255 * 100;\n } else if (hex.length === 3 || hex.length === 6) {\n this._alpha = 100;\n }\n const { h, s, v } = rgb2hsv(r, g, b);\n fromHSV(h, s, v);\n }\n }\n compare(color) {\n return Math.abs(color._hue - this._hue) < 2 && Math.abs(color._saturation - this._saturation) < 1 && Math.abs(color._value - this._value) < 1 && Math.abs(color._alpha - this._alpha) < 1;\n }\n doOnChange() {\n const { _hue, _saturation, _value, _alpha, format } = this;\n if (this.enableAlpha) {\n switch (format) {\n case \"hsl\": {\n const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);\n this.value = `hsla(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(hsl[2] * 100)}%, ${this.get(\"alpha\") / 100})`;\n break;\n }\n case \"hsv\": {\n this.value = `hsva(${_hue}, ${Math.round(_saturation)}%, ${Math.round(_value)}%, ${this.get(\"alpha\") / 100})`;\n break;\n }\n case \"hex\": {\n this.value = `${toHex(hsv2rgb(_hue, _saturation, _value))}${hexOne(_alpha * 255 / 100)}`;\n break;\n }\n default: {\n const { r, g, b } = hsv2rgb(_hue, _saturation, _value);\n this.value = `rgba(${r}, ${g}, ${b}, ${this.get(\"alpha\") / 100})`;\n }\n }\n } else {\n switch (format) {\n case \"hsl\": {\n const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);\n this.value = `hsl(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(hsl[2] * 100)}%)`;\n break;\n }\n case \"hsv\": {\n this.value = `hsv(${_hue}, ${Math.round(_saturation)}%, ${Math.round(_value)}%)`;\n break;\n }\n case \"rgb\": {\n const { r, g, b } = hsv2rgb(_hue, _saturation, _value);\n this.value = `rgb(${r}, ${g}, ${b})`;\n break;\n }\n default: {\n this.value = toHex(hsv2rgb(_hue, _saturation, _value));\n }\n }\n }\n }\n}\n\nexport { Color as default };\n//# sourceMappingURL=color.mjs.map\n","import { defineComponent, inject, ref, watch, watchEffect, openBlock, createElementBlock, normalizeClass, createElementVNode, Fragment, renderList, normalizeStyle } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { colorPickerContextKey } from '../color-picker.mjs';\nimport Color from '../utils/color.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nconst _sfc_main = defineComponent({\n props: {\n colors: {\n type: Array,\n required: true\n },\n color: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const ns = useNamespace(\"color-predefine\");\n const { currentColor } = inject(colorPickerContextKey);\n const rgbaColors = ref(parseColors(props.colors, props.color));\n watch(() => currentColor.value, (val) => {\n const color = new Color();\n color.fromString(val);\n rgbaColors.value.forEach((item) => {\n item.selected = color.compare(item);\n });\n });\n watchEffect(() => {\n rgbaColors.value = parseColors(props.colors, props.color);\n });\n function handleSelect(index) {\n props.color.fromString(props.colors[index]);\n }\n function parseColors(colors, color) {\n return colors.map((value) => {\n const c = new Color();\n c.enableAlpha = true;\n c.format = \"rgba\";\n c.fromString(value);\n c.selected = c.value === color.value;\n return c;\n });\n }\n return {\n rgbaColors,\n handleSelect,\n ns\n };\n }\n});\nconst _hoisted_1 = [\"onClick\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.ns.b())\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"colors\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.rgbaColors, (item, index) => {\n return openBlock(), createElementBlock(\"div\", {\n key: _ctx.colors[index],\n class: normalizeClass([\n _ctx.ns.e(\"color-selector\"),\n _ctx.ns.is(\"alpha\", item._alpha < 100),\n { selected: item.selected }\n ]),\n onClick: ($event) => _ctx.handleSelect(index)\n }, [\n createElementVNode(\"div\", {\n style: normalizeStyle({ backgroundColor: item.value })\n }, null, 4)\n ], 10, _hoisted_1);\n }), 128))\n ], 2)\n ], 2);\n}\nvar Predefine = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"predefine.vue\"]]);\n\nexport { Predefine as default };\n//# sourceMappingURL=predefine.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, watch, onMounted, createElementVNode, openBlock, createElementBlock, normalizeClass, normalizeStyle } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { draggable } from '../utils/draggable.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { getClientXY } from '../../../../utils/dom/position.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElSlPanel\",\n props: {\n color: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const ns = useNamespace(\"color-svpanel\");\n const instance = getCurrentInstance();\n const cursorTop = ref(0);\n const cursorLeft = ref(0);\n const background = ref(\"hsl(0, 100%, 50%)\");\n const colorValue = computed(() => {\n const hue = props.color.get(\"hue\");\n const value = props.color.get(\"value\");\n return { hue, value };\n });\n function update() {\n const saturation = props.color.get(\"saturation\");\n const value = props.color.get(\"value\");\n const el = instance.vnode.el;\n const { clientWidth: width, clientHeight: height } = el;\n cursorLeft.value = saturation * width / 100;\n cursorTop.value = (100 - value) * height / 100;\n background.value = `hsl(${props.color.get(\"hue\")}, 100%, 50%)`;\n }\n function handleDrag(event) {\n const el = instance.vnode.el;\n const rect = el.getBoundingClientRect();\n const { clientX, clientY } = getClientXY(event);\n let left = clientX - rect.left;\n let top = clientY - rect.top;\n left = Math.max(0, left);\n left = Math.min(left, rect.width);\n top = Math.max(0, top);\n top = Math.min(top, rect.height);\n cursorLeft.value = left;\n cursorTop.value = top;\n props.color.set({\n saturation: left / rect.width * 100,\n value: 100 - top / rect.height * 100\n });\n }\n watch(() => colorValue.value, () => {\n update();\n });\n onMounted(() => {\n draggable(instance.vnode.el, {\n drag: (event) => {\n handleDrag(event);\n },\n end: (event) => {\n handleDrag(event);\n }\n });\n update();\n });\n return {\n cursorTop,\n cursorLeft,\n background,\n colorValue,\n handleDrag,\n update,\n ns\n };\n }\n});\nconst _hoisted_1 = /* @__PURE__ */ createElementVNode(\"div\", null, null, -1);\nconst _hoisted_2 = [\n _hoisted_1\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.ns.b()),\n style: normalizeStyle({\n backgroundColor: _ctx.background\n })\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"white\"))\n }, null, 2),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"black\"))\n }, null, 2),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"cursor\")),\n style: normalizeStyle({\n top: _ctx.cursorTop + \"px\",\n left: _ctx.cursorLeft + \"px\"\n })\n }, _hoisted_2, 6)\n ], 6);\n}\nvar SvPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"sv-panel.vue\"]]);\n\nexport { SvPanel as default };\n//# sourceMappingURL=sv-panel.mjs.map\n","import { defineComponent, ref, reactive, computed, nextTick, onMounted, watch, provide, openBlock, createBlock, unref, withCtx, withDirectives, createElementBlock, withKeys, createElementVNode, normalizeClass, createVNode, createCommentVNode, createTextVNode, toDisplayString, mergeProps, normalizeStyle, vShow } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport { ElButton } from '../../button/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../directives/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElInput } from '../../input/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ArrowDown, Close } from '@element-plus/icons-vue';\nimport AlphaSlider from './components/alpha-slider.mjs';\nimport HueSlider from './components/hue-slider.mjs';\nimport Predefine from './components/predefine.mjs';\nimport SvPanel from './components/sv-panel.mjs';\nimport Color from './utils/color.mjs';\nimport { colorPickerProps, colorPickerEmits, colorPickerContextKey } from './color-picker.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useFocusController } from '../../../hooks/use-focus-controller/index.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\n\nconst _hoisted_1 = [\"onKeydown\"];\nconst _hoisted_2 = [\"id\", \"aria-label\", \"aria-labelledby\", \"aria-description\", \"aria-disabled\", \"tabindex\"];\nconst __default__ = defineComponent({\n name: \"ElColorPicker\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: colorPickerProps,\n emits: colorPickerEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"color\");\n const { formItem } = useFormItem();\n const colorSize = useFormSize();\n const colorDisabled = useFormDisabled();\n const { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem\n });\n const hue = ref();\n const sv = ref();\n const alpha = ref();\n const popper = ref();\n const triggerRef = ref();\n const inputRef = ref();\n const {\n isFocused,\n handleFocus: _handleFocus,\n handleBlur\n } = useFocusController(triggerRef, {\n beforeBlur(event) {\n var _a;\n return (_a = popper.value) == null ? void 0 : _a.isFocusInsideContent(event);\n },\n afterBlur() {\n setShowPicker(false);\n resetColor();\n }\n });\n const handleFocus = (event) => {\n if (colorDisabled.value)\n return blur();\n _handleFocus(event);\n };\n let shouldActiveChange = true;\n const color = reactive(new Color({\n enableAlpha: props.showAlpha,\n format: props.colorFormat || \"\",\n value: props.modelValue\n }));\n const showPicker = ref(false);\n const showPanelColor = ref(false);\n const customInput = ref(\"\");\n const displayedColor = computed(() => {\n if (!props.modelValue && !showPanelColor.value) {\n return \"transparent\";\n }\n return displayedRgb(color, props.showAlpha);\n });\n const currentColor = computed(() => {\n return !props.modelValue && !showPanelColor.value ? \"\" : color.value;\n });\n const buttonAriaLabel = computed(() => {\n return !isLabeledByFormItem.value ? props.label || props.ariaLabel || t(\"el.colorpicker.defaultLabel\") : void 0;\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-color-picker\",\n ref: \"https://element-plus.org/en-US/component/color-picker.html\"\n }, computed(() => !!props.label));\n const buttonAriaLabelledby = computed(() => {\n return isLabeledByFormItem.value ? formItem == null ? void 0 : formItem.labelId : void 0;\n });\n const btnKls = computed(() => {\n return [\n ns.b(\"picker\"),\n ns.is(\"disabled\", colorDisabled.value),\n ns.bm(\"picker\", colorSize.value),\n ns.is(\"focused\", isFocused.value)\n ];\n });\n function displayedRgb(color2, showAlpha) {\n if (!(color2 instanceof Color)) {\n throw new TypeError(\"color should be instance of _color Class\");\n }\n const { r, g, b } = color2.toRgb();\n return showAlpha ? `rgba(${r}, ${g}, ${b}, ${color2.get(\"alpha\") / 100})` : `rgb(${r}, ${g}, ${b})`;\n }\n function setShowPicker(value) {\n showPicker.value = value;\n }\n const debounceSetShowPicker = debounce(setShowPicker, 100, { leading: true });\n function show() {\n if (colorDisabled.value)\n return;\n setShowPicker(true);\n }\n function hide() {\n debounceSetShowPicker(false);\n resetColor();\n }\n function resetColor() {\n nextTick(() => {\n if (props.modelValue) {\n color.fromString(props.modelValue);\n } else {\n color.value = \"\";\n nextTick(() => {\n showPanelColor.value = false;\n });\n }\n });\n }\n function handleTrigger() {\n if (colorDisabled.value)\n return;\n debounceSetShowPicker(!showPicker.value);\n }\n function handleConfirm() {\n color.fromString(customInput.value);\n }\n function confirmValue() {\n const value = color.value;\n emit(UPDATE_MODEL_EVENT, value);\n emit(\"change\", value);\n if (props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n debounceSetShowPicker(false);\n nextTick(() => {\n const newColor = new Color({\n enableAlpha: props.showAlpha,\n format: props.colorFormat || \"\",\n value: props.modelValue\n });\n if (!color.compare(newColor)) {\n resetColor();\n }\n });\n }\n function clear() {\n debounceSetShowPicker(false);\n emit(UPDATE_MODEL_EVENT, null);\n emit(\"change\", null);\n if (props.modelValue !== null && props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n resetColor();\n }\n function handleClickOutside(event) {\n if (!showPicker.value)\n return;\n hide();\n if (isFocused.value) {\n const _event = new FocusEvent(\"focus\", event);\n handleBlur(_event);\n }\n }\n function handleEsc(event) {\n event.preventDefault();\n event.stopPropagation();\n setShowPicker(false);\n resetColor();\n }\n function handleKeyDown(event) {\n switch (event.code) {\n case EVENT_CODE.enter:\n case EVENT_CODE.space:\n event.preventDefault();\n event.stopPropagation();\n show();\n inputRef.value.focus();\n break;\n case EVENT_CODE.esc:\n handleEsc(event);\n break;\n }\n }\n function focus() {\n triggerRef.value.focus();\n }\n function blur() {\n triggerRef.value.blur();\n }\n onMounted(() => {\n if (props.modelValue) {\n customInput.value = currentColor.value;\n }\n });\n watch(() => props.modelValue, (newVal) => {\n if (!newVal) {\n showPanelColor.value = false;\n } else if (newVal && newVal !== color.value) {\n shouldActiveChange = false;\n color.fromString(newVal);\n }\n });\n watch(() => currentColor.value, (val) => {\n customInput.value = val;\n shouldActiveChange && emit(\"activeChange\", val);\n shouldActiveChange = true;\n });\n watch(() => color.value, () => {\n if (!props.modelValue && !showPanelColor.value) {\n showPanelColor.value = true;\n }\n });\n watch(() => showPicker.value, () => {\n nextTick(() => {\n var _a, _b, _c;\n (_a = hue.value) == null ? void 0 : _a.update();\n (_b = sv.value) == null ? void 0 : _b.update();\n (_c = alpha.value) == null ? void 0 : _c.update();\n });\n });\n provide(colorPickerContextKey, {\n currentColor\n });\n expose({\n color,\n show,\n hide,\n focus,\n blur\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), {\n ref_key: \"popper\",\n ref: popper,\n visible: showPicker.value,\n \"show-arrow\": false,\n \"fallback-placements\": [\"bottom\", \"top\", \"right\", \"left\"],\n offset: 0,\n \"gpu-acceleration\": false,\n \"popper-class\": [unref(ns).be(\"picker\", \"panel\"), unref(ns).b(\"dropdown\"), _ctx.popperClass],\n \"stop-popper-mouse-event\": false,\n effect: \"light\",\n trigger: \"click\",\n teleported: _ctx.teleported,\n transition: `${unref(ns).namespace.value}-zoom-in-top`,\n persistent: \"\",\n onHide: _cache[2] || (_cache[2] = ($event) => setShowPicker(false))\n }, {\n content: withCtx(() => [\n withDirectives((openBlock(), createElementBlock(\"div\", {\n onKeydown: withKeys(handleEsc, [\"esc\"])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).be(\"dropdown\", \"main-wrapper\"))\n }, [\n createVNode(HueSlider, {\n ref_key: \"hue\",\n ref: hue,\n class: \"hue-slider\",\n color: unref(color),\n vertical: \"\"\n }, null, 8, [\"color\"]),\n createVNode(SvPanel, {\n ref_key: \"sv\",\n ref: sv,\n color: unref(color)\n }, null, 8, [\"color\"])\n ], 2),\n _ctx.showAlpha ? (openBlock(), createBlock(AlphaSlider, {\n key: 0,\n ref_key: \"alpha\",\n ref: alpha,\n color: unref(color)\n }, null, 8, [\"color\"])) : createCommentVNode(\"v-if\", true),\n _ctx.predefine ? (openBlock(), createBlock(Predefine, {\n key: 1,\n ref: \"predefine\",\n color: unref(color),\n colors: _ctx.predefine\n }, null, 8, [\"color\", \"colors\"])) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).be(\"dropdown\", \"btns\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).be(\"dropdown\", \"value\"))\n }, [\n createVNode(unref(ElInput), {\n ref_key: \"inputRef\",\n ref: inputRef,\n modelValue: customInput.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => customInput.value = $event),\n \"validate-event\": false,\n size: \"small\",\n onKeyup: withKeys(handleConfirm, [\"enter\"]),\n onBlur: handleConfirm\n }, null, 8, [\"modelValue\", \"onKeyup\"])\n ], 2),\n createVNode(unref(ElButton), {\n class: normalizeClass(unref(ns).be(\"dropdown\", \"link-btn\")),\n text: \"\",\n size: \"small\",\n onClick: clear\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.colorpicker.clear\")), 1)\n ]),\n _: 1\n }, 8, [\"class\"]),\n createVNode(unref(ElButton), {\n plain: \"\",\n size: \"small\",\n class: normalizeClass(unref(ns).be(\"dropdown\", \"btn\")),\n onClick: confirmValue\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.colorpicker.confirm\")), 1)\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 2)\n ], 40, _hoisted_1)), [\n [unref(ClickOutside), handleClickOutside]\n ])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", mergeProps({\n id: unref(buttonId),\n ref_key: \"triggerRef\",\n ref: triggerRef\n }, _ctx.$attrs, {\n class: unref(btnKls),\n role: \"button\",\n \"aria-label\": unref(buttonAriaLabel),\n \"aria-labelledby\": unref(buttonAriaLabelledby),\n \"aria-description\": unref(t)(\"el.colorpicker.description\", { color: _ctx.modelValue || \"\" }),\n \"aria-disabled\": unref(colorDisabled),\n tabindex: unref(colorDisabled) ? -1 : _ctx.tabindex,\n onKeydown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: _cache[1] || (_cache[1] = (...args) => unref(handleBlur) && unref(handleBlur)(...args))\n }), [\n unref(colorDisabled) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).be(\"picker\", \"mask\"))\n }, null, 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).be(\"picker\", \"trigger\")),\n onClick: handleTrigger\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([unref(ns).be(\"picker\", \"color\"), unref(ns).is(\"alpha\", _ctx.showAlpha)])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).be(\"picker\", \"color-inner\")),\n style: normalizeStyle({\n backgroundColor: unref(displayedColor)\n })\n }, [\n withDirectives(createVNode(unref(ElIcon), {\n class: normalizeClass([unref(ns).be(\"picker\", \"icon\"), unref(ns).is(\"icon-arrow-down\")])\n }, {\n default: withCtx(() => [\n createVNode(unref(ArrowDown))\n ]),\n _: 1\n }, 8, [\"class\"]), [\n [vShow, _ctx.modelValue || showPanelColor.value]\n ]),\n withDirectives(createVNode(unref(ElIcon), {\n class: normalizeClass([unref(ns).be(\"picker\", \"empty\"), unref(ns).is(\"icon-close\")])\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\"]), [\n [vShow, !_ctx.modelValue && !showPanelColor.value]\n ])\n ], 6)\n ], 2)\n ], 2)\n ], 16, _hoisted_2)\n ]),\n _: 1\n }, 8, [\"visible\", \"popper-class\", \"teleported\", \"transition\"]);\n };\n }\n});\nvar ColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"color-picker.vue\"]]);\n\nexport { ColorPicker as default };\n//# sourceMappingURL=color-picker2.mjs.map\n","import '../../utils/index.mjs';\nimport ColorPicker from './src/color-picker2.mjs';\nexport { colorPickerContextKey, colorPickerEmits, colorPickerProps } from './src/color-picker.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElColorPicker = withInstall(ColorPicker);\n\nexport { ElColorPicker, ElColorPicker as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../utils/index.mjs';\nimport ConfigProvider from './src/config-provider.mjs';\nexport { messageConfig } from './src/config-provider.mjs';\nexport { configProviderProps } from './src/config-provider-props.mjs';\nexport { configProviderContextKey } from './src/constants.mjs';\nexport { provideGlobalConfig, useGlobalComponentSettings, useGlobalConfig } from './src/hooks/use-global-config.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElConfigProvider = withInstall(ConfigProvider);\n\nexport { ElConfigProvider, ElConfigProvider as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, useSlots, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElContainer\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n direction: {\n type: String\n }\n },\n setup(__props) {\n const props = __props;\n const slots = useSlots();\n const ns = useNamespace(\"container\");\n const isVertical = computed(() => {\n if (props.direction === \"vertical\") {\n return true;\n } else if (props.direction === \"horizontal\") {\n return false;\n }\n if (slots && slots.default) {\n const vNodes = slots.default();\n return vNodes.some((vNode) => {\n const tag = vNode.type.name;\n return tag === \"ElHeader\" || tag === \"ElFooter\";\n });\n } else {\n return false;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"section\", {\n class: normalizeClass([unref(ns).b(), unref(ns).is(\"vertical\", unref(isVertical))])\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar Container = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"container.vue\"]]);\n\nexport { Container as default };\n//# sourceMappingURL=container.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElAside\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n width: {\n type: String,\n default: null\n }\n },\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"aside\");\n const style = computed(() => props.width ? ns.cssVarBlock({ width: props.width }) : {});\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"aside\", {\n class: normalizeClass(unref(ns).b()),\n style: normalizeStyle(unref(style))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nvar Aside = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"aside.vue\"]]);\n\nexport { Aside as default };\n//# sourceMappingURL=aside.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElFooter\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n height: {\n type: String,\n default: null\n }\n },\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"footer\");\n const style = computed(() => props.height ? ns.cssVarBlock({ height: props.height }) : {});\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"footer\", {\n class: normalizeClass(unref(ns).b()),\n style: normalizeStyle(unref(style))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nvar Footer = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"footer.vue\"]]);\n\nexport { Footer as default };\n//# sourceMappingURL=footer.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElHeader\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n height: {\n type: String,\n default: null\n }\n },\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"header\");\n const style = computed(() => {\n return props.height ? ns.cssVarBlock({\n height: props.height\n }) : {};\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"header\", {\n class: normalizeClass(unref(ns).b()),\n style: normalizeStyle(unref(style))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nvar Header = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"header.vue\"]]);\n\nexport { Header as default };\n//# sourceMappingURL=header.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElMain\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n setup(__props) {\n const ns = useNamespace(\"main\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"main\", {\n class: normalizeClass(unref(ns).b())\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar Main = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"main.vue\"]]);\n\nexport { Main as default };\n//# sourceMappingURL=main.mjs.map\n","import '../../utils/index.mjs';\nimport Container from './src/container.mjs';\nimport Aside from './src/aside.mjs';\nimport Footer from './src/footer.mjs';\nimport Header from './src/header.mjs';\nimport Main from './src/main.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElContainer = withInstall(Container, {\n Aside,\n Footer,\n Header,\n Main\n});\nconst ElAside = withNoopInstall(Aside);\nconst ElFooter = withNoopInstall(Footer);\nconst ElHeader = withNoopInstall(Header);\nconst ElMain = withNoopInstall(Main);\n\nexport { ElAside, ElContainer, ElFooter, ElHeader, ElMain, ElContainer as default };\n//# sourceMappingURL=index.mjs.map\n","const ROOT_PICKER_INJECTION_KEY = Symbol();\n\nexport { ROOT_PICKER_INJECTION_KEY };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst disabledTimeListsProps = buildProps({\n disabledHours: {\n type: definePropType(Function)\n },\n disabledMinutes: {\n type: definePropType(Function)\n },\n disabledSeconds: {\n type: definePropType(Function)\n }\n});\nconst timePanelSharedProps = buildProps({\n visible: Boolean,\n actualVisible: {\n type: Boolean,\n default: void 0\n },\n format: {\n type: String,\n default: \"\"\n }\n});\n\nexport { disabledTimeListsProps, timePanelSharedProps };\n//# sourceMappingURL=shared.mjs.map\n","import '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { CircleClose } from '@element-plus/icons-vue';\nimport { disabledTimeListsProps } from '../props/shared.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../../hooks/use-size/index.mjs';\nimport { useEmptyValuesProps } from '../../../../hooks/use-empty-values/index.mjs';\nimport { useAriaProps } from '../../../../hooks/use-aria/index.mjs';\n\nconst timePickerDefaultProps = buildProps({\n id: {\n type: definePropType([Array, String])\n },\n name: {\n type: definePropType([Array, String]),\n default: \"\"\n },\n popperClass: {\n type: String,\n default: \"\"\n },\n format: String,\n valueFormat: String,\n dateFormat: String,\n timeFormat: String,\n type: {\n type: String,\n default: \"\"\n },\n clearable: {\n type: Boolean,\n default: true\n },\n clearIcon: {\n type: definePropType([String, Object]),\n default: CircleClose\n },\n editable: {\n type: Boolean,\n default: true\n },\n prefixIcon: {\n type: definePropType([String, Object]),\n default: \"\"\n },\n size: useSizeProp,\n readonly: Boolean,\n disabled: Boolean,\n placeholder: {\n type: String,\n default: \"\"\n },\n popperOptions: {\n type: definePropType(Object),\n default: () => ({})\n },\n modelValue: {\n type: definePropType([Date, Array, String, Number]),\n default: \"\"\n },\n rangeSeparator: {\n type: String,\n default: \"-\"\n },\n startPlaceholder: String,\n endPlaceholder: String,\n defaultValue: {\n type: definePropType([Date, Array])\n },\n defaultTime: {\n type: definePropType([Date, Array])\n },\n isRange: Boolean,\n ...disabledTimeListsProps,\n disabledDate: {\n type: Function\n },\n cellClassName: {\n type: Function\n },\n shortcuts: {\n type: Array,\n default: () => []\n },\n arrowControl: Boolean,\n label: {\n type: String,\n default: void 0\n },\n tabindex: {\n type: definePropType([String, Number]),\n default: 0\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n unlinkPanels: Boolean,\n ...useEmptyValuesProps,\n ...useAriaProps([\"ariaLabel\"])\n});\n\nexport { timePickerDefaultProps };\n//# sourceMappingURL=props.mjs.map\n","import '../../../time-picker/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\nimport { timePickerDefaultProps } from '../../../time-picker/src/common/props.mjs';\n\nconst datePickerProps = buildProps({\n ...timePickerDefaultProps,\n type: {\n type: definePropType(String),\n default: \"date\"\n }\n});\n\nexport { datePickerProps };\n//# sourceMappingURL=date-picker.mjs.map\n","import '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\nimport { datePickTypes } from '../../../../constants/date.mjs';\nimport { isArray } from '@vue/shared';\n\nconst selectionModes = [\n \"date\",\n \"dates\",\n \"year\",\n \"years\",\n \"month\",\n \"week\",\n \"range\"\n];\nconst datePickerSharedProps = buildProps({\n disabledDate: {\n type: definePropType(Function)\n },\n date: {\n type: definePropType(Object),\n required: true\n },\n minDate: {\n type: definePropType(Object)\n },\n maxDate: {\n type: definePropType(Object)\n },\n parsedValue: {\n type: definePropType([Object, Array])\n },\n rangeState: {\n type: definePropType(Object),\n default: () => ({\n endDate: null,\n selecting: false\n })\n }\n});\nconst panelSharedProps = buildProps({\n type: {\n type: definePropType(String),\n required: true,\n values: datePickTypes\n },\n dateFormat: String,\n timeFormat: String\n});\nconst panelRangeSharedProps = buildProps({\n unlinkPanels: Boolean,\n parsedValue: {\n type: definePropType(Array)\n }\n});\nconst selectionModeWithDefault = (mode) => {\n return {\n type: String,\n values: selectionModes,\n default: mode\n };\n};\nconst rangePickerSharedEmits = {\n pick: (range) => isArray(range)\n};\n\nexport { datePickerSharedProps, panelRangeSharedProps, panelSharedProps, rangePickerSharedEmits, selectionModeWithDefault };\n//# sourceMappingURL=shared.mjs.map\n","import '../../../../utils/index.mjs';\nimport { panelSharedProps } from './shared.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst panelDatePickProps = buildProps({\n ...panelSharedProps,\n parsedValue: {\n type: definePropType([Object, Array])\n },\n visible: {\n type: Boolean\n },\n format: {\n type: String,\n default: \"\"\n }\n});\n\nexport { panelDatePickProps };\n//# sourceMappingURL=panel-date-pick.mjs.map\n","import '../../../../utils/index.mjs';\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst basicDateTableProps = buildProps({\n ...datePickerSharedProps,\n cellClassName: {\n type: definePropType(Function)\n },\n showWeekNumber: Boolean,\n selectionMode: selectionModeWithDefault(\"date\")\n});\nconst basicDateTableEmits = [\"changerange\", \"pick\", \"select\"];\n\nexport { basicDateTableEmits, basicDateTableProps };\n//# sourceMappingURL=basic-date-table.mjs.map\n","import dayjs from 'dayjs';\nimport '../../../utils/index.mjs';\nimport { isArray } from '@vue/shared';\n\nconst isValidRange = (range) => {\n if (!isArray(range))\n return false;\n const [left, right] = range;\n return dayjs.isDayjs(left) && dayjs.isDayjs(right) && left.isSameOrBefore(right);\n};\nconst getDefaultValue = (defaultValue, { lang, unit, unlinkPanels }) => {\n let start;\n if (isArray(defaultValue)) {\n let [left, right] = defaultValue.map((d) => dayjs(d).locale(lang));\n if (!unlinkPanels) {\n right = left.add(1, unit);\n }\n return [left, right];\n } else if (defaultValue) {\n start = dayjs(defaultValue);\n } else {\n start = dayjs();\n }\n start = start.locale(lang);\n return [start, start.add(1, unit)];\n};\nconst buildPickerTable = (dimension, rows, {\n columnIndexOffset,\n startDate,\n nextEndDate,\n now,\n unit,\n relativeDateGetter,\n setCellMetadata,\n setRowMetadata\n}) => {\n for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {\n const row = rows[rowIndex];\n for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {\n let cell = row[columnIndex + columnIndexOffset];\n if (!cell) {\n cell = {\n row: rowIndex,\n column: columnIndex,\n type: \"normal\",\n inRange: false,\n start: false,\n end: false\n };\n }\n const index = rowIndex * dimension.column + columnIndex;\n const nextStartDate = relativeDateGetter(index);\n cell.dayjs = nextStartDate;\n cell.date = nextStartDate.toDate();\n cell.timestamp = nextStartDate.valueOf();\n cell.type = \"normal\";\n cell.inRange = !!(startDate && nextStartDate.isSameOrAfter(startDate, unit) && nextEndDate && nextStartDate.isSameOrBefore(nextEndDate, unit)) || !!(startDate && nextStartDate.isSameOrBefore(startDate, unit) && nextEndDate && nextStartDate.isSameOrAfter(nextEndDate, unit));\n if (startDate == null ? void 0 : startDate.isSameOrAfter(nextEndDate)) {\n cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit);\n cell.end = startDate && nextStartDate.isSame(startDate, unit);\n } else {\n cell.start = !!startDate && nextStartDate.isSame(startDate, unit);\n cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit);\n }\n const isToday = nextStartDate.isSame(now, unit);\n if (isToday) {\n cell.type = \"today\";\n }\n setCellMetadata == null ? void 0 : setCellMetadata(cell, { rowIndex, columnIndex });\n row[columnIndex + columnIndexOffset] = cell;\n }\n setRowMetadata == null ? void 0 : setRowMetadata(row);\n }\n};\n\nexport { buildPickerTable, getDefaultValue, isValidRange };\n//# sourceMappingURL=utils.mjs.map\n","import { ref, computed, unref, watch, nextTick } from 'vue';\nimport dayjs from 'dayjs';\nimport { flatten } from 'lodash-unified';\nimport '../../../../hooks/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { buildPickerTable } from '../utils.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { castArray } from '../../../../utils/arrays.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nconst isNormalDay = (type = \"\") => {\n return [\"normal\", \"today\"].includes(type);\n};\nconst useBasicDateTable = (props, emit) => {\n const { lang } = useLocale();\n const tbodyRef = ref();\n const currentCellRef = ref();\n const lastRow = ref();\n const lastColumn = ref();\n const tableRows = ref([[], [], [], [], [], []]);\n let focusWithClick = false;\n const firstDayOfWeek = props.date.$locale().weekStart || 7;\n const WEEKS_CONSTANT = props.date.locale(\"en\").localeData().weekdaysShort().map((_) => _.toLowerCase());\n const offsetDay = computed(() => {\n return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek;\n });\n const startDate = computed(() => {\n const startDayOfMonth = props.date.startOf(\"month\");\n return startDayOfMonth.subtract(startDayOfMonth.day() || 7, \"day\");\n });\n const WEEKS = computed(() => {\n return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(firstDayOfWeek, firstDayOfWeek + 7);\n });\n const hasCurrent = computed(() => {\n return flatten(unref(rows)).some((row) => {\n return row.isCurrent;\n });\n });\n const days = computed(() => {\n const startOfMonth = props.date.startOf(\"month\");\n const startOfMonthDay = startOfMonth.day() || 7;\n const dateCountOfMonth = startOfMonth.daysInMonth();\n const dateCountOfLastMonth = startOfMonth.subtract(1, \"month\").daysInMonth();\n return {\n startOfMonthDay,\n dateCountOfMonth,\n dateCountOfLastMonth\n };\n });\n const selectedDate = computed(() => {\n return props.selectionMode === \"dates\" ? castArray(props.parsedValue) : [];\n });\n const setDateText = (cell, { count, rowIndex, columnIndex }) => {\n const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } = unref(days);\n const offset = unref(offsetDay);\n if (rowIndex >= 0 && rowIndex <= 1) {\n const numberOfDaysFromPreviousMonth = startOfMonthDay + offset < 0 ? 7 + startOfMonthDay + offset : startOfMonthDay + offset;\n if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) {\n cell.text = count;\n return true;\n } else {\n cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - columnIndex % 7) + 1 + rowIndex * 7;\n cell.type = \"prev-month\";\n }\n } else {\n if (count <= dateCountOfMonth) {\n cell.text = count;\n } else {\n cell.text = count - dateCountOfMonth;\n cell.type = \"next-month\";\n }\n return true;\n }\n return false;\n };\n const setCellMetadata = (cell, { columnIndex, rowIndex }, count) => {\n const { disabledDate, cellClassName } = props;\n const _selectedDate = unref(selectedDate);\n const shouldIncrement = setDateText(cell, { count, rowIndex, columnIndex });\n const cellDate = cell.dayjs.toDate();\n cell.selected = _selectedDate.find((d) => d.isSame(cell.dayjs, \"day\"));\n cell.isSelected = !!cell.selected;\n cell.isCurrent = isCurrent(cell);\n cell.disabled = disabledDate == null ? void 0 : disabledDate(cellDate);\n cell.customClass = cellClassName == null ? void 0 : cellClassName(cellDate);\n return shouldIncrement;\n };\n const setRowMetadata = (row) => {\n if (props.selectionMode === \"week\") {\n const [start, end] = props.showWeekNumber ? [1, 7] : [0, 6];\n const isActive = isWeekActive(row[start + 1]);\n row[start].inRange = isActive;\n row[start].start = isActive;\n row[end].inRange = isActive;\n row[end].end = isActive;\n }\n };\n const rows = computed(() => {\n const { minDate, maxDate, rangeState, showWeekNumber } = props;\n const offset = unref(offsetDay);\n const rows_ = unref(tableRows);\n const dateUnit = \"day\";\n let count = 1;\n if (showWeekNumber) {\n for (let rowIndex = 0; rowIndex < 6; rowIndex++) {\n if (!rows_[rowIndex][0]) {\n rows_[rowIndex][0] = {\n type: \"week\",\n text: unref(startDate).add(rowIndex * 7 + 1, dateUnit).week()\n };\n }\n }\n }\n buildPickerTable({ row: 6, column: 7 }, rows_, {\n startDate: minDate,\n columnIndexOffset: showWeekNumber ? 1 : 0,\n nextEndDate: rangeState.endDate || maxDate || rangeState.selecting && minDate || null,\n now: dayjs().locale(unref(lang)).startOf(dateUnit),\n unit: dateUnit,\n relativeDateGetter: (idx) => unref(startDate).add(idx - offset, dateUnit),\n setCellMetadata: (...args) => {\n if (setCellMetadata(...args, count)) {\n count += 1;\n }\n },\n setRowMetadata\n });\n return rows_;\n });\n watch(() => props.date, async () => {\n var _a;\n if ((_a = unref(tbodyRef)) == null ? void 0 : _a.contains(document.activeElement)) {\n await nextTick();\n await focus();\n }\n });\n const focus = async () => {\n var _a;\n return (_a = unref(currentCellRef)) == null ? void 0 : _a.focus();\n };\n const isCurrent = (cell) => {\n return props.selectionMode === \"date\" && isNormalDay(cell.type) && cellMatchesDate(cell, props.parsedValue);\n };\n const cellMatchesDate = (cell, date) => {\n if (!date)\n return false;\n return dayjs(date).locale(unref(lang)).isSame(props.date.date(Number(cell.text)), \"day\");\n };\n const getDateOfCell = (row, column) => {\n const offsetFromStart = row * 7 + (column - (props.showWeekNumber ? 1 : 0)) - unref(offsetDay);\n return unref(startDate).add(offsetFromStart, \"day\");\n };\n const handleMouseMove = (event) => {\n var _a;\n if (!props.rangeState.selecting)\n return;\n let target = event.target;\n if (target.tagName === \"SPAN\") {\n target = (_a = target.parentNode) == null ? void 0 : _a.parentNode;\n }\n if (target.tagName === \"DIV\") {\n target = target.parentNode;\n }\n if (target.tagName !== \"TD\")\n return;\n const row = target.parentNode.rowIndex - 1;\n const column = target.cellIndex;\n if (unref(rows)[row][column].disabled)\n return;\n if (row !== unref(lastRow) || column !== unref(lastColumn)) {\n lastRow.value = row;\n lastColumn.value = column;\n emit(\"changerange\", {\n selecting: true,\n endDate: getDateOfCell(row, column)\n });\n }\n };\n const isSelectedCell = (cell) => {\n return !unref(hasCurrent) && (cell == null ? void 0 : cell.text) === 1 && cell.type === \"normal\" || cell.isCurrent;\n };\n const handleFocus = (event) => {\n if (focusWithClick || unref(hasCurrent) || props.selectionMode !== \"date\")\n return;\n handlePickDate(event, true);\n };\n const handleMouseDown = (event) => {\n const target = event.target.closest(\"td\");\n if (!target)\n return;\n focusWithClick = true;\n };\n const handleMouseUp = (event) => {\n const target = event.target.closest(\"td\");\n if (!target)\n return;\n focusWithClick = false;\n };\n const handleRangePick = (newDate) => {\n if (!props.rangeState.selecting || !props.minDate) {\n emit(\"pick\", { minDate: newDate, maxDate: null });\n emit(\"select\", true);\n } else {\n if (newDate >= props.minDate) {\n emit(\"pick\", { minDate: props.minDate, maxDate: newDate });\n } else {\n emit(\"pick\", { minDate: newDate, maxDate: props.minDate });\n }\n emit(\"select\", false);\n }\n };\n const handleWeekPick = (newDate) => {\n const weekNumber = newDate.week();\n const value = `${newDate.year()}w${weekNumber}`;\n emit(\"pick\", {\n year: newDate.year(),\n week: weekNumber,\n value,\n date: newDate.startOf(\"week\")\n });\n };\n const handleDatesPick = (newDate, selected) => {\n const newValue = selected ? castArray(props.parsedValue).filter((d) => (d == null ? void 0 : d.valueOf()) !== newDate.valueOf()) : castArray(props.parsedValue).concat([newDate]);\n emit(\"pick\", newValue);\n };\n const handlePickDate = (event, isKeyboardMovement = false) => {\n const target = event.target.closest(\"td\");\n if (!target)\n return;\n const row = target.parentNode.rowIndex - 1;\n const column = target.cellIndex;\n const cell = unref(rows)[row][column];\n if (cell.disabled || cell.type === \"week\")\n return;\n const newDate = getDateOfCell(row, column);\n switch (props.selectionMode) {\n case \"range\": {\n handleRangePick(newDate);\n break;\n }\n case \"date\": {\n emit(\"pick\", newDate, isKeyboardMovement);\n break;\n }\n case \"week\": {\n handleWeekPick(newDate);\n break;\n }\n case \"dates\": {\n handleDatesPick(newDate, !!cell.selected);\n break;\n }\n default: {\n break;\n }\n }\n };\n const isWeekActive = (cell) => {\n if (props.selectionMode !== \"week\")\n return false;\n let newDate = props.date.startOf(\"day\");\n if (cell.type === \"prev-month\") {\n newDate = newDate.subtract(1, \"month\");\n }\n if (cell.type === \"next-month\") {\n newDate = newDate.add(1, \"month\");\n }\n newDate = newDate.date(Number.parseInt(cell.text, 10));\n if (props.parsedValue && !Array.isArray(props.parsedValue)) {\n const dayOffset = (props.parsedValue.day() - firstDayOfWeek + 7) % 7 - 1;\n const weekDate = props.parsedValue.subtract(dayOffset, \"day\");\n return weekDate.isSame(newDate, \"day\");\n }\n return false;\n };\n return {\n WEEKS,\n rows,\n tbodyRef,\n currentCellRef,\n focus,\n isCurrent,\n isWeekActive,\n isSelectedCell,\n handlePickDate,\n handleMouseUp,\n handleMouseDown,\n handleMouseMove,\n handleFocus\n };\n};\nconst useBasicDateTableDOM = (props, {\n isCurrent,\n isWeekActive\n}) => {\n const ns = useNamespace(\"date-table\");\n const { t } = useLocale();\n const tableKls = computed(() => [\n ns.b(),\n { \"is-week-mode\": props.selectionMode === \"week\" }\n ]);\n const tableLabel = computed(() => t(\"el.datepicker.dateTablePrompt\"));\n const weekLabel = computed(() => t(\"el.datepicker.week\"));\n const getCellClasses = (cell) => {\n const classes = [];\n if (isNormalDay(cell.type) && !cell.disabled) {\n classes.push(\"available\");\n if (cell.type === \"today\") {\n classes.push(\"today\");\n }\n } else {\n classes.push(cell.type);\n }\n if (isCurrent(cell)) {\n classes.push(\"current\");\n }\n if (cell.inRange && (isNormalDay(cell.type) || props.selectionMode === \"week\")) {\n classes.push(\"in-range\");\n if (cell.start) {\n classes.push(\"start-date\");\n }\n if (cell.end) {\n classes.push(\"end-date\");\n }\n }\n if (cell.disabled) {\n classes.push(\"disabled\");\n }\n if (cell.selected) {\n classes.push(\"selected\");\n }\n if (cell.customClass) {\n classes.push(cell.customClass);\n }\n return classes.join(\" \");\n };\n const getRowKls = (cell) => [\n ns.e(\"row\"),\n { current: isWeekActive(cell) }\n ];\n return {\n tableKls,\n tableLabel,\n weekLabel,\n getCellClasses,\n getRowKls,\n t\n };\n};\n\nexport { useBasicDateTable, useBasicDateTableDOM };\n//# sourceMappingURL=use-basic-date-table.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst basicCellProps = buildProps({\n cell: {\n type: definePropType(Object)\n }\n});\n\nexport { basicCellProps };\n//# sourceMappingURL=basic-cell.mjs.map\n","import { defineComponent, inject, renderSlot, createVNode } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants.mjs';\nimport { basicCellProps } from '../props/basic-cell.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nvar ElDatePickerCell = defineComponent({\n name: \"ElDatePickerCell\",\n props: basicCellProps,\n setup(props) {\n const ns = useNamespace(\"date-table-cell\");\n const {\n slots\n } = inject(ROOT_PICKER_INJECTION_KEY);\n return () => {\n const {\n cell\n } = props;\n return renderSlot(slots, \"default\", {\n ...cell\n }, () => [createVNode(\"div\", {\n \"class\": ns.b()\n }, [createVNode(\"span\", {\n \"class\": ns.e(\"text\")\n }, [cell == null ? void 0 : cell.text])])]);\n };\n }\n});\n\nexport { ElDatePickerCell as default };\n//# sourceMappingURL=basic-cell-render.mjs.map\n","import { defineComponent, openBlock, createElementBlock, unref, normalizeClass, withModifiers, createElementVNode, toDisplayString, createCommentVNode, Fragment, renderList, createVNode } from 'vue';\nimport { basicDateTableProps, basicDateTableEmits } from '../props/basic-date-table.mjs';\nimport { useBasicDateTable, useBasicDateTableDOM } from '../composables/use-basic-date-table.mjs';\nimport ElDatePickerCell from './basic-cell-render.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = {\n key: 0,\n scope: \"col\"\n};\nconst _hoisted_3 = [\"aria-label\"];\nconst _hoisted_4 = [\"aria-current\", \"aria-selected\", \"tabindex\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"basic-date-table\",\n props: basicDateTableProps,\n emits: basicDateTableEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const {\n WEEKS,\n rows,\n tbodyRef,\n currentCellRef,\n focus,\n isCurrent,\n isWeekActive,\n isSelectedCell,\n handlePickDate,\n handleMouseUp,\n handleMouseDown,\n handleMouseMove,\n handleFocus\n } = useBasicDateTable(props, emit);\n const { tableLabel, tableKls, weekLabel, getCellClasses, getRowKls, t } = useBasicDateTableDOM(props, {\n isCurrent,\n isWeekActive\n });\n expose({\n focus\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"table\", {\n \"aria-label\": unref(tableLabel),\n class: normalizeClass(unref(tableKls)),\n cellspacing: \"0\",\n cellpadding: \"0\",\n role: \"grid\",\n onClick: _cache[1] || (_cache[1] = (...args) => unref(handlePickDate) && unref(handlePickDate)(...args)),\n onMousemove: _cache[2] || (_cache[2] = (...args) => unref(handleMouseMove) && unref(handleMouseMove)(...args)),\n onMousedown: _cache[3] || (_cache[3] = withModifiers((...args) => unref(handleMouseDown) && unref(handleMouseDown)(...args), [\"prevent\"])),\n onMouseup: _cache[4] || (_cache[4] = (...args) => unref(handleMouseUp) && unref(handleMouseUp)(...args))\n }, [\n createElementVNode(\"tbody\", {\n ref_key: \"tbodyRef\",\n ref: tbodyRef\n }, [\n createElementVNode(\"tr\", null, [\n _ctx.showWeekNumber ? (openBlock(), createElementBlock(\"th\", _hoisted_2, toDisplayString(unref(weekLabel)), 1)) : createCommentVNode(\"v-if\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(WEEKS), (week, key) => {\n return openBlock(), createElementBlock(\"th\", {\n key,\n \"aria-label\": unref(t)(\"el.datepicker.weeksFull.\" + week),\n scope: \"col\"\n }, toDisplayString(unref(t)(\"el.datepicker.weeks.\" + week)), 9, _hoisted_3);\n }), 128))\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), (row, rowKey) => {\n return openBlock(), createElementBlock(\"tr\", {\n key: rowKey,\n class: normalizeClass(unref(getRowKls)(row[1]))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, columnKey) => {\n return openBlock(), createElementBlock(\"td\", {\n key: `${rowKey}.${columnKey}`,\n ref_for: true,\n ref: (el) => unref(isSelectedCell)(cell) && (currentCellRef.value = el),\n class: normalizeClass(unref(getCellClasses)(cell)),\n \"aria-current\": cell.isCurrent ? \"date\" : void 0,\n \"aria-selected\": cell.isCurrent,\n tabindex: unref(isSelectedCell)(cell) ? 0 : -1,\n onFocus: _cache[0] || (_cache[0] = (...args) => unref(handleFocus) && unref(handleFocus)(...args))\n }, [\n createVNode(unref(ElDatePickerCell), { cell }, null, 8, [\"cell\"])\n ], 42, _hoisted_4);\n }), 128))\n ], 2);\n }), 128))\n ], 512)\n ], 42, _hoisted_1);\n };\n }\n});\nvar DateTable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"basic-date-table.vue\"]]);\n\nexport { DateTable as default };\n//# sourceMappingURL=basic-date-table.mjs.map\n","import '../../../../utils/index.mjs';\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\n\nconst basicMonthTableProps = buildProps({\n ...datePickerSharedProps,\n selectionMode: selectionModeWithDefault(\"month\")\n});\n\nexport { basicMonthTableProps };\n//# sourceMappingURL=basic-month-table.mjs.map\n","import { defineComponent, ref, computed, watch, nextTick, openBlock, createElementBlock, unref, normalizeClass, createElementVNode, Fragment, renderList, withKeys, withModifiers, toDisplayString } from 'vue';\nimport dayjs from 'dayjs';\nimport '../../../../hooks/index.mjs';\nimport '../../../time-picker/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { basicMonthTableProps } from '../props/basic-month-table.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { rangeArr } from '../../../time-picker/src/utils.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { castArray } from '../../../../utils/arrays.mjs';\nimport { hasClass } from '../../../../utils/dom/style.mjs';\n\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = [\"aria-selected\", \"aria-label\", \"tabindex\", \"onKeydown\"];\nconst _hoisted_3 = { class: \"cell\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"basic-month-table\",\n props: basicMonthTableProps,\n emits: [\"changerange\", \"pick\", \"select\"],\n setup(__props, { expose, emit }) {\n const props = __props;\n const datesInMonth = (year, month, lang2) => {\n const firstDay = dayjs().locale(lang2).startOf(\"month\").month(month).year(year);\n const numOfDays = firstDay.daysInMonth();\n return rangeArr(numOfDays).map((n) => firstDay.add(n, \"day\").toDate());\n };\n const ns = useNamespace(\"month-table\");\n const { t, lang } = useLocale();\n const tbodyRef = ref();\n const currentCellRef = ref();\n const months = ref(props.date.locale(\"en\").localeData().monthsShort().map((_) => _.toLowerCase()));\n const tableRows = ref([\n [],\n [],\n []\n ]);\n const lastRow = ref();\n const lastColumn = ref();\n const rows = computed(() => {\n var _a, _b;\n const rows2 = tableRows.value;\n const now = dayjs().locale(lang.value).startOf(\"month\");\n for (let i = 0; i < 3; i++) {\n const row = rows2[i];\n for (let j = 0; j < 4; j++) {\n const cell = row[j] || (row[j] = {\n row: i,\n column: j,\n type: \"normal\",\n inRange: false,\n start: false,\n end: false,\n text: -1,\n disabled: false\n });\n cell.type = \"normal\";\n const index = i * 4 + j;\n const calTime = props.date.startOf(\"year\").month(index);\n const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate || null;\n cell.inRange = !!(props.minDate && calTime.isSameOrAfter(props.minDate, \"month\") && calEndDate && calTime.isSameOrBefore(calEndDate, \"month\")) || !!(props.minDate && calTime.isSameOrBefore(props.minDate, \"month\") && calEndDate && calTime.isSameOrAfter(calEndDate, \"month\"));\n if ((_a = props.minDate) == null ? void 0 : _a.isSameOrAfter(calEndDate)) {\n cell.start = !!(calEndDate && calTime.isSame(calEndDate, \"month\"));\n cell.end = props.minDate && calTime.isSame(props.minDate, \"month\");\n } else {\n cell.start = !!(props.minDate && calTime.isSame(props.minDate, \"month\"));\n cell.end = !!(calEndDate && calTime.isSame(calEndDate, \"month\"));\n }\n const isToday = now.isSame(calTime);\n if (isToday) {\n cell.type = \"today\";\n }\n cell.text = index;\n cell.disabled = ((_b = props.disabledDate) == null ? void 0 : _b.call(props, calTime.toDate())) || false;\n }\n }\n return rows2;\n });\n const focus = () => {\n var _a;\n (_a = currentCellRef.value) == null ? void 0 : _a.focus();\n };\n const getCellStyle = (cell) => {\n const style = {};\n const year = props.date.year();\n const today = new Date();\n const month = cell.text;\n style.disabled = props.disabledDate ? datesInMonth(year, month, lang.value).every(props.disabledDate) : false;\n style.current = castArray(props.parsedValue).findIndex((date) => dayjs.isDayjs(date) && date.year() === year && date.month() === month) >= 0;\n style.today = today.getFullYear() === year && today.getMonth() === month;\n if (cell.inRange) {\n style[\"in-range\"] = true;\n if (cell.start) {\n style[\"start-date\"] = true;\n }\n if (cell.end) {\n style[\"end-date\"] = true;\n }\n }\n return style;\n };\n const isSelectedCell = (cell) => {\n const year = props.date.year();\n const month = cell.text;\n return castArray(props.date).findIndex((date) => date.year() === year && date.month() === month) >= 0;\n };\n const handleMouseMove = (event) => {\n var _a;\n if (!props.rangeState.selecting)\n return;\n let target = event.target;\n if (target.tagName === \"SPAN\") {\n target = (_a = target.parentNode) == null ? void 0 : _a.parentNode;\n }\n if (target.tagName === \"DIV\") {\n target = target.parentNode;\n }\n if (target.tagName !== \"TD\")\n return;\n const row = target.parentNode.rowIndex;\n const column = target.cellIndex;\n if (rows.value[row][column].disabled)\n return;\n if (row !== lastRow.value || column !== lastColumn.value) {\n lastRow.value = row;\n lastColumn.value = column;\n emit(\"changerange\", {\n selecting: true,\n endDate: props.date.startOf(\"year\").month(row * 4 + column)\n });\n }\n };\n const handleMonthTableClick = (event) => {\n var _a;\n const target = (_a = event.target) == null ? void 0 : _a.closest(\"td\");\n if ((target == null ? void 0 : target.tagName) !== \"TD\")\n return;\n if (hasClass(target, \"disabled\"))\n return;\n const column = target.cellIndex;\n const row = target.parentNode.rowIndex;\n const month = row * 4 + column;\n const newDate = props.date.startOf(\"year\").month(month);\n if (props.selectionMode === \"range\") {\n if (!props.rangeState.selecting) {\n emit(\"pick\", { minDate: newDate, maxDate: null });\n emit(\"select\", true);\n } else {\n if (props.minDate && newDate >= props.minDate) {\n emit(\"pick\", { minDate: props.minDate, maxDate: newDate });\n } else {\n emit(\"pick\", { minDate: newDate, maxDate: props.minDate });\n }\n emit(\"select\", false);\n }\n } else {\n emit(\"pick\", month);\n }\n };\n watch(() => props.date, async () => {\n var _a, _b;\n if ((_a = tbodyRef.value) == null ? void 0 : _a.contains(document.activeElement)) {\n await nextTick();\n (_b = currentCellRef.value) == null ? void 0 : _b.focus();\n }\n });\n expose({\n focus\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"table\", {\n role: \"grid\",\n \"aria-label\": unref(t)(\"el.datepicker.monthTablePrompt\"),\n class: normalizeClass(unref(ns).b()),\n onClick: handleMonthTableClick,\n onMousemove: handleMouseMove\n }, [\n createElementVNode(\"tbody\", {\n ref_key: \"tbodyRef\",\n ref: tbodyRef\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), (row, key) => {\n return openBlock(), createElementBlock(\"tr\", { key }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, key_) => {\n return openBlock(), createElementBlock(\"td\", {\n key: key_,\n ref_for: true,\n ref: (el) => isSelectedCell(cell) && (currentCellRef.value = el),\n class: normalizeClass(getCellStyle(cell)),\n \"aria-selected\": `${isSelectedCell(cell)}`,\n \"aria-label\": unref(t)(`el.datepicker.month${+cell.text + 1}`),\n tabindex: isSelectedCell(cell) ? 0 : -1,\n onKeydown: [\n withKeys(withModifiers(handleMonthTableClick, [\"prevent\", \"stop\"]), [\"space\"]),\n withKeys(withModifiers(handleMonthTableClick, [\"prevent\", \"stop\"]), [\"enter\"])\n ]\n }, [\n createElementVNode(\"div\", null, [\n createElementVNode(\"span\", _hoisted_3, toDisplayString(unref(t)(\"el.datepicker.months.\" + months.value[cell.text])), 1)\n ])\n ], 42, _hoisted_2);\n }), 128))\n ]);\n }), 128))\n ], 512)\n ], 42, _hoisted_1);\n };\n }\n});\nvar MonthTable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"basic-month-table.vue\"]]);\n\nexport { MonthTable as default };\n//# sourceMappingURL=basic-month-table.mjs.map\n","import '../../../../utils/index.mjs';\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\n\nconst { date, disabledDate, parsedValue } = datePickerSharedProps;\nconst basicYearTableProps = buildProps({\n date,\n disabledDate,\n parsedValue,\n selectionMode: selectionModeWithDefault(\"year\")\n});\n\nexport { basicYearTableProps };\n//# sourceMappingURL=basic-year-table.mjs.map\n","import { defineComponent, ref, computed, watch, nextTick, openBlock, createElementBlock, unref, normalizeClass, createElementVNode, Fragment, renderList, withKeys, withModifiers, toDisplayString } from 'vue';\nimport dayjs from 'dayjs';\nimport '../../../../hooks/index.mjs';\nimport '../../../time-picker/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { basicYearTableProps } from '../props/basic-year-table.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { rangeArr } from '../../../time-picker/src/utils.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { castArray } from '../../../../utils/arrays.mjs';\nimport { hasClass } from '../../../../utils/dom/style.mjs';\n\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = [\"aria-selected\", \"tabindex\", \"onKeydown\"];\nconst _hoisted_3 = { class: \"cell\" };\nconst _hoisted_4 = { key: 1 };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"basic-year-table\",\n props: basicYearTableProps,\n emits: [\"pick\"],\n setup(__props, { expose, emit }) {\n const props = __props;\n const datesInYear = (year, lang2) => {\n const firstDay = dayjs(String(year)).locale(lang2).startOf(\"year\");\n const lastDay = firstDay.endOf(\"year\");\n const numOfDays = lastDay.dayOfYear();\n return rangeArr(numOfDays).map((n) => firstDay.add(n, \"day\").toDate());\n };\n const ns = useNamespace(\"year-table\");\n const { t, lang } = useLocale();\n const tbodyRef = ref();\n const currentCellRef = ref();\n const startYear = computed(() => {\n return Math.floor(props.date.year() / 10) * 10;\n });\n const focus = () => {\n var _a;\n (_a = currentCellRef.value) == null ? void 0 : _a.focus();\n };\n const getCellKls = (year) => {\n const kls = {};\n const today = dayjs().locale(lang.value);\n kls.disabled = props.disabledDate ? datesInYear(year, lang.value).every(props.disabledDate) : false;\n kls.current = castArray(props.parsedValue).findIndex((d) => d.year() === year) >= 0;\n kls.today = today.year() === year;\n return kls;\n };\n const isSelectedCell = (year) => {\n return year === startYear.value && props.date.year() < startYear.value && props.date.year() > startYear.value + 9 || castArray(props.date).findIndex((date) => date.year() === year) >= 0 || castArray(props.parsedValue).findIndex((date) => (date == null ? void 0 : date.year()) === year) >= 0;\n };\n const handleYearTableClick = (event) => {\n const clickTarget = event.target;\n const target = clickTarget.closest(\"td\");\n if (target && target.textContent) {\n if (hasClass(target, \"disabled\"))\n return;\n const year = target.textContent || target.innerText;\n if (props.selectionMode === \"years\") {\n if (event.type === \"keydown\") {\n emit(\"pick\", castArray(props.parsedValue), false);\n return;\n }\n const newValue = hasClass(target, \"current\") ? castArray(props.parsedValue).filter((d) => (d == null ? void 0 : d.year()) !== Number(year)) : castArray(props.parsedValue).concat([dayjs(year)]);\n emit(\"pick\", newValue);\n } else {\n emit(\"pick\", Number(year));\n }\n }\n };\n watch(() => props.date, async () => {\n var _a, _b;\n if ((_a = tbodyRef.value) == null ? void 0 : _a.contains(document.activeElement)) {\n await nextTick();\n (_b = currentCellRef.value) == null ? void 0 : _b.focus();\n }\n });\n expose({\n focus\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"table\", {\n role: \"grid\",\n \"aria-label\": unref(t)(\"el.datepicker.yearTablePrompt\"),\n class: normalizeClass(unref(ns).b()),\n onClick: handleYearTableClick\n }, [\n createElementVNode(\"tbody\", {\n ref_key: \"tbodyRef\",\n ref: tbodyRef\n }, [\n (openBlock(), createElementBlock(Fragment, null, renderList(3, (_, i) => {\n return createElementVNode(\"tr\", { key: i }, [\n (openBlock(), createElementBlock(Fragment, null, renderList(4, (__, j) => {\n return openBlock(), createElementBlock(Fragment, {\n key: i + \"_\" + j\n }, [\n i * 4 + j < 10 ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n ref_for: true,\n ref: (el) => isSelectedCell(unref(startYear) + i * 4 + j) && (currentCellRef.value = el),\n class: normalizeClass([\"available\", getCellKls(unref(startYear) + i * 4 + j)]),\n \"aria-selected\": `${isSelectedCell(unref(startYear) + i * 4 + j)}`,\n tabindex: isSelectedCell(unref(startYear) + i * 4 + j) ? 0 : -1,\n onKeydown: [\n withKeys(withModifiers(handleYearTableClick, [\"prevent\", \"stop\"]), [\"space\"]),\n withKeys(withModifiers(handleYearTableClick, [\"prevent\", \"stop\"]), [\"enter\"])\n ]\n }, [\n createElementVNode(\"div\", null, [\n createElementVNode(\"span\", _hoisted_3, toDisplayString(unref(startYear) + i * 4 + j), 1)\n ])\n ], 42, _hoisted_2)) : (openBlock(), createElementBlock(\"td\", _hoisted_4))\n ], 64);\n }), 64))\n ]);\n }), 64))\n ], 512)\n ], 10, _hoisted_1);\n };\n }\n});\nvar YearTable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"basic-year-table.vue\"]]);\n\nexport { YearTable as default };\n//# sourceMappingURL=basic-year-table.mjs.map\n","import '../../../../utils/index.mjs';\nimport { timePanelSharedProps } from './shared.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst panelTimePickerProps = buildProps({\n ...timePanelSharedProps,\n datetimeRole: String,\n parsedValue: {\n type: definePropType(Object)\n }\n});\n\nexport { panelTimePickerProps };\n//# sourceMappingURL=panel-time-picker.mjs.map\n","const useTimePanel = ({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds\n}) => {\n const getAvailableTime = (date, role, first, compareDate) => {\n const availableTimeGetters = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds\n };\n let result = date;\n [\"hour\", \"minute\", \"second\"].forEach((type) => {\n if (availableTimeGetters[type]) {\n let availableTimeSlots;\n const method = availableTimeGetters[type];\n switch (type) {\n case \"minute\": {\n availableTimeSlots = method(result.hour(), role, compareDate);\n break;\n }\n case \"second\": {\n availableTimeSlots = method(result.hour(), result.minute(), role, compareDate);\n break;\n }\n default: {\n availableTimeSlots = method(role, compareDate);\n break;\n }\n }\n if ((availableTimeSlots == null ? void 0 : availableTimeSlots.length) && !availableTimeSlots.includes(result[type]())) {\n const pos = first ? 0 : availableTimeSlots.length - 1;\n result = result[type](availableTimeSlots[pos]);\n }\n }\n });\n return result;\n };\n const timePickerOptions = {};\n const onSetOption = ([key, val]) => {\n timePickerOptions[key] = val;\n };\n return {\n timePickerOptions,\n getAvailableTime,\n onSetOption\n };\n};\n\nexport { useTimePanel };\n//# sourceMappingURL=use-time-panel.mjs.map\n","import { ref, watch } from 'vue';\nimport { makeList } from '../utils.mjs';\n\nconst makeAvailableArr = (disabledList) => {\n const trueOrNumber = (isDisabled, index) => isDisabled || index;\n const getNumber = (predicate) => predicate !== true;\n return disabledList.map(trueOrNumber).filter(getNumber);\n};\nconst getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => {\n const getHoursList = (role, compare) => {\n return makeList(24, disabledHours && (() => disabledHours == null ? void 0 : disabledHours(role, compare)));\n };\n const getMinutesList = (hour, role, compare) => {\n return makeList(60, disabledMinutes && (() => disabledMinutes == null ? void 0 : disabledMinutes(hour, role, compare)));\n };\n const getSecondsList = (hour, minute, role, compare) => {\n return makeList(60, disabledSeconds && (() => disabledSeconds == null ? void 0 : disabledSeconds(hour, minute, role, compare)));\n };\n return {\n getHoursList,\n getMinutesList,\n getSecondsList\n };\n};\nconst buildAvailableTimeSlotGetter = (disabledHours, disabledMinutes, disabledSeconds) => {\n const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(disabledHours, disabledMinutes, disabledSeconds);\n const getAvailableHours = (role, compare) => {\n return makeAvailableArr(getHoursList(role, compare));\n };\n const getAvailableMinutes = (hour, role, compare) => {\n return makeAvailableArr(getMinutesList(hour, role, compare));\n };\n const getAvailableSeconds = (hour, minute, role, compare) => {\n return makeAvailableArr(getSecondsList(hour, minute, role, compare));\n };\n return {\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds\n };\n};\nconst useOldValue = (props) => {\n const oldValue = ref(props.parsedValue);\n watch(() => props.visible, (val) => {\n if (!val) {\n oldValue.value = props.parsedValue;\n }\n });\n return oldValue;\n};\n\nexport { buildAvailableTimeSlotGetter, getTimeLists, useOldValue };\n//# sourceMappingURL=use-time-picker.mjs.map\n","const timeUnits = [\"hours\", \"minutes\", \"seconds\"];\nconst DEFAULT_FORMATS_TIME = \"HH:mm:ss\";\nconst DEFAULT_FORMATS_DATE = \"YYYY-MM-DD\";\nconst DEFAULT_FORMATS_DATEPICKER = {\n date: DEFAULT_FORMATS_DATE,\n dates: DEFAULT_FORMATS_DATE,\n week: \"gggg[w]ww\",\n year: \"YYYY\",\n years: \"YYYY\",\n month: \"YYYY-MM\",\n datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,\n monthrange: \"YYYY-MM\",\n daterange: DEFAULT_FORMATS_DATE,\n datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`\n};\n\nexport { DEFAULT_FORMATS_DATE, DEFAULT_FORMATS_DATEPICKER, DEFAULT_FORMATS_TIME, timeUnits };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../../utils/index.mjs';\nimport { disabledTimeListsProps } from './shared.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst basicTimeSpinnerProps = buildProps({\n role: {\n type: String,\n required: true\n },\n spinnerDate: {\n type: definePropType(Object),\n required: true\n },\n showSeconds: {\n type: Boolean,\n default: true\n },\n arrowControl: Boolean,\n amPmMode: {\n type: definePropType(String),\n default: \"\"\n },\n ...disabledTimeListsProps\n});\n\nexport { basicTimeSpinnerProps };\n//# sourceMappingURL=basic-time-spinner.mjs.map\n","import '../../utils/index.mjs';\nimport { isFunction } from '@vue/shared';\n\nconst REPEAT_INTERVAL = 100;\nconst REPEAT_DELAY = 600;\nconst vRepeatClick = {\n beforeMount(el, binding) {\n const value = binding.value;\n const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction(value) ? {} : value;\n let intervalId;\n let delayId;\n const handler = () => isFunction(value) ? value() : value.handler();\n const clear = () => {\n if (delayId) {\n clearTimeout(delayId);\n delayId = void 0;\n }\n if (intervalId) {\n clearInterval(intervalId);\n intervalId = void 0;\n }\n };\n el.addEventListener(\"mousedown\", (evt) => {\n if (evt.button !== 0)\n return;\n clear();\n handler();\n document.addEventListener(\"mouseup\", () => clear(), {\n once: true\n });\n delayId = setTimeout(() => {\n intervalId = setInterval(() => {\n handler();\n }, interval);\n }, delay);\n });\n }\n};\n\nexport { REPEAT_DELAY, REPEAT_INTERVAL, vRepeatClick };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, ref, computed, unref, nextTick, onMounted, watch, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createBlock, withCtx, createTextVNode, toDisplayString, createCommentVNode, withDirectives, createVNode, createElementVNode } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport '../../../../directives/index.mjs';\nimport { ElScrollbar } from '../../../scrollbar/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { ArrowUp, ArrowDown } from '@element-plus/icons-vue';\nimport '../../../../hooks/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { timeUnits } from '../constants.mjs';\nimport { buildTimeList } from '../utils.mjs';\nimport { basicTimeSpinnerProps } from '../props/basic-time-spinner.mjs';\nimport { getTimeLists } from '../composables/use-time-picker.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { getStyle } from '../../../../utils/dom/style.mjs';\nimport { vRepeatClick } from '../../../../directives/repeat-click/index.mjs';\n\nconst _hoisted_1 = [\"onClick\"];\nconst _hoisted_2 = [\"onMouseenter\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"basic-time-spinner\",\n props: basicTimeSpinnerProps,\n emits: [\"change\", \"select-range\", \"set-option\"],\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"time\");\n const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(props.disabledHours, props.disabledMinutes, props.disabledSeconds);\n let isScrolling = false;\n const currentScrollbar = ref();\n const listHoursRef = ref();\n const listMinutesRef = ref();\n const listSecondsRef = ref();\n const listRefsMap = {\n hours: listHoursRef,\n minutes: listMinutesRef,\n seconds: listSecondsRef\n };\n const spinnerItems = computed(() => {\n return props.showSeconds ? timeUnits : timeUnits.slice(0, 2);\n });\n const timePartials = computed(() => {\n const { spinnerDate } = props;\n const hours = spinnerDate.hour();\n const minutes = spinnerDate.minute();\n const seconds = spinnerDate.second();\n return { hours, minutes, seconds };\n });\n const timeList = computed(() => {\n const { hours, minutes } = unref(timePartials);\n return {\n hours: getHoursList(props.role),\n minutes: getMinutesList(hours, props.role),\n seconds: getSecondsList(hours, minutes, props.role)\n };\n });\n const arrowControlTimeList = computed(() => {\n const { hours, minutes, seconds } = unref(timePartials);\n return {\n hours: buildTimeList(hours, 23),\n minutes: buildTimeList(minutes, 59),\n seconds: buildTimeList(seconds, 59)\n };\n });\n const debouncedResetScroll = debounce((type) => {\n isScrolling = false;\n adjustCurrentSpinner(type);\n }, 200);\n const getAmPmFlag = (hour) => {\n const shouldShowAmPm = !!props.amPmMode;\n if (!shouldShowAmPm)\n return \"\";\n const isCapital = props.amPmMode === \"A\";\n let content = hour < 12 ? \" am\" : \" pm\";\n if (isCapital)\n content = content.toUpperCase();\n return content;\n };\n const emitSelectRange = (type) => {\n let range;\n switch (type) {\n case \"hours\":\n range = [0, 2];\n break;\n case \"minutes\":\n range = [3, 5];\n break;\n case \"seconds\":\n range = [6, 8];\n break;\n }\n const [left, right] = range;\n emit(\"select-range\", left, right);\n currentScrollbar.value = type;\n };\n const adjustCurrentSpinner = (type) => {\n adjustSpinner(type, unref(timePartials)[type]);\n };\n const adjustSpinners = () => {\n adjustCurrentSpinner(\"hours\");\n adjustCurrentSpinner(\"minutes\");\n adjustCurrentSpinner(\"seconds\");\n };\n const getScrollbarElement = (el) => el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`);\n const adjustSpinner = (type, value) => {\n if (props.arrowControl)\n return;\n const scrollbar = unref(listRefsMap[type]);\n if (scrollbar && scrollbar.$el) {\n getScrollbarElement(scrollbar.$el).scrollTop = Math.max(0, value * typeItemHeight(type));\n }\n };\n const typeItemHeight = (type) => {\n const scrollbar = unref(listRefsMap[type]);\n const listItem = scrollbar == null ? void 0 : scrollbar.$el.querySelector(\"li\");\n if (listItem) {\n return Number.parseFloat(getStyle(listItem, \"height\")) || 0;\n }\n return 0;\n };\n const onIncrement = () => {\n scrollDown(1);\n };\n const onDecrement = () => {\n scrollDown(-1);\n };\n const scrollDown = (step) => {\n if (!currentScrollbar.value) {\n emitSelectRange(\"hours\");\n }\n const label = currentScrollbar.value;\n const now = unref(timePartials)[label];\n const total = currentScrollbar.value === \"hours\" ? 24 : 60;\n const next = findNextUnDisabled(label, now, step, total);\n modifyDateField(label, next);\n adjustSpinner(label, next);\n nextTick(() => emitSelectRange(label));\n };\n const findNextUnDisabled = (type, now, step, total) => {\n let next = (now + step + total) % total;\n const list = unref(timeList)[type];\n while (list[next] && next !== now) {\n next = (next + step + total) % total;\n }\n return next;\n };\n const modifyDateField = (type, value) => {\n const list = unref(timeList)[type];\n const isDisabled = list[value];\n if (isDisabled)\n return;\n const { hours, minutes, seconds } = unref(timePartials);\n let changeTo;\n switch (type) {\n case \"hours\":\n changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds);\n break;\n case \"minutes\":\n changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds);\n break;\n case \"seconds\":\n changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value);\n break;\n }\n emit(\"change\", changeTo);\n };\n const handleClick = (type, { value, disabled }) => {\n if (!disabled) {\n modifyDateField(type, value);\n emitSelectRange(type);\n adjustSpinner(type, value);\n }\n };\n const handleScroll = (type) => {\n isScrolling = true;\n debouncedResetScroll(type);\n const value = Math.min(Math.round((getScrollbarElement(unref(listRefsMap[type]).$el).scrollTop - (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) + 3) / typeItemHeight(type)), type === \"hours\" ? 23 : 59);\n modifyDateField(type, value);\n };\n const scrollBarHeight = (type) => {\n return unref(listRefsMap[type]).$el.offsetHeight;\n };\n const bindScrollEvent = () => {\n const bindFunction = (type) => {\n const scrollbar = unref(listRefsMap[type]);\n if (scrollbar && scrollbar.$el) {\n getScrollbarElement(scrollbar.$el).onscroll = () => {\n handleScroll(type);\n };\n }\n };\n bindFunction(\"hours\");\n bindFunction(\"minutes\");\n bindFunction(\"seconds\");\n };\n onMounted(() => {\n nextTick(() => {\n !props.arrowControl && bindScrollEvent();\n adjustSpinners();\n if (props.role === \"start\")\n emitSelectRange(\"hours\");\n });\n });\n const setRef = (scrollbar, type) => {\n listRefsMap[type].value = scrollbar;\n };\n emit(\"set-option\", [`${props.role}_scrollDown`, scrollDown]);\n emit(\"set-option\", [`${props.role}_emitSelectRange`, emitSelectRange]);\n watch(() => props.spinnerDate, () => {\n if (isScrolling)\n return;\n adjustSpinners();\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).b(\"spinner\"), { \"has-seconds\": _ctx.showSeconds }])\n }, [\n !_ctx.arrowControl ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(spinnerItems), (item) => {\n return openBlock(), createBlock(unref(ElScrollbar), {\n key: item,\n ref_for: true,\n ref: (scrollbar) => setRef(scrollbar, item),\n class: normalizeClass(unref(ns).be(\"spinner\", \"wrapper\")),\n \"wrap-style\": \"max-height: inherit;\",\n \"view-class\": unref(ns).be(\"spinner\", \"list\"),\n noresize: \"\",\n tag: \"ul\",\n onMouseenter: ($event) => emitSelectRange(item),\n onMousemove: ($event) => adjustCurrentSpinner(item)\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(timeList)[item], (disabled, key) => {\n return openBlock(), createElementBlock(\"li\", {\n key,\n class: normalizeClass([\n unref(ns).be(\"spinner\", \"item\"),\n unref(ns).is(\"active\", key === unref(timePartials)[item]),\n unref(ns).is(\"disabled\", disabled)\n ]),\n onClick: ($event) => handleClick(item, { value: key, disabled })\n }, [\n item === \"hours\" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createTextVNode(toDisplayString((\"0\" + (_ctx.amPmMode ? key % 12 || 12 : key)).slice(-2)) + toDisplayString(getAmPmFlag(key)), 1)\n ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString((\"0\" + key).slice(-2)), 1)\n ], 64))\n ], 10, _hoisted_1);\n }), 128))\n ]),\n _: 2\n }, 1032, [\"class\", \"view-class\", \"onMouseenter\", \"onMousemove\"]);\n }), 128)) : createCommentVNode(\"v-if\", true),\n _ctx.arrowControl ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(spinnerItems), (item) => {\n return openBlock(), createElementBlock(\"div\", {\n key: item,\n class: normalizeClass([unref(ns).be(\"spinner\", \"wrapper\"), unref(ns).is(\"arrow\")]),\n onMouseenter: ($event) => emitSelectRange(item)\n }, [\n withDirectives((openBlock(), createBlock(unref(ElIcon), {\n class: normalizeClass([\"arrow-up\", unref(ns).be(\"spinner\", \"arrow\")])\n }, {\n default: withCtx(() => [\n createVNode(unref(ArrowUp))\n ]),\n _: 1\n }, 8, [\"class\"])), [\n [unref(vRepeatClick), onDecrement]\n ]),\n withDirectives((openBlock(), createBlock(unref(ElIcon), {\n class: normalizeClass([\"arrow-down\", unref(ns).be(\"spinner\", \"arrow\")])\n }, {\n default: withCtx(() => [\n createVNode(unref(ArrowDown))\n ]),\n _: 1\n }, 8, [\"class\"])), [\n [unref(vRepeatClick), onIncrement]\n ]),\n createElementVNode(\"ul\", {\n class: normalizeClass(unref(ns).be(\"spinner\", \"list\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(arrowControlTimeList)[item], (time, key) => {\n return openBlock(), createElementBlock(\"li\", {\n key,\n class: normalizeClass([\n unref(ns).be(\"spinner\", \"item\"),\n unref(ns).is(\"active\", time === unref(timePartials)[item]),\n unref(ns).is(\"disabled\", unref(timeList)[item][time])\n ])\n }, [\n typeof time === \"number\" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n item === \"hours\" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createTextVNode(toDisplayString((\"0\" + (_ctx.amPmMode ? time % 12 || 12 : time)).slice(-2)) + toDisplayString(getAmPmFlag(time)), 1)\n ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString((\"0\" + time).slice(-2)), 1)\n ], 64))\n ], 64)) : createCommentVNode(\"v-if\", true)\n ], 2);\n }), 128))\n ], 2)\n ], 42, _hoisted_2);\n }), 128)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar TimeSpinner = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"basic-time-spinner.vue\"]]);\n\nexport { TimeSpinner as default };\n//# sourceMappingURL=basic-time-spinner.mjs.map\n","import { defineComponent, inject, ref, computed, openBlock, createBlock, Transition, unref, withCtx, createElementBlock, normalizeClass, createElementVNode, createVNode, toDisplayString, createCommentVNode } from 'vue';\nimport dayjs from 'dayjs';\nimport '../../../../constants/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { panelTimePickerProps } from '../props/panel-time-picker.mjs';\nimport { useTimePanel } from '../composables/use-time-panel.mjs';\nimport { buildAvailableTimeSlotGetter, useOldValue } from '../composables/use-time-picker.mjs';\nimport TimeSpinner from './basic-time-spinner.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { isUndefined } from '../../../../utils/types.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"panel-time-pick\",\n props: panelTimePickerProps,\n emits: [\"pick\", \"select-range\", \"set-picker-option\"],\n setup(__props, { emit }) {\n const props = __props;\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue\n } = pickerBase.props;\n const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds);\n const ns = useNamespace(\"time\");\n const { t, lang } = useLocale();\n const selectionRange = ref([0, 2]);\n const oldValue = useOldValue(props);\n const transitionName = computed(() => {\n return isUndefined(props.actualVisible) ? `${ns.namespace.value}-zoom-in-top` : \"\";\n });\n const showSeconds = computed(() => {\n return props.format.includes(\"ss\");\n });\n const amPmMode = computed(() => {\n if (props.format.includes(\"A\"))\n return \"A\";\n if (props.format.includes(\"a\"))\n return \"a\";\n return \"\";\n });\n const isValidValue = (_date) => {\n const parsedDate = dayjs(_date).locale(lang.value);\n const result = getRangeAvailableTime(parsedDate);\n return parsedDate.isSame(result);\n };\n const handleCancel = () => {\n emit(\"pick\", oldValue.value, false);\n };\n const handleConfirm = (visible = false, first = false) => {\n if (first)\n return;\n emit(\"pick\", props.parsedValue, visible);\n };\n const handleChange = (_date) => {\n if (!props.visible) {\n return;\n }\n const result = getRangeAvailableTime(_date).millisecond(0);\n emit(\"pick\", result, true);\n };\n const setSelectionRange = (start, end) => {\n emit(\"select-range\", start, end);\n selectionRange.value = [start, end];\n };\n const changeSelectionRange = (step) => {\n const list = [0, 3].concat(showSeconds.value ? [6] : []);\n const mapping = [\"hours\", \"minutes\"].concat(showSeconds.value ? [\"seconds\"] : []);\n const index = list.indexOf(selectionRange.value[0]);\n const next = (index + step + list.length) % list.length;\n timePickerOptions[\"start_emitSelectRange\"](mapping[next]);\n };\n const handleKeydown = (event) => {\n const code = event.code;\n const { left, right, up, down } = EVENT_CODE;\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1;\n changeSelectionRange(step);\n event.preventDefault();\n return;\n }\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1;\n timePickerOptions[\"start_scrollDown\"](step);\n event.preventDefault();\n return;\n }\n };\n const { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds\n });\n const getRangeAvailableTime = (date) => {\n return getAvailableTime(date, props.datetimeRole || \"\", true);\n };\n const parseUserInput = (value) => {\n if (!value)\n return null;\n return dayjs(value, props.format).locale(lang.value);\n };\n const formatToString = (value) => {\n if (!value)\n return null;\n return value.format(props.format);\n };\n const getDefaultValue = () => {\n return dayjs(defaultValue).locale(lang.value);\n };\n emit(\"set-picker-option\", [\"isValidValue\", isValidValue]);\n emit(\"set-picker-option\", [\"formatToString\", formatToString]);\n emit(\"set-picker-option\", [\"parseUserInput\", parseUserInput]);\n emit(\"set-picker-option\", [\"handleKeydownInput\", handleKeydown]);\n emit(\"set-picker-option\", [\"getRangeAvailableTime\", getRangeAvailableTime]);\n emit(\"set-picker-option\", [\"getDefaultValue\", getDefaultValue]);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Transition, { name: unref(transitionName) }, {\n default: withCtx(() => [\n _ctx.actualVisible || _ctx.visible ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).b(\"panel\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).be(\"panel\", \"content\"), { \"has-seconds\": unref(showSeconds) }])\n }, [\n createVNode(TimeSpinner, {\n ref: \"spinner\",\n role: _ctx.datetimeRole || \"start\",\n \"arrow-control\": unref(arrowControl),\n \"show-seconds\": unref(showSeconds),\n \"am-pm-mode\": unref(amPmMode),\n \"spinner-date\": _ctx.parsedValue,\n \"disabled-hours\": unref(disabledHours),\n \"disabled-minutes\": unref(disabledMinutes),\n \"disabled-seconds\": unref(disabledSeconds),\n onChange: handleChange,\n onSetOption: unref(onSetOption),\n onSelectRange: setSelectionRange\n }, null, 8, [\"role\", \"arrow-control\", \"show-seconds\", \"am-pm-mode\", \"spinner-date\", \"disabled-hours\", \"disabled-minutes\", \"disabled-seconds\", \"onSetOption\"])\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).be(\"panel\", \"footer\"))\n }, [\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ns).be(\"panel\", \"btn\"), \"cancel\"]),\n onClick: handleCancel\n }, toDisplayString(unref(t)(\"el.datepicker.cancel\")), 3),\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ns).be(\"panel\", \"btn\"), \"confirm\"]),\n onClick: _cache[0] || (_cache[0] = ($event) => handleConfirm())\n }, toDisplayString(unref(t)(\"el.datepicker.confirm\")), 3)\n ], 2)\n ], 2)) : createCommentVNode(\"v-if\", true)\n ]),\n _: 1\n }, 8, [\"name\"]);\n };\n }\n});\nvar TimePickPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"panel-time-pick.vue\"]]);\n\nexport { TimePickPanel as default };\n//# sourceMappingURL=panel-time-pick.mjs.map\n","import { defineComponent, useAttrs, useSlots, inject, toRef, ref, computed, nextTick, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, Fragment, renderList, toDisplayString, createCommentVNode, createVNode, withDirectives, withCtx, vShow, withKeys, createBlock, createTextVNode } from 'vue';\nimport dayjs from 'dayjs';\nimport { ElButton } from '../../../button/index.mjs';\nimport '../../../../directives/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { ElInput } from '../../../input/index.mjs';\nimport '../../../time-picker/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { DArrowLeft, ArrowLeft, ArrowRight, DArrowRight } from '@element-plus/icons-vue';\nimport '../../../tooltip/index.mjs';\nimport { panelDatePickProps } from '../props/panel-date-pick.mjs';\nimport DateTable from './basic-date-table.mjs';\nimport MonthTable from './basic-month-table.mjs';\nimport YearTable from './basic-year-table.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { TOOLTIP_INJECTION_KEY } from '../../../tooltip/src/constants.mjs';\nimport { isArray, isFunction } from '@vue/shared';\nimport { extractTimeFormat, extractDateFormat } from '../../../time-picker/src/utils.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport TimePickPanel from '../../../time-picker/src/time-picker-com/panel-time-pick.mjs';\nimport ClickOutside from '../../../../directives/click-outside/index.mjs';\n\nconst _hoisted_1 = [\"onClick\"];\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = [\"aria-label\"];\nconst _hoisted_4 = [\"aria-label\"];\nconst _hoisted_5 = [\"aria-label\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"panel-date-pick\",\n props: panelDatePickProps,\n emits: [\"pick\", \"set-picker-option\", \"panel-change\"],\n setup(__props, { emit: contextEmit }) {\n const props = __props;\n const timeWithinRange = (_, __, ___) => true;\n const ppNs = useNamespace(\"picker-panel\");\n const dpNs = useNamespace(\"date-picker\");\n const attrs = useAttrs();\n const slots = useSlots();\n const { t, lang } = useLocale();\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const popper = inject(TOOLTIP_INJECTION_KEY);\n const { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props;\n const defaultValue = toRef(pickerBase.props, \"defaultValue\");\n const currentViewRef = ref();\n const innerDate = ref(dayjs().locale(lang.value));\n const isChangeToNow = ref(false);\n let isShortcut = false;\n const defaultTimeD = computed(() => {\n return dayjs(defaultTime).locale(lang.value);\n });\n const month = computed(() => {\n return innerDate.value.month();\n });\n const year = computed(() => {\n return innerDate.value.year();\n });\n const selectableRange = ref([]);\n const userInputDate = ref(null);\n const userInputTime = ref(null);\n const checkDateWithinRange = (date) => {\n return selectableRange.value.length > 0 ? timeWithinRange(date, selectableRange.value, props.format || \"HH:mm:ss\") : true;\n };\n const formatEmit = (emitDayjs) => {\n if (defaultTime && !visibleTime.value && !isChangeToNow.value && !isShortcut) {\n return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());\n }\n if (showTime.value)\n return emitDayjs.millisecond(0);\n return emitDayjs.startOf(\"day\");\n };\n const emit = (value, ...args) => {\n if (!value) {\n contextEmit(\"pick\", value, ...args);\n } else if (isArray(value)) {\n const dates = value.map(formatEmit);\n contextEmit(\"pick\", dates, ...args);\n } else {\n contextEmit(\"pick\", formatEmit(value), ...args);\n }\n userInputDate.value = null;\n userInputTime.value = null;\n isChangeToNow.value = false;\n isShortcut = false;\n };\n const handleDatePick = async (value, keepOpen) => {\n if (selectionMode.value === \"date\") {\n value = value;\n let newDate = props.parsedValue ? props.parsedValue.year(value.year()).month(value.month()).date(value.date()) : value;\n if (!checkDateWithinRange(newDate)) {\n newDate = selectableRange.value[0][0].year(value.year()).month(value.month()).date(value.date());\n }\n innerDate.value = newDate;\n emit(newDate, showTime.value || keepOpen);\n if (props.type === \"datetime\") {\n await nextTick();\n handleFocusPicker();\n }\n } else if (selectionMode.value === \"week\") {\n emit(value.date);\n } else if (selectionMode.value === \"dates\") {\n emit(value, true);\n }\n };\n const moveByMonth = (forward) => {\n const action = forward ? \"add\" : \"subtract\";\n innerDate.value = innerDate.value[action](1, \"month\");\n handlePanelChange(\"month\");\n };\n const moveByYear = (forward) => {\n const currentDate = innerDate.value;\n const action = forward ? \"add\" : \"subtract\";\n innerDate.value = currentView.value === \"year\" ? currentDate[action](10, \"year\") : currentDate[action](1, \"year\");\n handlePanelChange(\"year\");\n };\n const currentView = ref(\"date\");\n const yearLabel = computed(() => {\n const yearTranslation = t(\"el.datepicker.year\");\n if (currentView.value === \"year\") {\n const startYear = Math.floor(year.value / 10) * 10;\n if (yearTranslation) {\n return `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}`;\n }\n return `${startYear} - ${startYear + 9}`;\n }\n return `${year.value} ${yearTranslation}`;\n });\n const handleShortcutClick = (shortcut) => {\n const shortcutValue = isFunction(shortcut.value) ? shortcut.value() : shortcut.value;\n if (shortcutValue) {\n isShortcut = true;\n emit(dayjs(shortcutValue).locale(lang.value));\n return;\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit: contextEmit\n });\n }\n };\n const selectionMode = computed(() => {\n const { type } = props;\n if ([\"week\", \"month\", \"year\", \"years\", \"dates\"].includes(type))\n return type;\n return \"date\";\n });\n const keyboardMode = computed(() => {\n return selectionMode.value === \"date\" ? currentView.value : selectionMode.value;\n });\n const hasShortcuts = computed(() => !!shortcuts.length);\n const handleMonthPick = async (month2) => {\n innerDate.value = innerDate.value.startOf(\"month\").month(month2);\n if (selectionMode.value === \"month\") {\n emit(innerDate.value, false);\n } else {\n currentView.value = \"date\";\n if ([\"month\", \"year\", \"date\", \"week\"].includes(selectionMode.value)) {\n emit(innerDate.value, true);\n await nextTick();\n handleFocusPicker();\n }\n }\n handlePanelChange(\"month\");\n };\n const handleYearPick = async (year2, keepOpen) => {\n if (selectionMode.value === \"year\") {\n innerDate.value = innerDate.value.startOf(\"year\").year(year2);\n emit(innerDate.value, false);\n } else if (selectionMode.value === \"years\") {\n emit(year2, keepOpen != null ? keepOpen : true);\n } else {\n innerDate.value = innerDate.value.year(year2);\n currentView.value = \"month\";\n if ([\"month\", \"year\", \"date\", \"week\"].includes(selectionMode.value)) {\n emit(innerDate.value, true);\n await nextTick();\n handleFocusPicker();\n }\n }\n handlePanelChange(\"year\");\n };\n const showPicker = async (view) => {\n currentView.value = view;\n await nextTick();\n handleFocusPicker();\n };\n const showTime = computed(() => props.type === \"datetime\" || props.type === \"datetimerange\");\n const footerVisible = computed(() => {\n const showDateFooter = showTime.value || selectionMode.value === \"dates\";\n const showYearFooter = selectionMode.value === \"years\";\n const isDateView = currentView.value === \"date\";\n const isYearView = currentView.value === \"year\";\n return showDateFooter && isDateView || showYearFooter && isYearView;\n });\n const disabledConfirm = computed(() => {\n if (!disabledDate)\n return false;\n if (!props.parsedValue)\n return true;\n if (isArray(props.parsedValue)) {\n return disabledDate(props.parsedValue[0].toDate());\n }\n return disabledDate(props.parsedValue.toDate());\n });\n const onConfirm = () => {\n if (selectionMode.value === \"dates\" || selectionMode.value === \"years\") {\n emit(props.parsedValue);\n } else {\n let result = props.parsedValue;\n if (!result) {\n const defaultTimeD2 = dayjs(defaultTime).locale(lang.value);\n const defaultValueD = getDefaultValue();\n result = defaultTimeD2.year(defaultValueD.year()).month(defaultValueD.month()).date(defaultValueD.date());\n }\n innerDate.value = result;\n emit(result);\n }\n };\n const disabledNow = computed(() => {\n if (!disabledDate)\n return false;\n return disabledDate(dayjs().locale(lang.value).toDate());\n });\n const changeToNow = () => {\n const now = dayjs().locale(lang.value);\n const nowDate = now.toDate();\n isChangeToNow.value = true;\n if ((!disabledDate || !disabledDate(nowDate)) && checkDateWithinRange(nowDate)) {\n innerDate.value = dayjs().locale(lang.value);\n emit(innerDate.value);\n }\n };\n const timeFormat = computed(() => {\n return props.timeFormat || extractTimeFormat(props.format);\n });\n const dateFormat = computed(() => {\n return props.dateFormat || extractDateFormat(props.format);\n });\n const visibleTime = computed(() => {\n if (userInputTime.value)\n return userInputTime.value;\n if (!props.parsedValue && !defaultValue.value)\n return;\n return (props.parsedValue || innerDate.value).format(timeFormat.value);\n });\n const visibleDate = computed(() => {\n if (userInputDate.value)\n return userInputDate.value;\n if (!props.parsedValue && !defaultValue.value)\n return;\n return (props.parsedValue || innerDate.value).format(dateFormat.value);\n });\n const timePickerVisible = ref(false);\n const onTimePickerInputFocus = () => {\n timePickerVisible.value = true;\n };\n const handleTimePickClose = () => {\n timePickerVisible.value = false;\n };\n const getUnits = (date) => {\n return {\n hour: date.hour(),\n minute: date.minute(),\n second: date.second(),\n year: date.year(),\n month: date.month(),\n date: date.date()\n };\n };\n const handleTimePick = (value, visible, first) => {\n const { hour, minute, second } = getUnits(value);\n const newDate = props.parsedValue ? props.parsedValue.hour(hour).minute(minute).second(second) : value;\n innerDate.value = newDate;\n emit(innerDate.value, true);\n if (!first) {\n timePickerVisible.value = visible;\n }\n };\n const handleVisibleTimeChange = (value) => {\n const newDate = dayjs(value, timeFormat.value).locale(lang.value);\n if (newDate.isValid() && checkDateWithinRange(newDate)) {\n const { year: year2, month: month2, date } = getUnits(innerDate.value);\n innerDate.value = newDate.year(year2).month(month2).date(date);\n userInputTime.value = null;\n timePickerVisible.value = false;\n emit(innerDate.value, true);\n }\n };\n const handleVisibleDateChange = (value) => {\n const newDate = dayjs(value, dateFormat.value).locale(lang.value);\n if (newDate.isValid()) {\n if (disabledDate && disabledDate(newDate.toDate())) {\n return;\n }\n const { hour, minute, second } = getUnits(innerDate.value);\n innerDate.value = newDate.hour(hour).minute(minute).second(second);\n userInputDate.value = null;\n emit(innerDate.value, true);\n }\n };\n const isValidValue = (date) => {\n return dayjs.isDayjs(date) && date.isValid() && (disabledDate ? !disabledDate(date.toDate()) : true);\n };\n const formatToString = (value) => {\n return isArray(value) ? value.map((_) => _.format(props.format)) : value.format(props.format);\n };\n const parseUserInput = (value) => {\n return dayjs(value, props.format).locale(lang.value);\n };\n const getDefaultValue = () => {\n const parseDate = dayjs(defaultValue.value).locale(lang.value);\n if (!defaultValue.value) {\n const defaultTimeDValue = defaultTimeD.value;\n return dayjs().hour(defaultTimeDValue.hour()).minute(defaultTimeDValue.minute()).second(defaultTimeDValue.second()).locale(lang.value);\n }\n return parseDate;\n };\n const handleFocusPicker = async () => {\n var _a;\n if ([\"week\", \"month\", \"year\", \"date\"].includes(selectionMode.value)) {\n (_a = currentViewRef.value) == null ? void 0 : _a.focus();\n if (selectionMode.value === \"week\") {\n handleKeyControl(EVENT_CODE.down);\n }\n }\n };\n const handleKeydownTable = (event) => {\n const { code } = event;\n const validCode = [\n EVENT_CODE.up,\n EVENT_CODE.down,\n EVENT_CODE.left,\n EVENT_CODE.right,\n EVENT_CODE.home,\n EVENT_CODE.end,\n EVENT_CODE.pageUp,\n EVENT_CODE.pageDown\n ];\n if (validCode.includes(code)) {\n handleKeyControl(code);\n event.stopPropagation();\n event.preventDefault();\n }\n if ([EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(code) && userInputDate.value === null && userInputTime.value === null) {\n event.preventDefault();\n emit(innerDate.value, false);\n }\n };\n const handleKeyControl = (code) => {\n var _a;\n const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE;\n const mapping = {\n year: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date, step) => date.setFullYear(date.getFullYear() + step)\n },\n month: {\n [up]: -4,\n [down]: 4,\n [left]: -1,\n [right]: 1,\n offset: (date, step) => date.setMonth(date.getMonth() + step)\n },\n week: {\n [up]: -1,\n [down]: 1,\n [left]: -1,\n [right]: 1,\n offset: (date, step) => date.setDate(date.getDate() + step * 7)\n },\n date: {\n [up]: -7,\n [down]: 7,\n [left]: -1,\n [right]: 1,\n [home]: (date) => -date.getDay(),\n [end]: (date) => -date.getDay() + 6,\n [pageUp]: (date) => -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n [pageDown]: (date) => new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n offset: (date, step) => date.setDate(date.getDate() + step)\n }\n };\n const newDate = innerDate.value.toDate();\n while (Math.abs(innerDate.value.diff(newDate, \"year\", true)) < 1) {\n const map = mapping[keyboardMode.value];\n if (!map)\n return;\n map.offset(newDate, isFunction(map[code]) ? map[code](newDate) : (_a = map[code]) != null ? _a : 0);\n if (disabledDate && disabledDate(newDate)) {\n break;\n }\n const result = dayjs(newDate).locale(lang.value);\n innerDate.value = result;\n contextEmit(\"pick\", result, true);\n break;\n }\n };\n const handlePanelChange = (mode) => {\n contextEmit(\"panel-change\", innerDate.value.toDate(), mode, currentView.value);\n };\n watch(() => selectionMode.value, (val) => {\n if ([\"month\", \"year\"].includes(val)) {\n currentView.value = val;\n return;\n } else if (val === \"years\") {\n currentView.value = \"year\";\n return;\n }\n currentView.value = \"date\";\n }, { immediate: true });\n watch(() => currentView.value, () => {\n popper == null ? void 0 : popper.updatePopper();\n });\n watch(() => defaultValue.value, (val) => {\n if (val) {\n innerDate.value = getDefaultValue();\n }\n }, { immediate: true });\n watch(() => props.parsedValue, (val) => {\n if (val) {\n if (selectionMode.value === \"dates\" || selectionMode.value === \"years\")\n return;\n if (Array.isArray(val))\n return;\n innerDate.value = val;\n } else {\n innerDate.value = getDefaultValue();\n }\n }, { immediate: true });\n contextEmit(\"set-picker-option\", [\"isValidValue\", isValidValue]);\n contextEmit(\"set-picker-option\", [\"formatToString\", formatToString]);\n contextEmit(\"set-picker-option\", [\"parseUserInput\", parseUserInput]);\n contextEmit(\"set-picker-option\", [\"handleFocusPicker\", handleFocusPicker]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ppNs).b(),\n unref(dpNs).b(),\n {\n \"has-sidebar\": _ctx.$slots.sidebar || unref(hasShortcuts),\n \"has-time\": unref(showTime)\n }\n ])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"body-wrapper\"))\n }, [\n renderSlot(_ctx.$slots, \"sidebar\", {\n class: normalizeClass(unref(ppNs).e(\"sidebar\"))\n }),\n unref(hasShortcuts) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ppNs).e(\"sidebar\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(shortcuts), (shortcut, key) => {\n return openBlock(), createElementBlock(\"button\", {\n key,\n type: \"button\",\n class: normalizeClass(unref(ppNs).e(\"shortcut\")),\n onClick: ($event) => handleShortcutClick(shortcut)\n }, toDisplayString(shortcut.text), 11, _hoisted_1);\n }), 128))\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"body\"))\n }, [\n unref(showTime) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(dpNs).e(\"time-header\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(dpNs).e(\"editor-wrap\"))\n }, [\n createVNode(unref(ElInput), {\n placeholder: unref(t)(\"el.datepicker.selectDate\"),\n \"model-value\": unref(visibleDate),\n size: \"small\",\n \"validate-event\": false,\n onInput: _cache[0] || (_cache[0] = (val) => userInputDate.value = val),\n onChange: handleVisibleDateChange\n }, null, 8, [\"placeholder\", \"model-value\"])\n ], 2),\n withDirectives((openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(dpNs).e(\"editor-wrap\"))\n }, [\n createVNode(unref(ElInput), {\n placeholder: unref(t)(\"el.datepicker.selectTime\"),\n \"model-value\": unref(visibleTime),\n size: \"small\",\n \"validate-event\": false,\n onFocus: onTimePickerInputFocus,\n onInput: _cache[1] || (_cache[1] = (val) => userInputTime.value = val),\n onChange: handleVisibleTimeChange\n }, null, 8, [\"placeholder\", \"model-value\"]),\n createVNode(unref(TimePickPanel), {\n visible: timePickerVisible.value,\n format: unref(timeFormat),\n \"parsed-value\": innerDate.value,\n onPick: handleTimePick\n }, null, 8, [\"visible\", \"format\", \"parsed-value\"])\n ], 2)), [\n [unref(ClickOutside), handleTimePickClose]\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n withDirectives(createElementVNode(\"div\", {\n class: normalizeClass([\n unref(dpNs).e(\"header\"),\n (currentView.value === \"year\" || currentView.value === \"month\") && unref(dpNs).e(\"header--bordered\")\n ])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(dpNs).e(\"prev-btn\"))\n }, [\n createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": unref(t)(`el.datepicker.prevYear`),\n class: normalizeClass([\"d-arrow-left\", unref(ppNs).e(\"icon-btn\")]),\n onClick: _cache[2] || (_cache[2] = ($event) => moveByYear(false))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_2),\n withDirectives(createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": unref(t)(`el.datepicker.prevMonth`),\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"arrow-left\"]),\n onClick: _cache[3] || (_cache[3] = ($event) => moveByMonth(false))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_3), [\n [vShow, currentView.value === \"date\"]\n ])\n ], 2),\n createElementVNode(\"span\", {\n role: \"button\",\n class: normalizeClass(unref(dpNs).e(\"header-label\")),\n \"aria-live\": \"polite\",\n tabindex: \"0\",\n onKeydown: _cache[4] || (_cache[4] = withKeys(($event) => showPicker(\"year\"), [\"enter\"])),\n onClick: _cache[5] || (_cache[5] = ($event) => showPicker(\"year\"))\n }, toDisplayString(unref(yearLabel)), 35),\n withDirectives(createElementVNode(\"span\", {\n role: \"button\",\n \"aria-live\": \"polite\",\n tabindex: \"0\",\n class: normalizeClass([\n unref(dpNs).e(\"header-label\"),\n { active: currentView.value === \"month\" }\n ]),\n onKeydown: _cache[6] || (_cache[6] = withKeys(($event) => showPicker(\"month\"), [\"enter\"])),\n onClick: _cache[7] || (_cache[7] = ($event) => showPicker(\"month\"))\n }, toDisplayString(unref(t)(`el.datepicker.month${unref(month) + 1}`)), 35), [\n [vShow, currentView.value === \"date\"]\n ]),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(dpNs).e(\"next-btn\"))\n }, [\n withDirectives(createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": unref(t)(`el.datepicker.nextMonth`),\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"arrow-right\"]),\n onClick: _cache[8] || (_cache[8] = ($event) => moveByMonth(true))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_4), [\n [vShow, currentView.value === \"date\"]\n ]),\n createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": unref(t)(`el.datepicker.nextYear`),\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"d-arrow-right\"]),\n onClick: _cache[9] || (_cache[9] = ($event) => moveByYear(true))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_5)\n ], 2)\n ], 2), [\n [vShow, currentView.value !== \"time\"]\n ]),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"content\")),\n onKeydown: handleKeydownTable\n }, [\n currentView.value === \"date\" ? (openBlock(), createBlock(DateTable, {\n key: 0,\n ref_key: \"currentViewRef\",\n ref: currentViewRef,\n \"selection-mode\": unref(selectionMode),\n date: innerDate.value,\n \"parsed-value\": _ctx.parsedValue,\n \"disabled-date\": unref(disabledDate),\n \"cell-class-name\": unref(cellClassName),\n onPick: handleDatePick\n }, null, 8, [\"selection-mode\", \"date\", \"parsed-value\", \"disabled-date\", \"cell-class-name\"])) : createCommentVNode(\"v-if\", true),\n currentView.value === \"year\" ? (openBlock(), createBlock(YearTable, {\n key: 1,\n ref_key: \"currentViewRef\",\n ref: currentViewRef,\n \"selection-mode\": unref(selectionMode),\n date: innerDate.value,\n \"disabled-date\": unref(disabledDate),\n \"parsed-value\": _ctx.parsedValue,\n onPick: handleYearPick\n }, null, 8, [\"selection-mode\", \"date\", \"disabled-date\", \"parsed-value\"])) : createCommentVNode(\"v-if\", true),\n currentView.value === \"month\" ? (openBlock(), createBlock(MonthTable, {\n key: 2,\n ref_key: \"currentViewRef\",\n ref: currentViewRef,\n date: innerDate.value,\n \"parsed-value\": _ctx.parsedValue,\n \"disabled-date\": unref(disabledDate),\n onPick: handleMonthPick\n }, null, 8, [\"date\", \"parsed-value\", \"disabled-date\"])) : createCommentVNode(\"v-if\", true)\n ], 34)\n ], 2)\n ], 2),\n withDirectives(createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"footer\"))\n }, [\n withDirectives(createVNode(unref(ElButton), {\n text: \"\",\n size: \"small\",\n class: normalizeClass(unref(ppNs).e(\"link-btn\")),\n disabled: unref(disabledNow),\n onClick: changeToNow\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.now\")), 1)\n ]),\n _: 1\n }, 8, [\"class\", \"disabled\"]), [\n [vShow, unref(selectionMode) !== \"dates\" && unref(selectionMode) !== \"years\"]\n ]),\n createVNode(unref(ElButton), {\n plain: \"\",\n size: \"small\",\n class: normalizeClass(unref(ppNs).e(\"link-btn\")),\n disabled: unref(disabledConfirm),\n onClick: onConfirm\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.confirm\")), 1)\n ]),\n _: 1\n }, 8, [\"class\", \"disabled\"])\n ], 2), [\n [vShow, unref(footerVisible)]\n ])\n ], 2);\n };\n }\n});\nvar DatePickPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"panel-date-pick.vue\"]]);\n\nexport { DatePickPanel as default };\n//# sourceMappingURL=panel-date-pick.mjs.map\n","import '../../../../utils/index.mjs';\nimport { panelSharedProps, panelRangeSharedProps } from './shared.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\n\nconst panelDateRangeProps = buildProps({\n ...panelSharedProps,\n ...panelRangeSharedProps\n});\n\nexport { panelDateRangeProps };\n//# sourceMappingURL=panel-date-range.mjs.map\n","import { getCurrentInstance, useAttrs, useSlots } from 'vue';\nimport dayjs from 'dayjs';\nimport '../../../../utils/index.mjs';\nimport { isFunction } from '@vue/shared';\n\nconst useShortcut = (lang) => {\n const { emit } = getCurrentInstance();\n const attrs = useAttrs();\n const slots = useSlots();\n const handleShortcutClick = (shortcut) => {\n const shortcutValues = isFunction(shortcut.value) ? shortcut.value() : shortcut.value;\n if (shortcutValues) {\n emit(\"pick\", [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value)\n ]);\n return;\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit\n });\n }\n };\n return handleShortcutClick;\n};\n\nexport { useShortcut };\n//# sourceMappingURL=use-shortcut.mjs.map\n","import { getCurrentInstance, inject, ref, unref, watch } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { isValidRange, getDefaultValue } from '../utils.mjs';\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants.mjs';\nimport { useShortcut } from './use-shortcut.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { isArray } from '@vue/shared';\n\nconst useRangePicker = (props, {\n defaultValue,\n leftDate,\n rightDate,\n unit,\n onParsedValueChanged\n}) => {\n const { emit } = getCurrentInstance();\n const { pickerNs } = inject(ROOT_PICKER_INJECTION_KEY);\n const drpNs = useNamespace(\"date-range-picker\");\n const { t, lang } = useLocale();\n const handleShortcutClick = useShortcut(lang);\n const minDate = ref();\n const maxDate = ref();\n const rangeState = ref({\n endDate: null,\n selecting: false\n });\n const handleChangeRange = (val) => {\n rangeState.value = val;\n };\n const handleRangeConfirm = (visible = false) => {\n const _minDate = unref(minDate);\n const _maxDate = unref(maxDate);\n if (isValidRange([_minDate, _maxDate])) {\n emit(\"pick\", [_minDate, _maxDate], visible);\n }\n };\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting;\n if (!selecting) {\n rangeState.value.endDate = null;\n }\n };\n const restoreDefault = () => {\n const [start, end] = getDefaultValue(unref(defaultValue), {\n lang: unref(lang),\n unit,\n unlinkPanels: props.unlinkPanels\n });\n minDate.value = void 0;\n maxDate.value = void 0;\n leftDate.value = start;\n rightDate.value = end;\n };\n watch(defaultValue, (val) => {\n if (val) {\n restoreDefault();\n }\n }, { immediate: true });\n watch(() => props.parsedValue, (parsedValue) => {\n if (isArray(parsedValue) && parsedValue.length === 2) {\n const [start, end] = parsedValue;\n minDate.value = start;\n leftDate.value = start;\n maxDate.value = end;\n onParsedValueChanged(unref(minDate), unref(maxDate));\n } else {\n restoreDefault();\n }\n }, { immediate: true });\n return {\n minDate,\n maxDate,\n rangeState,\n lang,\n ppNs: pickerNs,\n drpNs,\n handleChangeRange,\n handleRangeConfirm,\n handleShortcutClick,\n onSelect,\n t\n };\n};\n\nexport { useRangePicker };\n//# sourceMappingURL=use-range-picker.mjs.map\n","import { defineComponent, inject, toRef, ref, computed, unref, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, Fragment, renderList, toDisplayString, createCommentVNode, createVNode, withDirectives, withCtx, createBlock, createTextVNode } from 'vue';\nimport dayjs from 'dayjs';\nimport '../../../../directives/index.mjs';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { ElButton } from '../../../button/index.mjs';\nimport { ElInput } from '../../../input/index.mjs';\nimport '../../../time-picker/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { ArrowRight, DArrowLeft, ArrowLeft, DArrowRight } from '@element-plus/icons-vue';\nimport { panelDateRangeProps } from '../props/panel-date-range.mjs';\nimport { useRangePicker } from '../composables/use-range-picker.mjs';\nimport { isValidRange, getDefaultValue } from '../utils.mjs';\nimport DateTable from './basic-date-table.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { extractTimeFormat, extractDateFormat } from '../../../time-picker/src/utils.mjs';\nimport { isArray } from '@vue/shared';\nimport TimePickPanel from '../../../time-picker/src/time-picker-com/panel-time-pick.mjs';\nimport ClickOutside from '../../../../directives/click-outside/index.mjs';\n\nconst _hoisted_1 = [\"onClick\"];\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = [\"aria-label\"];\nconst _hoisted_4 = [\"disabled\", \"aria-label\"];\nconst _hoisted_5 = [\"disabled\", \"aria-label\"];\nconst _hoisted_6 = [\"disabled\", \"aria-label\"];\nconst _hoisted_7 = [\"disabled\", \"aria-label\"];\nconst _hoisted_8 = [\"aria-label\"];\nconst _hoisted_9 = [\"aria-label\"];\nconst unit = \"month\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"panel-date-range\",\n props: panelDateRangeProps,\n emits: [\n \"pick\",\n \"set-picker-option\",\n \"calendar-change\",\n \"panel-change\"\n ],\n setup(__props, { emit }) {\n const props = __props;\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const { disabledDate, cellClassName, format, defaultTime, clearable } = pickerBase.props;\n const shortcuts = toRef(pickerBase.props, \"shortcuts\");\n const defaultValue = toRef(pickerBase.props, \"defaultValue\");\n const { lang } = useLocale();\n const leftDate = ref(dayjs().locale(lang.value));\n const rightDate = ref(dayjs().locale(lang.value).add(1, unit));\n const {\n minDate,\n maxDate,\n rangeState,\n ppNs,\n drpNs,\n handleChangeRange,\n handleRangeConfirm,\n handleShortcutClick,\n onSelect,\n t\n } = useRangePicker(props, {\n defaultValue,\n leftDate,\n rightDate,\n unit,\n onParsedValueChanged\n });\n const dateUserInput = ref({\n min: null,\n max: null\n });\n const timeUserInput = ref({\n min: null,\n max: null\n });\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t(\"el.datepicker.year\")} ${t(`el.datepicker.month${leftDate.value.month() + 1}`)}`;\n });\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t(\"el.datepicker.year\")} ${t(`el.datepicker.month${rightDate.value.month() + 1}`)}`;\n });\n const leftYear = computed(() => {\n return leftDate.value.year();\n });\n const leftMonth = computed(() => {\n return leftDate.value.month();\n });\n const rightYear = computed(() => {\n return rightDate.value.year();\n });\n const rightMonth = computed(() => {\n return rightDate.value.month();\n });\n const hasShortcuts = computed(() => !!shortcuts.value.length);\n const minVisibleDate = computed(() => {\n if (dateUserInput.value.min !== null)\n return dateUserInput.value.min;\n if (minDate.value)\n return minDate.value.format(dateFormat.value);\n return \"\";\n });\n const maxVisibleDate = computed(() => {\n if (dateUserInput.value.max !== null)\n return dateUserInput.value.max;\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(dateFormat.value);\n return \"\";\n });\n const minVisibleTime = computed(() => {\n if (timeUserInput.value.min !== null)\n return timeUserInput.value.min;\n if (minDate.value)\n return minDate.value.format(timeFormat.value);\n return \"\";\n });\n const maxVisibleTime = computed(() => {\n if (timeUserInput.value.max !== null)\n return timeUserInput.value.max;\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(timeFormat.value);\n return \"\";\n });\n const timeFormat = computed(() => {\n return props.timeFormat || extractTimeFormat(format);\n });\n const dateFormat = computed(() => {\n return props.dateFormat || extractDateFormat(format);\n });\n const isValidValue = (date) => {\n return isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true);\n };\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, \"year\");\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, \"month\");\n }\n handlePanelChange(\"year\");\n };\n const leftPrevMonth = () => {\n leftDate.value = leftDate.value.subtract(1, \"month\");\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, \"month\");\n }\n handlePanelChange(\"month\");\n };\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, \"year\");\n rightDate.value = leftDate.value.add(1, \"month\");\n } else {\n rightDate.value = rightDate.value.add(1, \"year\");\n }\n handlePanelChange(\"year\");\n };\n const rightNextMonth = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, \"month\");\n rightDate.value = leftDate.value.add(1, \"month\");\n } else {\n rightDate.value = rightDate.value.add(1, \"month\");\n }\n handlePanelChange(\"month\");\n };\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, \"year\");\n handlePanelChange(\"year\");\n };\n const leftNextMonth = () => {\n leftDate.value = leftDate.value.add(1, \"month\");\n handlePanelChange(\"month\");\n };\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, \"year\");\n handlePanelChange(\"year\");\n };\n const rightPrevMonth = () => {\n rightDate.value = rightDate.value.subtract(1, \"month\");\n handlePanelChange(\"month\");\n };\n const handlePanelChange = (mode) => {\n emit(\"panel-change\", [leftDate.value.toDate(), rightDate.value.toDate()], mode);\n };\n const enableMonthArrow = computed(() => {\n const nextMonth = (leftMonth.value + 1) % 12;\n const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0;\n return props.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value);\n });\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value * 12 + rightMonth.value - (leftYear.value * 12 + leftMonth.value + 1) >= 12;\n });\n const btnDisabled = computed(() => {\n return !(minDate.value && maxDate.value && !rangeState.value.selecting && isValidRange([minDate.value, maxDate.value]));\n });\n const showTime = computed(() => props.type === \"datetime\" || props.type === \"datetimerange\");\n const formatEmit = (emitDayjs, index) => {\n if (!emitDayjs)\n return;\n if (defaultTime) {\n const defaultTimeD = dayjs(defaultTime[index] || defaultTime).locale(lang.value);\n return defaultTimeD.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());\n }\n return emitDayjs;\n };\n const handleRangePick = (val, close = true) => {\n const min_ = val.minDate;\n const max_ = val.maxDate;\n const minDate_ = formatEmit(min_, 0);\n const maxDate_ = formatEmit(max_, 1);\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return;\n }\n emit(\"calendar-change\", [min_.toDate(), max_ && max_.toDate()]);\n maxDate.value = maxDate_;\n minDate.value = minDate_;\n if (!close || showTime.value)\n return;\n handleRangeConfirm();\n };\n const minTimePickerVisible = ref(false);\n const maxTimePickerVisible = ref(false);\n const handleMinTimeClose = () => {\n minTimePickerVisible.value = false;\n };\n const handleMaxTimeClose = () => {\n maxTimePickerVisible.value = false;\n };\n const handleDateInput = (value, type) => {\n dateUserInput.value[type] = value;\n const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value);\n if (parsedValueD.isValid()) {\n if (disabledDate && disabledDate(parsedValueD.toDate())) {\n return;\n }\n if (type === \"min\") {\n leftDate.value = parsedValueD;\n minDate.value = (minDate.value || leftDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());\n if (!props.unlinkPanels && (!maxDate.value || maxDate.value.isBefore(minDate.value))) {\n rightDate.value = parsedValueD.add(1, \"month\");\n maxDate.value = minDate.value.add(1, \"month\");\n }\n } else {\n rightDate.value = parsedValueD;\n maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());\n if (!props.unlinkPanels && (!minDate.value || minDate.value.isAfter(maxDate.value))) {\n leftDate.value = parsedValueD.subtract(1, \"month\");\n minDate.value = maxDate.value.subtract(1, \"month\");\n }\n }\n }\n };\n const handleDateChange = (_, type) => {\n dateUserInput.value[type] = null;\n };\n const handleTimeInput = (value, type) => {\n timeUserInput.value[type] = value;\n const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value);\n if (parsedValueD.isValid()) {\n if (type === \"min\") {\n minTimePickerVisible.value = true;\n minDate.value = (minDate.value || leftDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value;\n }\n } else {\n maxTimePickerVisible.value = true;\n maxDate.value = (maxDate.value || rightDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());\n rightDate.value = maxDate.value;\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value;\n }\n }\n }\n };\n const handleTimeChange = (value, type) => {\n timeUserInput.value[type] = null;\n if (type === \"min\") {\n leftDate.value = minDate.value;\n minTimePickerVisible.value = false;\n } else {\n rightDate.value = maxDate.value;\n maxTimePickerVisible.value = false;\n }\n };\n const handleMinTimePick = (value, visible, first) => {\n if (timeUserInput.value.min)\n return;\n if (value) {\n leftDate.value = value;\n minDate.value = (minDate.value || leftDate.value).hour(value.hour()).minute(value.minute()).second(value.second());\n }\n if (!first) {\n minTimePickerVisible.value = visible;\n }\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value;\n rightDate.value = value;\n }\n };\n const handleMaxTimePick = (value, visible, first) => {\n if (timeUserInput.value.max)\n return;\n if (value) {\n rightDate.value = value;\n maxDate.value = (maxDate.value || rightDate.value).hour(value.hour()).minute(value.minute()).second(value.second());\n }\n if (!first) {\n maxTimePickerVisible.value = visible;\n }\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value;\n }\n };\n const handleClear = () => {\n leftDate.value = getDefaultValue(unref(defaultValue), {\n lang: unref(lang),\n unit: \"month\",\n unlinkPanels: props.unlinkPanels\n })[0];\n rightDate.value = leftDate.value.add(1, \"month\");\n maxDate.value = void 0;\n minDate.value = void 0;\n emit(\"pick\", null);\n };\n const formatToString = (value) => {\n return isArray(value) ? value.map((_) => _.format(format)) : value.format(format);\n };\n const parseUserInput = (value) => {\n return isArray(value) ? value.map((_) => dayjs(_, format).locale(lang.value)) : dayjs(value, format).locale(lang.value);\n };\n function onParsedValueChanged(minDate2, maxDate2) {\n if (props.unlinkPanels && maxDate2) {\n const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0;\n const minDateMonth = (minDate2 == null ? void 0 : minDate2.month()) || 0;\n const maxDateYear = maxDate2.year();\n const maxDateMonth = maxDate2.month();\n rightDate.value = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? maxDate2.add(1, unit) : maxDate2;\n } else {\n rightDate.value = leftDate.value.add(1, unit);\n if (maxDate2) {\n rightDate.value = rightDate.value.hour(maxDate2.hour()).minute(maxDate2.minute()).second(maxDate2.second());\n }\n }\n }\n emit(\"set-picker-option\", [\"isValidValue\", isValidValue]);\n emit(\"set-picker-option\", [\"parseUserInput\", parseUserInput]);\n emit(\"set-picker-option\", [\"formatToString\", formatToString]);\n emit(\"set-picker-option\", [\"handleClear\", handleClear]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ppNs).b(),\n unref(drpNs).b(),\n {\n \"has-sidebar\": _ctx.$slots.sidebar || unref(hasShortcuts),\n \"has-time\": unref(showTime)\n }\n ])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"body-wrapper\"))\n }, [\n renderSlot(_ctx.$slots, \"sidebar\", {\n class: normalizeClass(unref(ppNs).e(\"sidebar\"))\n }),\n unref(hasShortcuts) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ppNs).e(\"sidebar\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(shortcuts), (shortcut, key) => {\n return openBlock(), createElementBlock(\"button\", {\n key,\n type: \"button\",\n class: normalizeClass(unref(ppNs).e(\"shortcut\")),\n onClick: ($event) => unref(handleShortcutClick)(shortcut)\n }, toDisplayString(shortcut.text), 11, _hoisted_1);\n }), 128))\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"body\"))\n }, [\n unref(showTime) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(drpNs).e(\"time-header\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(drpNs).e(\"editors-wrap\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(drpNs).e(\"time-picker-wrap\"))\n }, [\n createVNode(unref(ElInput), {\n size: \"small\",\n disabled: unref(rangeState).selecting,\n placeholder: unref(t)(\"el.datepicker.startDate\"),\n class: normalizeClass(unref(drpNs).e(\"editor\")),\n \"model-value\": unref(minVisibleDate),\n \"validate-event\": false,\n onInput: _cache[0] || (_cache[0] = (val) => handleDateInput(val, \"min\")),\n onChange: _cache[1] || (_cache[1] = (val) => handleDateChange(val, \"min\"))\n }, null, 8, [\"disabled\", \"placeholder\", \"class\", \"model-value\"])\n ], 2),\n withDirectives((openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(drpNs).e(\"time-picker-wrap\"))\n }, [\n createVNode(unref(ElInput), {\n size: \"small\",\n class: normalizeClass(unref(drpNs).e(\"editor\")),\n disabled: unref(rangeState).selecting,\n placeholder: unref(t)(\"el.datepicker.startTime\"),\n \"model-value\": unref(minVisibleTime),\n \"validate-event\": false,\n onFocus: _cache[2] || (_cache[2] = ($event) => minTimePickerVisible.value = true),\n onInput: _cache[3] || (_cache[3] = (val) => handleTimeInput(val, \"min\")),\n onChange: _cache[4] || (_cache[4] = (val) => handleTimeChange(val, \"min\"))\n }, null, 8, [\"class\", \"disabled\", \"placeholder\", \"model-value\"]),\n createVNode(unref(TimePickPanel), {\n visible: minTimePickerVisible.value,\n format: unref(timeFormat),\n \"datetime-role\": \"start\",\n \"parsed-value\": leftDate.value,\n onPick: handleMinTimePick\n }, null, 8, [\"visible\", \"format\", \"parsed-value\"])\n ], 2)), [\n [unref(ClickOutside), handleMinTimeClose]\n ])\n ], 2),\n createElementVNode(\"span\", null, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n })\n ]),\n createElementVNode(\"span\", {\n class: normalizeClass([unref(drpNs).e(\"editors-wrap\"), \"is-right\"])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(drpNs).e(\"time-picker-wrap\"))\n }, [\n createVNode(unref(ElInput), {\n size: \"small\",\n class: normalizeClass(unref(drpNs).e(\"editor\")),\n disabled: unref(rangeState).selecting,\n placeholder: unref(t)(\"el.datepicker.endDate\"),\n \"model-value\": unref(maxVisibleDate),\n readonly: !unref(minDate),\n \"validate-event\": false,\n onInput: _cache[5] || (_cache[5] = (val) => handleDateInput(val, \"max\")),\n onChange: _cache[6] || (_cache[6] = (val) => handleDateChange(val, \"max\"))\n }, null, 8, [\"class\", \"disabled\", \"placeholder\", \"model-value\", \"readonly\"])\n ], 2),\n withDirectives((openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(drpNs).e(\"time-picker-wrap\"))\n }, [\n createVNode(unref(ElInput), {\n size: \"small\",\n class: normalizeClass(unref(drpNs).e(\"editor\")),\n disabled: unref(rangeState).selecting,\n placeholder: unref(t)(\"el.datepicker.endTime\"),\n \"model-value\": unref(maxVisibleTime),\n readonly: !unref(minDate),\n \"validate-event\": false,\n onFocus: _cache[7] || (_cache[7] = ($event) => unref(minDate) && (maxTimePickerVisible.value = true)),\n onInput: _cache[8] || (_cache[8] = (val) => handleTimeInput(val, \"max\")),\n onChange: _cache[9] || (_cache[9] = (val) => handleTimeChange(val, \"max\"))\n }, null, 8, [\"class\", \"disabled\", \"placeholder\", \"model-value\", \"readonly\"]),\n createVNode(unref(TimePickPanel), {\n \"datetime-role\": \"end\",\n visible: maxTimePickerVisible.value,\n format: unref(timeFormat),\n \"parsed-value\": rightDate.value,\n onPick: handleMaxTimePick\n }, null, 8, [\"visible\", \"format\", \"parsed-value\"])\n ], 2)), [\n [unref(ClickOutside), handleMaxTimeClose]\n ])\n ], 2)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([[unref(ppNs).e(\"content\"), unref(drpNs).e(\"content\")], \"is-left\"])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(drpNs).e(\"header\"))\n }, [\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"d-arrow-left\"]),\n \"aria-label\": unref(t)(`el.datepicker.prevYear`),\n onClick: leftPrevYear\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_2),\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"arrow-left\"]),\n \"aria-label\": unref(t)(`el.datepicker.prevMonth`),\n onClick: leftPrevMonth\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_3),\n _ctx.unlinkPanels ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n disabled: !unref(enableYearArrow),\n class: normalizeClass([[unref(ppNs).e(\"icon-btn\"), { \"is-disabled\": !unref(enableYearArrow) }], \"d-arrow-right\"]),\n \"aria-label\": unref(t)(`el.datepicker.nextYear`),\n onClick: leftNextYear\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_4)) : createCommentVNode(\"v-if\", true),\n _ctx.unlinkPanels ? (openBlock(), createElementBlock(\"button\", {\n key: 1,\n type: \"button\",\n disabled: !unref(enableMonthArrow),\n class: normalizeClass([[\n unref(ppNs).e(\"icon-btn\"),\n { \"is-disabled\": !unref(enableMonthArrow) }\n ], \"arrow-right\"]),\n \"aria-label\": unref(t)(`el.datepicker.nextMonth`),\n onClick: leftNextMonth\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_5)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", null, toDisplayString(unref(leftLabel)), 1)\n ], 2),\n createVNode(DateTable, {\n \"selection-mode\": \"range\",\n date: leftDate.value,\n \"min-date\": unref(minDate),\n \"max-date\": unref(maxDate),\n \"range-state\": unref(rangeState),\n \"disabled-date\": unref(disabledDate),\n \"cell-class-name\": unref(cellClassName),\n onChangerange: unref(handleChangeRange),\n onPick: handleRangePick,\n onSelect: unref(onSelect)\n }, null, 8, [\"date\", \"min-date\", \"max-date\", \"range-state\", \"disabled-date\", \"cell-class-name\", \"onChangerange\", \"onSelect\"])\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass([[unref(ppNs).e(\"content\"), unref(drpNs).e(\"content\")], \"is-right\"])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(drpNs).e(\"header\"))\n }, [\n _ctx.unlinkPanels ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n disabled: !unref(enableYearArrow),\n class: normalizeClass([[unref(ppNs).e(\"icon-btn\"), { \"is-disabled\": !unref(enableYearArrow) }], \"d-arrow-left\"]),\n \"aria-label\": unref(t)(`el.datepicker.prevYear`),\n onClick: rightPrevYear\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_6)) : createCommentVNode(\"v-if\", true),\n _ctx.unlinkPanels ? (openBlock(), createElementBlock(\"button\", {\n key: 1,\n type: \"button\",\n disabled: !unref(enableMonthArrow),\n class: normalizeClass([[\n unref(ppNs).e(\"icon-btn\"),\n { \"is-disabled\": !unref(enableMonthArrow) }\n ], \"arrow-left\"]),\n \"aria-label\": unref(t)(`el.datepicker.prevMonth`),\n onClick: rightPrevMonth\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_7)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": unref(t)(`el.datepicker.nextYear`),\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"d-arrow-right\"]),\n onClick: rightNextYear\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_8),\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"arrow-right\"]),\n \"aria-label\": unref(t)(`el.datepicker.nextMonth`),\n onClick: rightNextMonth\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_9),\n createElementVNode(\"div\", null, toDisplayString(unref(rightLabel)), 1)\n ], 2),\n createVNode(DateTable, {\n \"selection-mode\": \"range\",\n date: rightDate.value,\n \"min-date\": unref(minDate),\n \"max-date\": unref(maxDate),\n \"range-state\": unref(rangeState),\n \"disabled-date\": unref(disabledDate),\n \"cell-class-name\": unref(cellClassName),\n onChangerange: unref(handleChangeRange),\n onPick: handleRangePick,\n onSelect: unref(onSelect)\n }, null, 8, [\"date\", \"min-date\", \"max-date\", \"range-state\", \"disabled-date\", \"cell-class-name\", \"onChangerange\", \"onSelect\"])\n ], 2)\n ], 2)\n ], 2),\n unref(showTime) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ppNs).e(\"footer\"))\n }, [\n unref(clearable) ? (openBlock(), createBlock(unref(ElButton), {\n key: 0,\n text: \"\",\n size: \"small\",\n class: normalizeClass(unref(ppNs).e(\"link-btn\")),\n onClick: handleClear\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.clear\")), 1)\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n createVNode(unref(ElButton), {\n plain: \"\",\n size: \"small\",\n class: normalizeClass(unref(ppNs).e(\"link-btn\")),\n disabled: unref(btnDisabled),\n onClick: _cache[10] || (_cache[10] = ($event) => unref(handleRangeConfirm)(false))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"el.datepicker.confirm\")), 1)\n ]),\n _: 1\n }, 8, [\"class\", \"disabled\"])\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar DateRangePickPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"panel-date-range.vue\"]]);\n\nexport { DateRangePickPanel as default };\n//# sourceMappingURL=panel-date-range.mjs.map\n","import '../../../../utils/index.mjs';\nimport { panelRangeSharedProps } from './shared.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\n\nconst panelMonthRangeProps = buildProps({\n ...panelRangeSharedProps\n});\nconst panelMonthRangeEmits = [\n \"pick\",\n \"set-picker-option\",\n \"calendar-change\"\n];\n\nexport { panelMonthRangeEmits, panelMonthRangeProps };\n//# sourceMappingURL=panel-month-range.mjs.map\n","import { computed } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\n\nconst useMonthRangeHeader = ({\n unlinkPanels,\n leftDate,\n rightDate\n}) => {\n const { t } = useLocale();\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, \"year\");\n if (!unlinkPanels.value) {\n rightDate.value = rightDate.value.subtract(1, \"year\");\n }\n };\n const rightNextYear = () => {\n if (!unlinkPanels.value) {\n leftDate.value = leftDate.value.add(1, \"year\");\n }\n rightDate.value = rightDate.value.add(1, \"year\");\n };\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, \"year\");\n };\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, \"year\");\n };\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t(\"el.datepicker.year\")}`;\n });\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t(\"el.datepicker.year\")}`;\n });\n const leftYear = computed(() => {\n return leftDate.value.year();\n });\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year() ? leftDate.value.year() + 1 : rightDate.value.year();\n });\n return {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear\n };\n};\n\nexport { useMonthRangeHeader };\n//# sourceMappingURL=use-month-range-header.mjs.map\n","import { defineComponent, inject, toRef, ref, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, Fragment, renderList, toDisplayString, createCommentVNode, createVNode, withCtx } from 'vue';\nimport dayjs from 'dayjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { DArrowLeft, DArrowRight } from '@element-plus/icons-vue';\nimport { panelMonthRangeProps, panelMonthRangeEmits } from '../props/panel-month-range.mjs';\nimport { useMonthRangeHeader } from '../composables/use-month-range-header.mjs';\nimport { useRangePicker } from '../composables/use-range-picker.mjs';\nimport MonthTable from './basic-month-table.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\n\nconst _hoisted_1 = [\"onClick\"];\nconst _hoisted_2 = [\"disabled\"];\nconst _hoisted_3 = [\"disabled\"];\nconst unit = \"year\";\nconst __default__ = defineComponent({\n name: \"DatePickerMonthRange\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: panelMonthRangeProps,\n emits: panelMonthRangeEmits,\n setup(__props, { emit }) {\n const props = __props;\n const { lang } = useLocale();\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const { shortcuts, disabledDate, format } = pickerBase.props;\n const defaultValue = toRef(pickerBase.props, \"defaultValue\");\n const leftDate = ref(dayjs().locale(lang.value));\n const rightDate = ref(dayjs().locale(lang.value).add(1, unit));\n const {\n minDate,\n maxDate,\n rangeState,\n ppNs,\n drpNs,\n handleChangeRange,\n handleRangeConfirm,\n handleShortcutClick,\n onSelect\n } = useRangePicker(props, {\n defaultValue,\n leftDate,\n rightDate,\n unit,\n onParsedValueChanged\n });\n const hasShortcuts = computed(() => !!shortcuts.length);\n const {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear\n } = useMonthRangeHeader({\n unlinkPanels: toRef(props, \"unlinkPanels\"),\n leftDate,\n rightDate\n });\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value > leftYear.value + 1;\n });\n const handleRangePick = (val, close = true) => {\n const minDate_ = val.minDate;\n const maxDate_ = val.maxDate;\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return;\n }\n emit(\"calendar-change\", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]);\n maxDate.value = maxDate_;\n minDate.value = minDate_;\n if (!close)\n return;\n handleRangeConfirm();\n };\n const formatToString = (days) => {\n return days.map((day) => day.format(format));\n };\n function onParsedValueChanged(minDate2, maxDate2) {\n if (props.unlinkPanels && maxDate2) {\n const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0;\n const maxDateYear = maxDate2.year();\n rightDate.value = minDateYear === maxDateYear ? maxDate2.add(1, unit) : maxDate2;\n } else {\n rightDate.value = leftDate.value.add(1, unit);\n }\n }\n emit(\"set-picker-option\", [\"formatToString\", formatToString]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ppNs).b(),\n unref(drpNs).b(),\n {\n \"has-sidebar\": Boolean(_ctx.$slots.sidebar) || unref(hasShortcuts)\n }\n ])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"body-wrapper\"))\n }, [\n renderSlot(_ctx.$slots, \"sidebar\", {\n class: normalizeClass(unref(ppNs).e(\"sidebar\"))\n }),\n unref(hasShortcuts) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ppNs).e(\"sidebar\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(shortcuts), (shortcut, key) => {\n return openBlock(), createElementBlock(\"button\", {\n key,\n type: \"button\",\n class: normalizeClass(unref(ppNs).e(\"shortcut\")),\n onClick: ($event) => unref(handleShortcutClick)(shortcut)\n }, toDisplayString(shortcut.text), 11, _hoisted_1);\n }), 128))\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ppNs).e(\"body\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([[unref(ppNs).e(\"content\"), unref(drpNs).e(\"content\")], \"is-left\"])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(drpNs).e(\"header\"))\n }, [\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"d-arrow-left\"]),\n onClick: _cache[0] || (_cache[0] = (...args) => unref(leftPrevYear) && unref(leftPrevYear)(...args))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowLeft))\n ]),\n _: 1\n })\n ], 2),\n _ctx.unlinkPanels ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n disabled: !unref(enableYearArrow),\n class: normalizeClass([[\n unref(ppNs).e(\"icon-btn\"),\n { [unref(ppNs).is(\"disabled\")]: !unref(enableYearArrow) }\n ], \"d-arrow-right\"]),\n onClick: _cache[1] || (_cache[1] = (...args) => unref(leftNextYear) && unref(leftNextYear)(...args))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowRight))\n ]),\n _: 1\n })\n ], 10, _hoisted_2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", null, toDisplayString(unref(leftLabel)), 1)\n ], 2),\n createVNode(MonthTable, {\n \"selection-mode\": \"range\",\n date: leftDate.value,\n \"min-date\": unref(minDate),\n \"max-date\": unref(maxDate),\n \"range-state\": unref(rangeState),\n \"disabled-date\": unref(disabledDate),\n onChangerange: unref(handleChangeRange),\n onPick: handleRangePick,\n onSelect: unref(onSelect)\n }, null, 8, [\"date\", \"min-date\", \"max-date\", \"range-state\", \"disabled-date\", \"onChangerange\", \"onSelect\"])\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass([[unref(ppNs).e(\"content\"), unref(drpNs).e(\"content\")], \"is-right\"])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(drpNs).e(\"header\"))\n }, [\n _ctx.unlinkPanels ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n disabled: !unref(enableYearArrow),\n class: normalizeClass([[unref(ppNs).e(\"icon-btn\"), { \"is-disabled\": !unref(enableYearArrow) }], \"d-arrow-left\"]),\n onClick: _cache[2] || (_cache[2] = (...args) => unref(rightPrevYear) && unref(rightPrevYear)(...args))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowLeft))\n ]),\n _: 1\n })\n ], 10, _hoisted_3)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(ppNs).e(\"icon-btn\"), \"d-arrow-right\"]),\n onClick: _cache[3] || (_cache[3] = (...args) => unref(rightNextYear) && unref(rightNextYear)(...args))\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(DArrowRight))\n ]),\n _: 1\n })\n ], 2),\n createElementVNode(\"div\", null, toDisplayString(unref(rightLabel)), 1)\n ], 2),\n createVNode(MonthTable, {\n \"selection-mode\": \"range\",\n date: rightDate.value,\n \"min-date\": unref(minDate),\n \"max-date\": unref(maxDate),\n \"range-state\": unref(rangeState),\n \"disabled-date\": unref(disabledDate),\n onChangerange: unref(handleChangeRange),\n onPick: handleRangePick,\n onSelect: unref(onSelect)\n }, null, 8, [\"date\", \"min-date\", \"max-date\", \"range-state\", \"disabled-date\", \"onChangerange\", \"onSelect\"])\n ], 2)\n ], 2)\n ], 2)\n ], 2);\n };\n }\n});\nvar MonthRangePickPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"panel-month-range.vue\"]]);\n\nexport { MonthRangePickPanel as default };\n//# sourceMappingURL=panel-month-range.mjs.map\n","import DatePickPanel from './date-picker-com/panel-date-pick.mjs';\nimport DateRangePickPanel from './date-picker-com/panel-date-range.mjs';\nimport MonthRangePickPanel from './date-picker-com/panel-month-range.mjs';\n\nconst getPanel = function(type) {\n switch (type) {\n case \"daterange\":\n case \"datetimerange\": {\n return DateRangePickPanel;\n }\n case \"monthrange\": {\n return MonthRangePickPanel;\n }\n default: {\n return DatePickPanel;\n }\n }\n};\n\nexport { getPanel };\n//# sourceMappingURL=panel-utils.mjs.map\n","import { defineComponent, useAttrs, inject, ref, computed, watch, nextTick, unref, provide, openBlock, createBlock, mergeProps, withCtx, normalizeClass, normalizeStyle, withModifiers, resolveDynamicComponent, createCommentVNode, createElementBlock, createElementVNode, renderSlot, toDisplayString } from 'vue';\nimport { isEqual } from 'lodash-unified';\nimport { onClickOutside } from '@vueuse/core';\nimport '../../../../hooks/index.mjs';\nimport '../../../form/index.mjs';\nimport { ElInput } from '../../../input/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { ElTooltip } from '../../../tooltip/index.mjs';\nimport '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { Clock, Calendar } from '@element-plus/icons-vue';\nimport { valueEquals, formatter, parseDate } from '../utils.mjs';\nimport { timePickerDefaultProps } from './props.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useFormItem } from '../../../form/src/hooks/use-form-item.mjs';\nimport { useEmptyValues } from '../../../../hooks/use-empty-values/index.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\nimport { isArray } from '@vue/shared';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { useFormSize } from '../../../form/src/hooks/use-form-common-props.mjs';\nimport { useDeprecated } from '../../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"id\", \"name\", \"placeholder\", \"value\", \"disabled\", \"readonly\"];\nconst _hoisted_2 = [\"id\", \"name\", \"placeholder\", \"value\", \"disabled\", \"readonly\"];\nconst __default__ = defineComponent({\n name: \"Picker\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: timePickerDefaultProps,\n emits: [\n \"update:modelValue\",\n \"change\",\n \"focus\",\n \"blur\",\n \"calendar-change\",\n \"panel-change\",\n \"visible-change\",\n \"keydown\"\n ],\n setup(__props, { expose, emit }) {\n const props = __props;\n const attrs = useAttrs();\n const { lang } = useLocale();\n const nsDate = useNamespace(\"date\");\n const nsInput = useNamespace(\"input\");\n const nsRange = useNamespace(\"range\");\n const { form, formItem } = useFormItem();\n const elPopperOptions = inject(\"ElPopperOptions\", {});\n const { valueOnClear } = useEmptyValues(props, null);\n const refPopper = ref();\n const inputRef = ref();\n const pickerVisible = ref(false);\n const pickerActualVisible = ref(false);\n const valueOnOpen = ref(null);\n let hasJustTabExitedInput = false;\n let ignoreFocusEvent = false;\n const rangeInputKls = computed(() => [\n nsDate.b(\"editor\"),\n nsDate.bm(\"editor\", props.type),\n nsInput.e(\"wrapper\"),\n nsDate.is(\"disabled\", pickerDisabled.value),\n nsDate.is(\"active\", pickerVisible.value),\n nsRange.b(\"editor\"),\n pickerSize ? nsRange.bm(\"editor\", pickerSize.value) : \"\",\n attrs.class\n ]);\n const clearIconKls = computed(() => [\n nsInput.e(\"icon\"),\n nsRange.e(\"close-icon\"),\n !showClose.value ? nsRange.e(\"close-icon--hidden\") : \"\"\n ]);\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null;\n nextTick(() => {\n emitChange(props.modelValue);\n });\n } else {\n nextTick(() => {\n if (val) {\n valueOnOpen.value = props.modelValue;\n }\n });\n }\n });\n const emitChange = (val, isClear) => {\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n emit(\"change\", val);\n props.validateEvent && (formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err)));\n }\n };\n const emitInput = (input) => {\n if (!valueEquals(props.modelValue, input)) {\n let formatted;\n if (isArray(input)) {\n formatted = input.map((item) => formatter(item, props.valueFormat, lang.value));\n } else if (input) {\n formatted = formatter(input, props.valueFormat, lang.value);\n }\n emit(\"update:modelValue\", input ? formatted : input, lang.value);\n }\n };\n const emitKeydown = (e) => {\n emit(\"keydown\", e);\n };\n const refInput = computed(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value ? inputRef.value : inputRef.value.$el;\n return Array.from(_r.querySelectorAll(\"input\"));\n }\n return [];\n });\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value;\n if (!_inputs.length)\n return;\n if (!pos || pos === \"min\") {\n _inputs[0].setSelectionRange(start, end);\n _inputs[0].focus();\n } else if (pos === \"max\") {\n _inputs[1].setSelectionRange(start, end);\n _inputs[1].focus();\n }\n };\n const focusOnInputBox = () => {\n focus(true, true);\n nextTick(() => {\n ignoreFocusEvent = false;\n });\n };\n const onPick = (date = \"\", visible = false) => {\n if (!visible) {\n ignoreFocusEvent = true;\n }\n pickerVisible.value = visible;\n let result;\n if (isArray(date)) {\n result = date.map((_) => _.toDate());\n } else {\n result = date ? date.toDate() : date;\n }\n userInput.value = null;\n emitInput(result);\n };\n const onBeforeShow = () => {\n pickerActualVisible.value = true;\n };\n const onShow = () => {\n emit(\"visible-change\", true);\n };\n const onKeydownPopperContent = (event) => {\n if ((event == null ? void 0 : event.key) === EVENT_CODE.esc) {\n focus(true, true);\n }\n };\n const onHide = () => {\n pickerActualVisible.value = false;\n pickerVisible.value = false;\n ignoreFocusEvent = false;\n emit(\"visible-change\", false);\n };\n const handleOpen = () => {\n pickerVisible.value = true;\n };\n const handleClose = () => {\n pickerVisible.value = false;\n };\n const focus = (focusStartInput = true, isIgnoreFocusEvent = false) => {\n ignoreFocusEvent = isIgnoreFocusEvent;\n const [leftInput, rightInput] = unref(refInput);\n let input = leftInput;\n if (!focusStartInput && isRangeInput.value) {\n input = rightInput;\n }\n if (input) {\n input.focus();\n }\n };\n const handleFocusInput = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value || ignoreFocusEvent) {\n return;\n }\n pickerVisible.value = true;\n emit(\"focus\", e);\n };\n let currentHandleBlurDeferCallback = void 0;\n const handleBlurInput = (e) => {\n const handleBlurDefer = async () => {\n setTimeout(() => {\n var _a;\n if (currentHandleBlurDeferCallback === handleBlurDefer) {\n if (!(((_a = refPopper.value) == null ? void 0 : _a.isFocusInsideContent()) && !hasJustTabExitedInput) && refInput.value.filter((input) => {\n return input.contains(document.activeElement);\n }).length === 0) {\n handleChange();\n pickerVisible.value = false;\n emit(\"blur\", e);\n props.validateEvent && (formItem == null ? void 0 : formItem.validate(\"blur\").catch((err) => debugWarn(err)));\n }\n hasJustTabExitedInput = false;\n }\n }, 0);\n };\n currentHandleBlurDeferCallback = handleBlurDefer;\n handleBlurDefer();\n };\n const pickerDisabled = computed(() => {\n return props.disabled || (form == null ? void 0 : form.disabled);\n });\n const parsedValue = computed(() => {\n let dayOrDays;\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n dayOrDays = pickerOptions.value.getDefaultValue();\n }\n } else {\n if (isArray(props.modelValue)) {\n dayOrDays = props.modelValue.map((d) => parseDate(d, props.valueFormat, lang.value));\n } else {\n dayOrDays = parseDate(props.modelValue, props.valueFormat, lang.value);\n }\n }\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult = pickerOptions.value.getRangeAvailableTime(dayOrDays);\n if (!isEqual(availableResult, dayOrDays)) {\n dayOrDays = availableResult;\n emitInput(isArray(dayOrDays) ? dayOrDays.map((_) => _.toDate()) : dayOrDays.toDate());\n }\n }\n if (isArray(dayOrDays) && dayOrDays.some((day) => !day)) {\n dayOrDays = [];\n }\n return dayOrDays;\n });\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady)\n return \"\";\n const formattedValue = formatDayjsToString(parsedValue.value);\n if (isArray(userInput.value)) {\n return [\n userInput.value[0] || formattedValue && formattedValue[0] || \"\",\n userInput.value[1] || formattedValue && formattedValue[1] || \"\"\n ];\n } else if (userInput.value !== null) {\n return userInput.value;\n }\n if (!isTimePicker.value && valueIsEmpty.value)\n return \"\";\n if (!pickerVisible.value && valueIsEmpty.value)\n return \"\";\n if (formattedValue) {\n return isDatesPicker.value || isYearsPicker.value ? formattedValue.join(\", \") : formattedValue;\n }\n return \"\";\n });\n const isTimeLikePicker = computed(() => props.type.includes(\"time\"));\n const isTimePicker = computed(() => props.type.startsWith(\"time\"));\n const isDatesPicker = computed(() => props.type === \"dates\");\n const isYearsPicker = computed(() => props.type === \"years\");\n const triggerIcon = computed(() => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar));\n const showClose = ref(false);\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value)\n return;\n if (showClose.value) {\n event.stopPropagation();\n focusOnInputBox();\n emitInput(valueOnClear.value);\n emitChange(valueOnClear.value, true);\n showClose.value = false;\n pickerVisible.value = false;\n pickerOptions.value.handleClear && pickerOptions.value.handleClear();\n }\n };\n const valueIsEmpty = computed(() => {\n const { modelValue } = props;\n return !modelValue || isArray(modelValue) && !modelValue.filter(Boolean).length;\n });\n const onMouseDownInput = async (event) => {\n var _a;\n if (props.readonly || pickerDisabled.value)\n return;\n if (((_a = event.target) == null ? void 0 : _a.tagName) !== \"INPUT\" || refInput.value.includes(document.activeElement)) {\n pickerVisible.value = true;\n }\n };\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value)\n return;\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true;\n }\n };\n const onMouseLeave = () => {\n showClose.value = false;\n };\n const onTouchStartInput = (event) => {\n var _a;\n if (props.readonly || pickerDisabled.value)\n return;\n if (((_a = event.touches[0].target) == null ? void 0 : _a.tagName) !== \"INPUT\" || refInput.value.includes(document.activeElement)) {\n pickerVisible.value = true;\n }\n };\n const isRangeInput = computed(() => {\n return props.type.includes(\"range\");\n });\n const pickerSize = useFormSize();\n const popperEl = computed(() => {\n var _a, _b;\n return (_b = (_a = unref(refPopper)) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n const actualInputRef = computed(() => {\n var _a;\n if (unref(isRangeInput)) {\n return unref(inputRef);\n }\n return (_a = unref(inputRef)) == null ? void 0 : _a.$el;\n });\n onClickOutside(actualInputRef, (e) => {\n const unrefedPopperEl = unref(popperEl);\n const inputEl = unref(actualInputRef);\n if (unrefedPopperEl && (e.target === unrefedPopperEl || e.composedPath().includes(unrefedPopperEl)) || e.target === inputEl || e.composedPath().includes(inputEl))\n return;\n pickerVisible.value = false;\n });\n const userInput = ref(null);\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value);\n if (value) {\n if (isValidValue(value)) {\n emitInput(isArray(value) ? value.map((_) => _.toDate()) : value.toDate());\n userInput.value = null;\n }\n }\n }\n if (userInput.value === \"\") {\n emitInput(valueOnClear.value);\n emitChange(valueOnClear.value);\n userInput.value = null;\n }\n };\n const parseUserInputToDayjs = (value) => {\n if (!value)\n return null;\n return pickerOptions.value.parseUserInput(value);\n };\n const formatDayjsToString = (value) => {\n if (!value)\n return null;\n return pickerOptions.value.formatToString(value);\n };\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value);\n };\n const handleKeydownInput = async (event) => {\n if (props.readonly || pickerDisabled.value)\n return;\n const { code } = event;\n emitKeydown(event);\n if (code === EVENT_CODE.esc) {\n if (pickerVisible.value === true) {\n pickerVisible.value = false;\n event.preventDefault();\n event.stopPropagation();\n }\n return;\n }\n if (code === EVENT_CODE.down) {\n if (pickerOptions.value.handleFocusPicker) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (pickerVisible.value === false) {\n pickerVisible.value = true;\n await nextTick();\n }\n if (pickerOptions.value.handleFocusPicker) {\n pickerOptions.value.handleFocusPicker();\n return;\n }\n }\n if (code === EVENT_CODE.tab) {\n hasJustTabExitedInput = true;\n return;\n }\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (userInput.value === null || userInput.value === \"\" || isValidValue(parseUserInputToDayjs(displayValue.value))) {\n handleChange();\n pickerVisible.value = false;\n }\n event.stopPropagation();\n return;\n }\n if (userInput.value) {\n event.stopPropagation();\n return;\n }\n if (pickerOptions.value.handleKeydownInput) {\n pickerOptions.value.handleKeydownInput(event);\n }\n };\n const onUserInput = (e) => {\n userInput.value = e;\n if (!pickerVisible.value) {\n pickerVisible.value = true;\n }\n };\n const handleStartInput = (event) => {\n const target = event.target;\n if (userInput.value) {\n userInput.value = [target.value, userInput.value[1]];\n } else {\n userInput.value = [target.value, null];\n }\n };\n const handleEndInput = (event) => {\n const target = event.target;\n if (userInput.value) {\n userInput.value = [userInput.value[0], target.value];\n } else {\n userInput.value = [null, target.value];\n }\n };\n const handleStartChange = () => {\n var _a;\n const values = userInput.value;\n const value = parseUserInputToDayjs(values && values[0]);\n const parsedVal = unref(parsedValue);\n if (value && value.isValid()) {\n userInput.value = [\n formatDayjsToString(value),\n ((_a = displayValue.value) == null ? void 0 : _a[1]) || null\n ];\n const newValue = [value, parsedVal && (parsedVal[1] || null)];\n if (isValidValue(newValue)) {\n emitInput(newValue);\n userInput.value = null;\n }\n }\n };\n const handleEndChange = () => {\n var _a;\n const values = unref(userInput);\n const value = parseUserInputToDayjs(values && values[1]);\n const parsedVal = unref(parsedValue);\n if (value && value.isValid()) {\n userInput.value = [\n ((_a = unref(displayValue)) == null ? void 0 : _a[0]) || null,\n formatDayjsToString(value)\n ];\n const newValue = [parsedVal && parsedVal[0], value];\n if (isValidValue(newValue)) {\n emitInput(newValue);\n userInput.value = null;\n }\n }\n };\n const pickerOptions = ref({});\n const onSetPickerOption = (e) => {\n pickerOptions.value[e[0]] = e[1];\n pickerOptions.value.panelReady = true;\n };\n const onCalendarChange = (e) => {\n emit(\"calendar-change\", e);\n };\n const onPanelChange = (value, mode, view) => {\n emit(\"panel-change\", value, mode, view);\n };\n provide(\"EP_PICKER_BASE\", {\n props\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-time-picker\",\n ref: \"https://element-plus.org/en-US/component/time-picker.html\"\n }, computed(() => !!props.label));\n expose({\n focus,\n handleFocusInput,\n handleBlurInput,\n handleOpen,\n handleClose,\n onPick\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"refPopper\",\n ref: refPopper,\n visible: pickerVisible.value,\n effect: \"light\",\n pure: \"\",\n trigger: \"click\"\n }, _ctx.$attrs, {\n role: \"dialog\",\n teleported: \"\",\n transition: `${unref(nsDate).namespace.value}-zoom-in-top`,\n \"popper-class\": [`${unref(nsDate).namespace.value}-picker__popper`, _ctx.popperClass],\n \"popper-options\": unref(elPopperOptions),\n \"fallback-placements\": [\"bottom\", \"top\", \"right\", \"left\"],\n \"gpu-acceleration\": false,\n \"stop-popper-mouse-event\": false,\n \"hide-after\": 0,\n persistent: \"\",\n onBeforeShow,\n onShow,\n onHide\n }), {\n default: withCtx(() => [\n !unref(isRangeInput) ? (openBlock(), createBlock(unref(ElInput), {\n key: 0,\n id: _ctx.id,\n ref_key: \"inputRef\",\n ref: inputRef,\n \"container-role\": \"combobox\",\n \"model-value\": unref(displayValue),\n name: _ctx.name,\n size: unref(pickerSize),\n disabled: unref(pickerDisabled),\n placeholder: _ctx.placeholder,\n class: normalizeClass([unref(nsDate).b(\"editor\"), unref(nsDate).bm(\"editor\", _ctx.type), _ctx.$attrs.class]),\n style: normalizeStyle(_ctx.$attrs.style),\n readonly: !_ctx.editable || _ctx.readonly || unref(isDatesPicker) || unref(isYearsPicker) || _ctx.type === \"week\",\n \"aria-label\": _ctx.label || _ctx.ariaLabel,\n tabindex: _ctx.tabindex,\n \"validate-event\": false,\n onInput: onUserInput,\n onFocus: handleFocusInput,\n onBlur: handleBlurInput,\n onKeydown: handleKeydownInput,\n onChange: handleChange,\n onMousedown: onMouseDownInput,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n onTouchstartPassive: onTouchStartInput,\n onClick: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"stop\"]))\n }, {\n prefix: withCtx(() => [\n unref(triggerIcon) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(nsInput).e(\"icon\")),\n onMousedown: withModifiers(onMouseDownInput, [\"prevent\"]),\n onTouchstartPassive: onTouchStartInput\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(triggerIcon))))\n ]),\n _: 1\n }, 8, [\"class\", \"onMousedown\"])) : createCommentVNode(\"v-if\", true)\n ]),\n suffix: withCtx(() => [\n showClose.value && _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(`${unref(nsInput).e(\"icon\")} clear-icon`),\n onClick: withModifiers(onClearIconClick, [\"stop\"])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true)\n ]),\n _: 1\n }, 8, [\"id\", \"model-value\", \"name\", \"size\", \"disabled\", \"placeholder\", \"class\", \"style\", \"readonly\", \"aria-label\", \"tabindex\", \"onKeydown\"])) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n ref_key: \"inputRef\",\n ref: inputRef,\n class: normalizeClass(unref(rangeInputKls)),\n style: normalizeStyle(_ctx.$attrs.style),\n onClick: handleFocusInput,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n onTouchstartPassive: onTouchStartInput,\n onKeydown: handleKeydownInput\n }, [\n unref(triggerIcon) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass([unref(nsInput).e(\"icon\"), unref(nsRange).e(\"icon\")]),\n onMousedown: withModifiers(onMouseDownInput, [\"prevent\"]),\n onTouchstartPassive: onTouchStartInput\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(triggerIcon))))\n ]),\n _: 1\n }, 8, [\"class\", \"onMousedown\"])) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"input\", {\n id: _ctx.id && _ctx.id[0],\n autocomplete: \"off\",\n name: _ctx.name && _ctx.name[0],\n placeholder: _ctx.startPlaceholder,\n value: unref(displayValue) && unref(displayValue)[0],\n disabled: unref(pickerDisabled),\n readonly: !_ctx.editable || _ctx.readonly,\n class: normalizeClass(unref(nsRange).b(\"input\")),\n onMousedown: onMouseDownInput,\n onInput: handleStartInput,\n onChange: handleStartChange,\n onFocus: handleFocusInput,\n onBlur: handleBlurInput\n }, null, 42, _hoisted_1),\n renderSlot(_ctx.$slots, \"range-separator\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(nsRange).b(\"separator\"))\n }, toDisplayString(_ctx.rangeSeparator), 3)\n ]),\n createElementVNode(\"input\", {\n id: _ctx.id && _ctx.id[1],\n autocomplete: \"off\",\n name: _ctx.name && _ctx.name[1],\n placeholder: _ctx.endPlaceholder,\n value: unref(displayValue) && unref(displayValue)[1],\n disabled: unref(pickerDisabled),\n readonly: !_ctx.editable || _ctx.readonly,\n class: normalizeClass(unref(nsRange).b(\"input\")),\n onMousedown: onMouseDownInput,\n onFocus: handleFocusInput,\n onBlur: handleBlurInput,\n onInput: handleEndInput,\n onChange: handleEndChange\n }, null, 42, _hoisted_2),\n _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass(unref(clearIconKls)),\n onClick: onClearIconClick\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 38))\n ]),\n content: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {\n visible: pickerVisible.value,\n actualVisible: pickerActualVisible.value,\n parsedValue: unref(parsedValue),\n format: _ctx.format,\n dateFormat: _ctx.dateFormat,\n timeFormat: _ctx.timeFormat,\n unlinkPanels: _ctx.unlinkPanels,\n type: _ctx.type,\n defaultValue: _ctx.defaultValue,\n onPick,\n onSelectRange: setSelectionRange,\n onSetPickerOption,\n onCalendarChange,\n onPanelChange,\n onKeydown: onKeydownPopperContent,\n onMousedown: _cache[1] || (_cache[1] = withModifiers(() => {\n }, [\"stop\"]))\n })\n ]),\n _: 3\n }, 16, [\"visible\", \"transition\", \"popper-class\", \"popper-options\"]);\n };\n }\n});\nvar CommonPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"picker.vue\"]]);\n\nexport { CommonPicker as default };\n//# sourceMappingURL=picker.mjs.map\n","import { defineComponent, provide, reactive, toRef, ref, createVNode, mergeProps } from 'vue';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport advancedFormat from 'dayjs/plugin/advancedFormat.js';\nimport localeData from 'dayjs/plugin/localeData.js';\nimport weekOfYear from 'dayjs/plugin/weekOfYear.js';\nimport weekYear from 'dayjs/plugin/weekYear.js';\nimport dayOfYear from 'dayjs/plugin/dayOfYear.js';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';\nimport '../../../hooks/index.mjs';\nimport '../../time-picker/index.mjs';\nimport { ROOT_PICKER_INJECTION_KEY } from './constants.mjs';\nimport { datePickerProps } from './props/date-picker.mjs';\nimport { getPanel } from './panel-utils.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { DEFAULT_FORMATS_DATEPICKER, DEFAULT_FORMATS_DATE } from '../../time-picker/src/constants.mjs';\nimport CommonPicker from '../../time-picker/src/common/picker.mjs';\n\ndayjs.extend(localeData);\ndayjs.extend(advancedFormat);\ndayjs.extend(customParseFormat);\ndayjs.extend(weekOfYear);\ndayjs.extend(weekYear);\ndayjs.extend(dayOfYear);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\nvar DatePicker = defineComponent({\n name: \"ElDatePicker\",\n install: null,\n props: datePickerProps,\n emits: [\"update:modelValue\"],\n setup(props, {\n expose,\n emit,\n slots\n }) {\n const ns = useNamespace(\"picker-panel\");\n provide(\"ElPopperOptions\", reactive(toRef(props, \"popperOptions\")));\n provide(ROOT_PICKER_INJECTION_KEY, {\n slots,\n pickerNs: ns\n });\n const commonPicker = ref();\n const refProps = {\n focus: (focusStartInput = true) => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.focus(focusStartInput);\n },\n handleOpen: () => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.handleOpen();\n },\n handleClose: () => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.handleClose();\n }\n };\n expose(refProps);\n const onModelValueUpdated = (val) => {\n emit(\"update:modelValue\", val);\n };\n return () => {\n var _a;\n const format = (_a = props.format) != null ? _a : DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE;\n const Component = getPanel(props.type);\n return createVNode(CommonPicker, mergeProps(props, {\n \"format\": format,\n \"type\": props.type,\n \"ref\": commonPicker,\n \"onUpdate:modelValue\": onModelValueUpdated\n }), {\n default: (scopedProps) => createVNode(Component, scopedProps, null),\n \"range-separator\": slots[\"range-separator\"]\n });\n };\n }\n});\n\nexport { DatePicker as default };\n//# sourceMappingURL=date-picker.mjs.map\n","import DatePicker from './src/date-picker.mjs';\nexport { ROOT_PICKER_INJECTION_KEY } from './src/constants.mjs';\nexport { datePickerProps } from './src/props/date-picker.mjs';\n\nconst _DatePicker = DatePicker;\n_DatePicker.install = (app) => {\n app.component(_DatePicker.name, _DatePicker);\n};\nconst ElDatePicker = _DatePicker;\n\nexport { ElDatePicker, _DatePicker as default };\n//# sourceMappingURL=index.mjs.map\n","const descriptionsKey = Symbol(\"elDescriptions\");\n\nexport { descriptionsKey };\n//# sourceMappingURL=token.mjs.map\n","import { defineComponent, inject, withDirectives, h } from 'vue';\nimport { isNil } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { descriptionsKey } from './token.mjs';\nimport { getNormalizedProps } from '../../../utils/vue/vnode.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nvar ElDescriptionsCell = defineComponent({\n name: \"ElDescriptionsCell\",\n props: {\n cell: {\n type: Object\n },\n tag: {\n type: String,\n default: \"td\"\n },\n type: {\n type: String\n }\n },\n setup() {\n const descriptions = inject(descriptionsKey, {});\n return {\n descriptions\n };\n },\n render() {\n var _a, _b, _c, _d, _e, _f, _g;\n const item = getNormalizedProps(this.cell);\n const directives = (((_a = this.cell) == null ? void 0 : _a.dirs) || []).map((dire) => {\n const { dir, arg, modifiers, value } = dire;\n return [dir, value, arg, modifiers];\n });\n const { border, direction } = this.descriptions;\n const isVertical = direction === \"vertical\";\n const label = ((_d = (_c = (_b = this.cell) == null ? void 0 : _b.children) == null ? void 0 : _c.label) == null ? void 0 : _d.call(_c)) || item.label;\n const content = (_g = (_f = (_e = this.cell) == null ? void 0 : _e.children) == null ? void 0 : _f.default) == null ? void 0 : _g.call(_f);\n const span = item.span;\n const align = item.align ? `is-${item.align}` : \"\";\n const labelAlign = item.labelAlign ? `is-${item.labelAlign}` : align;\n const className = item.className;\n const labelClassName = item.labelClassName;\n const style = {\n width: addUnit(item.width),\n minWidth: addUnit(item.minWidth)\n };\n const ns = useNamespace(\"descriptions\");\n switch (this.type) {\n case \"label\":\n return withDirectives(h(this.tag, {\n style,\n class: [\n ns.e(\"cell\"),\n ns.e(\"label\"),\n ns.is(\"bordered-label\", border),\n ns.is(\"vertical-label\", isVertical),\n labelAlign,\n labelClassName\n ],\n colSpan: isVertical ? span : 1\n }, label), directives);\n case \"content\":\n return withDirectives(h(this.tag, {\n style,\n class: [\n ns.e(\"cell\"),\n ns.e(\"content\"),\n ns.is(\"bordered-content\", border),\n ns.is(\"vertical-content\", isVertical),\n align,\n className\n ],\n colSpan: isVertical ? span : span * 2 - 1\n }, content), directives);\n default:\n return withDirectives(h(\"td\", {\n style,\n class: [ns.e(\"cell\"), align],\n colSpan: span\n }, [\n !isNil(label) ? h(\"span\", {\n class: [ns.e(\"label\"), labelClassName]\n }, label) : void 0,\n h(\"span\", {\n class: [ns.e(\"content\"), className]\n }, content)\n ]), directives);\n }\n }\n});\n\nexport { ElDescriptionsCell as default };\n//# sourceMappingURL=descriptions-cell.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst descriptionsRowProps = buildProps({\n row: {\n type: definePropType(Array),\n default: () => []\n }\n});\n\nexport { descriptionsRowProps };\n//# sourceMappingURL=descriptions-row.mjs.map\n","import { defineComponent, inject, unref, openBlock, createElementBlock, Fragment, createElementVNode, renderList, createBlock, createVNode } from 'vue';\nimport ElDescriptionsCell from './descriptions-cell.mjs';\nimport { descriptionsKey } from './token.mjs';\nimport { descriptionsRowProps } from './descriptions-row.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _hoisted_1 = { key: 1 };\nconst __default__ = defineComponent({\n name: \"ElDescriptionsRow\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: descriptionsRowProps,\n setup(__props) {\n const descriptions = inject(descriptionsKey, {});\n return (_ctx, _cache) => {\n return unref(descriptions).direction === \"vertical\" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createElementVNode(\"tr\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.row, (cell, _index) => {\n return openBlock(), createBlock(unref(ElDescriptionsCell), {\n key: `tr1-${_index}`,\n cell,\n tag: \"th\",\n type: \"label\"\n }, null, 8, [\"cell\"]);\n }), 128))\n ]),\n createElementVNode(\"tr\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.row, (cell, _index) => {\n return openBlock(), createBlock(unref(ElDescriptionsCell), {\n key: `tr2-${_index}`,\n cell,\n tag: \"td\",\n type: \"content\"\n }, null, 8, [\"cell\"]);\n }), 128))\n ])\n ], 64)) : (openBlock(), createElementBlock(\"tr\", _hoisted_1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.row, (cell, _index) => {\n return openBlock(), createElementBlock(Fragment, {\n key: `tr3-${_index}`\n }, [\n unref(descriptions).border ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createVNode(unref(ElDescriptionsCell), {\n cell,\n tag: \"td\",\n type: \"label\"\n }, null, 8, [\"cell\"]),\n createVNode(unref(ElDescriptionsCell), {\n cell,\n tag: \"td\",\n type: \"content\"\n }, null, 8, [\"cell\"])\n ], 64)) : (openBlock(), createBlock(unref(ElDescriptionsCell), {\n key: 1,\n cell,\n tag: \"td\",\n type: \"both\"\n }, null, 8, [\"cell\"]))\n ], 64);\n }), 128))\n ]));\n };\n }\n});\nvar ElDescriptionsRow = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"descriptions-row.vue\"]]);\n\nexport { ElDescriptionsRow as default };\n//# sourceMappingURL=descriptions-row2.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\n\nconst descriptionProps = buildProps({\n border: {\n type: Boolean,\n default: false\n },\n column: {\n type: Number,\n default: 3\n },\n direction: {\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: \"horizontal\"\n },\n size: useSizeProp,\n title: {\n type: String,\n default: \"\"\n },\n extra: {\n type: String,\n default: \"\"\n }\n});\n\nexport { descriptionProps };\n//# sourceMappingURL=description.mjs.map\n","import { defineComponent, useSlots, provide, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createTextVNode, toDisplayString, createCommentVNode, Fragment, renderList, createBlock } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../form/index.mjs';\nimport ElDescriptionsRow from './descriptions-row2.mjs';\nimport { descriptionsKey } from './token.mjs';\nimport { descriptionProps } from './description.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { flattedChildren } from '../../../utils/vue/vnode.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElDescriptions\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: descriptionProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"descriptions\");\n const descriptionsSize = useFormSize();\n const slots = useSlots();\n provide(descriptionsKey, props);\n const descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)]);\n const filledNode = (node, span, count, isLast = false) => {\n if (!node.props) {\n node.props = {};\n }\n if (span > count) {\n node.props.span = count;\n }\n if (isLast) {\n node.props.span = span;\n }\n return node;\n };\n const getRows = () => {\n if (!slots.default)\n return [];\n const children = flattedChildren(slots.default()).filter((node) => {\n var _a;\n return ((_a = node == null ? void 0 : node.type) == null ? void 0 : _a.name) === \"ElDescriptionsItem\";\n });\n const rows = [];\n let temp = [];\n let count = props.column;\n let totalSpan = 0;\n children.forEach((node, index) => {\n var _a;\n const span = ((_a = node.props) == null ? void 0 : _a.span) || 1;\n if (index < children.length - 1) {\n totalSpan += span > count ? count : span;\n }\n if (index === children.length - 1) {\n const lastSpan = props.column - totalSpan % props.column;\n temp.push(filledNode(node, lastSpan, count, true));\n rows.push(temp);\n return;\n }\n if (span < count) {\n count -= span;\n temp.push(node);\n } else {\n temp.push(filledNode(node, span, count));\n rows.push(temp);\n count = props.column;\n temp = [];\n }\n });\n return rows;\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(descriptionKls))\n }, [\n _ctx.title || _ctx.extra || _ctx.$slots.title || _ctx.$slots.extra ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"title\"))\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ])\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"extra\"))\n }, [\n renderSlot(_ctx.$slots, \"extra\", {}, () => [\n createTextVNode(toDisplayString(_ctx.extra), 1)\n ])\n ], 2)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"body\"))\n }, [\n createElementVNode(\"table\", {\n class: normalizeClass([unref(ns).e(\"table\"), unref(ns).is(\"bordered\", _ctx.border)])\n }, [\n createElementVNode(\"tbody\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(getRows(), (row, _index) => {\n return openBlock(), createBlock(ElDescriptionsRow, {\n key: _index,\n row\n }, null, 8, [\"row\"]);\n }), 128))\n ])\n ], 2)\n ], 2)\n ], 2);\n };\n }\n});\nvar Descriptions = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"description.vue\"]]);\n\nexport { Descriptions as default };\n//# sourceMappingURL=description2.mjs.map\n","import { defineComponent } from 'vue';\nimport '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst descriptionItemProps = buildProps({\n label: {\n type: String,\n default: \"\"\n },\n span: {\n type: Number,\n default: 1\n },\n width: {\n type: [String, Number],\n default: \"\"\n },\n minWidth: {\n type: [String, Number],\n default: \"\"\n },\n align: {\n type: String,\n default: \"left\"\n },\n labelAlign: {\n type: String,\n default: \"\"\n },\n className: {\n type: String,\n default: \"\"\n },\n labelClassName: {\n type: String,\n default: \"\"\n }\n});\nconst DescriptionItem = defineComponent({\n name: \"ElDescriptionsItem\",\n props: descriptionItemProps\n});\n\nexport { DescriptionItem as default, descriptionItemProps };\n//# sourceMappingURL=description-item.mjs.map\n","import '../../utils/index.mjs';\nimport Descriptions from './src/description2.mjs';\nimport DescriptionItem from './src/description-item.mjs';\nexport { descriptionItemProps } from './src/description-item.mjs';\nexport { descriptionProps } from './src/description.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElDescriptions = withInstall(Descriptions, {\n DescriptionsItem: DescriptionItem\n});\nconst ElDescriptionsItem = withNoopInstall(DescriptionItem);\n\nexport { ElDescriptions, ElDescriptionsItem, ElDescriptions as default };\n//# sourceMappingURL=index.mjs.map\n","const dialogInjectionKey = Symbol(\"dialogInjectionKey\");\n\nexport { dialogInjectionKey };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst dialogContentProps = buildProps({\n center: Boolean,\n alignCenter: Boolean,\n closeIcon: {\n type: iconPropType\n },\n draggable: Boolean,\n overflow: Boolean,\n fullscreen: Boolean,\n showClose: {\n type: Boolean,\n default: true\n },\n title: {\n type: String,\n default: \"\"\n },\n ariaLevel: {\n type: String,\n default: \"2\"\n }\n});\nconst dialogContentEmits = {\n close: () => true\n};\n\nexport { dialogContentEmits, dialogContentProps };\n//# sourceMappingURL=dialog-content2.mjs.map\n","import '../types.mjs';\nimport { isFunction } from '@vue/shared';\n\nconst composeRefs = (...refs) => {\n return (el) => {\n refs.forEach((ref) => {\n if (isFunction(ref)) {\n ref(el);\n } else {\n ref.value = el;\n }\n });\n };\n};\n\nexport { composeRefs };\n//# sourceMappingURL=refs.mjs.map\n","import { defineComponent, inject, computed, openBlock, createElementBlock, unref, normalizeClass, normalizeStyle, createElementVNode, renderSlot, toDisplayString, createVNode, withCtx, createBlock, resolveDynamicComponent, createCommentVNode } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../focus-trap/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { dialogInjectionKey } from './constants.mjs';\nimport { dialogContentProps, dialogContentEmits } from './dialog-content2.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { CloseComponents } from '../../../utils/vue/icon.mjs';\nimport { FOCUS_TRAP_INJECTION_KEY } from '../../focus-trap/src/tokens.mjs';\nimport { composeRefs } from '../../../utils/vue/refs.mjs';\nimport { useDraggable } from '../../../hooks/use-draggable/index.mjs';\n\nconst _hoisted_1 = [\"aria-level\"];\nconst _hoisted_2 = [\"aria-label\"];\nconst _hoisted_3 = [\"id\"];\nconst __default__ = defineComponent({ name: \"ElDialogContent\" });\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: dialogContentProps,\n emits: dialogContentEmits,\n setup(__props) {\n const props = __props;\n const { t } = useLocale();\n const { Close } = CloseComponents;\n const { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey);\n const { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY);\n const dialogKls = computed(() => [\n ns.b(),\n ns.is(\"fullscreen\", props.fullscreen),\n ns.is(\"draggable\", props.draggable),\n ns.is(\"align-center\", props.alignCenter),\n { [ns.m(\"center\")]: props.center }\n ]);\n const composedDialogRef = composeRefs(focusTrapRef, dialogRef);\n const draggable = computed(() => props.draggable);\n const overflow = computed(() => props.overflow);\n useDraggable(dialogRef, headerRef, draggable, overflow);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: unref(composedDialogRef),\n class: normalizeClass(unref(dialogKls)),\n style: normalizeStyle(unref(style)),\n tabindex: \"-1\"\n }, [\n createElementVNode(\"header\", {\n ref_key: \"headerRef\",\n ref: headerRef,\n class: normalizeClass([unref(ns).e(\"header\"), { \"show-close\": _ctx.showClose }])\n }, [\n renderSlot(_ctx.$slots, \"header\", {}, () => [\n createElementVNode(\"span\", {\n role: \"heading\",\n \"aria-level\": _ctx.ariaLevel,\n class: normalizeClass(unref(ns).e(\"title\"))\n }, toDisplayString(_ctx.title), 11, _hoisted_1)\n ]),\n _ctx.showClose ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n \"aria-label\": unref(t)(\"el.dialog.close\"),\n class: normalizeClass(unref(ns).e(\"headerbtn\")),\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\"))\n }, [\n createVNode(unref(ElIcon), {\n class: normalizeClass(unref(ns).e(\"close\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon || unref(Close))))\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 10, _hoisted_2)) : createCommentVNode(\"v-if\", true)\n ], 2),\n createElementVNode(\"div\", {\n id: unref(bodyId),\n class: normalizeClass(unref(ns).e(\"body\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_3),\n _ctx.$slots.footer ? (openBlock(), createElementBlock(\"footer\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"footer\"))\n }, [\n renderSlot(_ctx.$slots, \"footer\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 6);\n };\n }\n});\nvar ElDialogContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"dialog-content.vue\"]]);\n\nexport { ElDialogContent as default };\n//# sourceMappingURL=dialog-content.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { dialogContentProps } from './dialog-content2.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\n\nconst dialogProps = buildProps({\n ...dialogContentProps,\n appendToBody: Boolean,\n appendTo: {\n type: definePropType(String),\n default: \"body\"\n },\n beforeClose: {\n type: definePropType(Function)\n },\n destroyOnClose: Boolean,\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n lockScroll: {\n type: Boolean,\n default: true\n },\n modal: {\n type: Boolean,\n default: true\n },\n openDelay: {\n type: Number,\n default: 0\n },\n closeDelay: {\n type: Number,\n default: 0\n },\n top: {\n type: String\n },\n modelValue: Boolean,\n modalClass: String,\n width: {\n type: [String, Number]\n },\n zIndex: {\n type: Number\n },\n trapFocus: {\n type: Boolean,\n default: false\n },\n headerAriaLevel: {\n type: String,\n default: \"2\"\n }\n});\nconst dialogEmits = {\n open: () => true,\n opened: () => true,\n close: () => true,\n closed: () => true,\n [UPDATE_MODEL_EVENT]: (value) => isBoolean(value),\n openAutoFocus: () => true,\n closeAutoFocus: () => true\n};\n\nexport { dialogEmits, dialogProps };\n//# sourceMappingURL=dialog.mjs.map\n","import { getCurrentInstance, ref, computed, watch, nextTick, onMounted } from 'vue';\nimport { useTimeoutFn, isClient } from '@vueuse/core';\nimport { isUndefined } from 'lodash-unified';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../config-provider/index.mjs';\nimport { useZIndex } from '../../../hooks/use-z-index/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';\nimport { defaultNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { useLockscreen } from '../../../hooks/use-lockscreen/index.mjs';\n\nconst useDialog = (props, targetRef) => {\n var _a;\n const instance = getCurrentInstance();\n const emit = instance.emit;\n const { nextZIndex } = useZIndex();\n let lastPosition = \"\";\n const titleId = useId();\n const bodyId = useId();\n const visible = ref(false);\n const closed = ref(false);\n const rendered = ref(false);\n const zIndex = ref((_a = props.zIndex) != null ? _a : nextZIndex());\n let openTimer = void 0;\n let closeTimer = void 0;\n const namespace = useGlobalConfig(\"namespace\", defaultNamespace);\n const style = computed(() => {\n const style2 = {};\n const varPrefix = `--${namespace.value}-dialog`;\n if (!props.fullscreen) {\n if (props.top) {\n style2[`${varPrefix}-margin-top`] = props.top;\n }\n if (props.width) {\n style2[`${varPrefix}-width`] = addUnit(props.width);\n }\n }\n return style2;\n });\n const overlayDialogStyle = computed(() => {\n if (props.alignCenter) {\n return { display: \"flex\" };\n }\n return {};\n });\n function afterEnter() {\n emit(\"opened\");\n }\n function afterLeave() {\n emit(\"closed\");\n emit(UPDATE_MODEL_EVENT, false);\n if (props.destroyOnClose) {\n rendered.value = false;\n }\n }\n function beforeLeave() {\n emit(\"close\");\n }\n function open() {\n closeTimer == null ? void 0 : closeTimer();\n openTimer == null ? void 0 : openTimer();\n if (props.openDelay && props.openDelay > 0) {\n ;\n ({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay));\n } else {\n doOpen();\n }\n }\n function close() {\n openTimer == null ? void 0 : openTimer();\n closeTimer == null ? void 0 : closeTimer();\n if (props.closeDelay && props.closeDelay > 0) {\n ;\n ({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay));\n } else {\n doClose();\n }\n }\n function handleClose() {\n function hide(shouldCancel) {\n if (shouldCancel)\n return;\n closed.value = true;\n visible.value = false;\n }\n if (props.beforeClose) {\n props.beforeClose(hide);\n } else {\n close();\n }\n }\n function onModalClick() {\n if (props.closeOnClickModal) {\n handleClose();\n }\n }\n function doOpen() {\n if (!isClient)\n return;\n visible.value = true;\n }\n function doClose() {\n visible.value = false;\n }\n function onOpenAutoFocus() {\n emit(\"openAutoFocus\");\n }\n function onCloseAutoFocus() {\n emit(\"closeAutoFocus\");\n }\n function onFocusoutPrevented(event) {\n var _a2;\n if (((_a2 = event.detail) == null ? void 0 : _a2.focusReason) === \"pointer\") {\n event.preventDefault();\n }\n }\n if (props.lockScroll) {\n useLockscreen(visible);\n }\n function onCloseRequested() {\n if (props.closeOnPressEscape) {\n handleClose();\n }\n }\n watch(() => props.modelValue, (val) => {\n if (val) {\n closed.value = false;\n open();\n rendered.value = true;\n zIndex.value = isUndefined(props.zIndex) ? nextZIndex() : zIndex.value++;\n nextTick(() => {\n emit(\"open\");\n if (targetRef.value) {\n targetRef.value.scrollTop = 0;\n }\n });\n } else {\n if (visible.value) {\n close();\n }\n }\n });\n watch(() => props.fullscreen, (val) => {\n if (!targetRef.value)\n return;\n if (val) {\n lastPosition = targetRef.value.style.transform;\n targetRef.value.style.transform = \"\";\n } else {\n targetRef.value.style.transform = lastPosition;\n }\n });\n onMounted(() => {\n if (props.modelValue) {\n visible.value = true;\n rendered.value = true;\n open();\n }\n });\n return {\n afterEnter,\n afterLeave,\n beforeLeave,\n handleClose,\n onModalClick,\n close,\n doClose,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onCloseRequested,\n onFocusoutPrevented,\n titleId,\n bodyId,\n closed,\n style,\n overlayDialogStyle,\n rendered,\n visible,\n zIndex\n };\n};\n\nexport { useDialog };\n//# sourceMappingURL=use-dialog.mjs.map\n","import { defineComponent, useSlots, computed, ref, provide, openBlock, createBlock, Teleport, createVNode, Transition, unref, withCtx, withDirectives, createElementVNode, normalizeClass, normalizeStyle, mergeProps, createSlots, renderSlot, createCommentVNode, vShow } from 'vue';\nimport { ElOverlay } from '../../overlay/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../focus-trap/index.mjs';\nimport ElDialogContent from './dialog-content.mjs';\nimport { dialogInjectionKey } from './constants.mjs';\nimport { dialogProps, dialogEmits } from './dialog.mjs';\nimport { useDialog } from './use-dialog.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useSameTarget } from '../../../hooks/use-same-target/index.mjs';\nimport ElFocusTrap from '../../focus-trap/src/focus-trap.mjs';\n\nconst _hoisted_1 = [\"aria-label\", \"aria-labelledby\", \"aria-describedby\"];\nconst __default__ = defineComponent({\n name: \"ElDialog\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: dialogProps,\n emits: dialogEmits,\n setup(__props, { expose }) {\n const props = __props;\n const slots = useSlots();\n useDeprecated({\n scope: \"el-dialog\",\n from: \"the title slot\",\n replacement: \"the header slot\",\n version: \"3.0.0\",\n ref: \"https://element-plus.org/en-US/component/dialog.html#slots\"\n }, computed(() => !!slots.title));\n const ns = useNamespace(\"dialog\");\n const dialogRef = ref();\n const headerRef = ref();\n const dialogContentRef = ref();\n const {\n visible,\n titleId,\n bodyId,\n style,\n overlayDialogStyle,\n rendered,\n zIndex,\n afterEnter,\n afterLeave,\n beforeLeave,\n handleClose,\n onModalClick,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onCloseRequested,\n onFocusoutPrevented\n } = useDialog(props, dialogRef);\n provide(dialogInjectionKey, {\n dialogRef,\n headerRef,\n bodyId,\n ns,\n rendered,\n style\n });\n const overlayEvent = useSameTarget(onModalClick);\n const draggable = computed(() => props.draggable && !props.fullscreen);\n expose({\n visible,\n dialogContentRef\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Teleport, {\n to: _ctx.appendTo,\n disabled: _ctx.appendTo !== \"body\" ? false : !_ctx.appendToBody\n }, [\n createVNode(Transition, {\n name: \"dialog-fade\",\n onAfterEnter: unref(afterEnter),\n onAfterLeave: unref(afterLeave),\n onBeforeLeave: unref(beforeLeave),\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(unref(ElOverlay), {\n \"custom-mask-event\": \"\",\n mask: _ctx.modal,\n \"overlay-class\": _ctx.modalClass,\n \"z-index\": unref(zIndex)\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": _ctx.title || void 0,\n \"aria-labelledby\": !_ctx.title ? unref(titleId) : void 0,\n \"aria-describedby\": unref(bodyId),\n class: normalizeClass(`${unref(ns).namespace.value}-overlay-dialog`),\n style: normalizeStyle(unref(overlayDialogStyle)),\n onClick: _cache[0] || (_cache[0] = (...args) => unref(overlayEvent).onClick && unref(overlayEvent).onClick(...args)),\n onMousedown: _cache[1] || (_cache[1] = (...args) => unref(overlayEvent).onMousedown && unref(overlayEvent).onMousedown(...args)),\n onMouseup: _cache[2] || (_cache[2] = (...args) => unref(overlayEvent).onMouseup && unref(overlayEvent).onMouseup(...args))\n }, [\n createVNode(unref(ElFocusTrap), {\n loop: \"\",\n trapped: unref(visible),\n \"focus-start-el\": \"container\",\n onFocusAfterTrapped: unref(onOpenAutoFocus),\n onFocusAfterReleased: unref(onCloseAutoFocus),\n onFocusoutPrevented: unref(onFocusoutPrevented),\n onReleaseRequested: unref(onCloseRequested)\n }, {\n default: withCtx(() => [\n unref(rendered) ? (openBlock(), createBlock(ElDialogContent, mergeProps({\n key: 0,\n ref_key: \"dialogContentRef\",\n ref: dialogContentRef\n }, _ctx.$attrs, {\n center: _ctx.center,\n \"align-center\": _ctx.alignCenter,\n \"close-icon\": _ctx.closeIcon,\n draggable: unref(draggable),\n overflow: _ctx.overflow,\n fullscreen: _ctx.fullscreen,\n \"show-close\": _ctx.showClose,\n title: _ctx.title,\n \"aria-level\": _ctx.headerAriaLevel,\n onClose: unref(handleClose)\n }), createSlots({\n header: withCtx(() => [\n !_ctx.$slots.title ? renderSlot(_ctx.$slots, \"header\", {\n key: 0,\n close: unref(handleClose),\n titleId: unref(titleId),\n titleClass: unref(ns).e(\"title\")\n }) : renderSlot(_ctx.$slots, \"title\", { key: 1 })\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 2\n }, [\n _ctx.$slots.footer ? {\n name: \"footer\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"footer\")\n ])\n } : void 0\n ]), 1040, [\"center\", \"align-center\", \"close-icon\", \"draggable\", \"overflow\", \"fullscreen\", \"show-close\", \"title\", \"aria-level\", \"onClose\"])) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"trapped\", \"onFocusAfterTrapped\", \"onFocusAfterReleased\", \"onFocusoutPrevented\", \"onReleaseRequested\"])\n ], 46, _hoisted_1)\n ]),\n _: 3\n }, 8, [\"mask\", \"overlay-class\", \"z-index\"]), [\n [vShow, unref(visible)]\n ])\n ]),\n _: 3\n }, 8, [\"onAfterEnter\", \"onAfterLeave\", \"onBeforeLeave\"])\n ], 8, [\"to\", \"disabled\"]);\n };\n }\n});\nvar Dialog = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"dialog.vue\"]]);\n\nexport { Dialog as default };\n//# sourceMappingURL=dialog2.mjs.map\n","import '../../utils/index.mjs';\nimport Dialog from './src/dialog2.mjs';\nexport { useDialog } from './src/use-dialog.mjs';\nexport { dialogEmits, dialogProps } from './src/dialog.mjs';\nexport { dialogInjectionKey } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElDialog = withInstall(Dialog);\n\nexport { ElDialog, ElDialog as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst dividerProps = buildProps({\n direction: {\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: \"horizontal\"\n },\n contentPosition: {\n type: String,\n values: [\"left\", \"center\", \"right\"],\n default: \"center\"\n },\n borderStyle: {\n type: definePropType(String),\n default: \"solid\"\n }\n});\n\nexport { dividerProps };\n//# sourceMappingURL=divider.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, renderSlot, createCommentVNode } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { dividerProps } from './divider.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElDivider\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: dividerProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"divider\");\n const dividerStyle = computed(() => {\n return ns.cssVar({\n \"border-style\": props.borderStyle\n });\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.direction)]),\n style: normalizeStyle(unref(dividerStyle)),\n role: \"separator\"\n }, [\n _ctx.$slots.default && _ctx.direction !== \"vertical\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([unref(ns).e(\"text\"), unref(ns).is(_ctx.contentPosition)])\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 6);\n };\n }\n});\nvar Divider = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"divider.vue\"]]);\n\nexport { Divider as default };\n//# sourceMappingURL=divider2.mjs.map\n","import '../../utils/index.mjs';\nimport Divider from './src/divider2.mjs';\nexport { dividerProps } from './src/divider.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElDivider = withInstall(Divider);\n\nexport { ElDivider, ElDivider as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../dialog/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { dialogProps, dialogEmits } from '../../dialog/src/dialog.mjs';\n\nconst drawerProps = buildProps({\n ...dialogProps,\n direction: {\n type: String,\n default: \"rtl\",\n values: [\"ltr\", \"rtl\", \"ttb\", \"btt\"]\n },\n size: {\n type: [String, Number],\n default: \"30%\"\n },\n withHeader: {\n type: Boolean,\n default: true\n },\n modalFade: {\n type: Boolean,\n default: true\n },\n headerAriaLevel: {\n type: String,\n default: \"2\"\n }\n});\nconst drawerEmits = dialogEmits;\n\nexport { drawerEmits, drawerProps };\n//# sourceMappingURL=drawer.mjs.map\n","import { defineComponent, useSlots, computed, ref, openBlock, createBlock, Teleport, createVNode, Transition, unref, withCtx, withDirectives, createElementVNode, mergeProps, withModifiers, normalizeClass, createElementBlock, renderSlot, toDisplayString, createCommentVNode, vShow } from 'vue';\nimport { Close } from '@element-plus/icons-vue';\nimport { ElOverlay } from '../../overlay/index.mjs';\nimport '../../focus-trap/index.mjs';\nimport '../../dialog/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { drawerProps, drawerEmits } from './drawer.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useDialog } from '../../dialog/src/use-dialog.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport ElFocusTrap from '../../focus-trap/src/focus-trap.mjs';\n\nconst _hoisted_1 = [\"aria-label\", \"aria-labelledby\", \"aria-describedby\"];\nconst _hoisted_2 = [\"id\", \"aria-level\"];\nconst _hoisted_3 = [\"aria-label\"];\nconst _hoisted_4 = [\"id\"];\nconst __default__ = defineComponent({\n name: \"ElDrawer\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: drawerProps,\n emits: drawerEmits,\n setup(__props, { expose }) {\n const props = __props;\n const slots = useSlots();\n useDeprecated({\n scope: \"el-drawer\",\n from: \"the title slot\",\n replacement: \"the header slot\",\n version: \"3.0.0\",\n ref: \"https://element-plus.org/en-US/component/drawer.html#slots\"\n }, computed(() => !!slots.title));\n const drawerRef = ref();\n const focusStartRef = ref();\n const ns = useNamespace(\"drawer\");\n const { t } = useLocale();\n const {\n afterEnter,\n afterLeave,\n beforeLeave,\n visible,\n rendered,\n titleId,\n bodyId,\n zIndex,\n onModalClick,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onFocusoutPrevented,\n onCloseRequested,\n handleClose\n } = useDialog(props, drawerRef);\n const isHorizontal = computed(() => props.direction === \"rtl\" || props.direction === \"ltr\");\n const drawerSize = computed(() => addUnit(props.size));\n expose({\n handleClose,\n afterEnter,\n afterLeave\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Teleport, {\n to: \"body\",\n disabled: !_ctx.appendToBody\n }, [\n createVNode(Transition, {\n name: unref(ns).b(\"fade\"),\n onAfterEnter: unref(afterEnter),\n onAfterLeave: unref(afterLeave),\n onBeforeLeave: unref(beforeLeave),\n persisted: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(unref(ElOverlay), {\n mask: _ctx.modal,\n \"overlay-class\": _ctx.modalClass,\n \"z-index\": unref(zIndex),\n onClick: unref(onModalClick)\n }, {\n default: withCtx(() => [\n createVNode(unref(ElFocusTrap), {\n loop: \"\",\n trapped: unref(visible),\n \"focus-trap-el\": drawerRef.value,\n \"focus-start-el\": focusStartRef.value,\n onFocusAfterTrapped: unref(onOpenAutoFocus),\n onFocusAfterReleased: unref(onCloseAutoFocus),\n onFocusoutPrevented: unref(onFocusoutPrevented),\n onReleaseRequested: unref(onCloseRequested)\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", mergeProps({\n ref_key: \"drawerRef\",\n ref: drawerRef,\n \"aria-modal\": \"true\",\n \"aria-label\": _ctx.title || void 0,\n \"aria-labelledby\": !_ctx.title ? unref(titleId) : void 0,\n \"aria-describedby\": unref(bodyId)\n }, _ctx.$attrs, {\n class: [unref(ns).b(), _ctx.direction, unref(visible) && \"open\"],\n style: unref(isHorizontal) ? \"width: \" + unref(drawerSize) : \"height: \" + unref(drawerSize),\n role: \"dialog\",\n onClick: _cache[1] || (_cache[1] = withModifiers(() => {\n }, [\"stop\"]))\n }), [\n createElementVNode(\"span\", {\n ref_key: \"focusStartRef\",\n ref: focusStartRef,\n class: normalizeClass(unref(ns).e(\"sr-focus\")),\n tabindex: \"-1\"\n }, null, 2),\n _ctx.withHeader ? (openBlock(), createElementBlock(\"header\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n !_ctx.$slots.title ? renderSlot(_ctx.$slots, \"header\", {\n key: 0,\n close: unref(handleClose),\n titleId: unref(titleId),\n titleClass: unref(ns).e(\"title\")\n }, () => [\n !_ctx.$slots.title ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n id: unref(titleId),\n role: \"heading\",\n \"aria-level\": _ctx.headerAriaLevel,\n class: normalizeClass(unref(ns).e(\"title\"))\n }, toDisplayString(_ctx.title), 11, _hoisted_2)) : createCommentVNode(\"v-if\", true)\n ]) : renderSlot(_ctx.$slots, \"title\", { key: 1 }, () => [\n createCommentVNode(\" DEPRECATED SLOT \")\n ]),\n _ctx.showClose ? (openBlock(), createElementBlock(\"button\", {\n key: 2,\n \"aria-label\": unref(t)(\"el.drawer.close\"),\n class: normalizeClass(unref(ns).e(\"close-btn\")),\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = (...args) => unref(handleClose) && unref(handleClose)(...args))\n }, [\n createVNode(unref(ElIcon), {\n class: normalizeClass(unref(ns).e(\"close\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 10, _hoisted_3)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true),\n unref(rendered) ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n id: unref(bodyId),\n class: normalizeClass(unref(ns).e(\"body\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_4)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.footer ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(unref(ns).e(\"footer\"))\n }, [\n renderSlot(_ctx.$slots, \"footer\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 16, _hoisted_1)\n ]),\n _: 3\n }, 8, [\"trapped\", \"focus-trap-el\", \"focus-start-el\", \"onFocusAfterTrapped\", \"onFocusAfterReleased\", \"onFocusoutPrevented\", \"onReleaseRequested\"])\n ]),\n _: 3\n }, 8, [\"mask\", \"overlay-class\", \"z-index\", \"onClick\"]), [\n [vShow, unref(visible)]\n ])\n ]),\n _: 3\n }, 8, [\"name\", \"onAfterEnter\", \"onAfterLeave\", \"onBeforeLeave\"])\n ], 8, [\"disabled\"]);\n };\n }\n});\nvar Drawer = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"drawer.vue\"]]);\n\nexport { Drawer as default };\n//# sourceMappingURL=drawer2.mjs.map\n","import '../../utils/index.mjs';\nimport Drawer from './src/drawer2.mjs';\nexport { drawerEmits, drawerProps } from './src/drawer.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElDrawer = withInstall(Drawer);\n\nexport { ElDrawer, ElDrawer as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, renderSlot } from 'vue';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n inheritAttrs: false\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return renderSlot(_ctx.$slots, \"default\");\n}\nvar Collection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"collection.vue\"]]);\n\nexport { Collection as default };\n//# sourceMappingURL=collection2.mjs.map\n","import { defineComponent, renderSlot } from 'vue';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n name: \"ElCollectionItem\",\n inheritAttrs: false\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return renderSlot(_ctx.$slots, \"default\");\n}\nvar CollectionItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"collection-item.vue\"]]);\n\nexport { CollectionItem as default };\n//# sourceMappingURL=collection-item.mjs.map\n","import { ref, unref, provide, inject, onMounted, onBeforeUnmount } from 'vue';\nimport Collection from './collection2.mjs';\nimport CollectionItem from './collection-item.mjs';\n\nconst COLLECTION_ITEM_SIGN = `data-el-collection-item`;\nconst createCollectionWithScope = (name) => {\n const COLLECTION_NAME = `El${name}Collection`;\n const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`;\n const COLLECTION_INJECTION_KEY = Symbol(COLLECTION_NAME);\n const COLLECTION_ITEM_INJECTION_KEY = Symbol(COLLECTION_ITEM_NAME);\n const ElCollection = {\n ...Collection,\n name: COLLECTION_NAME,\n setup() {\n const collectionRef = ref(null);\n const itemMap = /* @__PURE__ */ new Map();\n const getItems = () => {\n const collectionEl = unref(collectionRef);\n if (!collectionEl)\n return [];\n const orderedNodes = Array.from(collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`));\n const items = [...itemMap.values()];\n return items.sort((a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref));\n };\n provide(COLLECTION_INJECTION_KEY, {\n itemMap,\n getItems,\n collectionRef\n });\n }\n };\n const ElCollectionItem = {\n ...CollectionItem,\n name: COLLECTION_ITEM_NAME,\n setup(_, { attrs }) {\n const collectionItemRef = ref(null);\n const collectionInjection = inject(COLLECTION_INJECTION_KEY, void 0);\n provide(COLLECTION_ITEM_INJECTION_KEY, {\n collectionItemRef\n });\n onMounted(() => {\n const collectionItemEl = unref(collectionItemRef);\n if (collectionItemEl) {\n collectionInjection.itemMap.set(collectionItemEl, {\n ref: collectionItemEl,\n ...attrs\n });\n }\n });\n onBeforeUnmount(() => {\n const collectionItemEl = unref(collectionItemRef);\n collectionInjection.itemMap.delete(collectionItemEl);\n });\n }\n };\n return {\n COLLECTION_INJECTION_KEY,\n COLLECTION_ITEM_INJECTION_KEY,\n ElCollection,\n ElCollectionItem\n };\n};\n\nexport { COLLECTION_ITEM_SIGN, createCollectionWithScope };\n//# sourceMappingURL=collection.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../collection/index.mjs';\nimport '../../tooltip/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps } from '../../tooltip/src/trigger.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { createCollectionWithScope } from '../../collection/src/collection.mjs';\n\nconst dropdownProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n type: {\n type: definePropType(String)\n },\n placement: {\n type: definePropType(String),\n default: \"bottom\"\n },\n popperOptions: {\n type: definePropType(Object),\n default: () => ({})\n },\n id: String,\n size: {\n type: String,\n default: \"\"\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true\n },\n loop: {\n type: Boolean,\n default: true\n },\n showTimeout: {\n type: Number,\n default: 150\n },\n hideTimeout: {\n type: Number,\n default: 150\n },\n tabindex: {\n type: definePropType([Number, String]),\n default: 0\n },\n maxHeight: {\n type: definePropType([Number, String]),\n default: \"\"\n },\n popperClass: {\n type: String,\n default: \"\"\n },\n disabled: {\n type: Boolean,\n default: false\n },\n role: {\n type: String,\n default: \"menu\"\n },\n buttonProps: {\n type: definePropType(Object)\n },\n teleported: useTooltipContentProps.teleported\n});\nconst dropdownItemProps = buildProps({\n command: {\n type: [Object, String, Number],\n default: () => ({})\n },\n disabled: Boolean,\n divided: Boolean,\n textValue: String,\n icon: {\n type: iconPropType\n }\n});\nconst dropdownMenuProps = buildProps({\n onKeydown: { type: definePropType(Function) }\n});\nconst FIRST_KEYS = [\n EVENT_CODE.down,\n EVENT_CODE.pageDown,\n EVENT_CODE.home\n];\nconst LAST_KEYS = [EVENT_CODE.up, EVENT_CODE.pageUp, EVENT_CODE.end];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst {\n ElCollection,\n ElCollectionItem,\n COLLECTION_INJECTION_KEY,\n COLLECTION_ITEM_INJECTION_KEY\n} = createCollectionWithScope(\"Dropdown\");\n\nexport { COLLECTION_INJECTION_KEY as DROPDOWN_COLLECTION_INJECTION_KEY, COLLECTION_ITEM_INJECTION_KEY as DROPDOWN_COLLECTION_ITEM_INJECTION_KEY, ElCollection, ElCollectionItem, FIRST_KEYS, FIRST_LAST_KEYS, LAST_KEYS, dropdownItemProps, dropdownMenuProps, dropdownProps };\n//# sourceMappingURL=dropdown.mjs.map\n","const DROPDOWN_INJECTION_KEY = Symbol(\"elDropdown\");\n\nexport { DROPDOWN_INJECTION_KEY };\n//# sourceMappingURL=tokens.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../collection/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { createCollectionWithScope } from '../../collection/src/collection.mjs';\n\nconst rovingFocusGroupProps = buildProps({\n style: { type: definePropType([String, Array, Object]) },\n currentTabId: {\n type: definePropType(String)\n },\n defaultCurrentTabId: String,\n loop: Boolean,\n dir: {\n type: String,\n values: [\"ltr\", \"rtl\"],\n default: \"ltr\"\n },\n orientation: {\n type: definePropType(String)\n },\n onBlur: Function,\n onFocus: Function,\n onMousedown: Function\n});\nconst {\n ElCollection,\n ElCollectionItem,\n COLLECTION_INJECTION_KEY,\n COLLECTION_ITEM_INJECTION_KEY\n} = createCollectionWithScope(\"RovingFocusGroup\");\n\nexport { ElCollection, ElCollectionItem, COLLECTION_INJECTION_KEY as ROVING_FOCUS_COLLECTION_INJECTION_KEY, COLLECTION_ITEM_INJECTION_KEY as ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY, rovingFocusGroupProps };\n//# sourceMappingURL=roving-focus-group.mjs.map\n","const ROVING_FOCUS_GROUP_INJECTION_KEY = Symbol(\"elRovingFocusGroup\");\nconst ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY = Symbol(\"elRovingFocusGroupItem\");\n\nexport { ROVING_FOCUS_GROUP_INJECTION_KEY, ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY };\n//# sourceMappingURL=tokens.mjs.map\n","import '../../../constants/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\n\nconst MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nconst getDirectionAwareKey = (key, dir) => {\n if (dir !== \"rtl\")\n return key;\n switch (key) {\n case EVENT_CODE.right:\n return EVENT_CODE.left;\n case EVENT_CODE.left:\n return EVENT_CODE.right;\n default:\n return key;\n }\n};\nconst getFocusIntent = (event, orientation, dir) => {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [EVENT_CODE.left, EVENT_CODE.right].includes(key))\n return void 0;\n if (orientation === \"horizontal\" && [EVENT_CODE.up, EVENT_CODE.down].includes(key))\n return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n};\nconst reorderArray = (array, atIdx) => {\n return array.map((_, idx) => array[(idx + atIdx) % array.length]);\n};\nconst focusFirst = (elements) => {\n const { activeElement: prevActive } = document;\n for (const element of elements) {\n if (element === prevActive)\n return;\n element.focus();\n if (prevActive !== document.activeElement)\n return;\n }\n};\n\nexport { focusFirst, getFocusIntent, reorderArray };\n//# sourceMappingURL=utils.mjs.map\n","import { defineComponent, ref, inject, computed, unref, provide, readonly, toRef, watch, renderSlot } from 'vue';\nimport { useEventListener } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport { rovingFocusGroupProps, ROVING_FOCUS_COLLECTION_INJECTION_KEY as COLLECTION_INJECTION_KEY } from './roving-focus-group.mjs';\nimport { ROVING_FOCUS_GROUP_INJECTION_KEY } from './tokens.mjs';\nimport { focusFirst } from './utils.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\n\nconst CURRENT_TAB_ID_CHANGE_EVT = \"currentTabIdChange\";\nconst ENTRY_FOCUS_EVT = \"rovingFocusGroup.entryFocus\";\nconst EVT_OPTS = { bubbles: false, cancelable: true };\nconst _sfc_main = defineComponent({\n name: \"ElRovingFocusGroupImpl\",\n inheritAttrs: false,\n props: rovingFocusGroupProps,\n emits: [CURRENT_TAB_ID_CHANGE_EVT, \"entryFocus\"],\n setup(props, { emit }) {\n var _a;\n const currentTabbedId = ref((_a = props.currentTabId || props.defaultCurrentTabId) != null ? _a : null);\n const isBackingOut = ref(false);\n const isClickFocus = ref(false);\n const rovingFocusGroupRef = ref(null);\n const { getItems } = inject(COLLECTION_INJECTION_KEY, void 0);\n const rovingFocusGroupRootStyle = computed(() => {\n return [\n {\n outline: \"none\"\n },\n props.style\n ];\n });\n const onItemFocus = (tabbedId) => {\n emit(CURRENT_TAB_ID_CHANGE_EVT, tabbedId);\n };\n const onItemShiftTab = () => {\n isBackingOut.value = true;\n };\n const onMousedown = composeEventHandlers((e) => {\n var _a2;\n (_a2 = props.onMousedown) == null ? void 0 : _a2.call(props, e);\n }, () => {\n isClickFocus.value = true;\n });\n const onFocus = composeEventHandlers((e) => {\n var _a2;\n (_a2 = props.onFocus) == null ? void 0 : _a2.call(props, e);\n }, (e) => {\n const isKeyboardFocus = !unref(isClickFocus);\n const { target, currentTarget } = e;\n if (target === currentTarget && isKeyboardFocus && !unref(isBackingOut)) {\n const entryFocusEvt = new Event(ENTRY_FOCUS_EVT, EVT_OPTS);\n currentTarget == null ? void 0 : currentTarget.dispatchEvent(entryFocusEvt);\n if (!entryFocusEvt.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === unref(currentTabbedId));\n const candidates = [activeItem, currentItem, ...items].filter(Boolean);\n const candidateNodes = candidates.map((item) => item.ref);\n focusFirst(candidateNodes);\n }\n }\n isClickFocus.value = false;\n });\n const onBlur = composeEventHandlers((e) => {\n var _a2;\n (_a2 = props.onBlur) == null ? void 0 : _a2.call(props, e);\n }, () => {\n isBackingOut.value = false;\n });\n const handleEntryFocus = (...args) => {\n emit(\"entryFocus\", ...args);\n };\n provide(ROVING_FOCUS_GROUP_INJECTION_KEY, {\n currentTabbedId: readonly(currentTabbedId),\n loop: toRef(props, \"loop\"),\n tabIndex: computed(() => {\n return unref(isBackingOut) ? -1 : 0;\n }),\n rovingFocusGroupRef,\n rovingFocusGroupRootStyle,\n orientation: toRef(props, \"orientation\"),\n dir: toRef(props, \"dir\"),\n onItemFocus,\n onItemShiftTab,\n onBlur,\n onFocus,\n onMousedown\n });\n watch(() => props.currentTabId, (val) => {\n currentTabbedId.value = val != null ? val : null;\n });\n useEventListener(rovingFocusGroupRef, ENTRY_FOCUS_EVT, handleEntryFocus);\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return renderSlot(_ctx.$slots, \"default\");\n}\nvar ElRovingFocusGroupImpl = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"roving-focus-group-impl.vue\"]]);\n\nexport { ElRovingFocusGroupImpl as default };\n//# sourceMappingURL=roving-focus-group-impl.mjs.map\n","import { defineComponent, resolveComponent, openBlock, createBlock, withCtx, createVNode, normalizeProps, guardReactiveProps, renderSlot } from 'vue';\nimport ElRovingFocusGroupImpl from './roving-focus-group-impl.mjs';\nimport { ElCollection } from './roving-focus-group.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElRovingFocusGroup\",\n components: {\n ElFocusGroupCollection: ElCollection,\n ElRovingFocusGroupImpl\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_roving_focus_group_impl = resolveComponent(\"el-roving-focus-group-impl\");\n const _component_el_focus_group_collection = resolveComponent(\"el-focus-group-collection\");\n return openBlock(), createBlock(_component_el_focus_group_collection, null, {\n default: withCtx(() => [\n createVNode(_component_el_roving_focus_group_impl, normalizeProps(guardReactiveProps(_ctx.$attrs)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)\n ]),\n _: 3\n });\n}\nvar ElRovingFocusGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"roving-focus-group.vue\"]]);\n\nexport { ElRovingFocusGroup as default };\n//# sourceMappingURL=roving-focus-group2.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, watch, onBeforeUnmount, unref, provide, toRef, resolveComponent, openBlock, createElementBlock, normalizeClass, createVNode, createSlots, withCtx, renderSlot, createBlock, mergeProps, createCommentVNode } from 'vue';\nimport { ElButton } from '../../button/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../roving-focus-group/index.mjs';\nimport '../../slot/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ArrowDown } from '@element-plus/icons-vue';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { ElCollection, dropdownProps } from './dropdown.mjs';\nimport { DROPDOWN_INJECTION_KEY } from './tokens.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport ElRovingFocusGroup from '../../roving-focus-group/src/roving-focus-group2.mjs';\nimport { OnlyChild } from '../../slot/src/only-child.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { castArray } from 'lodash-unified';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\n\nconst { ButtonGroup: ElButtonGroup } = ElButton;\nconst _sfc_main = defineComponent({\n name: \"ElDropdown\",\n components: {\n ElButton,\n ElButtonGroup,\n ElScrollbar,\n ElDropdownCollection: ElCollection,\n ElTooltip,\n ElRovingFocusGroup,\n ElOnlyChild: OnlyChild,\n ElIcon,\n ArrowDown\n },\n props: dropdownProps,\n emits: [\"visible-change\", \"click\", \"command\"],\n setup(props, { emit }) {\n const _instance = getCurrentInstance();\n const ns = useNamespace(\"dropdown\");\n const { t } = useLocale();\n const triggeringElementRef = ref();\n const referenceElementRef = ref();\n const popperRef = ref(null);\n const contentRef = ref(null);\n const scrollbar = ref(null);\n const currentTabId = ref(null);\n const isUsingKeyboard = ref(false);\n const triggerKeys = [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.down];\n const wrapStyle = computed(() => ({\n maxHeight: addUnit(props.maxHeight)\n }));\n const dropdownTriggerKls = computed(() => [ns.m(dropdownSize.value)]);\n const trigger = computed(() => castArray(props.trigger));\n const defaultTriggerId = useId().value;\n const triggerId = computed(() => {\n return props.id || defaultTriggerId;\n });\n watch([triggeringElementRef, trigger], ([triggeringElement, trigger2], [prevTriggeringElement]) => {\n var _a, _b, _c;\n if ((_a = prevTriggeringElement == null ? void 0 : prevTriggeringElement.$el) == null ? void 0 : _a.removeEventListener) {\n prevTriggeringElement.$el.removeEventListener(\"pointerenter\", onAutofocusTriggerEnter);\n }\n if ((_b = triggeringElement == null ? void 0 : triggeringElement.$el) == null ? void 0 : _b.removeEventListener) {\n triggeringElement.$el.removeEventListener(\"pointerenter\", onAutofocusTriggerEnter);\n }\n if (((_c = triggeringElement == null ? void 0 : triggeringElement.$el) == null ? void 0 : _c.addEventListener) && trigger2.includes(\"hover\")) {\n triggeringElement.$el.addEventListener(\"pointerenter\", onAutofocusTriggerEnter);\n }\n }, { immediate: true });\n onBeforeUnmount(() => {\n var _a, _b;\n if ((_b = (_a = triggeringElementRef.value) == null ? void 0 : _a.$el) == null ? void 0 : _b.removeEventListener) {\n triggeringElementRef.value.$el.removeEventListener(\"pointerenter\", onAutofocusTriggerEnter);\n }\n });\n function handleClick() {\n handleClose();\n }\n function handleClose() {\n var _a;\n (_a = popperRef.value) == null ? void 0 : _a.onClose();\n }\n function handleOpen() {\n var _a;\n (_a = popperRef.value) == null ? void 0 : _a.onOpen();\n }\n const dropdownSize = useFormSize();\n function commandHandler(...args) {\n emit(\"command\", ...args);\n }\n function onAutofocusTriggerEnter() {\n var _a, _b;\n (_b = (_a = triggeringElementRef.value) == null ? void 0 : _a.$el) == null ? void 0 : _b.focus();\n }\n function onItemEnter() {\n }\n function onItemLeave() {\n const contentEl = unref(contentRef);\n trigger.value.includes(\"hover\") && (contentEl == null ? void 0 : contentEl.focus());\n currentTabId.value = null;\n }\n function handleCurrentTabIdChange(id) {\n currentTabId.value = id;\n }\n function handleEntryFocus(e) {\n if (!isUsingKeyboard.value) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n function handleBeforeShowTooltip() {\n emit(\"visible-change\", true);\n }\n function handleShowTooltip(event) {\n if ((event == null ? void 0 : event.type) === \"keydown\") {\n contentRef.value.focus();\n }\n }\n function handleBeforeHideTooltip() {\n emit(\"visible-change\", false);\n }\n provide(DROPDOWN_INJECTION_KEY, {\n contentRef,\n role: computed(() => props.role),\n triggerId,\n isUsingKeyboard,\n onItemEnter,\n onItemLeave\n });\n provide(\"elDropdown\", {\n instance: _instance,\n dropdownSize,\n handleClick,\n commandHandler,\n trigger: toRef(props, \"trigger\"),\n hideOnClick: toRef(props, \"hideOnClick\")\n });\n const onFocusAfterTrapped = (e) => {\n var _a, _b;\n e.preventDefault();\n (_b = (_a = contentRef.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a, {\n preventScroll: true\n });\n };\n const handlerMainButtonClick = (event) => {\n emit(\"click\", event);\n };\n return {\n t,\n ns,\n scrollbar,\n wrapStyle,\n dropdownTriggerKls,\n dropdownSize,\n triggerId,\n triggerKeys,\n currentTabId,\n handleCurrentTabIdChange,\n handlerMainButtonClick,\n handleEntryFocus,\n handleClose,\n handleOpen,\n handleBeforeShowTooltip,\n handleShowTooltip,\n handleBeforeHideTooltip,\n onFocusAfterTrapped,\n popperRef,\n contentRef,\n triggeringElementRef,\n referenceElementRef\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n var _a;\n const _component_el_dropdown_collection = resolveComponent(\"el-dropdown-collection\");\n const _component_el_roving_focus_group = resolveComponent(\"el-roving-focus-group\");\n const _component_el_scrollbar = resolveComponent(\"el-scrollbar\");\n const _component_el_only_child = resolveComponent(\"el-only-child\");\n const _component_el_tooltip = resolveComponent(\"el-tooltip\");\n const _component_el_button = resolveComponent(\"el-button\");\n const _component_arrow_down = resolveComponent(\"arrow-down\");\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_el_button_group = resolveComponent(\"el-button-group\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.ns.b(), _ctx.ns.is(\"disabled\", _ctx.disabled)])\n }, [\n createVNode(_component_el_tooltip, {\n ref: \"popperRef\",\n role: _ctx.role,\n effect: _ctx.effect,\n \"fallback-placements\": [\"bottom\", \"top\"],\n \"popper-options\": _ctx.popperOptions,\n \"gpu-acceleration\": false,\n \"hide-after\": _ctx.trigger === \"hover\" ? _ctx.hideTimeout : 0,\n \"manual-mode\": true,\n placement: _ctx.placement,\n \"popper-class\": [_ctx.ns.e(\"popper\"), _ctx.popperClass],\n \"reference-element\": (_a = _ctx.referenceElementRef) == null ? void 0 : _a.$el,\n trigger: _ctx.trigger,\n \"trigger-keys\": _ctx.triggerKeys,\n \"trigger-target-el\": _ctx.contentRef,\n \"show-after\": _ctx.trigger === \"hover\" ? _ctx.showTimeout : 0,\n \"stop-popper-mouse-event\": false,\n \"virtual-ref\": _ctx.triggeringElementRef,\n \"virtual-triggering\": _ctx.splitButton,\n disabled: _ctx.disabled,\n transition: `${_ctx.ns.namespace.value}-zoom-in-top`,\n teleported: _ctx.teleported,\n pure: \"\",\n persistent: \"\",\n onBeforeShow: _ctx.handleBeforeShowTooltip,\n onShow: _ctx.handleShowTooltip,\n onBeforeHide: _ctx.handleBeforeHideTooltip\n }, createSlots({\n content: withCtx(() => [\n createVNode(_component_el_scrollbar, {\n ref: \"scrollbar\",\n \"wrap-style\": _ctx.wrapStyle,\n tag: \"div\",\n \"view-class\": _ctx.ns.e(\"list\")\n }, {\n default: withCtx(() => [\n createVNode(_component_el_roving_focus_group, {\n loop: _ctx.loop,\n \"current-tab-id\": _ctx.currentTabId,\n orientation: \"horizontal\",\n onCurrentTabIdChange: _ctx.handleCurrentTabIdChange,\n onEntryFocus: _ctx.handleEntryFocus\n }, {\n default: withCtx(() => [\n createVNode(_component_el_dropdown_collection, null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"dropdown\")\n ]),\n _: 3\n })\n ]),\n _: 3\n }, 8, [\"loop\", \"current-tab-id\", \"onCurrentTabIdChange\", \"onEntryFocus\"])\n ]),\n _: 3\n }, 8, [\"wrap-style\", \"view-class\"])\n ]),\n _: 2\n }, [\n !_ctx.splitButton ? {\n name: \"default\",\n fn: withCtx(() => [\n createVNode(_component_el_only_child, {\n id: _ctx.triggerId,\n ref: \"triggeringElementRef\",\n role: \"button\",\n tabindex: _ctx.tabindex\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"tabindex\"])\n ])\n } : void 0\n ]), 1032, [\"role\", \"effect\", \"popper-options\", \"hide-after\", \"placement\", \"popper-class\", \"reference-element\", \"trigger\", \"trigger-keys\", \"trigger-target-el\", \"show-after\", \"virtual-ref\", \"virtual-triggering\", \"disabled\", \"transition\", \"teleported\", \"onBeforeShow\", \"onShow\", \"onBeforeHide\"]),\n _ctx.splitButton ? (openBlock(), createBlock(_component_el_button_group, { key: 0 }, {\n default: withCtx(() => [\n createVNode(_component_el_button, mergeProps({ ref: \"referenceElementRef\" }, _ctx.buttonProps, {\n size: _ctx.dropdownSize,\n type: _ctx.type,\n disabled: _ctx.disabled,\n tabindex: _ctx.tabindex,\n onClick: _ctx.handlerMainButtonClick\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"size\", \"type\", \"disabled\", \"tabindex\", \"onClick\"]),\n createVNode(_component_el_button, mergeProps({\n id: _ctx.triggerId,\n ref: \"triggeringElementRef\"\n }, _ctx.buttonProps, {\n role: \"button\",\n size: _ctx.dropdownSize,\n type: _ctx.type,\n class: _ctx.ns.e(\"caret-button\"),\n disabled: _ctx.disabled,\n tabindex: _ctx.tabindex,\n \"aria-label\": _ctx.t(\"el.dropdown.toggleDropdown\")\n }), {\n default: withCtx(() => [\n createVNode(_component_el_icon, {\n class: normalizeClass(_ctx.ns.e(\"icon\"))\n }, {\n default: withCtx(() => [\n createVNode(_component_arrow_down)\n ]),\n _: 1\n }, 8, [\"class\"])\n ]),\n _: 1\n }, 16, [\"id\", \"size\", \"type\", \"class\", \"disabled\", \"tabindex\", \"aria-label\"])\n ]),\n _: 3\n })) : createCommentVNode(\"v-if\", true)\n ], 2);\n}\nvar Dropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"dropdown.vue\"]]);\n\nexport { Dropdown as default };\n//# sourceMappingURL=dropdown2.mjs.map\n","import { defineComponent, inject, computed, resolveComponent, openBlock, createElementBlock, Fragment, mergeProps, createCommentVNode, createElementVNode, withModifiers, createBlock, withCtx, resolveDynamicComponent, renderSlot } from 'vue';\nimport '../../roving-focus-group/index.mjs';\nimport '../../collection/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { dropdownItemProps, DROPDOWN_COLLECTION_ITEM_INJECTION_KEY as COLLECTION_ITEM_INJECTION_KEY } from './dropdown.mjs';\nimport { DROPDOWN_INJECTION_KEY } from './tokens.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY as COLLECTION_ITEM_INJECTION_KEY$1 } from '../../roving-focus-group/src/roving-focus-group.mjs';\nimport { ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY } from '../../roving-focus-group/src/tokens.mjs';\nimport { composeRefs } from '../../../utils/vue/refs.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { COLLECTION_ITEM_SIGN } from '../../collection/src/collection.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"DropdownItemImpl\",\n components: {\n ElIcon\n },\n props: dropdownItemProps,\n emits: [\"pointermove\", \"pointerleave\", \"click\", \"clickimpl\"],\n setup(_, { emit }) {\n const ns = useNamespace(\"dropdown\");\n const { role: menuRole } = inject(DROPDOWN_INJECTION_KEY, void 0);\n const { collectionItemRef: dropdownCollectionItemRef } = inject(COLLECTION_ITEM_INJECTION_KEY, void 0);\n const { collectionItemRef: rovingFocusCollectionItemRef } = inject(COLLECTION_ITEM_INJECTION_KEY$1, void 0);\n const {\n rovingFocusGroupItemRef,\n tabIndex,\n handleFocus,\n handleKeydown: handleItemKeydown,\n handleMousedown\n } = inject(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, void 0);\n const itemRef = composeRefs(dropdownCollectionItemRef, rovingFocusCollectionItemRef, rovingFocusGroupItemRef);\n const role = computed(() => {\n if (menuRole.value === \"menu\") {\n return \"menuitem\";\n } else if (menuRole.value === \"navigation\") {\n return \"link\";\n }\n return \"button\";\n });\n const handleKeydown = composeEventHandlers((e) => {\n const { code } = e;\n if (code === EVENT_CODE.enter || code === EVENT_CODE.space) {\n e.preventDefault();\n e.stopImmediatePropagation();\n emit(\"clickimpl\", e);\n return true;\n }\n }, handleItemKeydown);\n return {\n ns,\n itemRef,\n dataset: {\n [COLLECTION_ITEM_SIGN]: \"\"\n },\n role,\n tabIndex,\n handleFocus,\n handleKeydown,\n handleMousedown\n };\n }\n});\nconst _hoisted_1 = [\"aria-disabled\", \"tabindex\", \"role\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_icon = resolveComponent(\"el-icon\");\n return openBlock(), createElementBlock(Fragment, null, [\n _ctx.divided ? (openBlock(), createElementBlock(\"li\", mergeProps({\n key: 0,\n role: \"separator\",\n class: _ctx.ns.bem(\"menu\", \"item\", \"divided\")\n }, _ctx.$attrs), null, 16)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"li\", mergeProps({ ref: _ctx.itemRef }, { ..._ctx.dataset, ..._ctx.$attrs }, {\n \"aria-disabled\": _ctx.disabled,\n class: [_ctx.ns.be(\"menu\", \"item\"), _ctx.ns.is(\"disabled\", _ctx.disabled)],\n tabindex: _ctx.tabIndex,\n role: _ctx.role,\n onClick: _cache[0] || (_cache[0] = (e) => _ctx.$emit(\"clickimpl\", e)),\n onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),\n onKeydown: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args), [\"self\"])),\n onMousedown: _cache[3] || (_cache[3] = (...args) => _ctx.handleMousedown && _ctx.handleMousedown(...args)),\n onPointermove: _cache[4] || (_cache[4] = (e) => _ctx.$emit(\"pointermove\", e)),\n onPointerleave: _cache[5] || (_cache[5] = (e) => _ctx.$emit(\"pointerleave\", e))\n }), [\n _ctx.icon ? (openBlock(), createBlock(_component_el_icon, { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\")\n ], 16, _hoisted_1)\n ], 64);\n}\nvar ElDropdownItemImpl = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"dropdown-item-impl.vue\"]]);\n\nexport { ElDropdownItemImpl as default };\n//# sourceMappingURL=dropdown-item-impl.mjs.map\n","import { inject, computed, ref } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { addClass } from '../../../utils/dom/style.mjs';\n\nconst useDropdown = () => {\n const elDropdown = inject(\"elDropdown\", {});\n const _elDropdownSize = computed(() => elDropdown == null ? void 0 : elDropdown.dropdownSize);\n return {\n elDropdown,\n _elDropdownSize\n };\n};\nconst initDropdownDomEvent = (dropdownChildren, triggerElm, _instance) => {\n const ns = useNamespace(\"dropdown\");\n const menuItems = ref(null);\n const menuItemsArray = ref(null);\n const dropdownElm = ref(null);\n const listId = useId();\n dropdownElm.value = dropdownChildren == null ? void 0 : dropdownChildren.subTree.el;\n function removeTabindex() {\n var _a;\n triggerElm.setAttribute(\"tabindex\", \"-1\");\n (_a = menuItemsArray.value) == null ? void 0 : _a.forEach((item) => {\n item.setAttribute(\"tabindex\", \"-1\");\n });\n }\n function resetTabindex(ele) {\n removeTabindex();\n ele == null ? void 0 : ele.setAttribute(\"tabindex\", \"0\");\n }\n function handleTriggerKeyDown(ev) {\n const code = ev.code;\n if ([EVENT_CODE.up, EVENT_CODE.down].includes(code)) {\n removeTabindex();\n resetTabindex(menuItems.value[0]);\n menuItems.value[0].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (code === EVENT_CODE.enter) {\n _instance.handleClick();\n } else if ([EVENT_CODE.tab, EVENT_CODE.esc].includes(code)) {\n _instance.hide();\n }\n }\n function handleItemKeyDown(ev) {\n const code = ev.code;\n const target = ev.target;\n const currentIndex = menuItemsArray.value.indexOf(target);\n const max = menuItemsArray.value.length - 1;\n let nextIndex;\n if ([EVENT_CODE.up, EVENT_CODE.down].includes(code)) {\n if (code === EVENT_CODE.up) {\n nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;\n } else {\n nextIndex = currentIndex < max ? currentIndex + 1 : max;\n }\n removeTabindex();\n resetTabindex(menuItems.value[nextIndex]);\n menuItems.value[nextIndex].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (code === EVENT_CODE.enter) {\n triggerElmFocus();\n target.click();\n if (_instance.props.hideOnClick) {\n _instance.hide();\n }\n } else if ([EVENT_CODE.tab, EVENT_CODE.esc].includes(code)) {\n _instance.hide();\n triggerElmFocus();\n }\n }\n function initAria() {\n dropdownElm.value.setAttribute(\"id\", listId.value);\n triggerElm.setAttribute(\"aria-haspopup\", \"list\");\n triggerElm.setAttribute(\"aria-controls\", listId.value);\n if (!_instance.props.splitButton) {\n triggerElm.setAttribute(\"role\", \"button\");\n triggerElm.setAttribute(\"tabindex\", _instance.props.tabindex);\n addClass(triggerElm, ns.b(\"selfdefine\"));\n }\n }\n function initEvent() {\n var _a;\n triggerElm == null ? void 0 : triggerElm.addEventListener(\"keydown\", handleTriggerKeyDown);\n (_a = dropdownElm.value) == null ? void 0 : _a.addEventListener(\"keydown\", handleItemKeyDown, true);\n }\n function initDomOperation() {\n menuItems.value = dropdownElm.value.querySelectorAll(\"[tabindex='-1']\");\n menuItemsArray.value = Array.from(menuItems.value);\n initEvent();\n initAria();\n }\n function triggerElmFocus() {\n triggerElm.focus();\n }\n initDomOperation();\n};\n\nexport { initDropdownDomEvent, useDropdown };\n//# sourceMappingURL=useDropdown.mjs.map\n","import { defineComponent, inject, ref, unref, nextTick, computed, provide, resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { ElCollectionItem, ROVING_FOCUS_COLLECTION_INJECTION_KEY as COLLECTION_INJECTION_KEY } from './roving-focus-group.mjs';\nimport { ROVING_FOCUS_GROUP_INJECTION_KEY, ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY } from './tokens.mjs';\nimport { getFocusIntent, reorderArray, focusFirst } from './utils.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\n\nconst _sfc_main = defineComponent({\n components: {\n ElRovingFocusCollectionItem: ElCollectionItem\n },\n props: {\n focusable: {\n type: Boolean,\n default: true\n },\n active: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"mousedown\", \"focus\", \"keydown\"],\n setup(props, { emit }) {\n const { currentTabbedId, loop, onItemFocus, onItemShiftTab } = inject(ROVING_FOCUS_GROUP_INJECTION_KEY, void 0);\n const { getItems } = inject(COLLECTION_INJECTION_KEY, void 0);\n const id = useId();\n const rovingFocusGroupItemRef = ref(null);\n const handleMousedown = composeEventHandlers((e) => {\n emit(\"mousedown\", e);\n }, (e) => {\n if (!props.focusable) {\n e.preventDefault();\n } else {\n onItemFocus(unref(id));\n }\n });\n const handleFocus = composeEventHandlers((e) => {\n emit(\"focus\", e);\n }, () => {\n onItemFocus(unref(id));\n });\n const handleKeydown = composeEventHandlers((e) => {\n emit(\"keydown\", e);\n }, (e) => {\n const { key, shiftKey, target, currentTarget } = e;\n if (key === EVENT_CODE.tab && shiftKey) {\n onItemShiftTab();\n return;\n }\n if (target !== currentTarget)\n return;\n const focusIntent = getFocusIntent(e);\n if (focusIntent) {\n e.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let elements = items.map((item) => item.ref);\n switch (focusIntent) {\n case \"last\": {\n elements.reverse();\n break;\n }\n case \"prev\":\n case \"next\": {\n if (focusIntent === \"prev\") {\n elements.reverse();\n }\n const currentIdx = elements.indexOf(currentTarget);\n elements = loop.value ? reorderArray(elements, currentIdx + 1) : elements.slice(currentIdx + 1);\n break;\n }\n default: {\n break;\n }\n }\n nextTick(() => {\n focusFirst(elements);\n });\n }\n });\n const isCurrentTab = computed(() => currentTabbedId.value === unref(id));\n provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {\n rovingFocusGroupItemRef,\n tabIndex: computed(() => unref(isCurrentTab) ? 0 : -1),\n handleMousedown,\n handleFocus,\n handleKeydown\n });\n return {\n id,\n handleKeydown,\n handleFocus,\n handleMousedown\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_roving_focus_collection_item = resolveComponent(\"el-roving-focus-collection-item\");\n return openBlock(), createBlock(_component_el_roving_focus_collection_item, {\n id: _ctx.id,\n focusable: _ctx.focusable,\n active: _ctx.active\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"focusable\", \"active\"]);\n}\nvar ElRovingFocusItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"roving-focus-item.vue\"]]);\n\nexport { ElRovingFocusItem as default };\n//# sourceMappingURL=roving-focus-item.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, unref, inject, resolveComponent, openBlock, createBlock, withCtx, createVNode, mergeProps, renderSlot } from 'vue';\nimport '../../roving-focus-group/index.mjs';\nimport '../../../utils/index.mjs';\nimport ElDropdownItemImpl from './dropdown-item-impl.mjs';\nimport { useDropdown } from './useDropdown.mjs';\nimport { ElCollectionItem, dropdownItemProps } from './dropdown.mjs';\nimport { DROPDOWN_INJECTION_KEY } from './tokens.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport ElRovingFocusItem from '../../roving-focus-group/src/roving-focus-item.mjs';\nimport { composeEventHandlers, whenMouse } from '../../../utils/dom/event.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElDropdownItem\",\n components: {\n ElDropdownCollectionItem: ElCollectionItem,\n ElRovingFocusItem,\n ElDropdownItemImpl\n },\n inheritAttrs: false,\n props: dropdownItemProps,\n emits: [\"pointermove\", \"pointerleave\", \"click\"],\n setup(props, { emit, attrs }) {\n const { elDropdown } = useDropdown();\n const _instance = getCurrentInstance();\n const itemRef = ref(null);\n const textContent = computed(() => {\n var _a, _b;\n return (_b = (_a = unref(itemRef)) == null ? void 0 : _a.textContent) != null ? _b : \"\";\n });\n const { onItemEnter, onItemLeave } = inject(DROPDOWN_INJECTION_KEY, void 0);\n const handlePointerMove = composeEventHandlers((e) => {\n emit(\"pointermove\", e);\n return e.defaultPrevented;\n }, whenMouse((e) => {\n if (props.disabled) {\n onItemLeave(e);\n return;\n }\n const target = e.currentTarget;\n if (target === document.activeElement || target.contains(document.activeElement)) {\n return;\n }\n onItemEnter(e);\n if (!e.defaultPrevented) {\n target == null ? void 0 : target.focus();\n }\n }));\n const handlePointerLeave = composeEventHandlers((e) => {\n emit(\"pointerleave\", e);\n return e.defaultPrevented;\n }, whenMouse((e) => {\n onItemLeave(e);\n }));\n const handleClick = composeEventHandlers((e) => {\n if (props.disabled) {\n return;\n }\n emit(\"click\", e);\n return e.type !== \"keydown\" && e.defaultPrevented;\n }, (e) => {\n var _a, _b, _c;\n if (props.disabled) {\n e.stopImmediatePropagation();\n return;\n }\n if ((_a = elDropdown == null ? void 0 : elDropdown.hideOnClick) == null ? void 0 : _a.value) {\n (_b = elDropdown.handleClick) == null ? void 0 : _b.call(elDropdown);\n }\n (_c = elDropdown.commandHandler) == null ? void 0 : _c.call(elDropdown, props.command, _instance, e);\n });\n const propsAndAttrs = computed(() => {\n return { ...props, ...attrs };\n });\n return {\n handleClick,\n handlePointerMove,\n handlePointerLeave,\n textContent,\n propsAndAttrs\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n var _a;\n const _component_el_dropdown_item_impl = resolveComponent(\"el-dropdown-item-impl\");\n const _component_el_roving_focus_item = resolveComponent(\"el-roving-focus-item\");\n const _component_el_dropdown_collection_item = resolveComponent(\"el-dropdown-collection-item\");\n return openBlock(), createBlock(_component_el_dropdown_collection_item, {\n disabled: _ctx.disabled,\n \"text-value\": (_a = _ctx.textValue) != null ? _a : _ctx.textContent\n }, {\n default: withCtx(() => [\n createVNode(_component_el_roving_focus_item, {\n focusable: !_ctx.disabled\n }, {\n default: withCtx(() => [\n createVNode(_component_el_dropdown_item_impl, mergeProps(_ctx.propsAndAttrs, {\n onPointerleave: _ctx.handlePointerLeave,\n onPointermove: _ctx.handlePointerMove,\n onClickimpl: _ctx.handleClick\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"onPointerleave\", \"onPointermove\", \"onClickimpl\"])\n ]),\n _: 3\n }, 8, [\"focusable\"])\n ]),\n _: 3\n }, 8, [\"disabled\", \"text-value\"]);\n}\nvar DropdownItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"dropdown-item.vue\"]]);\n\nexport { DropdownItem as default };\n//# sourceMappingURL=dropdown-item.mjs.map\n","import { defineComponent, inject, computed, unref, openBlock, createElementBlock, normalizeClass, normalizeStyle, withModifiers, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../focus-trap/index.mjs';\nimport '../../roving-focus-group/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { DROPDOWN_INJECTION_KEY } from './tokens.mjs';\nimport { dropdownMenuProps, DROPDOWN_COLLECTION_INJECTION_KEY as COLLECTION_INJECTION_KEY, FIRST_LAST_KEYS, LAST_KEYS } from './dropdown.mjs';\nimport { useDropdown } from './useDropdown.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { FOCUS_TRAP_INJECTION_KEY } from '../../focus-trap/src/tokens.mjs';\nimport { ROVING_FOCUS_GROUP_INJECTION_KEY } from '../../roving-focus-group/src/tokens.mjs';\nimport { ROVING_FOCUS_COLLECTION_INJECTION_KEY as COLLECTION_INJECTION_KEY$1 } from '../../roving-focus-group/src/roving-focus-group.mjs';\nimport { composeRefs } from '../../../utils/vue/refs.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { focusFirst } from '../../roving-focus-group/src/utils.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElDropdownMenu\",\n props: dropdownMenuProps,\n setup(props) {\n const ns = useNamespace(\"dropdown\");\n const { _elDropdownSize } = useDropdown();\n const size = _elDropdownSize.value;\n const { focusTrapRef, onKeydown } = inject(FOCUS_TRAP_INJECTION_KEY, void 0);\n const { contentRef, role, triggerId } = inject(DROPDOWN_INJECTION_KEY, void 0);\n const { collectionRef: dropdownCollectionRef, getItems } = inject(COLLECTION_INJECTION_KEY, void 0);\n const {\n rovingFocusGroupRef,\n rovingFocusGroupRootStyle,\n tabIndex,\n onBlur,\n onFocus,\n onMousedown\n } = inject(ROVING_FOCUS_GROUP_INJECTION_KEY, void 0);\n const { collectionRef: rovingFocusGroupCollectionRef } = inject(COLLECTION_INJECTION_KEY$1, void 0);\n const dropdownKls = computed(() => {\n return [ns.b(\"menu\"), ns.bm(\"menu\", size == null ? void 0 : size.value)];\n });\n const dropdownListWrapperRef = composeRefs(contentRef, dropdownCollectionRef, focusTrapRef, rovingFocusGroupRef, rovingFocusGroupCollectionRef);\n const composedKeydown = composeEventHandlers((e) => {\n var _a;\n (_a = props.onKeydown) == null ? void 0 : _a.call(props, e);\n }, (e) => {\n const { currentTarget, code, target } = e;\n const isKeydownContained = currentTarget.contains(target);\n if (isKeydownContained) {\n }\n if (EVENT_CODE.tab === code) {\n e.stopImmediatePropagation();\n }\n e.preventDefault();\n if (target !== unref(contentRef))\n return;\n if (!FIRST_LAST_KEYS.includes(code))\n return;\n const items = getItems().filter((item) => !item.disabled);\n const targets = items.map((item) => item.ref);\n if (LAST_KEYS.includes(code)) {\n targets.reverse();\n }\n focusFirst(targets);\n });\n const handleKeydown = (e) => {\n composedKeydown(e);\n onKeydown(e);\n };\n return {\n size,\n rovingFocusGroupRootStyle,\n tabIndex,\n dropdownKls,\n role,\n triggerId,\n dropdownListWrapperRef,\n handleKeydown,\n onBlur,\n onFocus,\n onMousedown\n };\n }\n});\nconst _hoisted_1 = [\"role\", \"aria-labelledby\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"ul\", {\n ref: _ctx.dropdownListWrapperRef,\n class: normalizeClass(_ctx.dropdownKls),\n style: normalizeStyle(_ctx.rovingFocusGroupRootStyle),\n tabindex: -1,\n role: _ctx.role,\n \"aria-labelledby\": _ctx.triggerId,\n onBlur: _cache[0] || (_cache[0] = (...args) => _ctx.onBlur && _ctx.onBlur(...args)),\n onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.onFocus && _ctx.onFocus(...args)),\n onKeydown: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args), [\"self\"])),\n onMousedown: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.onMousedown && _ctx.onMousedown(...args), [\"self\"]))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 46, _hoisted_1);\n}\nvar DropdownMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"dropdown-menu.vue\"]]);\n\nexport { DropdownMenu as default };\n//# sourceMappingURL=dropdown-menu.mjs.map\n","import '../../utils/index.mjs';\nimport Dropdown from './src/dropdown2.mjs';\nimport DropdownItem from './src/dropdown-item.mjs';\nimport DropdownMenu from './src/dropdown-menu.mjs';\nexport { DROPDOWN_COLLECTION_INJECTION_KEY, DROPDOWN_COLLECTION_ITEM_INJECTION_KEY, ElCollection, ElCollectionItem, FIRST_KEYS, FIRST_LAST_KEYS, LAST_KEYS, dropdownItemProps, dropdownMenuProps, dropdownProps } from './src/dropdown.mjs';\nimport './src/instance.mjs';\nexport { DROPDOWN_INJECTION_KEY } from './src/tokens.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElDropdown = withInstall(Dropdown, {\n DropdownItem,\n DropdownMenu\n});\nconst ElDropdownItem = withNoopInstall(DropdownItem);\nconst ElDropdownMenu = withNoopInstall(DropdownMenu);\n\nexport { ElDropdown, ElDropdownItem, ElDropdownMenu, ElDropdown as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode, unref } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\n\nconst _hoisted_1 = {\n viewBox: \"0 0 79 86\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\"\n};\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"stop-color\"];\nconst _hoisted_4 = [\"stop-color\"];\nconst _hoisted_5 = [\"id\"];\nconst _hoisted_6 = [\"stop-color\"];\nconst _hoisted_7 = [\"stop-color\"];\nconst _hoisted_8 = [\"id\"];\nconst _hoisted_9 = {\n id: \"Illustrations\",\n stroke: \"none\",\n \"stroke-width\": \"1\",\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n};\nconst _hoisted_10 = {\n id: \"B-type\",\n transform: \"translate(-1268.000000, -535.000000)\"\n};\nconst _hoisted_11 = {\n id: \"Group-2\",\n transform: \"translate(1268.000000, 535.000000)\"\n};\nconst _hoisted_12 = [\"fill\"];\nconst _hoisted_13 = [\"fill\"];\nconst _hoisted_14 = {\n id: \"Group-Copy\",\n transform: \"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n};\nconst _hoisted_15 = [\"fill\"];\nconst _hoisted_16 = [\"fill\"];\nconst _hoisted_17 = [\"fill\"];\nconst _hoisted_18 = [\"fill\"];\nconst _hoisted_19 = [\"fill\"];\nconst _hoisted_20 = {\n id: \"Rectangle-Copy-17\",\n transform: \"translate(53.000000, 45.000000)\"\n};\nconst _hoisted_21 = [\"fill\", \"xlink:href\"];\nconst _hoisted_22 = [\"fill\", \"mask\"];\nconst _hoisted_23 = [\"fill\"];\nconst __default__ = defineComponent({\n name: \"ImgEmpty\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n setup(__props) {\n const ns = useNamespace(\"empty\");\n const id = useId();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, [\n createElementVNode(\"defs\", null, [\n createElementVNode(\"linearGradient\", {\n id: `linearGradient-1-${unref(id)}`,\n x1: \"38.8503086%\",\n y1: \"0%\",\n x2: \"61.1496914%\",\n y2: \"100%\"\n }, [\n createElementVNode(\"stop\", {\n \"stop-color\": `var(${unref(ns).cssVarBlockName(\"fill-color-1\")})`,\n offset: \"0%\"\n }, null, 8, _hoisted_3),\n createElementVNode(\"stop\", {\n \"stop-color\": `var(${unref(ns).cssVarBlockName(\"fill-color-4\")})`,\n offset: \"100%\"\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_2),\n createElementVNode(\"linearGradient\", {\n id: `linearGradient-2-${unref(id)}`,\n x1: \"0%\",\n y1: \"9.5%\",\n x2: \"100%\",\n y2: \"90.5%\"\n }, [\n createElementVNode(\"stop\", {\n \"stop-color\": `var(${unref(ns).cssVarBlockName(\"fill-color-1\")})`,\n offset: \"0%\"\n }, null, 8, _hoisted_6),\n createElementVNode(\"stop\", {\n \"stop-color\": `var(${unref(ns).cssVarBlockName(\"fill-color-6\")})`,\n offset: \"100%\"\n }, null, 8, _hoisted_7)\n ], 8, _hoisted_5),\n createElementVNode(\"rect\", {\n id: `path-3-${unref(id)}`,\n x: \"0\",\n y: \"0\",\n width: \"17\",\n height: \"36\"\n }, null, 8, _hoisted_8)\n ]),\n createElementVNode(\"g\", _hoisted_9, [\n createElementVNode(\"g\", _hoisted_10, [\n createElementVNode(\"g\", _hoisted_11, [\n createElementVNode(\"path\", {\n id: \"Oval-Copy-2\",\n d: \"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-3\")})`\n }, null, 8, _hoisted_12),\n createElementVNode(\"polygon\", {\n id: \"Rectangle-Copy-14\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-7\")})`,\n transform: \"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \",\n points: \"13 58 53 58 42 45 2 45\"\n }, null, 8, _hoisted_13),\n createElementVNode(\"g\", _hoisted_14, [\n createElementVNode(\"polygon\", {\n id: \"Rectangle-Copy-10\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-7\")})`,\n transform: \"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \",\n points: \"2.84078316e-14 3 18 3 23 7 5 7\"\n }, null, 8, _hoisted_15),\n createElementVNode(\"polygon\", {\n id: \"Rectangle-Copy-11\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-5\")})`,\n points: \"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n }, null, 8, _hoisted_16),\n createElementVNode(\"rect\", {\n id: \"Rectangle-Copy-12\",\n fill: `url(#linearGradient-1-${unref(id)})`,\n transform: \"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \",\n x: \"38\",\n y: \"7\",\n width: \"17\",\n height: \"36\"\n }, null, 8, _hoisted_17),\n createElementVNode(\"polygon\", {\n id: \"Rectangle-Copy-13\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-2\")})`,\n transform: \"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \",\n points: \"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n }, null, 8, _hoisted_18)\n ]),\n createElementVNode(\"rect\", {\n id: \"Rectangle-Copy-15\",\n fill: `url(#linearGradient-2-${unref(id)})`,\n x: \"13\",\n y: \"45\",\n width: \"40\",\n height: \"36\"\n }, null, 8, _hoisted_19),\n createElementVNode(\"g\", _hoisted_20, [\n createElementVNode(\"use\", {\n id: \"Mask\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-8\")})`,\n transform: \"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \",\n \"xlink:href\": `#path-3-${unref(id)}`\n }, null, 8, _hoisted_21),\n createElementVNode(\"polygon\", {\n id: \"Rectangle-Copy\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-9\")})`,\n mask: `url(#mask-4-${unref(id)})`,\n transform: \"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \",\n points: \"7 0 24 0 20 18 7 16.5\"\n }, null, 8, _hoisted_22)\n ]),\n createElementVNode(\"polygon\", {\n id: \"Rectangle-Copy-18\",\n fill: `var(${unref(ns).cssVarBlockName(\"fill-color-2\")})`,\n transform: \"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \",\n points: \"62 45 79 45 70 58 53 58\"\n }, null, 8, _hoisted_23)\n ])\n ])\n ])\n ]);\n };\n }\n});\nvar ImgEmpty = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"img-empty.vue\"]]);\n\nexport { ImgEmpty as default };\n//# sourceMappingURL=img-empty.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst emptyProps = buildProps({\n image: {\n type: String,\n default: \"\"\n },\n imageSize: Number,\n description: {\n type: String,\n default: \"\"\n }\n});\n\nexport { emptyProps };\n//# sourceMappingURL=empty.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, normalizeStyle, renderSlot, createVNode, toDisplayString, createCommentVNode } from 'vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport ImgEmpty from './img-empty.mjs';\nimport { emptyProps } from './empty.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst _hoisted_1 = [\"src\"];\nconst _hoisted_2 = { key: 1 };\nconst __default__ = defineComponent({\n name: \"ElEmpty\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: emptyProps,\n setup(__props) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"empty\");\n const emptyDescription = computed(() => props.description || t(\"el.table.emptyText\"));\n const imageStyle = computed(() => ({\n width: addUnit(props.imageSize)\n }));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"image\")),\n style: normalizeStyle(unref(imageStyle))\n }, [\n _ctx.image ? (openBlock(), createElementBlock(\"img\", {\n key: 0,\n src: _ctx.image,\n ondragstart: \"return false\"\n }, null, 8, _hoisted_1)) : renderSlot(_ctx.$slots, \"image\", { key: 1 }, () => [\n createVNode(ImgEmpty)\n ])\n ], 6),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"description\"))\n }, [\n _ctx.$slots.description ? renderSlot(_ctx.$slots, \"description\", { key: 0 }) : (openBlock(), createElementBlock(\"p\", _hoisted_2, toDisplayString(unref(emptyDescription)), 1))\n ], 2),\n _ctx.$slots.default ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"bottom\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar Empty = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"empty.vue\"]]);\n\nexport { Empty as default };\n//# sourceMappingURL=empty2.mjs.map\n","import '../../utils/index.mjs';\nimport Empty from './src/empty2.mjs';\nexport { emptyProps } from './src/empty.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElEmpty = withInstall(Empty);\n\nexport { ElEmpty, ElEmpty as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { componentSizes } from '../../../constants/size.mjs';\nimport { isArray, isString } from '@vue/shared';\nimport { isBoolean } from '../../../utils/types.mjs';\n\nconst formMetaProps = buildProps({\n size: {\n type: String,\n values: componentSizes\n },\n disabled: Boolean\n});\nconst formProps = buildProps({\n ...formMetaProps,\n model: Object,\n rules: {\n type: definePropType(Object)\n },\n labelPosition: {\n type: String,\n values: [\"left\", \"right\", \"top\"],\n default: \"right\"\n },\n requireAsteriskPosition: {\n type: String,\n values: [\"left\", \"right\"],\n default: \"left\"\n },\n labelWidth: {\n type: [String, Number],\n default: \"\"\n },\n labelSuffix: {\n type: String,\n default: \"\"\n },\n inline: Boolean,\n inlineMessage: Boolean,\n statusIcon: Boolean,\n showMessage: {\n type: Boolean,\n default: true\n },\n validateOnRuleChange: {\n type: Boolean,\n default: true\n },\n hideRequiredAsterisk: Boolean,\n scrollToError: Boolean,\n scrollIntoViewOptions: {\n type: [Object, Boolean]\n }\n});\nconst formEmits = {\n validate: (prop, isValid, message) => (isArray(prop) || isString(prop)) && isBoolean(isValid) && isString(message)\n};\n\nexport { formEmits, formMetaProps, formProps };\n//# sourceMappingURL=form.mjs.map\n","import { ref, computed } from 'vue';\nimport '../../../utils/index.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { castArray } from 'lodash-unified';\n\nconst SCOPE = \"ElForm\";\nfunction useFormLabelWidth() {\n const potentialLabelWidthArr = ref([]);\n const autoLabelWidth = computed(() => {\n if (!potentialLabelWidthArr.value.length)\n return \"0\";\n const max = Math.max(...potentialLabelWidthArr.value);\n return max ? `${max}px` : \"\";\n });\n function getLabelWidthIndex(width) {\n const index = potentialLabelWidthArr.value.indexOf(width);\n if (index === -1 && autoLabelWidth.value === \"0\") {\n debugWarn(SCOPE, `unexpected width ${width}`);\n }\n return index;\n }\n function registerLabelWidth(val, oldVal) {\n if (val && oldVal) {\n const index = getLabelWidthIndex(oldVal);\n potentialLabelWidthArr.value.splice(index, 1, val);\n } else if (val) {\n potentialLabelWidthArr.value.push(val);\n }\n }\n function deregisterLabelWidth(val) {\n const index = getLabelWidthIndex(val);\n if (index > -1) {\n potentialLabelWidthArr.value.splice(index, 1);\n }\n }\n return {\n autoLabelWidth,\n registerLabelWidth,\n deregisterLabelWidth\n };\n}\nconst filterFields = (fields, props) => {\n const normalized = castArray(props);\n return normalized.length > 0 ? fields.filter((field) => field.prop && normalized.includes(field.prop)) : fields;\n};\n\nexport { filterFields, useFormLabelWidth };\n//# sourceMappingURL=utils.mjs.map\n","import { defineComponent, computed, watch, provide, reactive, toRefs, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport './hooks/index.mjs';\nimport { formContextKey } from './constants.mjs';\nimport { formProps, formEmits } from './form.mjs';\nimport { filterFields, useFormLabelWidth } from './utils.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useFormSize } from './hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isFunction } from '@vue/shared';\n\nconst COMPONENT_NAME = \"ElForm\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: formProps,\n emits: formEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const fields = [];\n const formSize = useFormSize();\n const ns = useNamespace(\"form\");\n const formClasses = computed(() => {\n const { labelPosition, inline } = props;\n return [\n ns.b(),\n ns.m(formSize.value || \"default\"),\n {\n [ns.m(`label-${labelPosition}`)]: labelPosition,\n [ns.m(\"inline\")]: inline\n }\n ];\n });\n const getField = (prop) => {\n return fields.find((field) => field.prop === prop);\n };\n const addField = (field) => {\n fields.push(field);\n };\n const removeField = (field) => {\n if (field.prop) {\n fields.splice(fields.indexOf(field), 1);\n }\n };\n const resetFields = (properties = []) => {\n if (!props.model) {\n debugWarn(COMPONENT_NAME, \"model is required for resetFields to work.\");\n return;\n }\n filterFields(fields, properties).forEach((field) => field.resetField());\n };\n const clearValidate = (props2 = []) => {\n filterFields(fields, props2).forEach((field) => field.clearValidate());\n };\n const isValidatable = computed(() => {\n const hasModel = !!props.model;\n if (!hasModel) {\n debugWarn(COMPONENT_NAME, \"model is required for validate to work.\");\n }\n return hasModel;\n });\n const obtainValidateFields = (props2) => {\n if (fields.length === 0)\n return [];\n const filteredFields = filterFields(fields, props2);\n if (!filteredFields.length) {\n debugWarn(COMPONENT_NAME, \"please pass correct props!\");\n return [];\n }\n return filteredFields;\n };\n const validate = async (callback) => validateField(void 0, callback);\n const doValidateField = async (props2 = []) => {\n if (!isValidatable.value)\n return false;\n const fields2 = obtainValidateFields(props2);\n if (fields2.length === 0)\n return true;\n let validationErrors = {};\n for (const field of fields2) {\n try {\n await field.validate(\"\");\n } catch (fields3) {\n validationErrors = {\n ...validationErrors,\n ...fields3\n };\n }\n }\n if (Object.keys(validationErrors).length === 0)\n return true;\n return Promise.reject(validationErrors);\n };\n const validateField = async (modelProps = [], callback) => {\n const shouldThrow = !isFunction(callback);\n try {\n const result = await doValidateField(modelProps);\n if (result === true) {\n await (callback == null ? void 0 : callback(result));\n }\n return result;\n } catch (e) {\n if (e instanceof Error)\n throw e;\n const invalidFields = e;\n if (props.scrollToError) {\n scrollToField(Object.keys(invalidFields)[0]);\n }\n await (callback == null ? void 0 : callback(false, invalidFields));\n return shouldThrow && Promise.reject(invalidFields);\n }\n };\n const scrollToField = (prop) => {\n var _a;\n const field = filterFields(fields, prop)[0];\n if (field) {\n (_a = field.$el) == null ? void 0 : _a.scrollIntoView(props.scrollIntoViewOptions);\n }\n };\n watch(() => props.rules, () => {\n if (props.validateOnRuleChange) {\n validate().catch((err) => debugWarn(err));\n }\n }, { deep: true });\n provide(formContextKey, reactive({\n ...toRefs(props),\n emit,\n resetFields,\n clearValidate,\n validateField,\n getField,\n addField,\n removeField,\n ...useFormLabelWidth()\n }));\n expose({\n validate,\n validateField,\n resetFields,\n clearValidate,\n scrollToField,\n fields\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"form\", {\n class: normalizeClass(unref(formClasses))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar Form = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"form.vue\"]]);\n\nexport { Form as default };\n//# sourceMappingURL=form2.mjs.map\n","function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format(template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var i = 0;\n var len = args.length;\n\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n\n if (typeof template === 'string') {\n var str = template.replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n\n if (i >= len) {\n return x;\n }\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n break;\n\n default:\n return x;\n }\n });\n return str;\n }\n\n return template;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n\n return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors || []);\n total++;\n\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n\n var original = index;\n index = index + 1;\n\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k] || []);\n });\n return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n\n function AsyncValidationError(errors, fields) {\n var _this;\n\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n };\n\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n\n _pending[\"catch\"](function (e) {\n return e;\n });\n\n return _pending;\n }\n\n var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n }\n };\n\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\n\nfunction isErrorObj(obj) {\n return !!(obj && obj.message !== undefined);\n}\n\nfunction getValue(value, path) {\n var v = value;\n\n for (var i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n\n v = v[path[i]];\n }\n\n return v;\n}\n\nfunction complementError(rule, source) {\n return function (oe) {\n var fieldValue;\n\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[oe.field || rule.fullField];\n }\n\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue: fieldValue,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n\n return target;\n}\n\nvar required$1 = function required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = (function () {\n if (urlReg) {\n return urlReg;\n }\n\n var word = '[a-fA-F\\\\d:]';\n\n var b = function b(options) {\n return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n };\n\n var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n var v6seg = '[a-fA-F\\\\d]{1,4}';\n var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n var v4exact = new RegExp(\"^\" + v4 + \"$\");\n var v6exact = new RegExp(\"^\" + v6 + \"$\");\n\n var ip = function ip(options) {\n return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n };\n\n ip.v4 = function (options) {\n return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n };\n\n ip.v6 = function (options) {\n return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n };\n\n var protocol = \"(?:(?:[a-z]+:)?//)\";\n var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n var ipv4 = ip.v4().source;\n var ipv6 = ip.v6().source;\n var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n var port = '(?::\\\\d{2,5})?';\n var path = '(?:[/?#][^\\\\s\"]*)?';\n var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n return urlReg;\n});\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n },\n url: function url(value) {\n return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern$2.hex);\n }\n};\n\nvar type$1 = function type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required$1(rule, value, source, errors, options);\n return;\n }\n\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n};\n\nvar range = function range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n\n if (!key) {\n return false;\n }\n\n if (arr) {\n val = value.length;\n }\n\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n};\n\nvar ENUM$1 = 'enum';\n\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n\n if (rule[ENUM$1].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n }\n};\n\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n};\n\nvar rules = {\n required: required$1,\n whitespace: whitespace,\n type: type$1,\n range: range,\n \"enum\": enumerable$1,\n pattern: pattern$1\n};\n\nvar string = function string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'string');\n\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar method = function method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar number = function number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar regexp = function regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar integer = function integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar array = function array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'array');\n\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar object = function object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar ENUM = 'enum';\n\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar pattern = function pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar date = function date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar required = function required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\n\nvar type = function type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, ruleType);\n\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar any = function any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n }\n\n callback(errors);\n};\n\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required,\n any: any\n};\n\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n // ========================= Static =========================\n // ======================== Instance ========================\n function Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n }\n\n var _proto = Schema.prototype;\n\n _proto.define = function define(rules) {\n var _this = this;\n\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n\n this.rules = {};\n Object.keys(rules).forEach(function (name) {\n var item = rules[name];\n _this.rules[name] = Array.isArray(item) ? item : [item];\n });\n };\n\n _proto.messages = function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n\n return this._messages;\n };\n\n _proto.validate = function validate(source_, o, oc) {\n var _this2 = this;\n\n if (o === void 0) {\n o = {};\n }\n\n if (oc === void 0) {\n oc = function oc() {};\n }\n\n var source = source_;\n var options = o;\n var callback = oc;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n\n return Promise.resolve(source);\n }\n\n function complete(results) {\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n callback(errors, fields);\n }\n }\n\n if (options.messages) {\n var messages$1 = this.messages();\n\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n var arr = _this2.rules[z];\n var value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n\n value = source[z] = rule.transform(value);\n }\n\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n } // Fill validator. Skip if nothing need to validate\n\n\n rule.validator = _this2.getValidationMethod(rule);\n\n if (!rule.validator) {\n return;\n }\n\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this2.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n\n function addFullField(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + \".\" + key,\n fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n });\n }\n\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n\n var errorList = Array.isArray(e) ? e : [e];\n\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n } // Fill error info\n\n\n var filledErrors = errorList.map(complementError(rule, source));\n\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = [].concat(rule.message).map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n\n return doIt(filledErrors);\n }\n\n var fieldsSchema = {};\n\n if (rule.defaultField) {\n Object.keys(data.value).map(function (key) {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n var paredFieldsSchema = {};\n Object.keys(fieldsSchema).forEach(function (field) {\n var fieldSchema = fieldsSchema[field];\n var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n });\n var schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n\n if (filledErrors && filledErrors.length) {\n finalErrors.push.apply(finalErrors, filledErrors);\n }\n\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n var res;\n\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n if (!options.suppressValidatorError) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n\n cb(error.message);\n }\n\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n }, source);\n };\n\n _proto.getType = function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n\n return rule.type || 'string';\n };\n\n _proto.getValidationMethod = function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n\n return validators[this.getType(rule)] || undefined;\n };\n\n return Schema;\n}();\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n\n validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport { Schema as default };\n//# sourceMappingURL=index.js.map\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","import '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { componentSizes } from '../../../constants/size.mjs';\n\nconst formItemValidateStates = [\n \"\",\n \"error\",\n \"validating\",\n \"success\"\n];\nconst formItemProps = buildProps({\n label: String,\n labelWidth: {\n type: [String, Number],\n default: \"\"\n },\n prop: {\n type: definePropType([String, Array])\n },\n required: {\n type: Boolean,\n default: void 0\n },\n rules: {\n type: definePropType([Object, Array])\n },\n error: String,\n validateStatus: {\n type: String,\n values: formItemValidateStates\n },\n for: String,\n inlineMessage: {\n type: [String, Boolean],\n default: \"\"\n },\n showMessage: {\n type: Boolean,\n default: true\n },\n size: {\n type: String,\n values: componentSizes\n }\n});\n\nexport { formItemProps, formItemValidateStates };\n//# sourceMappingURL=form-item.mjs.map\n","import { defineComponent, inject, ref, nextTick, onMounted, onBeforeUnmount, onUpdated, watch, computed, createVNode, Fragment } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { formContextKey, formItemContextKey } from './constants.mjs';\nimport { throwError } from '../../../utils/error.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst COMPONENT_NAME = \"ElLabelWrap\";\nvar FormLabelWrap = defineComponent({\n name: COMPONENT_NAME,\n props: {\n isAutoWidth: Boolean,\n updateAll: Boolean\n },\n setup(props, {\n slots\n }) {\n const formContext = inject(formContextKey, void 0);\n const formItemContext = inject(formItemContextKey);\n if (!formItemContext)\n throwError(COMPONENT_NAME, \"usage: \");\n const ns = useNamespace(\"form\");\n const el = ref();\n const computedWidth = ref(0);\n const getLabelWidth = () => {\n var _a;\n if ((_a = el.value) == null ? void 0 : _a.firstElementChild) {\n const width = window.getComputedStyle(el.value.firstElementChild).width;\n return Math.ceil(Number.parseFloat(width));\n } else {\n return 0;\n }\n };\n const updateLabelWidth = (action = \"update\") => {\n nextTick(() => {\n if (slots.default && props.isAutoWidth) {\n if (action === \"update\") {\n computedWidth.value = getLabelWidth();\n } else if (action === \"remove\") {\n formContext == null ? void 0 : formContext.deregisterLabelWidth(computedWidth.value);\n }\n }\n });\n };\n const updateLabelWidthFn = () => updateLabelWidth(\"update\");\n onMounted(() => {\n updateLabelWidthFn();\n });\n onBeforeUnmount(() => {\n updateLabelWidth(\"remove\");\n });\n onUpdated(() => updateLabelWidthFn());\n watch(computedWidth, (val, oldVal) => {\n if (props.updateAll) {\n formContext == null ? void 0 : formContext.registerLabelWidth(val, oldVal);\n }\n });\n useResizeObserver(computed(() => {\n var _a, _b;\n return (_b = (_a = el.value) == null ? void 0 : _a.firstElementChild) != null ? _b : null;\n }), updateLabelWidthFn);\n return () => {\n var _a, _b;\n if (!slots)\n return null;\n const {\n isAutoWidth\n } = props;\n if (isAutoWidth) {\n const autoLabelWidth = formContext == null ? void 0 : formContext.autoLabelWidth;\n const hasLabel = formItemContext == null ? void 0 : formItemContext.hasLabel;\n const style = {};\n if (hasLabel && autoLabelWidth && autoLabelWidth !== \"auto\") {\n const marginWidth = Math.max(0, Number.parseInt(autoLabelWidth, 10) - computedWidth.value);\n const marginPosition = formContext.labelPosition === \"left\" ? \"marginRight\" : \"marginLeft\";\n if (marginWidth) {\n style[marginPosition] = `${marginWidth}px`;\n }\n }\n return createVNode(\"div\", {\n \"ref\": el,\n \"class\": [ns.be(\"item\", \"label-wrap\")],\n \"style\": style\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n } else {\n return createVNode(Fragment, {\n \"ref\": el\n }, [(_b = slots.default) == null ? void 0 : _b.call(slots)]);\n }\n };\n }\n});\n\nexport { FormLabelWrap as default };\n//# sourceMappingURL=form-label-wrap.mjs.map\n","import { defineComponent, useSlots, inject, ref, computed, nextTick, watch, reactive, toRefs, provide, onMounted, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx, createBlock, resolveDynamicComponent, normalizeStyle, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, TransitionGroup } from 'vue';\nimport AsyncValidator from 'async-validator';\nimport { castArray, clone } from 'lodash-unified';\nimport { refDebounced } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport './hooks/index.mjs';\nimport { formItemProps } from './form-item.mjs';\nimport FormLabelWrap from './form-label-wrap.mjs';\nimport { formContextKey, formItemContextKey } from './constants.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useFormSize } from './hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\nimport { isString, isFunction } from '@vue/shared';\nimport { getProp } from '../../../utils/objects.mjs';\n\nconst _hoisted_1 = [\"role\", \"aria-labelledby\"];\nconst __default__ = defineComponent({\n name: \"ElFormItem\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: formItemProps,\n setup(__props, { expose }) {\n const props = __props;\n const slots = useSlots();\n const formContext = inject(formContextKey, void 0);\n const parentFormItemContext = inject(formItemContextKey, void 0);\n const _size = useFormSize(void 0, { formItem: false });\n const ns = useNamespace(\"form-item\");\n const labelId = useId().value;\n const inputIds = ref([]);\n const validateState = ref(\"\");\n const validateStateDebounced = refDebounced(validateState, 100);\n const validateMessage = ref(\"\");\n const formItemRef = ref();\n let initialValue = void 0;\n let isResettingField = false;\n const labelStyle = computed(() => {\n if ((formContext == null ? void 0 : formContext.labelPosition) === \"top\") {\n return {};\n }\n const labelWidth = addUnit(props.labelWidth || (formContext == null ? void 0 : formContext.labelWidth) || \"\");\n if (labelWidth)\n return { width: labelWidth };\n return {};\n });\n const contentStyle = computed(() => {\n if ((formContext == null ? void 0 : formContext.labelPosition) === \"top\" || (formContext == null ? void 0 : formContext.inline)) {\n return {};\n }\n if (!props.label && !props.labelWidth && isNested) {\n return {};\n }\n const labelWidth = addUnit(props.labelWidth || (formContext == null ? void 0 : formContext.labelWidth) || \"\");\n if (!props.label && !slots.label) {\n return { marginLeft: labelWidth };\n }\n return {};\n });\n const formItemClasses = computed(() => [\n ns.b(),\n ns.m(_size.value),\n ns.is(\"error\", validateState.value === \"error\"),\n ns.is(\"validating\", validateState.value === \"validating\"),\n ns.is(\"success\", validateState.value === \"success\"),\n ns.is(\"required\", isRequired.value || props.required),\n ns.is(\"no-asterisk\", formContext == null ? void 0 : formContext.hideRequiredAsterisk),\n (formContext == null ? void 0 : formContext.requireAsteriskPosition) === \"right\" ? \"asterisk-right\" : \"asterisk-left\",\n { [ns.m(\"feedback\")]: formContext == null ? void 0 : formContext.statusIcon }\n ]);\n const _inlineMessage = computed(() => isBoolean(props.inlineMessage) ? props.inlineMessage : (formContext == null ? void 0 : formContext.inlineMessage) || false);\n const validateClasses = computed(() => [\n ns.e(\"error\"),\n { [ns.em(\"error\", \"inline\")]: _inlineMessage.value }\n ]);\n const propString = computed(() => {\n if (!props.prop)\n return \"\";\n return isString(props.prop) ? props.prop : props.prop.join(\".\");\n });\n const hasLabel = computed(() => {\n return !!(props.label || slots.label);\n });\n const labelFor = computed(() => {\n return props.for || (inputIds.value.length === 1 ? inputIds.value[0] : void 0);\n });\n const isGroup = computed(() => {\n return !labelFor.value && hasLabel.value;\n });\n const isNested = !!parentFormItemContext;\n const fieldValue = computed(() => {\n const model = formContext == null ? void 0 : formContext.model;\n if (!model || !props.prop) {\n return;\n }\n return getProp(model, props.prop).value;\n });\n const normalizedRules = computed(() => {\n const { required } = props;\n const rules = [];\n if (props.rules) {\n rules.push(...castArray(props.rules));\n }\n const formRules = formContext == null ? void 0 : formContext.rules;\n if (formRules && props.prop) {\n const _rules = getProp(formRules, props.prop).value;\n if (_rules) {\n rules.push(...castArray(_rules));\n }\n }\n if (required !== void 0) {\n const requiredRules = rules.map((rule, i) => [rule, i]).filter(([rule]) => Object.keys(rule).includes(\"required\"));\n if (requiredRules.length > 0) {\n for (const [rule, i] of requiredRules) {\n if (rule.required === required)\n continue;\n rules[i] = { ...rule, required };\n }\n } else {\n rules.push({ required });\n }\n }\n return rules;\n });\n const validateEnabled = computed(() => normalizedRules.value.length > 0);\n const getFilteredRule = (trigger) => {\n const rules = normalizedRules.value;\n return rules.filter((rule) => {\n if (!rule.trigger || !trigger)\n return true;\n if (Array.isArray(rule.trigger)) {\n return rule.trigger.includes(trigger);\n } else {\n return rule.trigger === trigger;\n }\n }).map(({ trigger: trigger2, ...rule }) => rule);\n };\n const isRequired = computed(() => normalizedRules.value.some((rule) => rule.required));\n const shouldShowError = computed(() => {\n var _a;\n return validateStateDebounced.value === \"error\" && props.showMessage && ((_a = formContext == null ? void 0 : formContext.showMessage) != null ? _a : true);\n });\n const currentLabel = computed(() => `${props.label || \"\"}${(formContext == null ? void 0 : formContext.labelSuffix) || \"\"}`);\n const setValidationState = (state) => {\n validateState.value = state;\n };\n const onValidationFailed = (error) => {\n var _a, _b;\n const { errors, fields } = error;\n if (!errors || !fields) {\n console.error(error);\n }\n setValidationState(\"error\");\n validateMessage.value = errors ? (_b = (_a = errors == null ? void 0 : errors[0]) == null ? void 0 : _a.message) != null ? _b : `${props.prop} is required` : \"\";\n formContext == null ? void 0 : formContext.emit(\"validate\", props.prop, false, validateMessage.value);\n };\n const onValidationSucceeded = () => {\n setValidationState(\"success\");\n formContext == null ? void 0 : formContext.emit(\"validate\", props.prop, true, \"\");\n };\n const doValidate = async (rules) => {\n const modelName = propString.value;\n const validator = new AsyncValidator({\n [modelName]: rules\n });\n return validator.validate({ [modelName]: fieldValue.value }, { firstFields: true }).then(() => {\n onValidationSucceeded();\n return true;\n }).catch((err) => {\n onValidationFailed(err);\n return Promise.reject(err);\n });\n };\n const validate = async (trigger, callback) => {\n if (isResettingField || !props.prop) {\n return false;\n }\n const hasCallback = isFunction(callback);\n if (!validateEnabled.value) {\n callback == null ? void 0 : callback(false);\n return false;\n }\n const rules = getFilteredRule(trigger);\n if (rules.length === 0) {\n callback == null ? void 0 : callback(true);\n return true;\n }\n setValidationState(\"validating\");\n return doValidate(rules).then(() => {\n callback == null ? void 0 : callback(true);\n return true;\n }).catch((err) => {\n const { fields } = err;\n callback == null ? void 0 : callback(false, fields);\n return hasCallback ? false : Promise.reject(fields);\n });\n };\n const clearValidate = () => {\n setValidationState(\"\");\n validateMessage.value = \"\";\n isResettingField = false;\n };\n const resetField = async () => {\n const model = formContext == null ? void 0 : formContext.model;\n if (!model || !props.prop)\n return;\n const computedValue = getProp(model, props.prop);\n isResettingField = true;\n computedValue.value = clone(initialValue);\n await nextTick();\n clearValidate();\n isResettingField = false;\n };\n const addInputId = (id) => {\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id);\n }\n };\n const removeInputId = (id) => {\n inputIds.value = inputIds.value.filter((listId) => listId !== id);\n };\n watch(() => props.error, (val) => {\n validateMessage.value = val || \"\";\n setValidationState(val ? \"error\" : \"\");\n }, { immediate: true });\n watch(() => props.validateStatus, (val) => setValidationState(val || \"\"));\n const context = reactive({\n ...toRefs(props),\n $el: formItemRef,\n size: _size,\n validateState,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n fieldValue,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate\n });\n provide(formItemContextKey, context);\n onMounted(() => {\n if (props.prop) {\n formContext == null ? void 0 : formContext.addField(context);\n initialValue = clone(fieldValue.value);\n }\n });\n onBeforeUnmount(() => {\n formContext == null ? void 0 : formContext.removeField(context);\n });\n expose({\n size: _size,\n validateMessage,\n validateState,\n validate,\n clearValidate,\n resetField\n });\n return (_ctx, _cache) => {\n var _a;\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"formItemRef\",\n ref: formItemRef,\n class: normalizeClass(unref(formItemClasses)),\n role: unref(isGroup) ? \"group\" : void 0,\n \"aria-labelledby\": unref(isGroup) ? unref(labelId) : void 0\n }, [\n createVNode(unref(FormLabelWrap), {\n \"is-auto-width\": unref(labelStyle).width === \"auto\",\n \"update-all\": ((_a = unref(formContext)) == null ? void 0 : _a.labelWidth) === \"auto\"\n }, {\n default: withCtx(() => [\n unref(hasLabel) ? (openBlock(), createBlock(resolveDynamicComponent(unref(labelFor) ? \"label\" : \"div\"), {\n key: 0,\n id: unref(labelId),\n for: unref(labelFor),\n class: normalizeClass(unref(ns).e(\"label\")),\n style: normalizeStyle(unref(labelStyle))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"label\", { label: unref(currentLabel) }, () => [\n createTextVNode(toDisplayString(unref(currentLabel)), 1)\n ])\n ]),\n _: 3\n }, 8, [\"id\", \"for\", \"class\", \"style\"])) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"is-auto-width\", \"update-all\"]),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"content\")),\n style: normalizeStyle(unref(contentStyle))\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(TransitionGroup, {\n name: `${unref(ns).namespace.value}-zoom-in-top`\n }, {\n default: withCtx(() => [\n unref(shouldShowError) ? renderSlot(_ctx.$slots, \"error\", {\n key: 0,\n error: validateMessage.value\n }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(validateClasses))\n }, toDisplayString(validateMessage.value), 3)\n ]) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"name\"])\n ], 6)\n ], 10, _hoisted_1);\n };\n }\n});\nvar FormItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"form-item.vue\"]]);\n\nexport { FormItem as default };\n//# sourceMappingURL=form-item2.mjs.map\n","import '../../utils/index.mjs';\nimport Form from './src/form2.mjs';\nimport FormItem from './src/form-item2.mjs';\nexport { formEmits, formMetaProps, formProps } from './src/form.mjs';\nexport { formItemProps, formItemValidateStates } from './src/form-item.mjs';\nimport './src/types.mjs';\nexport { formContextKey, formItemContextKey } from './src/constants.mjs';\nimport './src/hooks/index.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\nexport { useDisabled, useFormDisabled, useFormSize, useSize } from './src/hooks/use-form-common-props.mjs';\nexport { useFormItem, useFormItemInputId } from './src/hooks/use-form-item.mjs';\n\nconst ElForm = withInstall(Form, {\n FormItem\n});\nconst ElFormItem = withNoopInstall(FormItem);\n\nexport { ElForm, ElFormItem, ElForm as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst imageViewerProps = buildProps({\n urlList: {\n type: definePropType(Array),\n default: () => mutable([])\n },\n zIndex: {\n type: Number\n },\n initialIndex: {\n type: Number,\n default: 0\n },\n infinite: {\n type: Boolean,\n default: true\n },\n hideOnClickModal: Boolean,\n teleported: Boolean,\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n zoomRate: {\n type: Number,\n default: 1.2\n },\n minScale: {\n type: Number,\n default: 0.2\n },\n maxScale: {\n type: Number,\n default: 7\n },\n crossorigin: {\n type: definePropType(String)\n }\n});\nconst imageViewerEmits = {\n close: () => true,\n switch: (index) => isNumber(index),\n rotate: (deg) => isNumber(deg)\n};\n\nexport { imageViewerEmits, imageViewerProps };\n//# sourceMappingURL=image-viewer.mjs.map\n","import { defineComponent, markRaw, ref, effectScope, shallowRef, computed, watch, nextTick, onMounted, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, createElementVNode, normalizeClass, unref, normalizeStyle, withModifiers, createCommentVNode, createElementBlock, Fragment, resolveDynamicComponent, renderList, withDirectives, vShow, renderSlot } from 'vue';\nimport { useEventListener } from '@vueuse/core';\nimport { throttle } from 'lodash-unified';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { FullScreen, ScaleToOriginal, Close, ArrowLeft, ArrowRight, ZoomOut, ZoomIn, RefreshLeft, RefreshRight } from '@element-plus/icons-vue';\nimport { imageViewerProps, imageViewerEmits } from './image-viewer.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useZIndex } from '../../../hooks/use-z-index/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { keysOf } from '../../../utils/objects.mjs';\n\nconst _hoisted_1 = [\"src\", \"crossorigin\"];\nconst __default__ = defineComponent({\n name: \"ElImageViewer\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: imageViewerProps,\n emits: imageViewerEmits,\n setup(__props, { expose, emit }) {\n var _a;\n const props = __props;\n const modes = {\n CONTAIN: {\n name: \"contain\",\n icon: markRaw(FullScreen)\n },\n ORIGINAL: {\n name: \"original\",\n icon: markRaw(ScaleToOriginal)\n }\n };\n const { t } = useLocale();\n const ns = useNamespace(\"image-viewer\");\n const { nextZIndex } = useZIndex();\n const wrapper = ref();\n const imgRefs = ref([]);\n const scopeEventListener = effectScope();\n const loading = ref(true);\n const activeIndex = ref(props.initialIndex);\n const mode = shallowRef(modes.CONTAIN);\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false\n });\n const zIndex = ref((_a = props.zIndex) != null ? _a : nextZIndex());\n const isSingle = computed(() => {\n const { urlList } = props;\n return urlList.length <= 1;\n });\n const isFirst = computed(() => {\n return activeIndex.value === 0;\n });\n const isLast = computed(() => {\n return activeIndex.value === props.urlList.length - 1;\n });\n const currentImg = computed(() => {\n return props.urlList[activeIndex.value];\n });\n const arrowPrevKls = computed(() => [\n ns.e(\"btn\"),\n ns.e(\"prev\"),\n ns.is(\"disabled\", !props.infinite && isFirst.value)\n ]);\n const arrowNextKls = computed(() => [\n ns.e(\"btn\"),\n ns.e(\"next\"),\n ns.is(\"disabled\", !props.infinite && isLast.value)\n ]);\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value;\n let translateX = offsetX / scale;\n let translateY = offsetY / scale;\n switch (deg % 360) {\n case 90:\n case -270:\n ;\n [translateX, translateY] = [translateY, -translateX];\n break;\n case 180:\n case -180:\n ;\n [translateX, translateY] = [-translateX, -translateY];\n break;\n case 270:\n case -90:\n ;\n [translateX, translateY] = [-translateY, translateX];\n break;\n }\n const style = {\n transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,\n transition: enableTransition ? \"transform .3s\" : \"\"\n };\n if (mode.value.name === modes.CONTAIN.name) {\n style.maxWidth = style.maxHeight = \"100%\";\n }\n return style;\n });\n function hide() {\n unregisterEventListener();\n emit(\"close\");\n }\n function registerEventListener() {\n const keydownHandler = throttle((e) => {\n switch (e.code) {\n case EVENT_CODE.esc:\n props.closeOnPressEscape && hide();\n break;\n case EVENT_CODE.space:\n toggleMode();\n break;\n case EVENT_CODE.left:\n prev();\n break;\n case EVENT_CODE.up:\n handleActions(\"zoomIn\");\n break;\n case EVENT_CODE.right:\n next();\n break;\n case EVENT_CODE.down:\n handleActions(\"zoomOut\");\n break;\n }\n });\n const mousewheelHandler = throttle((e) => {\n const delta = e.deltaY || e.deltaX;\n handleActions(delta < 0 ? \"zoomIn\" : \"zoomOut\", {\n zoomRate: props.zoomRate,\n enableTransition: false\n });\n });\n scopeEventListener.run(() => {\n useEventListener(document, \"keydown\", keydownHandler);\n useEventListener(document, \"wheel\", mousewheelHandler);\n });\n }\n function unregisterEventListener() {\n scopeEventListener.stop();\n }\n function handleImgLoad() {\n loading.value = false;\n }\n function handleImgError(e) {\n loading.value = false;\n e.target.alt = t(\"el.image.error\");\n }\n function handleMouseDown(e) {\n if (loading.value || e.button !== 0 || !wrapper.value)\n return;\n transform.value.enableTransition = false;\n const { offsetX, offsetY } = transform.value;\n const startX = e.pageX;\n const startY = e.pageY;\n const dragHandler = throttle((ev) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY\n };\n });\n const removeMousemove = useEventListener(document, \"mousemove\", dragHandler);\n useEventListener(document, \"mouseup\", () => {\n removeMousemove();\n });\n e.preventDefault();\n }\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false\n };\n }\n function toggleMode() {\n if (loading.value)\n return;\n const modeNames = keysOf(modes);\n const modeValues = Object.values(modes);\n const currentMode = mode.value.name;\n const index = modeValues.findIndex((i) => i.name === currentMode);\n const nextIndex = (index + 1) % modeNames.length;\n mode.value = modes[modeNames[nextIndex]];\n reset();\n }\n function setActiveItem(index) {\n const len = props.urlList.length;\n activeIndex.value = (index + len) % len;\n }\n function prev() {\n if (isFirst.value && !props.infinite)\n return;\n setActiveItem(activeIndex.value - 1);\n }\n function next() {\n if (isLast.value && !props.infinite)\n return;\n setActiveItem(activeIndex.value + 1);\n }\n function handleActions(action, options = {}) {\n if (loading.value)\n return;\n const { minScale, maxScale } = props;\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: props.zoomRate,\n rotateDeg: 90,\n enableTransition: true,\n ...options\n };\n switch (action) {\n case \"zoomOut\":\n if (transform.value.scale > minScale) {\n transform.value.scale = Number.parseFloat((transform.value.scale / zoomRate).toFixed(3));\n }\n break;\n case \"zoomIn\":\n if (transform.value.scale < maxScale) {\n transform.value.scale = Number.parseFloat((transform.value.scale * zoomRate).toFixed(3));\n }\n break;\n case \"clockwise\":\n transform.value.deg += rotateDeg;\n emit(\"rotate\", transform.value.deg);\n break;\n case \"anticlockwise\":\n transform.value.deg -= rotateDeg;\n emit(\"rotate\", transform.value.deg);\n break;\n }\n transform.value.enableTransition = enableTransition;\n }\n watch(currentImg, () => {\n nextTick(() => {\n const $img = imgRefs.value[0];\n if (!($img == null ? void 0 : $img.complete)) {\n loading.value = true;\n }\n });\n });\n watch(activeIndex, (val) => {\n reset();\n emit(\"switch\", val);\n });\n onMounted(() => {\n var _a2, _b;\n registerEventListener();\n (_b = (_a2 = wrapper.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b.call(_a2);\n });\n expose({\n setActiveItem\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Teleport, {\n to: \"body\",\n disabled: !_ctx.teleported\n }, [\n createVNode(Transition, {\n name: \"viewer-fade\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref_key: \"wrapper\",\n ref: wrapper,\n tabindex: -1,\n class: normalizeClass(unref(ns).e(\"wrapper\")),\n style: normalizeStyle({ zIndex: zIndex.value })\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"mask\")),\n onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.hideOnClickModal && hide(), [\"self\"]))\n }, null, 2),\n createCommentVNode(\" CLOSE \"),\n createElementVNode(\"span\", {\n class: normalizeClass([unref(ns).e(\"btn\"), unref(ns).e(\"close\")]),\n onClick: hide\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n })\n ], 2),\n createCommentVNode(\" ARROW \"),\n !unref(isSingle) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(arrowPrevKls)),\n onClick: prev\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowLeft))\n ]),\n _: 1\n })\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(arrowNextKls)),\n onClick: next\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n })\n ], 2)\n ], 64)) : createCommentVNode(\"v-if\", true),\n createCommentVNode(\" ACTIONS \"),\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).e(\"btn\"), unref(ns).e(\"actions\")])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"actions__inner\"))\n }, [\n createVNode(unref(ElIcon), {\n onClick: _cache[1] || (_cache[1] = ($event) => handleActions(\"zoomOut\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(ZoomOut))\n ]),\n _: 1\n }),\n createVNode(unref(ElIcon), {\n onClick: _cache[2] || (_cache[2] = ($event) => handleActions(\"zoomIn\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(ZoomIn))\n ]),\n _: 1\n }),\n createElementVNode(\"i\", {\n class: normalizeClass(unref(ns).e(\"actions__divider\"))\n }, null, 2),\n createVNode(unref(ElIcon), { onClick: toggleMode }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(mode).icon)))\n ]),\n _: 1\n }),\n createElementVNode(\"i\", {\n class: normalizeClass(unref(ns).e(\"actions__divider\"))\n }, null, 2),\n createVNode(unref(ElIcon), {\n onClick: _cache[3] || (_cache[3] = ($event) => handleActions(\"anticlockwise\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(RefreshLeft))\n ]),\n _: 1\n }),\n createVNode(unref(ElIcon), {\n onClick: _cache[4] || (_cache[4] = ($event) => handleActions(\"clockwise\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(RefreshRight))\n ]),\n _: 1\n })\n ], 2)\n ], 2),\n createCommentVNode(\" CANVAS \"),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"canvas\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.urlList, (url, i) => {\n return withDirectives((openBlock(), createElementBlock(\"img\", {\n ref_for: true,\n ref: (el) => imgRefs.value[i] = el,\n key: url,\n src: url,\n style: normalizeStyle(unref(imgStyle)),\n class: normalizeClass(unref(ns).e(\"img\")),\n crossorigin: _ctx.crossorigin,\n onLoad: handleImgLoad,\n onError: handleImgError,\n onMousedown: handleMouseDown\n }, null, 46, _hoisted_1)), [\n [vShow, i === activeIndex.value]\n ]);\n }), 128))\n ], 2),\n renderSlot(_ctx.$slots, \"default\")\n ], 6)\n ]),\n _: 3\n })\n ], 8, [\"disabled\"]);\n };\n }\n});\nvar ImageViewer = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"image-viewer.vue\"]]);\n\nexport { ImageViewer as default };\n//# sourceMappingURL=image-viewer2.mjs.map\n","import '../../utils/index.mjs';\nimport ImageViewer from './src/image-viewer2.mjs';\nexport { imageViewerEmits, imageViewerProps } from './src/image-viewer.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElImageViewer = withInstall(ImageViewer);\n\nexport { ElImageViewer, ElImageViewer as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst imageProps = buildProps({\n hideOnClickModal: Boolean,\n src: {\n type: String,\n default: \"\"\n },\n fit: {\n type: String,\n values: [\"\", \"contain\", \"cover\", \"fill\", \"none\", \"scale-down\"],\n default: \"\"\n },\n loading: {\n type: String,\n values: [\"eager\", \"lazy\"]\n },\n lazy: Boolean,\n scrollContainer: {\n type: definePropType([String, Object])\n },\n previewSrcList: {\n type: definePropType(Array),\n default: () => mutable([])\n },\n previewTeleported: Boolean,\n zIndex: {\n type: Number\n },\n initialIndex: {\n type: Number,\n default: 0\n },\n infinite: {\n type: Boolean,\n default: true\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n zoomRate: {\n type: Number,\n default: 1.2\n },\n minScale: {\n type: Number,\n default: 0.2\n },\n maxScale: {\n type: Number,\n default: 7\n },\n crossorigin: {\n type: definePropType(String)\n }\n});\nconst imageEmits = {\n load: (evt) => evt instanceof Event,\n error: (evt) => evt instanceof Event,\n switch: (val) => isNumber(val),\n close: () => true,\n show: () => true\n};\n\nexport { imageEmits, imageProps };\n//# sourceMappingURL=image.mjs.map\n","import { defineComponent, useAttrs, ref, computed, nextTick, watch, onMounted, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, renderSlot, createElementVNode, toDisplayString, Fragment, mergeProps, createCommentVNode, createBlock, withCtx } from 'vue';\nimport { isClient, useThrottleFn, useEventListener } from '@vueuse/core';\nimport '../../../hooks/index.mjs';\nimport { ElImageViewer } from '../../image-viewer/index.mjs';\nimport '../../../utils/index.mjs';\nimport { imageProps, imageEmits } from './image.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useAttrs as useAttrs$1 } from '../../../hooks/use-attrs/index.mjs';\nimport { isInContainer } from '../../../utils/dom/position.mjs';\nimport { isElement } from '../../../utils/types.mjs';\nimport { isString } from '@vue/shared';\nimport { getScrollContainer } from '../../../utils/dom/scroll.mjs';\n\nconst _hoisted_1 = [\"src\", \"loading\", \"crossorigin\"];\nconst _hoisted_2 = { key: 0 };\nconst __default__ = defineComponent({\n name: \"ElImage\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: imageProps,\n emits: imageEmits,\n setup(__props, { emit }) {\n const props = __props;\n let prevOverflow = \"\";\n const { t } = useLocale();\n const ns = useNamespace(\"image\");\n const rawAttrs = useAttrs();\n const attrs = useAttrs$1();\n const imageSrc = ref();\n const hasLoadError = ref(false);\n const isLoading = ref(true);\n const showViewer = ref(false);\n const container = ref();\n const _scrollContainer = ref();\n const supportLoading = isClient && \"loading\" in HTMLImageElement.prototype;\n let stopScrollListener;\n let stopWheelListener;\n const imageKls = computed(() => [\n ns.e(\"inner\"),\n preview.value && ns.e(\"preview\"),\n isLoading.value && ns.is(\"loading\")\n ]);\n const containerStyle = computed(() => rawAttrs.style);\n const imageStyle = computed(() => {\n const { fit } = props;\n if (isClient && fit) {\n return { objectFit: fit };\n }\n return {};\n });\n const preview = computed(() => {\n const { previewSrcList } = props;\n return Array.isArray(previewSrcList) && previewSrcList.length > 0;\n });\n const imageIndex = computed(() => {\n const { previewSrcList, initialIndex } = props;\n let previewIndex = initialIndex;\n if (initialIndex > previewSrcList.length - 1) {\n previewIndex = 0;\n }\n return previewIndex;\n });\n const isManual = computed(() => {\n if (props.loading === \"eager\")\n return false;\n return !supportLoading && props.loading === \"lazy\" || props.lazy;\n });\n const loadImage = () => {\n if (!isClient)\n return;\n isLoading.value = true;\n hasLoadError.value = false;\n imageSrc.value = props.src;\n };\n function handleLoad(event) {\n isLoading.value = false;\n hasLoadError.value = false;\n emit(\"load\", event);\n }\n function handleError(event) {\n isLoading.value = false;\n hasLoadError.value = true;\n emit(\"error\", event);\n }\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage();\n removeLazyLoadListener();\n }\n }\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true);\n async function addLazyLoadListener() {\n var _a;\n if (!isClient)\n return;\n await nextTick();\n const { scrollContainer } = props;\n if (isElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer;\n } else if (isString(scrollContainer) && scrollContainer !== \"\") {\n _scrollContainer.value = (_a = document.querySelector(scrollContainer)) != null ? _a : void 0;\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value);\n }\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(_scrollContainer, \"scroll\", lazyLoadHandler);\n setTimeout(() => handleLazyLoad(), 100);\n }\n }\n function removeLazyLoadListener() {\n if (!isClient || !_scrollContainer.value || !lazyLoadHandler)\n return;\n stopScrollListener == null ? void 0 : stopScrollListener();\n _scrollContainer.value = void 0;\n }\n function wheelHandler(e) {\n if (!e.ctrlKey)\n return;\n if (e.deltaY < 0) {\n e.preventDefault();\n return false;\n } else if (e.deltaY > 0) {\n e.preventDefault();\n return false;\n }\n }\n function clickHandler() {\n if (!preview.value)\n return;\n stopWheelListener = useEventListener(\"wheel\", wheelHandler, {\n passive: false\n });\n prevOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n showViewer.value = true;\n emit(\"show\");\n }\n function closeViewer() {\n stopWheelListener == null ? void 0 : stopWheelListener();\n document.body.style.overflow = prevOverflow;\n showViewer.value = false;\n emit(\"close\");\n }\n function switchViewer(val) {\n emit(\"switch\", val);\n }\n watch(() => props.src, () => {\n if (isManual.value) {\n isLoading.value = true;\n hasLoadError.value = false;\n removeLazyLoadListener();\n addLazyLoadListener();\n } else {\n loadImage();\n }\n });\n onMounted(() => {\n if (isManual.value) {\n addLazyLoadListener();\n } else {\n loadImage();\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]),\n style: normalizeStyle(unref(containerStyle))\n }, [\n hasLoadError.value ? renderSlot(_ctx.$slots, \"error\", { key: 0 }, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"error\"))\n }, toDisplayString(unref(t)(\"el.image.error\")), 3)\n ]) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n imageSrc.value !== void 0 ? (openBlock(), createElementBlock(\"img\", mergeProps({ key: 0 }, unref(attrs), {\n src: imageSrc.value,\n loading: _ctx.loading,\n style: unref(imageStyle),\n class: unref(imageKls),\n crossorigin: _ctx.crossorigin,\n onClick: clickHandler,\n onLoad: handleLoad,\n onError: handleError\n }), null, 16, _hoisted_1)) : createCommentVNode(\"v-if\", true),\n isLoading.value ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"wrapper\"))\n }, [\n renderSlot(_ctx.$slots, \"placeholder\", {}, () => [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"placeholder\"))\n }, null, 2)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 64)),\n unref(preview) ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n showViewer.value ? (openBlock(), createBlock(unref(ElImageViewer), {\n key: 0,\n \"z-index\": _ctx.zIndex,\n \"initial-index\": unref(imageIndex),\n infinite: _ctx.infinite,\n \"zoom-rate\": _ctx.zoomRate,\n \"min-scale\": _ctx.minScale,\n \"max-scale\": _ctx.maxScale,\n \"url-list\": _ctx.previewSrcList,\n \"hide-on-click-modal\": _ctx.hideOnClickModal,\n teleported: _ctx.previewTeleported,\n \"close-on-press-escape\": _ctx.closeOnPressEscape,\n onClose: closeViewer,\n onSwitch: switchViewer\n }, {\n default: withCtx(() => [\n _ctx.$slots.viewer ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"viewer\")\n ])) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"z-index\", \"initial-index\", \"infinite\", \"zoom-rate\", \"min-scale\", \"max-scale\", \"url-list\", \"hide-on-click-modal\", \"teleported\", \"close-on-press-escape\"])) : createCommentVNode(\"v-if\", true)\n ], 64)) : createCommentVNode(\"v-if\", true)\n ], 6);\n };\n }\n});\nvar Image = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"image.vue\"]]);\n\nexport { Image as default };\n//# sourceMappingURL=image2.mjs.map\n","import '../../utils/index.mjs';\nimport Image from './src/image2.mjs';\nexport { imageEmits, imageProps } from './src/image.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElImage = withInstall(Image);\n\nexport { ElImage, ElImage as default };\n//# sourceMappingURL=index.mjs.map\n","import { isNil } from 'lodash-unified';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { CHANGE_EVENT, INPUT_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\n\nconst inputNumberProps = buildProps({\n id: {\n type: String,\n default: void 0\n },\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: Boolean,\n max: {\n type: Number,\n default: Number.POSITIVE_INFINITY\n },\n min: {\n type: Number,\n default: Number.NEGATIVE_INFINITY\n },\n modelValue: Number,\n readonly: Boolean,\n disabled: Boolean,\n size: useSizeProp,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: \"\",\n values: [\"\", \"right\"]\n },\n valueOnClear: {\n type: [String, Number, null],\n validator: (val) => val === null || isNumber(val) || [\"min\", \"max\"].includes(val),\n default: null\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10)\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst inputNumberEmits = {\n [CHANGE_EVENT]: (cur, prev) => prev !== cur,\n blur: (e) => e instanceof FocusEvent,\n focus: (e) => e instanceof FocusEvent,\n [INPUT_EVENT]: (val) => isNumber(val) || isNil(val),\n [UPDATE_MODEL_EVENT]: (val) => isNumber(val) || isNil(val)\n};\n\nexport { inputNumberEmits, inputNumberProps };\n//# sourceMappingURL=input-number.mjs.map\n","import { defineComponent, ref, reactive, computed, watch, onMounted, onUpdated, openBlock, createElementBlock, normalizeClass, unref, withModifiers, withDirectives, withKeys, renderSlot, createVNode, withCtx, createBlock, createCommentVNode } from 'vue';\nimport { isNil } from 'lodash-unified';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ArrowDown, Minus, ArrowUp, Plus } from '@element-plus/icons-vue';\nimport '../../../constants/index.mjs';\nimport { inputNumberProps, inputNumberEmits } from './input-number.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem } from '../../form/src/hooks/use-form-item.mjs';\nimport { isNumber, isUndefined } from '../../../utils/types.mjs';\nimport { debugWarn, throwError } from '../../../utils/error.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isString } from '@vue/shared';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nimport { vRepeatClick } from '../../../directives/repeat-click/index.mjs';\n\nconst _hoisted_1 = [\"aria-label\", \"onKeydown\"];\nconst _hoisted_2 = [\"aria-label\", \"onKeydown\"];\nconst __default__ = defineComponent({\n name: \"ElInputNumber\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: inputNumberProps,\n emits: inputNumberEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"input-number\");\n const input = ref();\n const data = reactive({\n currentValue: props.modelValue,\n userInput: null\n });\n const { formItem } = useFormItem();\n const minDisabled = computed(() => isNumber(props.modelValue) && props.modelValue <= props.min);\n const maxDisabled = computed(() => isNumber(props.modelValue) && props.modelValue >= props.max);\n const numPrecision = computed(() => {\n const stepPrecision = getPrecision(props.step);\n if (!isUndefined(props.precision)) {\n if (stepPrecision > props.precision) {\n debugWarn(\"InputNumber\", \"precision should not be less than the decimal places of step\");\n }\n return props.precision;\n } else {\n return Math.max(getPrecision(props.modelValue), stepPrecision);\n }\n });\n const controlsAtRight = computed(() => {\n return props.controls && props.controlsPosition === \"right\";\n });\n const inputNumberSize = useFormSize();\n const inputNumberDisabled = useFormDisabled();\n const displayValue = computed(() => {\n if (data.userInput !== null) {\n return data.userInput;\n }\n let currentValue = data.currentValue;\n if (isNil(currentValue))\n return \"\";\n if (isNumber(currentValue)) {\n if (Number.isNaN(currentValue))\n return \"\";\n if (!isUndefined(props.precision)) {\n currentValue = currentValue.toFixed(props.precision);\n }\n }\n return currentValue;\n });\n const toPrecision = (num, pre) => {\n if (isUndefined(pre))\n pre = numPrecision.value;\n if (pre === 0)\n return Math.round(num);\n let snum = String(num);\n const pointPos = snum.indexOf(\".\");\n if (pointPos === -1)\n return num;\n const nums = snum.replace(\".\", \"\").split(\"\");\n const datum = nums[pointPos + pre];\n if (!datum)\n return num;\n const length = snum.length;\n if (snum.charAt(length - 1) === \"5\") {\n snum = `${snum.slice(0, Math.max(0, length - 1))}6`;\n }\n return Number.parseFloat(Number(snum).toFixed(pre));\n };\n const getPrecision = (value) => {\n if (isNil(value))\n return 0;\n const valueString = value.toString();\n const dotPosition = valueString.indexOf(\".\");\n let precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n };\n const ensurePrecision = (val, coefficient = 1) => {\n if (!isNumber(val))\n return data.currentValue;\n return toPrecision(val + props.step * coefficient);\n };\n const increase = () => {\n if (props.readonly || inputNumberDisabled.value || maxDisabled.value)\n return;\n const value = Number(displayValue.value) || 0;\n const newVal = ensurePrecision(value);\n setCurrentValue(newVal);\n emit(INPUT_EVENT, data.currentValue);\n setCurrentValueToModelValue();\n };\n const decrease = () => {\n if (props.readonly || inputNumberDisabled.value || minDisabled.value)\n return;\n const value = Number(displayValue.value) || 0;\n const newVal = ensurePrecision(value, -1);\n setCurrentValue(newVal);\n emit(INPUT_EVENT, data.currentValue);\n setCurrentValueToModelValue();\n };\n const verifyValue = (value, update) => {\n const { max, min, step, precision, stepStrictly, valueOnClear } = props;\n if (max < min) {\n throwError(\"InputNumber\", \"min should not be greater than max.\");\n }\n let newVal = Number(value);\n if (isNil(value) || Number.isNaN(newVal)) {\n return null;\n }\n if (value === \"\") {\n if (valueOnClear === null) {\n return null;\n }\n newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear;\n }\n if (stepStrictly) {\n newVal = toPrecision(Math.round(newVal / step) * step, precision);\n }\n if (!isUndefined(precision)) {\n newVal = toPrecision(newVal, precision);\n }\n if (newVal > max || newVal < min) {\n newVal = newVal > max ? max : min;\n update && emit(UPDATE_MODEL_EVENT, newVal);\n }\n return newVal;\n };\n const setCurrentValue = (value, emitChange = true) => {\n var _a;\n const oldVal = data.currentValue;\n const newVal = verifyValue(value);\n if (!emitChange) {\n emit(UPDATE_MODEL_EVENT, newVal);\n return;\n }\n if (oldVal === newVal && value)\n return;\n data.userInput = null;\n emit(UPDATE_MODEL_EVENT, newVal);\n if (oldVal !== newVal) {\n emit(CHANGE_EVENT, newVal, oldVal);\n }\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"change\").catch((err) => debugWarn(err));\n }\n data.currentValue = newVal;\n };\n const handleInput = (value) => {\n data.userInput = value;\n const newVal = value === \"\" ? null : Number(value);\n emit(INPUT_EVENT, newVal);\n setCurrentValue(newVal, false);\n };\n const handleInputChange = (value) => {\n const newVal = value !== \"\" ? Number(value) : \"\";\n if (isNumber(newVal) && !Number.isNaN(newVal) || value === \"\") {\n setCurrentValue(newVal);\n }\n setCurrentValueToModelValue();\n data.userInput = null;\n };\n const focus = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);\n };\n const blur = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.blur) == null ? void 0 : _b.call(_a);\n };\n const handleFocus = (event) => {\n emit(\"focus\", event);\n };\n const handleBlur = (event) => {\n var _a;\n data.userInput = null;\n emit(\"blur\", event);\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"blur\").catch((err) => debugWarn(err));\n }\n };\n const setCurrentValueToModelValue = () => {\n if (data.currentValue !== props.modelValue) {\n data.currentValue = props.modelValue;\n }\n };\n const handleWheel = (e) => {\n if (document.activeElement === e.target)\n e.preventDefault();\n };\n watch(() => props.modelValue, (value, oldValue) => {\n const newValue = verifyValue(value, true);\n if (data.userInput === null && newValue !== oldValue) {\n data.currentValue = newValue;\n }\n }, { immediate: true });\n onMounted(() => {\n var _a;\n const { min, max, modelValue } = props;\n const innerInput = (_a = input.value) == null ? void 0 : _a.input;\n innerInput.setAttribute(\"role\", \"spinbutton\");\n if (Number.isFinite(max)) {\n innerInput.setAttribute(\"aria-valuemax\", String(max));\n } else {\n innerInput.removeAttribute(\"aria-valuemax\");\n }\n if (Number.isFinite(min)) {\n innerInput.setAttribute(\"aria-valuemin\", String(min));\n } else {\n innerInput.removeAttribute(\"aria-valuemin\");\n }\n innerInput.setAttribute(\"aria-valuenow\", data.currentValue || data.currentValue === 0 ? String(data.currentValue) : \"\");\n innerInput.setAttribute(\"aria-disabled\", String(inputNumberDisabled.value));\n if (!isNumber(modelValue) && modelValue != null) {\n let val = Number(modelValue);\n if (Number.isNaN(val)) {\n val = null;\n }\n emit(UPDATE_MODEL_EVENT, val);\n }\n innerInput.addEventListener(\"wheel\", handleWheel, { passive: false });\n });\n onUpdated(() => {\n var _a, _b;\n const innerInput = (_a = input.value) == null ? void 0 : _a.input;\n innerInput == null ? void 0 : innerInput.setAttribute(\"aria-valuenow\", `${(_b = data.currentValue) != null ? _b : \"\"}`);\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-input-number\",\n ref: \"https://element-plus.org/en-US/component/input-number.html\"\n }, computed(() => !!props.label));\n expose({\n focus,\n blur\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ns).b(),\n unref(ns).m(unref(inputNumberSize)),\n unref(ns).is(\"disabled\", unref(inputNumberDisabled)),\n unref(ns).is(\"without-controls\", !_ctx.controls),\n unref(ns).is(\"controls-right\", unref(controlsAtRight))\n ]),\n onDragstart: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"]))\n }, [\n _ctx.controls ? withDirectives((openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"button\",\n \"aria-label\": unref(t)(\"el.inputNumber.decrease\"),\n class: normalizeClass([unref(ns).e(\"decrease\"), unref(ns).is(\"disabled\", unref(minDisabled))]),\n onKeydown: withKeys(decrease, [\"enter\"])\n }, [\n renderSlot(_ctx.$slots, \"decrease-icon\", {}, () => [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n unref(controlsAtRight) ? (openBlock(), createBlock(unref(ArrowDown), { key: 0 })) : (openBlock(), createBlock(unref(Minus), { key: 1 }))\n ]),\n _: 1\n })\n ])\n ], 42, _hoisted_1)), [\n [unref(vRepeatClick), decrease]\n ]) : createCommentVNode(\"v-if\", true),\n _ctx.controls ? withDirectives((openBlock(), createElementBlock(\"span\", {\n key: 1,\n role: \"button\",\n \"aria-label\": unref(t)(\"el.inputNumber.increase\"),\n class: normalizeClass([unref(ns).e(\"increase\"), unref(ns).is(\"disabled\", unref(maxDisabled))]),\n onKeydown: withKeys(increase, [\"enter\"])\n }, [\n renderSlot(_ctx.$slots, \"increase-icon\", {}, () => [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n unref(controlsAtRight) ? (openBlock(), createBlock(unref(ArrowUp), { key: 0 })) : (openBlock(), createBlock(unref(Plus), { key: 1 }))\n ]),\n _: 1\n })\n ])\n ], 42, _hoisted_2)), [\n [unref(vRepeatClick), increase]\n ]) : createCommentVNode(\"v-if\", true),\n createVNode(unref(ElInput), {\n id: _ctx.id,\n ref_key: \"input\",\n ref: input,\n type: \"number\",\n step: _ctx.step,\n \"model-value\": unref(displayValue),\n placeholder: _ctx.placeholder,\n readonly: _ctx.readonly,\n disabled: unref(inputNumberDisabled),\n size: unref(inputNumberSize),\n max: _ctx.max,\n min: _ctx.min,\n name: _ctx.name,\n \"aria-label\": _ctx.label || _ctx.ariaLabel,\n \"validate-event\": false,\n onKeydown: [\n withKeys(withModifiers(increase, [\"prevent\"]), [\"up\"]),\n withKeys(withModifiers(decrease, [\"prevent\"]), [\"down\"])\n ],\n onBlur: handleBlur,\n onFocus: handleFocus,\n onInput: handleInput,\n onChange: handleInputChange\n }, null, 8, [\"id\", \"step\", \"model-value\", \"placeholder\", \"readonly\", \"disabled\", \"size\", \"max\", \"min\", \"name\", \"aria-label\", \"onKeydown\"])\n ], 34);\n };\n }\n});\nvar InputNumber = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"input-number.vue\"]]);\n\nexport { InputNumber as default };\n//# sourceMappingURL=input-number2.mjs.map\n","import '../../utils/index.mjs';\nimport InputNumber from './src/input-number2.mjs';\nexport { inputNumberEmits, inputNumberProps } from './src/input-number.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElInputNumber = withInstall(InputNumber);\n\nexport { ElInputNumber, ElInputNumber as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst linkProps = buildProps({\n type: {\n type: String,\n values: [\"primary\", \"success\", \"warning\", \"info\", \"danger\", \"default\"],\n default: \"default\"\n },\n underline: {\n type: Boolean,\n default: true\n },\n disabled: { type: Boolean, default: false },\n href: { type: String, default: \"\" },\n target: {\n type: String,\n default: \"_self\"\n },\n icon: {\n type: iconPropType\n }\n});\nconst linkEmits = {\n click: (evt) => evt instanceof MouseEvent\n};\n\nexport { linkEmits, linkProps };\n//# sourceMappingURL=link.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createBlock, withCtx, resolveDynamicComponent, createCommentVNode, renderSlot } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { linkProps, linkEmits } from './link.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"href\", \"target\"];\nconst __default__ = defineComponent({\n name: \"ElLink\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: linkProps,\n emits: linkEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"link\");\n const linkKls = computed(() => [\n ns.b(),\n ns.m(props.type),\n ns.is(\"disabled\", props.disabled),\n ns.is(\"underline\", props.underline && !props.disabled)\n ]);\n function handleClick(event) {\n if (!props.disabled)\n emit(\"click\", event);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"a\", {\n class: normalizeClass(unref(linkKls)),\n href: _ctx.disabled || !_ctx.href ? void 0 : _ctx.href,\n target: _ctx.disabled || !_ctx.href ? void 0 : _ctx.target,\n onClick: handleClick\n }, [\n _ctx.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.default ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"inner\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.icon ? renderSlot(_ctx.$slots, \"icon\", { key: 2 }) : createCommentVNode(\"v-if\", true)\n ], 10, _hoisted_1);\n };\n }\n});\nvar Link = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"link.vue\"]]);\n\nexport { Link as default };\n//# sourceMappingURL=link2.mjs.map\n","import '../../utils/index.mjs';\nimport Link from './src/link2.mjs';\nexport { linkEmits, linkProps } from './src/link.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElLink = withInstall(Link);\n\nexport { ElLink, ElLink as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { triggerEvent } from '../../../../utils/dom/aria.mjs';\n\nclass SubMenu {\n constructor(parent, domNode) {\n this.parent = parent;\n this.domNode = domNode;\n this.subIndex = 0;\n this.subIndex = 0;\n this.init();\n }\n init() {\n this.subMenuItems = this.domNode.querySelectorAll(\"li\");\n this.addListeners();\n }\n gotoSubIndex(idx) {\n if (idx === this.subMenuItems.length) {\n idx = 0;\n } else if (idx < 0) {\n idx = this.subMenuItems.length - 1;\n }\n ;\n this.subMenuItems[idx].focus();\n this.subIndex = idx;\n }\n addListeners() {\n const parentNode = this.parent.domNode;\n Array.prototype.forEach.call(this.subMenuItems, (el) => {\n el.addEventListener(\"keydown\", (event) => {\n let prevDef = false;\n switch (event.code) {\n case EVENT_CODE.down: {\n this.gotoSubIndex(this.subIndex + 1);\n prevDef = true;\n break;\n }\n case EVENT_CODE.up: {\n this.gotoSubIndex(this.subIndex - 1);\n prevDef = true;\n break;\n }\n case EVENT_CODE.tab: {\n triggerEvent(parentNode, \"mouseleave\");\n break;\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.space: {\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n }\n if (prevDef) {\n event.preventDefault();\n event.stopPropagation();\n }\n return false;\n });\n });\n }\n}\n\nexport { SubMenu as default };\n//# sourceMappingURL=submenu.mjs.map\n","import '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport SubMenu from './submenu.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { triggerEvent } from '../../../../utils/dom/aria.mjs';\n\nclass MenuItem {\n constructor(domNode, namespace) {\n this.domNode = domNode;\n this.submenu = null;\n this.submenu = null;\n this.init(namespace);\n }\n init(namespace) {\n this.domNode.setAttribute(\"tabindex\", \"0\");\n const menuChild = this.domNode.querySelector(`.${namespace}-menu`);\n if (menuChild) {\n this.submenu = new SubMenu(this, menuChild);\n }\n this.addListeners();\n }\n addListeners() {\n this.domNode.addEventListener(\"keydown\", (event) => {\n let prevDef = false;\n switch (event.code) {\n case EVENT_CODE.down: {\n triggerEvent(event.currentTarget, \"mouseenter\");\n this.submenu && this.submenu.gotoSubIndex(0);\n prevDef = true;\n break;\n }\n case EVENT_CODE.up: {\n triggerEvent(event.currentTarget, \"mouseenter\");\n this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1);\n prevDef = true;\n break;\n }\n case EVENT_CODE.tab: {\n triggerEvent(event.currentTarget, \"mouseleave\");\n break;\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.space: {\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n }\n if (prevDef) {\n event.preventDefault();\n }\n });\n }\n}\n\nexport { MenuItem as default };\n//# sourceMappingURL=menu-item.mjs.map\n","import MenuItem from './menu-item.mjs';\n\nclass Menu {\n constructor(domNode, namespace) {\n this.domNode = domNode;\n this.init(namespace);\n }\n init(namespace) {\n const menuChildren = this.domNode.childNodes;\n Array.from(menuChildren).forEach((child) => {\n if (child.nodeType === 1) {\n new MenuItem(child, namespace);\n }\n });\n }\n}\n\nexport { Menu as default };\n//# sourceMappingURL=menu-bar.mjs.map\n","import { defineComponent, openBlock, createBlock, Transition, mergeProps, withCtx, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addClass, removeClass, hasClass } from '../../../utils/dom/style.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElMenuCollapseTransition\",\n setup() {\n const ns = useNamespace(\"menu\");\n const listeners = {\n onBeforeEnter: (el) => el.style.opacity = \"0.2\",\n onEnter(el, done) {\n addClass(el, `${ns.namespace.value}-opacity-transition`);\n el.style.opacity = \"1\";\n done();\n },\n onAfterEnter(el) {\n removeClass(el, `${ns.namespace.value}-opacity-transition`);\n el.style.opacity = \"\";\n },\n onBeforeLeave(el) {\n if (!el.dataset) {\n ;\n el.dataset = {};\n }\n if (hasClass(el, ns.m(\"collapse\"))) {\n removeClass(el, ns.m(\"collapse\"));\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth.toString();\n addClass(el, ns.m(\"collapse\"));\n } else {\n addClass(el, ns.m(\"collapse\"));\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth.toString();\n removeClass(el, ns.m(\"collapse\"));\n }\n el.style.width = `${el.scrollWidth}px`;\n el.style.overflow = \"hidden\";\n },\n onLeave(el) {\n addClass(el, \"horizontal-collapse-transition\");\n el.style.width = `${el.dataset.scrollWidth}px`;\n }\n };\n return {\n listeners\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createBlock(Transition, mergeProps({ mode: \"out-in\" }, _ctx.listeners), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n}\nvar ElMenuCollapseTransition = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"menu-collapse-transition.vue\"]]);\n\nexport { ElMenuCollapseTransition as default };\n//# sourceMappingURL=menu-collapse-transition.mjs.map\n","import { computed } from 'vue';\n\nfunction useMenu(instance, currentIndex) {\n const indexPath = computed(() => {\n let parent = instance.parent;\n const path = [currentIndex.value];\n while (parent.type.name !== \"ElMenu\") {\n if (parent.props.index) {\n path.unshift(parent.props.index);\n }\n parent = parent.parent;\n }\n return path;\n });\n const parentMenu = computed(() => {\n let parent = instance.parent;\n while (parent && ![\"ElMenu\", \"ElSubMenu\"].includes(parent.type.name)) {\n parent = parent.parent;\n }\n return parent;\n });\n return {\n parentMenu,\n indexPath\n };\n}\n\nexport { useMenu as default };\n//# sourceMappingURL=use-menu.mjs.map\n","import { computed } from 'vue';\nimport { TinyColor } from '@ctrl/tinycolor';\n\nfunction useMenuColor(props) {\n const menuBarColor = computed(() => {\n const color = props.backgroundColor;\n if (!color) {\n return \"\";\n } else {\n return new TinyColor(color).shade(20).toString();\n }\n });\n return menuBarColor;\n}\n\nexport { useMenuColor as default };\n//# sourceMappingURL=use-menu-color.mjs.map\n","import { computed } from 'vue';\nimport '../../../hooks/index.mjs';\nimport useMenuColor from './use-menu-color.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst useMenuCssVar = (props, level) => {\n const ns = useNamespace(\"menu\");\n return computed(() => {\n return ns.cssVarBlock({\n \"text-color\": props.textColor || \"\",\n \"hover-text-color\": props.textColor || \"\",\n \"bg-color\": props.backgroundColor || \"\",\n \"hover-bg-color\": useMenuColor(props).value || \"\",\n \"active-color\": props.activeTextColor || \"\",\n level: `${level}`\n });\n });\n};\n\nexport { useMenuCssVar };\n//# sourceMappingURL=use-menu-css-var.mjs.map\n","import { defineComponent, getCurrentInstance, computed, inject, ref, reactive, watch, provide, onMounted, onBeforeUnmount, h, Fragment, withDirectives, vShow } from 'vue';\nimport { useTimeoutFn } from '@vueuse/core';\nimport _CollapseTransition from '../../collapse-transition/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { ArrowDown, ArrowRight } from '@element-plus/icons-vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport useMenu from './use-menu.mjs';\nimport { useMenuCssVar } from './use-menu-css-var.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { throwError } from '../../../utils/error.mjs';\nimport { isString } from '@vue/shared';\n\nconst subMenuProps = buildProps({\n index: {\n type: String,\n required: true\n },\n showTimeout: Number,\n hideTimeout: Number,\n popperClass: String,\n disabled: Boolean,\n teleported: {\n type: Boolean,\n default: void 0\n },\n popperOffset: Number,\n expandCloseIcon: {\n type: iconPropType\n },\n expandOpenIcon: {\n type: iconPropType\n },\n collapseCloseIcon: {\n type: iconPropType\n },\n collapseOpenIcon: {\n type: iconPropType\n }\n});\nconst COMPONENT_NAME = \"ElSubMenu\";\nvar SubMenu = defineComponent({\n name: COMPONENT_NAME,\n props: subMenuProps,\n setup(props, { slots, expose }) {\n const instance = getCurrentInstance();\n const { indexPath, parentMenu } = useMenu(instance, computed(() => props.index));\n const nsMenu = useNamespace(\"menu\");\n const nsSubMenu = useNamespace(\"sub-menu\");\n const rootMenu = inject(\"rootMenu\");\n if (!rootMenu)\n throwError(COMPONENT_NAME, \"can not inject root menu\");\n const subMenu = inject(`subMenu:${parentMenu.value.uid}`);\n if (!subMenu)\n throwError(COMPONENT_NAME, \"can not inject sub menu\");\n const items = ref({});\n const subMenus = ref({});\n let timeout;\n const mouseInChild = ref(false);\n const verticalTitleRef = ref();\n const vPopper = ref(null);\n const currentPlacement = computed(() => mode.value === \"horizontal\" && isFirstLevel.value ? \"bottom-start\" : \"right-start\");\n const subMenuTitleIcon = computed(() => {\n return mode.value === \"horizontal\" && isFirstLevel.value || mode.value === \"vertical\" && !rootMenu.props.collapse ? props.expandCloseIcon && props.expandOpenIcon ? opened.value ? props.expandOpenIcon : props.expandCloseIcon : ArrowDown : props.collapseCloseIcon && props.collapseOpenIcon ? opened.value ? props.collapseOpenIcon : props.collapseCloseIcon : ArrowRight;\n });\n const isFirstLevel = computed(() => {\n return subMenu.level === 0;\n });\n const appendToBody = computed(() => {\n const value = props.teleported;\n return value === void 0 ? isFirstLevel.value : value;\n });\n const menuTransitionName = computed(() => rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`);\n const fallbackPlacements = computed(() => mode.value === \"horizontal\" && isFirstLevel.value ? [\n \"bottom-start\",\n \"bottom-end\",\n \"top-start\",\n \"top-end\",\n \"right-start\",\n \"left-start\"\n ] : [\n \"right-start\",\n \"right\",\n \"right-end\",\n \"left-start\",\n \"bottom-start\",\n \"bottom-end\",\n \"top-start\",\n \"top-end\"\n ]);\n const opened = computed(() => rootMenu.openedMenus.includes(props.index));\n const active = computed(() => {\n let isActive = false;\n Object.values(items.value).forEach((item2) => {\n if (item2.active) {\n isActive = true;\n }\n });\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n return isActive;\n });\n const mode = computed(() => rootMenu.props.mode);\n const item = reactive({\n index: props.index,\n indexPath,\n active\n });\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n const subMenuPopperOffset = computed(() => {\n var _a;\n return (_a = props.popperOffset) != null ? _a : rootMenu.props.popperOffset;\n });\n const subMenuPopperClass = computed(() => {\n var _a;\n return (_a = props.popperClass) != null ? _a : rootMenu.props.popperClass;\n });\n const subMenuShowTimeout = computed(() => {\n var _a;\n return (_a = props.showTimeout) != null ? _a : rootMenu.props.showTimeout;\n });\n const subMenuHideTimeout = computed(() => {\n var _a;\n return (_a = props.hideTimeout) != null ? _a : rootMenu.props.hideTimeout;\n });\n const doDestroy = () => {\n var _a, _b, _c;\n return (_c = (_b = (_a = vPopper.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.popperInstanceRef) == null ? void 0 : _c.destroy();\n };\n const handleCollapseToggle = (value) => {\n if (!value) {\n doDestroy();\n }\n };\n const handleClick = () => {\n if (rootMenu.props.menuTrigger === \"hover\" && rootMenu.props.mode === \"horizontal\" || rootMenu.props.collapse && rootMenu.props.mode === \"vertical\" || props.disabled)\n return;\n rootMenu.handleSubMenuClick({\n index: props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n };\n const handleMouseenter = (event, showTimeout = subMenuShowTimeout.value) => {\n var _a;\n if (event.type === \"focus\") {\n return;\n }\n if (rootMenu.props.menuTrigger === \"click\" && rootMenu.props.mode === \"horizontal\" || !rootMenu.props.collapse && rootMenu.props.mode === \"vertical\" || props.disabled) {\n subMenu.mouseInChild.value = true;\n return;\n }\n subMenu.mouseInChild.value = true;\n timeout == null ? void 0 : timeout();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(props.index, indexPath.value);\n }, showTimeout));\n if (appendToBody.value) {\n (_a = parentMenu.value.vnode.el) == null ? void 0 : _a.dispatchEvent(new MouseEvent(\"mouseenter\"));\n }\n };\n const handleMouseleave = (deepDispatch = false) => {\n var _a;\n if (rootMenu.props.menuTrigger === \"click\" && rootMenu.props.mode === \"horizontal\" || !rootMenu.props.collapse && rootMenu.props.mode === \"vertical\") {\n subMenu.mouseInChild.value = false;\n return;\n }\n timeout == null ? void 0 : timeout();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(() => !mouseInChild.value && rootMenu.closeMenu(props.index, indexPath.value), subMenuHideTimeout.value));\n if (appendToBody.value && deepDispatch) {\n (_a = subMenu.handleMouseleave) == null ? void 0 : _a.call(subMenu, true);\n }\n };\n watch(() => rootMenu.props.collapse, (value) => handleCollapseToggle(Boolean(value)));\n {\n const addSubMenu = (item2) => {\n subMenus.value[item2.index] = item2;\n };\n const removeSubMenu = (item2) => {\n delete subMenus.value[item2.index];\n };\n provide(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n }\n expose({\n opened\n });\n onMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n });\n onBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n });\n return () => {\n var _a;\n const titleTag = [\n (_a = slots.title) == null ? void 0 : _a.call(slots),\n h(ElIcon, {\n class: nsSubMenu.e(\"icon-arrow\"),\n style: {\n transform: opened.value ? props.expandCloseIcon && props.expandOpenIcon || props.collapseCloseIcon && props.collapseOpenIcon && rootMenu.props.collapse ? \"none\" : \"rotateZ(180deg)\" : \"none\"\n }\n }, {\n default: () => isString(subMenuTitleIcon.value) ? h(instance.appContext.components[subMenuTitleIcon.value]) : h(subMenuTitleIcon.value)\n })\n ];\n const child = rootMenu.isMenuPopup ? h(ElTooltip, {\n ref: vPopper,\n visible: opened.value,\n effect: \"light\",\n pure: true,\n offset: subMenuPopperOffset.value,\n showArrow: false,\n persistent: true,\n popperClass: subMenuPopperClass.value,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false\n }, {\n content: () => {\n var _a2;\n return h(\"div\", {\n class: [\n nsMenu.m(mode.value),\n nsMenu.m(\"popup-container\"),\n subMenuPopperClass.value\n ],\n onMouseenter: (evt) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt) => handleMouseenter(evt, 100)\n }, [\n h(\"ul\", {\n class: [\n nsMenu.b(),\n nsMenu.m(\"popup\"),\n nsMenu.m(`popup-${currentPlacement.value}`)\n ],\n style: ulStyle.value\n }, [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)])\n ]);\n },\n default: () => h(\"div\", {\n class: nsSubMenu.e(\"title\"),\n onClick: handleClick\n }, titleTag)\n }) : h(Fragment, {}, [\n h(\"div\", {\n class: nsSubMenu.e(\"title\"),\n ref: verticalTitleRef,\n onClick: handleClick\n }, titleTag),\n h(_CollapseTransition, {}, {\n default: () => {\n var _a2;\n return withDirectives(h(\"ul\", {\n role: \"menu\",\n class: [nsMenu.b(), nsMenu.m(\"inline\")],\n style: ulStyle.value\n }, [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]), [[vShow, opened.value]]);\n }\n })\n ]);\n return h(\"li\", {\n class: [\n nsSubMenu.b(),\n nsSubMenu.is(\"active\", active.value),\n nsSubMenu.is(\"opened\", opened.value),\n nsSubMenu.is(\"disabled\", props.disabled)\n ],\n role: \"menuitem\",\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(),\n onFocus: handleMouseenter\n }, [child]);\n };\n }\n});\n\nexport { SubMenu as default, subMenuProps };\n//# sourceMappingURL=sub-menu.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, nextTick, watch, watchEffect, provide, reactive, onMounted, h, withDirectives } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport { isNil } from 'lodash-unified';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { More } from '@element-plus/icons-vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../directives/index.mjs';\nimport Menu$1 from './utils/menu-bar.mjs';\nimport ElMenuCollapseTransition from './menu-collapse-transition.mjs';\nimport SubMenu from './sub-menu.mjs';\nimport { useMenuCssVar } from './use-menu-css-var.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { isString, isObject } from '@vue/shared';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { flattedChildren } from '../../../utils/vue/vnode.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\n\nconst menuProps = buildProps({\n mode: {\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: \"vertical\"\n },\n defaultActive: {\n type: String,\n default: \"\"\n },\n defaultOpeneds: {\n type: definePropType(Array),\n default: () => mutable([])\n },\n uniqueOpened: Boolean,\n router: Boolean,\n menuTrigger: {\n type: String,\n values: [\"hover\", \"click\"],\n default: \"hover\"\n },\n collapse: Boolean,\n backgroundColor: String,\n textColor: String,\n activeTextColor: String,\n closeOnClickOutside: Boolean,\n collapseTransition: {\n type: Boolean,\n default: true\n },\n ellipsis: {\n type: Boolean,\n default: true\n },\n popperOffset: {\n type: Number,\n default: 6\n },\n ellipsisIcon: {\n type: iconPropType,\n default: () => More\n },\n popperEffect: {\n type: String,\n values: [\"dark\", \"light\"],\n default: \"dark\"\n },\n popperClass: String,\n showTimeout: {\n type: Number,\n default: 300\n },\n hideTimeout: {\n type: Number,\n default: 300\n }\n});\nconst checkIndexPath = (indexPath) => Array.isArray(indexPath) && indexPath.every((path) => isString(path));\nconst menuEmits = {\n close: (index, indexPath) => isString(index) && checkIndexPath(indexPath),\n open: (index, indexPath) => isString(index) && checkIndexPath(indexPath),\n select: (index, indexPath, item, routerResult) => isString(index) && checkIndexPath(indexPath) && isObject(item) && (routerResult === void 0 || routerResult instanceof Promise)\n};\nvar Menu = defineComponent({\n name: \"ElMenu\",\n props: menuProps,\n emits: menuEmits,\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance();\n const router = instance.appContext.config.globalProperties.$router;\n const menu = ref();\n const nsMenu = useNamespace(\"menu\");\n const nsSubMenu = useNamespace(\"sub-menu\");\n const sliceIndex = ref(-1);\n const openedMenus = ref(props.defaultOpeneds && !props.collapse ? props.defaultOpeneds.slice(0) : []);\n const activeIndex = ref(props.defaultActive);\n const items = ref({});\n const subMenus = ref({});\n const isMenuPopup = computed(() => {\n return props.mode === \"horizontal\" || props.mode === \"vertical\" && props.collapse;\n });\n const initMenu = () => {\n const activeItem = activeIndex.value && items.value[activeIndex.value];\n if (!activeItem || props.mode === \"horizontal\" || props.collapse)\n return;\n const indexPath = activeItem.indexPath;\n indexPath.forEach((index) => {\n const subMenu = subMenus.value[index];\n subMenu && openMenu(index, subMenu.indexPath);\n });\n };\n const openMenu = (index, indexPath) => {\n if (openedMenus.value.includes(index))\n return;\n if (props.uniqueOpened) {\n openedMenus.value = openedMenus.value.filter((index2) => indexPath.includes(index2));\n }\n openedMenus.value.push(index);\n emit(\"open\", index, indexPath);\n };\n const close = (index) => {\n const i = openedMenus.value.indexOf(index);\n if (i !== -1) {\n openedMenus.value.splice(i, 1);\n }\n };\n const closeMenu = (index, indexPath) => {\n close(index);\n emit(\"close\", index, indexPath);\n };\n const handleSubMenuClick = ({\n index,\n indexPath\n }) => {\n const isOpened = openedMenus.value.includes(index);\n if (isOpened) {\n closeMenu(index, indexPath);\n } else {\n openMenu(index, indexPath);\n }\n };\n const handleMenuItemClick = (menuItem) => {\n if (props.mode === \"horizontal\" || props.collapse) {\n openedMenus.value = [];\n }\n const { index, indexPath } = menuItem;\n if (isNil(index) || isNil(indexPath))\n return;\n if (props.router && router) {\n const route = menuItem.route || index;\n const routerResult = router.push(route).then((res) => {\n if (!res)\n activeIndex.value = index;\n return res;\n });\n emit(\"select\", index, indexPath, { index, indexPath, route }, routerResult);\n } else {\n activeIndex.value = index;\n emit(\"select\", index, indexPath, { index, indexPath });\n }\n };\n const updateActiveIndex = (val) => {\n const itemsInData = items.value;\n const item = itemsInData[val] || activeIndex.value && itemsInData[activeIndex.value] || itemsInData[props.defaultActive];\n if (item) {\n activeIndex.value = item.index;\n } else {\n activeIndex.value = val;\n }\n };\n const calcMenuItemWidth = (menuItem) => {\n const computedStyle = getComputedStyle(menuItem);\n const marginLeft = Number.parseInt(computedStyle.marginLeft, 10);\n const marginRight = Number.parseInt(computedStyle.marginRight, 10);\n return menuItem.offsetWidth + marginLeft + marginRight || 0;\n };\n const calcSliceIndex = () => {\n var _a, _b;\n if (!menu.value)\n return -1;\n const items2 = Array.from((_b = (_a = menu.value) == null ? void 0 : _a.childNodes) != null ? _b : []).filter((item) => item.nodeName !== \"#comment\" && (item.nodeName !== \"#text\" || item.nodeValue));\n const moreItemWidth = 64;\n const computedMenuStyle = getComputedStyle(menu.value);\n const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10);\n const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10);\n const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight;\n let calcWidth = 0;\n let sliceIndex2 = 0;\n items2.forEach((item, index) => {\n calcWidth += calcMenuItemWidth(item);\n if (calcWidth <= menuWidth - moreItemWidth) {\n sliceIndex2 = index + 1;\n }\n });\n return sliceIndex2 === items2.length ? -1 : sliceIndex2;\n };\n const getIndexPath = (index) => subMenus.value[index].indexPath;\n const debounce = (fn, wait = 33.34) => {\n let timmer;\n return () => {\n timmer && clearTimeout(timmer);\n timmer = setTimeout(() => {\n fn();\n }, wait);\n };\n };\n let isFirstTimeRender = true;\n const handleResize = () => {\n if (sliceIndex.value === calcSliceIndex())\n return;\n const callback = () => {\n sliceIndex.value = -1;\n nextTick(() => {\n sliceIndex.value = calcSliceIndex();\n });\n };\n isFirstTimeRender ? callback() : debounce(callback)();\n isFirstTimeRender = false;\n };\n watch(() => props.defaultActive, (currentActive) => {\n if (!items.value[currentActive]) {\n activeIndex.value = \"\";\n }\n updateActiveIndex(currentActive);\n });\n watch(() => props.collapse, (value) => {\n if (value)\n openedMenus.value = [];\n });\n watch(items.value, initMenu);\n let resizeStopper;\n watchEffect(() => {\n if (props.mode === \"horizontal\" && props.ellipsis)\n resizeStopper = useResizeObserver(menu, handleResize).stop;\n else\n resizeStopper == null ? void 0 : resizeStopper();\n });\n const mouseInChild = ref(false);\n {\n const addSubMenu = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu = (item) => {\n delete subMenus.value[item.index];\n };\n const addMenuItem = (item) => {\n items.value[item.index] = item;\n };\n const removeMenuItem = (item) => {\n delete items.value[item.index];\n };\n provide(\"rootMenu\", reactive({\n props,\n openedMenus,\n items,\n subMenus,\n activeIndex,\n isMenuPopup,\n addMenuItem,\n removeMenuItem,\n addSubMenu,\n removeSubMenu,\n openMenu,\n closeMenu,\n handleMenuItemClick,\n handleSubMenuClick\n }));\n provide(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n mouseInChild,\n level: 0\n });\n }\n onMounted(() => {\n if (props.mode === \"horizontal\") {\n new Menu$1(instance.vnode.el, nsMenu.namespace.value);\n }\n });\n {\n const open = (index) => {\n const { indexPath } = subMenus.value[index];\n indexPath.forEach((i) => openMenu(i, indexPath));\n };\n expose({\n open,\n close,\n handleResize\n });\n }\n return () => {\n var _a, _b;\n let slot = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : [];\n const vShowMore = [];\n if (props.mode === \"horizontal\" && menu.value) {\n const originalSlot = flattedChildren(slot);\n const slotDefault = sliceIndex.value === -1 ? originalSlot : originalSlot.slice(0, sliceIndex.value);\n const slotMore = sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value);\n if ((slotMore == null ? void 0 : slotMore.length) && props.ellipsis) {\n slot = slotDefault;\n vShowMore.push(h(SubMenu, {\n index: \"sub-menu-more\",\n class: nsSubMenu.e(\"hide-arrow\"),\n popperOffset: props.popperOffset\n }, {\n title: () => h(ElIcon, {\n class: nsSubMenu.e(\"icon-more\")\n }, {\n default: () => h(props.ellipsisIcon)\n }),\n default: () => slotMore\n }));\n }\n }\n const ulStyle = useMenuCssVar(props, 0);\n const directives = props.closeOnClickOutside ? [\n [\n ClickOutside,\n () => {\n if (!openedMenus.value.length)\n return;\n if (!mouseInChild.value) {\n openedMenus.value.forEach((openedMenu) => emit(\"close\", openedMenu, getIndexPath(openedMenu)));\n openedMenus.value = [];\n }\n }\n ]\n ] : [];\n const vMenu = withDirectives(h(\"ul\", {\n key: String(props.collapse),\n role: \"menubar\",\n ref: menu,\n style: ulStyle.value,\n class: {\n [nsMenu.b()]: true,\n [nsMenu.m(props.mode)]: true,\n [nsMenu.m(\"collapse\")]: props.collapse\n }\n }, [...slot, ...vShowMore]), directives);\n if (props.collapseTransition && props.mode === \"vertical\") {\n return h(ElMenuCollapseTransition, () => vMenu);\n }\n return vMenu;\n };\n }\n});\n\nexport { Menu as default, menuEmits, menuProps };\n//# sourceMappingURL=menu.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isString } from '@vue/shared';\n\nconst menuItemProps = buildProps({\n index: {\n type: definePropType([String, null]),\n default: null\n },\n route: {\n type: definePropType([String, Object])\n },\n disabled: Boolean\n});\nconst menuItemEmits = {\n click: (item) => isString(item.index) && Array.isArray(item.indexPath)\n};\n\nexport { menuItemEmits, menuItemProps };\n//# sourceMappingURL=menu-item.mjs.map\n","import { defineComponent, getCurrentInstance, inject, toRef, computed, reactive, onMounted, onBeforeUnmount, resolveComponent, openBlock, createElementBlock, normalizeClass, createBlock, withCtx, renderSlot, createElementVNode, Fragment } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport useMenu from './use-menu.mjs';\nimport { menuItemProps, menuItemEmits } from './menu-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { throwError } from '../../../utils/error.mjs';\n\nconst COMPONENT_NAME = \"ElMenuItem\";\nconst _sfc_main = defineComponent({\n name: COMPONENT_NAME,\n components: {\n ElTooltip\n },\n props: menuItemProps,\n emits: menuItemEmits,\n setup(props, { emit }) {\n const instance = getCurrentInstance();\n const rootMenu = inject(\"rootMenu\");\n const nsMenu = useNamespace(\"menu\");\n const nsMenuItem = useNamespace(\"menu-item\");\n if (!rootMenu)\n throwError(COMPONENT_NAME, \"can not inject root menu\");\n const { parentMenu, indexPath } = useMenu(instance, toRef(props, \"index\"));\n const subMenu = inject(`subMenu:${parentMenu.value.uid}`);\n if (!subMenu)\n throwError(COMPONENT_NAME, \"can not inject sub menu\");\n const active = computed(() => props.index === rootMenu.activeIndex);\n const item = reactive({\n index: props.index,\n indexPath,\n active\n });\n const handleClick = () => {\n if (!props.disabled) {\n rootMenu.handleMenuItemClick({\n index: props.index,\n indexPath: indexPath.value,\n route: props.route\n });\n emit(\"click\", item);\n }\n };\n onMounted(() => {\n subMenu.addSubMenu(item);\n rootMenu.addMenuItem(item);\n });\n onBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeMenuItem(item);\n });\n return {\n parentMenu,\n rootMenu,\n active,\n nsMenu,\n nsMenuItem,\n handleClick\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_tooltip = resolveComponent(\"el-tooltip\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\n _ctx.nsMenuItem.b(),\n _ctx.nsMenuItem.is(\"active\", _ctx.active),\n _ctx.nsMenuItem.is(\"disabled\", _ctx.disabled)\n ]),\n role: \"menuitem\",\n tabindex: \"-1\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClick && _ctx.handleClick(...args))\n }, [\n _ctx.parentMenu.type.name === \"ElMenu\" && _ctx.rootMenu.props.collapse && _ctx.$slots.title ? (openBlock(), createBlock(_component_el_tooltip, {\n key: 0,\n effect: _ctx.rootMenu.props.popperEffect,\n placement: \"right\",\n \"fallback-placements\": [\"left\"],\n persistent: \"\"\n }, {\n content: withCtx(() => [\n renderSlot(_ctx.$slots, \"title\")\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.nsMenu.be(\"tooltip\", \"trigger\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 8, [\"effect\"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n renderSlot(_ctx.$slots, \"default\"),\n renderSlot(_ctx.$slots, \"title\")\n ], 64))\n ], 2);\n}\nvar MenuItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"menu-item.vue\"]]);\n\nexport { MenuItem as default };\n//# sourceMappingURL=menu-item2.mjs.map\n","const menuItemGroupProps = {\n title: String\n};\n\nexport { menuItemGroupProps };\n//# sourceMappingURL=menu-item-group.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, Fragment, createTextVNode, toDisplayString, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { menuItemGroupProps } from './menu-item-group.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst COMPONENT_NAME = \"ElMenuItemGroup\";\nconst _sfc_main = defineComponent({\n name: COMPONENT_NAME,\n props: menuItemGroupProps,\n setup() {\n const ns = useNamespace(\"menu-item-group\");\n return {\n ns\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass(_ctx.ns.b())\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"title\"))\n }, [\n !_ctx.$slots.title ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ], 64)) : renderSlot(_ctx.$slots, \"title\", { key: 1 })\n ], 2),\n createElementVNode(\"ul\", null, [\n renderSlot(_ctx.$slots, \"default\")\n ])\n ], 2);\n}\nvar MenuItemGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"menu-item-group.vue\"]]);\n\nexport { MenuItemGroup as default };\n//# sourceMappingURL=menu-item-group2.mjs.map\n","import '../../utils/index.mjs';\nimport Menu from './src/menu.mjs';\nexport { menuEmits, menuProps } from './src/menu.mjs';\nimport MenuItem from './src/menu-item2.mjs';\nimport MenuItemGroup from './src/menu-item-group2.mjs';\nimport SubMenu from './src/sub-menu.mjs';\nexport { subMenuProps } from './src/sub-menu.mjs';\nexport { menuItemEmits, menuItemProps } from './src/menu-item.mjs';\nexport { menuItemGroupProps } from './src/menu-item-group.mjs';\nimport './src/types.mjs';\nimport './src/instance.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElMenu = withInstall(Menu, {\n MenuItem,\n MenuItemGroup,\n SubMenu\n});\nconst ElMenuItem = withNoopInstall(MenuItem);\nconst ElMenuItemGroup = withNoopInstall(MenuItemGroup);\nconst ElSubMenu = withNoopInstall(SubMenu);\n\nexport { ElMenu, ElMenuItem, ElMenuItemGroup, ElSubMenu, ElMenu as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { Back } from '@element-plus/icons-vue';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst pageHeaderProps = buildProps({\n icon: {\n type: iconPropType,\n default: () => Back\n },\n title: String,\n content: {\n type: String,\n default: \"\"\n }\n});\nconst pageHeaderEmits = {\n back: () => true\n};\n\nexport { pageHeaderEmits, pageHeaderProps };\n//# sourceMappingURL=page-header.mjs.map\n","import { defineComponent, useSlots, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createCommentVNode, createElementVNode, createBlock, withCtx, resolveDynamicComponent, createTextVNode, toDisplayString, createVNode } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ElDivider } from '../../divider/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { pageHeaderProps, pageHeaderEmits } from './page-header.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"aria-label\"];\nconst __default__ = defineComponent({\n name: \"ElPageHeader\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: pageHeaderProps,\n emits: pageHeaderEmits,\n setup(__props, { emit }) {\n const slots = useSlots();\n const { t } = useLocale();\n const ns = useNamespace(\"page-header\");\n const kls = computed(() => {\n return [\n ns.b(),\n {\n [ns.m(\"has-breadcrumb\")]: !!slots.breadcrumb,\n [ns.m(\"has-extra\")]: !!slots.extra,\n [ns.is(\"contentful\")]: !!slots.default\n }\n ];\n });\n function handleClick() {\n emit(\"back\");\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(kls))\n }, [\n _ctx.$slots.breadcrumb ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"breadcrumb\"))\n }, [\n renderSlot(_ctx.$slots, \"breadcrumb\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"left\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"back\")),\n role: \"button\",\n tabindex: \"0\",\n onClick: handleClick\n }, [\n _ctx.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n \"aria-label\": _ctx.title || unref(t)(\"el.pageHeader.title\"),\n class: normalizeClass(unref(ns).e(\"icon\"))\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _ctx.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true)\n ])\n ], 10, _hoisted_1)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"title\"))\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title || unref(t)(\"el.pageHeader.title\")), 1)\n ])\n ], 2)\n ], 2),\n createVNode(unref(ElDivider), { direction: \"vertical\" }),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"content\"))\n }, [\n renderSlot(_ctx.$slots, \"content\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ], 2)\n ], 2),\n _ctx.$slots.extra ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"extra\"))\n }, [\n renderSlot(_ctx.$slots, \"extra\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2),\n _ctx.$slots.default ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"main\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar PageHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"page-header.vue\"]]);\n\nexport { PageHeader as default };\n//# sourceMappingURL=page-header2.mjs.map\n","import '../../utils/index.mjs';\nimport PageHeader from './src/page-header2.mjs';\nexport { pageHeaderEmits, pageHeaderProps } from './src/page-header.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPageHeader = withInstall(PageHeader);\n\nexport { ElPageHeader, ElPageHeader as default };\n//# sourceMappingURL=index.mjs.map\n","const elPaginationKey = Symbol(\"elPaginationKey\");\n\nexport { elPaginationKey };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../../utils/vue/icon.mjs';\n\nconst paginationPrevProps = buildProps({\n disabled: Boolean,\n currentPage: {\n type: Number,\n default: 1\n },\n prevText: {\n type: String\n },\n prevIcon: {\n type: iconPropType\n }\n});\nconst paginationPrevEmits = {\n click: (evt) => evt instanceof MouseEvent\n};\n\nexport { paginationPrevEmits, paginationPrevProps };\n//# sourceMappingURL=prev.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, unref, toDisplayString, createBlock, withCtx, resolveDynamicComponent } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { paginationPrevProps, paginationPrevEmits } from './prev.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\n\nconst _hoisted_1 = [\"disabled\", \"aria-label\", \"aria-disabled\"];\nconst _hoisted_2 = { key: 0 };\nconst __default__ = defineComponent({\n name: \"ElPaginationPrev\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: paginationPrevProps,\n emits: paginationPrevEmits,\n setup(__props) {\n const props = __props;\n const { t } = useLocale();\n const internalDisabled = computed(() => props.disabled || props.currentPage <= 1);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n type: \"button\",\n class: \"btn-prev\",\n disabled: unref(internalDisabled),\n \"aria-label\": _ctx.prevText || unref(t)(\"el.pagination.prev\"),\n \"aria-disabled\": unref(internalDisabled),\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }, [\n _ctx.prevText ? (openBlock(), createElementBlock(\"span\", _hoisted_2, toDisplayString(_ctx.prevText), 1)) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.prevIcon)))\n ]),\n _: 1\n }))\n ], 8, _hoisted_1);\n };\n }\n});\nvar Prev = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"prev.vue\"]]);\n\nexport { Prev as default };\n//# sourceMappingURL=prev2.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../../utils/vue/icon.mjs';\n\nconst paginationNextProps = buildProps({\n disabled: Boolean,\n currentPage: {\n type: Number,\n default: 1\n },\n pageCount: {\n type: Number,\n default: 50\n },\n nextText: {\n type: String\n },\n nextIcon: {\n type: iconPropType\n }\n});\n\nexport { paginationNextProps };\n//# sourceMappingURL=next.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, unref, toDisplayString, createBlock, withCtx, resolveDynamicComponent } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { paginationNextProps } from './next.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\n\nconst _hoisted_1 = [\"disabled\", \"aria-label\", \"aria-disabled\"];\nconst _hoisted_2 = { key: 0 };\nconst __default__ = defineComponent({\n name: \"ElPaginationNext\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: paginationNextProps,\n emits: [\"click\"],\n setup(__props) {\n const props = __props;\n const { t } = useLocale();\n const internalDisabled = computed(() => props.disabled || props.currentPage === props.pageCount || props.pageCount === 0);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n type: \"button\",\n class: \"btn-next\",\n disabled: unref(internalDisabled),\n \"aria-label\": _ctx.nextText || unref(t)(\"el.pagination.next\"),\n \"aria-disabled\": unref(internalDisabled),\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }, [\n _ctx.nextText ? (openBlock(), createElementBlock(\"span\", _hoisted_2, toDisplayString(_ctx.nextText), 1)) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.nextIcon)))\n ]),\n _: 1\n }))\n ], 8, _hoisted_1);\n };\n }\n});\nvar Next = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"next.vue\"]]);\n\nexport { Next as default };\n//# sourceMappingURL=next2.mjs.map\n","const selectGroupKey = Symbol(\"ElSelectGroup\");\nconst selectKey = Symbol(\"ElSelect\");\n\nexport { selectGroupKey, selectKey };\n//# sourceMappingURL=token.mjs.map\n","import { inject, computed, getCurrentInstance, toRaw, watch } from 'vue';\nimport { get, isEqual } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport { selectKey, selectGroupKey } from './token.mjs';\nimport { isObject } from '@vue/shared';\nimport { escapeStringRegexp } from '../../../utils/strings.mjs';\n\nfunction useOption(props, states) {\n const select = inject(selectKey);\n const selectGroup = inject(selectGroupKey, { disabled: false });\n const itemSelected = computed(() => {\n if (select.props.multiple) {\n return contains(select.props.modelValue, props.value);\n } else {\n return contains([select.props.modelValue], props.value);\n }\n });\n const limitReached = computed(() => {\n if (select.props.multiple) {\n const modelValue = select.props.modelValue || [];\n return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0;\n } else {\n return false;\n }\n });\n const currentLabel = computed(() => {\n return props.label || (isObject(props.value) ? \"\" : props.value);\n });\n const currentValue = computed(() => {\n return props.value || props.label || \"\";\n });\n const isDisabled = computed(() => {\n return props.disabled || states.groupDisabled || limitReached.value;\n });\n const instance = getCurrentInstance();\n const contains = (arr = [], target) => {\n if (!isObject(props.value)) {\n return arr && arr.includes(target);\n } else {\n const valueKey = select.props.valueKey;\n return arr && arr.some((item) => {\n return toRaw(get(item, valueKey)) === get(target, valueKey);\n });\n }\n };\n const hoverItem = () => {\n if (!props.disabled && !selectGroup.disabled) {\n select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy);\n }\n };\n const updateOption = (query) => {\n const regexp = new RegExp(escapeStringRegexp(query), \"i\");\n states.visible = regexp.test(currentLabel.value) || props.created;\n };\n watch(() => currentLabel.value, () => {\n if (!props.created && !select.props.remote)\n select.setSelected();\n });\n watch(() => props.value, (val, oldVal) => {\n const { remote, valueKey } = select.props;\n if (!isEqual(val, oldVal)) {\n select.onOptionDestroy(oldVal, instance.proxy);\n select.onOptionCreate(instance.proxy);\n }\n if (!props.created && !remote) {\n if (valueKey && isObject(val) && isObject(oldVal) && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n select.setSelected();\n }\n });\n watch(() => selectGroup.disabled, () => {\n states.groupDisabled = selectGroup.disabled;\n }, { immediate: true });\n return {\n select,\n currentLabel,\n currentValue,\n itemSelected,\n isDisabled,\n hoverItem,\n updateOption\n };\n}\n\nexport { useOption };\n//# sourceMappingURL=useOption.mjs.map\n","import { defineComponent, computed, unref, reactive, toRefs, getCurrentInstance, onBeforeUnmount, nextTick, withDirectives, openBlock, createElementBlock, normalizeClass, withModifiers, renderSlot, createElementVNode, toDisplayString, vShow } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { useOption } from './useOption.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElOption\",\n componentName: \"ElOption\",\n props: {\n value: {\n required: true,\n type: [String, Number, Boolean, Object]\n },\n label: [String, Number],\n created: Boolean,\n disabled: Boolean\n },\n setup(props) {\n const ns = useNamespace(\"select\");\n const id = useId();\n const containerKls = computed(() => [\n ns.be(\"dropdown\", \"item\"),\n ns.is(\"disabled\", unref(isDisabled)),\n ns.is(\"selected\", unref(itemSelected)),\n ns.is(\"hovering\", unref(hover))\n ]);\n const states = reactive({\n index: -1,\n groupDisabled: false,\n visible: true,\n hover: false\n });\n const {\n currentLabel,\n itemSelected,\n isDisabled,\n select,\n hoverItem,\n updateOption\n } = useOption(props, states);\n const { visible, hover } = toRefs(states);\n const vm = getCurrentInstance().proxy;\n select.onOptionCreate(vm);\n onBeforeUnmount(() => {\n const key = vm.value;\n const { selected } = select.states;\n const selectedOptions = select.props.multiple ? selected : [selected];\n const doesSelected = selectedOptions.some((item) => {\n return item.value === vm.value;\n });\n nextTick(() => {\n if (select.states.cachedOptions.get(key) === vm && !doesSelected) {\n select.states.cachedOptions.delete(key);\n }\n });\n select.onOptionDestroy(key, vm);\n });\n function selectOptionClick() {\n if (props.disabled !== true && states.groupDisabled !== true) {\n select.handleOptionSelect(vm);\n }\n }\n return {\n ns,\n id,\n containerKls,\n currentLabel,\n itemSelected,\n isDisabled,\n select,\n hoverItem,\n updateOption,\n visible,\n hover,\n selectOptionClick,\n states\n };\n }\n});\nconst _hoisted_1 = [\"id\", \"aria-disabled\", \"aria-selected\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return withDirectives((openBlock(), createElementBlock(\"li\", {\n id: _ctx.id,\n class: normalizeClass(_ctx.containerKls),\n role: \"option\",\n \"aria-disabled\": _ctx.isDisabled || void 0,\n \"aria-selected\": _ctx.itemSelected,\n onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),\n onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.currentLabel), 1)\n ])\n ], 42, _hoisted_1)), [\n [vShow, _ctx.visible]\n ]);\n}\nvar Option = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"option.vue\"]]);\n\nexport { Option as default };\n//# sourceMappingURL=option.mjs.map\n","import { defineComponent, inject, computed, ref, onMounted, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, createCommentVNode } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport '../../../hooks/index.mjs';\nimport { selectKey } from './token.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"ElSelectDropdown\",\n componentName: \"ElSelectDropdown\",\n setup() {\n const select = inject(selectKey);\n const ns = useNamespace(\"select\");\n const popperClass = computed(() => select.props.popperClass);\n const isMultiple = computed(() => select.props.multiple);\n const isFitInputWidth = computed(() => select.props.fitInputWidth);\n const minWidth = ref(\"\");\n function updateMinWidth() {\n var _a;\n minWidth.value = `${(_a = select.selectRef) == null ? void 0 : _a.offsetWidth}px`;\n }\n onMounted(() => {\n updateMinWidth();\n useResizeObserver(select.selectRef, updateMinWidth);\n });\n return {\n ns,\n minWidth,\n popperClass,\n isMultiple,\n isFitInputWidth\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.ns.b(\"dropdown\"), _ctx.ns.is(\"multiple\", _ctx.isMultiple), _ctx.popperClass]),\n style: normalizeStyle({ [_ctx.isFitInputWidth ? \"width\" : \"minWidth\"]: _ctx.minWidth })\n }, [\n _ctx.$slots.header ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(_ctx.ns.be(\"dropdown\", \"header\"))\n }, [\n renderSlot(_ctx.$slots, \"header\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\"),\n _ctx.$slots.footer ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(_ctx.ns.be(\"dropdown\", \"footer\"))\n }, [\n renderSlot(_ctx.$slots, \"footer\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 6);\n}\nvar ElSelectMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"select-dropdown.vue\"]]);\n\nexport { ElSelectMenu as default };\n//# sourceMappingURL=select-dropdown.mjs.map\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nexport default findLastIndex;\n","import { ref } from 'vue';\nimport { isFunction } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport { isKorean } from '../../../utils/i18n.mjs';\n\nfunction useInput(handleInput) {\n const isComposing = ref(false);\n const handleCompositionStart = () => {\n isComposing.value = true;\n };\n const handleCompositionUpdate = (event) => {\n const text = event.target.value;\n const lastCharacter = text[text.length - 1] || \"\";\n isComposing.value = !isKorean(lastCharacter);\n };\n const handleCompositionEnd = (event) => {\n if (isComposing.value) {\n isComposing.value = false;\n if (isFunction(handleInput)) {\n handleInput(event);\n }\n }\n };\n return {\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd\n };\n}\n\nexport { useInput };\n//# sourceMappingURL=useInput.mjs.map\n","import { reactive, ref, computed, watch, watchEffect, nextTick, toRaw, onMounted } from 'vue';\nimport { isArray, isFunction, toRawType, isObject } from '@vue/shared';\nimport { isEqual, get, debounce, findLastIndex } from 'lodash-unified';\nimport { isClient, useResizeObserver } from '@vueuse/core';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../form/index.mjs';\nimport { useInput } from '../../select-v2/src/useInput.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFocusController } from '../../../hooks/use-focus-controller/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useEmptyValues } from '../../../hooks/use-empty-values/index.mjs';\nimport { ValidateComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isUndefined, isNumber } from '../../../utils/types.mjs';\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { scrollIntoView } from '../../../utils/dom/scroll.mjs';\n\nconst MINIMUM_INPUT_WIDTH = 11;\nconst useSelect = (props, emit) => {\n const { t } = useLocale();\n const contentId = useId();\n const nsSelect = useNamespace(\"select\");\n const nsInput = useNamespace(\"input\");\n const states = reactive({\n inputValue: \"\",\n options: /* @__PURE__ */ new Map(),\n cachedOptions: /* @__PURE__ */ new Map(),\n disabledOptions: /* @__PURE__ */ new Map(),\n optionValues: [],\n selected: props.multiple ? [] : {},\n selectionWidth: 0,\n calculatorWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: \"\",\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false\n });\n const selectRef = ref(null);\n const selectionRef = ref(null);\n const tooltipRef = ref(null);\n const tagTooltipRef = ref(null);\n const inputRef = ref(null);\n const calculatorRef = ref(null);\n const prefixRef = ref(null);\n const suffixRef = ref(null);\n const menuRef = ref(null);\n const tagMenuRef = ref(null);\n const collapseItemRef = ref(null);\n const scrollbarRef = ref(null);\n const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true;\n states.menuVisibleOnFocus = true;\n }\n },\n beforeBlur(event) {\n var _a, _b;\n return ((_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event));\n },\n afterBlur() {\n expanded.value = false;\n states.menuVisibleOnFocus = false;\n }\n });\n const expanded = ref(false);\n const hoverOption = ref();\n const { form, formItem } = useFormItem();\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem\n });\n const { valueOnClear, isEmptyValue } = useEmptyValues(props);\n const selectDisabled = computed(() => props.disabled || (form == null ? void 0 : form.disabled));\n const hasModelValue = computed(() => {\n return props.multiple ? isArray(props.modelValue) && props.modelValue.length > 0 : !isEmptyValue(props.modelValue);\n });\n const showClose = computed(() => {\n return props.clearable && !selectDisabled.value && states.inputHovering && hasModelValue.value;\n });\n const iconComponent = computed(() => props.remote && props.filterable && !props.remoteShowSuffix ? \"\" : props.suffixIcon);\n const iconReverse = computed(() => nsSelect.is(\"reverse\", iconComponent.value && expanded.value));\n const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || \"\");\n const validateIcon = computed(() => ValidateComponentsMap[validateState.value]);\n const debounce$1 = computed(() => props.remote ? 300 : 0);\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t(\"el.select.loading\");\n } else {\n if (props.remote && !states.inputValue && states.options.size === 0)\n return false;\n if (props.filterable && states.inputValue && states.options.size > 0 && filteredOptionsCount.value === 0) {\n return props.noMatchText || t(\"el.select.noMatch\");\n }\n if (states.options.size === 0) {\n return props.noDataText || t(\"el.select.noData\");\n }\n }\n return null;\n });\n const filteredOptionsCount = computed(() => optionsArray.value.filter((option) => option.visible).length);\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values());\n const newList = [];\n states.optionValues.forEach((item) => {\n const index = list.findIndex((i) => i.value === item);\n if (index > -1) {\n newList.push(list[index]);\n }\n });\n return newList.length >= list.length ? newList : list;\n });\n const cachedOptionsArray = computed(() => Array.from(states.cachedOptions.values()));\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value.filter((option) => {\n return !option.created;\n }).some((option) => {\n return option.currentLabel === states.inputValue;\n });\n return props.filterable && props.allowCreate && states.inputValue !== \"\" && !hasExistingOption;\n });\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod))\n return;\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return;\n optionsArray.value.forEach((option) => {\n var _a;\n (_a = option.updateOption) == null ? void 0 : _a.call(option, states.inputValue);\n });\n };\n const selectSize = useFormSize();\n const collapseTagSize = computed(() => [\"small\"].includes(selectSize.value) ? \"small\" : \"default\");\n const dropdownMenuVisible = computed({\n get() {\n return expanded.value && emptyText.value !== false;\n },\n set(val) {\n expanded.value = val;\n }\n });\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.inputValue;\n }\n return props.filterable ? !states.inputValue : true;\n });\n const currentPlaceholder = computed(() => {\n var _a;\n const _placeholder = (_a = props.placeholder) != null ? _a : t(\"el.select.placeholder\");\n return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel;\n });\n watch(() => props.modelValue, (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = \"\";\n handleQueryChange(\"\");\n }\n }\n setSelected();\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch((err) => debugWarn(err));\n }\n }, {\n flush: \"post\",\n deep: true\n });\n watch(() => expanded.value, (val) => {\n if (val) {\n handleQueryChange(states.inputValue);\n } else {\n states.inputValue = \"\";\n states.previousQuery = null;\n states.isBeforeHide = true;\n }\n emit(\"visible-change\", val);\n });\n watch(() => states.options.entries(), () => {\n var _a;\n if (!isClient)\n return;\n const inputs = ((_a = selectRef.value) == null ? void 0 : _a.querySelectorAll(\"input\")) || [];\n if (!props.filterable && !props.defaultFirstOption && !isUndefined(props.modelValue) || !Array.from(inputs).includes(document.activeElement)) {\n setSelected();\n }\n if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) {\n checkDefaultFirstOption();\n }\n }, {\n flush: \"post\"\n });\n watch(() => states.hoveringIndex, (val) => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {};\n } else {\n hoverOption.value = {};\n }\n optionsArray.value.forEach((option) => {\n option.hover = hoverOption.value === option;\n });\n });\n watchEffect(() => {\n if (states.isBeforeHide)\n return;\n updateOptions();\n });\n const handleQueryChange = (val) => {\n if (states.previousQuery === val) {\n return;\n }\n states.previousQuery = val;\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val);\n } else if (props.filterable && props.remote && isFunction(props.remoteMethod)) {\n props.remoteMethod(val);\n }\n if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) {\n nextTick(checkDefaultFirstOption);\n } else {\n nextTick(updateHoveringIndex);\n }\n };\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter((n) => n.visible && !n.disabled && !n.states.groupDisabled);\n const userCreatedOption = optionsInDropdown.find((n) => n.created);\n const firstOriginOption = optionsInDropdown[0];\n states.hoveringIndex = getValueIndex(optionsArray.value, userCreatedOption || firstOriginOption);\n };\n const setSelected = () => {\n if (!props.multiple) {\n const option = getOption(props.modelValue);\n states.selectedLabel = option.currentLabel;\n states.selected = option;\n return;\n } else {\n states.selectedLabel = \"\";\n }\n const result = [];\n if (isArray(props.modelValue)) {\n props.modelValue.forEach((value) => {\n result.push(getOption(value));\n });\n }\n states.selected = result;\n };\n const getOption = (value) => {\n let option;\n const isObjectValue = toRawType(value).toLowerCase() === \"object\";\n const isNull = toRawType(value).toLowerCase() === \"null\";\n const isUndefined2 = toRawType(value).toLowerCase() === \"undefined\";\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i];\n const isEqualValue = isObjectValue ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey) : cachedOption.value === value;\n if (isEqualValue) {\n option = {\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled;\n }\n };\n break;\n }\n }\n if (option)\n return option;\n const label = isObjectValue ? value.label : !isNull && !isUndefined2 ? value : \"\";\n const newOption = {\n value,\n currentLabel: label\n };\n return newOption;\n };\n const updateHoveringIndex = () => {\n if (!props.multiple) {\n states.hoveringIndex = optionsArray.value.findIndex((item) => {\n return getValueKey(item) === getValueKey(states.selected);\n });\n } else {\n states.hoveringIndex = optionsArray.value.findIndex((item) => states.selected.some((selected) => getValueKey(selected) === getValueKey(item)));\n }\n };\n const resetSelectionWidth = () => {\n states.selectionWidth = selectionRef.value.getBoundingClientRect().width;\n };\n const resetCalculatorWidth = () => {\n states.calculatorWidth = calculatorRef.value.getBoundingClientRect().width;\n };\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;\n };\n const updateTooltip = () => {\n var _a, _b;\n (_b = (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n };\n const updateTagTooltip = () => {\n var _a, _b;\n (_b = (_a = tagTooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n };\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true;\n }\n handleQueryChange(states.inputValue);\n };\n const onInput = (event) => {\n states.inputValue = event.target.value;\n if (props.remote) {\n debouncedOnInputChange();\n } else {\n return onInputChange();\n }\n };\n const debouncedOnInputChange = debounce(() => {\n onInputChange();\n }, debounce$1.value);\n const emitChange = (val) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val);\n }\n };\n const getLastNotDisabledIndex = (value) => findLastIndex(value, (it) => !states.disabledOptions.has(it));\n const deletePrevTag = (e) => {\n if (!props.multiple)\n return;\n if (e.code === EVENT_CODE.delete)\n return;\n if (e.target.value.length <= 0) {\n const value = props.modelValue.slice();\n const lastNotDisabledIndex = getLastNotDisabledIndex(value);\n if (lastNotDisabledIndex < 0)\n return;\n const removeTagValue = value[lastNotDisabledIndex];\n value.splice(lastNotDisabledIndex, 1);\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n emit(\"remove-tag\", removeTagValue);\n }\n };\n const deleteTag = (event, tag) => {\n const index = states.selected.indexOf(tag);\n if (index > -1 && !selectDisabled.value) {\n const value = props.modelValue.slice();\n value.splice(index, 1);\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n emit(\"remove-tag\", tag.value);\n }\n event.stopPropagation();\n focus();\n };\n const deleteSelected = (event) => {\n event.stopPropagation();\n const value = props.multiple ? [] : valueOnClear.value;\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled)\n value.push(item.value);\n }\n }\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n states.hoveringIndex = -1;\n expanded.value = false;\n emit(\"clear\");\n focus();\n };\n const handleOptionSelect = (option) => {\n if (props.multiple) {\n const value = (props.modelValue || []).slice();\n const optionIndex = getValueIndex(value, option.value);\n if (optionIndex > -1) {\n value.splice(optionIndex, 1);\n } else if (props.multipleLimit <= 0 || value.length < props.multipleLimit) {\n value.push(option.value);\n }\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n if (option.created) {\n handleQueryChange(\"\");\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = \"\";\n }\n } else {\n emit(UPDATE_MODEL_EVENT, option.value);\n emitChange(option.value);\n expanded.value = false;\n }\n focus();\n if (expanded.value)\n return;\n nextTick(() => {\n scrollToOption(option);\n });\n };\n const getValueIndex = (arr = [], value) => {\n if (!isObject(value))\n return arr.indexOf(value);\n const valueKey = props.valueKey;\n let index = -1;\n arr.some((item, i) => {\n if (toRaw(get(item, valueKey)) === get(value, valueKey)) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n };\n const scrollToOption = (option) => {\n var _a, _b, _c, _d, _e;\n const targetOption = isArray(option) ? option[0] : option;\n let target = null;\n if (targetOption == null ? void 0 : targetOption.value) {\n const options = optionsArray.value.filter((item) => item.value === targetOption.value);\n if (options.length > 0) {\n target = options[0].$el;\n }\n }\n if (tooltipRef.value && target) {\n const menu = (_d = (_c = (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef) == null ? void 0 : _c.querySelector) == null ? void 0 : _d.call(_c, `.${nsSelect.be(\"dropdown\", \"wrap\")}`);\n if (menu) {\n scrollIntoView(menu, target);\n }\n }\n (_e = scrollbarRef.value) == null ? void 0 : _e.handleScroll();\n };\n const onOptionCreate = (vm) => {\n states.options.set(vm.value, vm);\n states.cachedOptions.set(vm.value, vm);\n vm.disabled && states.disabledOptions.set(vm.value, vm);\n };\n const onOptionDestroy = (key, vm) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key);\n }\n };\n const {\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd\n } = useInput((e) => onInput(e));\n const popperRef = computed(() => {\n var _a, _b;\n return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n const handleMenuEnter = () => {\n states.isBeforeHide = false;\n nextTick(() => scrollToOption(states.selected));\n };\n const focus = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n handleClickOutside();\n };\n const handleClearClick = (event) => {\n deleteSelected(event);\n };\n const handleClickOutside = (event) => {\n expanded.value = false;\n if (isFocused.value) {\n const _event = new FocusEvent(\"focus\", event);\n nextTick(() => handleBlur(_event));\n }\n };\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = \"\";\n } else {\n expanded.value = false;\n }\n };\n const toggleMenu = () => {\n if (selectDisabled.value)\n return;\n if (states.menuVisibleOnFocus) {\n states.menuVisibleOnFocus = false;\n } else {\n expanded.value = !expanded.value;\n }\n };\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu();\n } else {\n if (optionsArray.value[states.hoveringIndex]) {\n handleOptionSelect(optionsArray.value[states.hoveringIndex]);\n }\n }\n };\n const getValueKey = (item) => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value;\n };\n const optionsAllDisabled = computed(() => optionsArray.value.filter((option) => option.visible).every((option) => option.disabled));\n const showTagList = computed(() => {\n if (!props.multiple) {\n return [];\n }\n return props.collapseTags ? states.selected.slice(0, props.maxCollapseTags) : states.selected;\n });\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return [];\n }\n return props.collapseTags ? states.selected.slice(props.maxCollapseTags) : [];\n });\n const navigateOptions = (direction) => {\n if (!expanded.value) {\n expanded.value = true;\n return;\n }\n if (states.options.size === 0 || filteredOptionsCount.value === 0)\n return;\n if (!optionsAllDisabled.value) {\n if (direction === \"next\") {\n states.hoveringIndex++;\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0;\n }\n } else if (direction === \"prev\") {\n states.hoveringIndex--;\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1;\n }\n }\n const option = optionsArray.value[states.hoveringIndex];\n if (option.disabled === true || option.states.groupDisabled === true || !option.visible) {\n navigateOptions(direction);\n }\n nextTick(() => scrollToOption(hoverOption.value));\n }\n };\n const getGapWidth = () => {\n if (!selectionRef.value)\n return 0;\n const style = window.getComputedStyle(selectionRef.value);\n return Number.parseFloat(style.gap || \"6px\");\n };\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth();\n const maxWidth = collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth : states.selectionWidth;\n return { maxWidth: `${maxWidth}px` };\n });\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` };\n });\n const inputStyle = computed(() => ({\n width: `${Math.max(states.calculatorWidth, MINIMUM_INPUT_WIDTH)}px`\n }));\n if (props.multiple && !isArray(props.modelValue)) {\n emit(UPDATE_MODEL_EVENT, []);\n }\n if (!props.multiple && isArray(props.modelValue)) {\n emit(UPDATE_MODEL_EVENT, \"\");\n }\n useResizeObserver(selectionRef, resetSelectionWidth);\n useResizeObserver(calculatorRef, resetCalculatorWidth);\n useResizeObserver(menuRef, updateTooltip);\n useResizeObserver(wrapperRef, updateTooltip);\n useResizeObserver(tagMenuRef, updateTagTooltip);\n useResizeObserver(collapseItemRef, resetCollapseItemWidth);\n onMounted(() => {\n setSelected();\n });\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n resetCalculatorWidth,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n showClose,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n handleFocus,\n focus,\n blur,\n handleBlur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n tagStyle,\n collapseTagStyle,\n inputStyle,\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n calculatorRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef\n };\n};\n\nexport { useSelect };\n//# sourceMappingURL=useSelect.mjs.map\n","import { defineComponent, inject } from 'vue';\nimport { isArray, isString, isFunction } from '@vue/shared';\nimport { isEqual } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport { selectKey } from './token.mjs';\n\nvar ElOptions = defineComponent({\n name: \"ElOptions\",\n setup(_, { slots }) {\n const select = inject(selectKey);\n let cachedValueList = [];\n return () => {\n var _a, _b;\n const children = (_a = slots.default) == null ? void 0 : _a.call(slots);\n const valueList = [];\n function filterOptions(children2) {\n if (!isArray(children2))\n return;\n children2.forEach((item) => {\n var _a2, _b2, _c, _d;\n const name = (_a2 = (item == null ? void 0 : item.type) || {}) == null ? void 0 : _a2.name;\n if (name === \"ElOptionGroup\") {\n filterOptions(!isString(item.children) && !isArray(item.children) && isFunction((_b2 = item.children) == null ? void 0 : _b2.default) ? (_c = item.children) == null ? void 0 : _c.default() : item.children);\n } else if (name === \"ElOption\") {\n valueList.push((_d = item.props) == null ? void 0 : _d.value);\n } else if (isArray(item.children)) {\n filterOptions(item.children);\n }\n });\n }\n if (children.length) {\n filterOptions((_b = children[0]) == null ? void 0 : _b.children);\n }\n if (!isEqual(valueList, cachedValueList)) {\n cachedValueList = valueList;\n if (select) {\n select.states.optionValues = valueList;\n }\n }\n return children;\n };\n }\n});\n\nexport { ElOptions as default };\n//# sourceMappingURL=options.mjs.map\n","import { placements } from '@popperjs/core';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport { CircleClose, ArrowDown } from '@element-plus/icons-vue';\nimport '../../tag/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { tagProps } from '../../tag/src/tag.mjs';\nimport { useEmptyValuesProps } from '../../../hooks/use-empty-values/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\n\nconst SelectProps = buildProps({\n name: String,\n id: String,\n modelValue: {\n type: [Array, String, Number, Boolean, Object],\n default: void 0\n },\n autocomplete: {\n type: String,\n default: \"off\"\n },\n automaticDropdown: Boolean,\n size: useSizeProp,\n effect: {\n type: definePropType(String),\n default: \"light\"\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n allowCreate: Boolean,\n loading: Boolean,\n popperClass: {\n type: String,\n default: \"\"\n },\n popperOptions: {\n type: definePropType(Object),\n default: () => ({})\n },\n remote: Boolean,\n loadingText: String,\n noMatchText: String,\n noDataText: String,\n remoteMethod: Function,\n filterMethod: Function,\n multiple: Boolean,\n multipleLimit: {\n type: Number,\n default: 0\n },\n placeholder: {\n type: String\n },\n defaultFirstOption: Boolean,\n reserveKeyword: {\n type: Boolean,\n default: true\n },\n valueKey: {\n type: String,\n default: \"value\"\n },\n collapseTags: Boolean,\n collapseTagsTooltip: Boolean,\n maxCollapseTags: {\n type: Number,\n default: 1\n },\n teleported: useTooltipContentProps.teleported,\n persistent: {\n type: Boolean,\n default: true\n },\n clearIcon: {\n type: iconPropType,\n default: CircleClose\n },\n fitInputWidth: Boolean,\n suffixIcon: {\n type: iconPropType,\n default: ArrowDown\n },\n tagType: { ...tagProps.type, default: \"info\" },\n validateEvent: {\n type: Boolean,\n default: true\n },\n remoteShowSuffix: Boolean,\n placement: {\n type: definePropType(String),\n values: placements,\n default: \"bottom-start\"\n },\n fallbackPlacements: {\n type: definePropType(Array),\n default: [\"bottom-start\", \"top-start\", \"right\", \"left\"]\n },\n ...useEmptyValuesProps,\n ...useAriaProps([\"ariaLabel\"])\n});\n\nexport { SelectProps };\n//# sourceMappingURL=select.mjs.map\n","import { defineComponent, provide, reactive, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, withModifiers, createVNode, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, normalizeStyle, createTextVNode, toDisplayString, createBlock, withKeys, vModelText, resolveDynamicComponent, vShow } from 'vue';\nimport '../../../directives/index.mjs';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport { ElTag } from '../../tag/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../constants/index.mjs';\nimport Option from './option.mjs';\nimport ElSelectMenu from './select-dropdown.mjs';\nimport { useSelect } from './useSelect.mjs';\nimport { selectKey } from './token.mjs';\nimport ElOptions from './options.mjs';\nimport { SelectProps } from './select.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst COMPONENT_NAME = \"ElSelect\";\nconst _sfc_main = defineComponent({\n name: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n components: {\n ElInput,\n ElSelectMenu,\n ElOption: Option,\n ElOptions,\n ElTag,\n ElScrollbar,\n ElTooltip,\n ElIcon\n },\n directives: { ClickOutside },\n props: SelectProps,\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n \"remove-tag\",\n \"clear\",\n \"visible-change\",\n \"focus\",\n \"blur\"\n ],\n setup(props, { emit }) {\n const API = useSelect(props, emit);\n provide(selectKey, reactive({\n props,\n states: API.states,\n optionsArray: API.optionsArray,\n handleOptionSelect: API.handleOptionSelect,\n onOptionCreate: API.onOptionCreate,\n onOptionDestroy: API.onOptionDestroy,\n selectRef: API.selectRef,\n setSelected: API.setSelected\n }));\n return {\n ...API\n };\n }\n});\nconst _hoisted_1 = [\"id\", \"disabled\", \"autocomplete\", \"readonly\", \"aria-activedescendant\", \"aria-controls\", \"aria-expanded\", \"aria-label\"];\nconst _hoisted_2 = [\"textContent\"];\nconst _hoisted_3 = { key: 1 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_tag = resolveComponent(\"el-tag\");\n const _component_el_tooltip = resolveComponent(\"el-tooltip\");\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_el_option = resolveComponent(\"el-option\");\n const _component_el_options = resolveComponent(\"el-options\");\n const _component_el_scrollbar = resolveComponent(\"el-scrollbar\");\n const _component_el_select_menu = resolveComponent(\"el-select-menu\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n ref: \"selectRef\",\n class: normalizeClass([_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]),\n onMouseenter: _cache[16] || (_cache[16] = ($event) => _ctx.states.inputHovering = true),\n onMouseleave: _cache[17] || (_cache[17] = ($event) => _ctx.states.inputHovering = false),\n onClick: _cache[18] || (_cache[18] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), [\"prevent\", \"stop\"]))\n }, [\n createVNode(_component_el_tooltip, {\n ref: \"tooltipRef\",\n visible: _ctx.dropdownMenuVisible,\n placement: _ctx.placement,\n teleported: _ctx.teleported,\n \"popper-class\": [_ctx.nsSelect.e(\"popper\"), _ctx.popperClass],\n \"popper-options\": _ctx.popperOptions,\n \"fallback-placements\": _ctx.fallbackPlacements,\n effect: _ctx.effect,\n pure: \"\",\n trigger: \"click\",\n transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,\n \"stop-popper-mouse-event\": false,\n \"gpu-acceleration\": false,\n persistent: _ctx.persistent,\n onBeforeShow: _ctx.handleMenuEnter,\n onHide: _cache[15] || (_cache[15] = ($event) => _ctx.states.isBeforeHide = false)\n }, {\n default: withCtx(() => {\n var _a;\n return [\n createElementVNode(\"div\", {\n ref: \"wrapperRef\",\n class: normalizeClass([\n _ctx.nsSelect.e(\"wrapper\"),\n _ctx.nsSelect.is(\"focused\", _ctx.isFocused),\n _ctx.nsSelect.is(\"hovering\", _ctx.states.inputHovering),\n _ctx.nsSelect.is(\"filterable\", _ctx.filterable),\n _ctx.nsSelect.is(\"disabled\", _ctx.selectDisabled)\n ])\n }, [\n _ctx.$slots.prefix ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"prefixRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"prefix\"))\n }, [\n renderSlot(_ctx.$slots, \"prefix\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n ref: \"selectionRef\",\n class: normalizeClass([\n _ctx.nsSelect.e(\"selection\"),\n _ctx.nsSelect.is(\"near\", _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.states.selected.length)\n ])\n }, [\n _ctx.multiple ? renderSlot(_ctx.$slots, \"tag\", { key: 0 }, () => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.showTagList, (item) => {\n return openBlock(), createElementBlock(\"div\", {\n key: _ctx.getValueKey(item),\n class: normalizeClass(_ctx.nsSelect.e(\"selected-item\"))\n }, [\n createVNode(_component_el_tag, {\n closable: !_ctx.selectDisabled && !item.isDisabled,\n size: _ctx.collapseTagSize,\n type: _ctx.tagType,\n \"disable-transitions\": \"\",\n style: normalizeStyle(_ctx.tagStyle),\n onClose: ($event) => _ctx.deleteTag($event, item)\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.nsSelect.e(\"tags-text\"))\n }, [\n renderSlot(_ctx.$slots, \"label\", {\n label: item.currentLabel,\n value: item.value\n }, () => [\n createTextVNode(toDisplayString(item.currentLabel), 1)\n ])\n ], 2)\n ]),\n _: 2\n }, 1032, [\"closable\", \"size\", \"type\", \"style\", \"onClose\"])\n ], 2);\n }), 128)),\n _ctx.collapseTags && _ctx.states.selected.length > _ctx.maxCollapseTags ? (openBlock(), createBlock(_component_el_tooltip, {\n key: 0,\n ref: \"tagTooltipRef\",\n disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip,\n \"fallback-placements\": [\"bottom\", \"top\", \"right\", \"left\"],\n effect: _ctx.effect,\n placement: \"bottom\",\n teleported: _ctx.teleported\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"collapseItemRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"selected-item\"))\n }, [\n createVNode(_component_el_tag, {\n closable: false,\n size: _ctx.collapseTagSize,\n type: _ctx.tagType,\n \"disable-transitions\": \"\",\n style: normalizeStyle(_ctx.collapseTagStyle)\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.nsSelect.e(\"tags-text\"))\n }, \" + \" + toDisplayString(_ctx.states.selected.length - _ctx.maxCollapseTags), 3)\n ]),\n _: 1\n }, 8, [\"size\", \"type\", \"style\"])\n ], 2)\n ]),\n content: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"tagMenuRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"selection\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.collapseTagList, (item) => {\n return openBlock(), createElementBlock(\"div\", {\n key: _ctx.getValueKey(item),\n class: normalizeClass(_ctx.nsSelect.e(\"selected-item\"))\n }, [\n createVNode(_component_el_tag, {\n class: \"in-tooltip\",\n closable: !_ctx.selectDisabled && !item.isDisabled,\n size: _ctx.collapseTagSize,\n type: _ctx.tagType,\n \"disable-transitions\": \"\",\n onClose: ($event) => _ctx.deleteTag($event, item)\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.nsSelect.e(\"tags-text\"))\n }, [\n renderSlot(_ctx.$slots, \"label\", {\n label: item.currentLabel,\n value: item.value\n }, () => [\n createTextVNode(toDisplayString(item.currentLabel), 1)\n ])\n ], 2)\n ]),\n _: 2\n }, 1032, [\"closable\", \"size\", \"type\", \"onClose\"])\n ], 2);\n }), 128))\n ], 2)\n ]),\n _: 3\n }, 8, [\"disabled\", \"effect\", \"teleported\"])) : createCommentVNode(\"v-if\", true)\n ]) : createCommentVNode(\"v-if\", true),\n !_ctx.selectDisabled ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass([\n _ctx.nsSelect.e(\"selected-item\"),\n _ctx.nsSelect.e(\"input-wrapper\"),\n _ctx.nsSelect.is(\"hidden\", !_ctx.filterable)\n ])\n }, [\n withDirectives(createElementVNode(\"input\", {\n id: _ctx.inputId,\n ref: \"inputRef\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.states.inputValue = $event),\n type: \"text\",\n class: normalizeClass([_ctx.nsSelect.e(\"input\"), _ctx.nsSelect.is(_ctx.selectSize)]),\n disabled: _ctx.selectDisabled,\n autocomplete: _ctx.autocomplete,\n style: normalizeStyle(_ctx.inputStyle),\n role: \"combobox\",\n readonly: !_ctx.filterable,\n spellcheck: \"false\",\n \"aria-activedescendant\": ((_a = _ctx.hoverOption) == null ? void 0 : _a.id) || \"\",\n \"aria-controls\": _ctx.contentId,\n \"aria-expanded\": _ctx.dropdownMenuVisible,\n \"aria-label\": _ctx.ariaLabel,\n \"aria-autocomplete\": \"none\",\n \"aria-haspopup\": \"listbox\",\n onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),\n onBlur: _cache[2] || (_cache[2] = (...args) => _ctx.handleBlur && _ctx.handleBlur(...args)),\n onKeydown: [\n _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => _ctx.navigateOptions(\"next\"), [\"stop\", \"prevent\"]), [\"down\"])),\n _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => _ctx.navigateOptions(\"prev\"), [\"stop\", \"prevent\"]), [\"up\"])),\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => _ctx.handleEsc && _ctx.handleEsc(...args), [\"stop\", \"prevent\"]), [\"esc\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => _ctx.selectOption && _ctx.selectOption(...args), [\"stop\", \"prevent\"]), [\"enter\"])),\n _cache[7] || (_cache[7] = withKeys(withModifiers((...args) => _ctx.deletePrevTag && _ctx.deletePrevTag(...args), [\"stop\"]), [\"delete\"]))\n ],\n onCompositionstart: _cache[8] || (_cache[8] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)),\n onCompositionupdate: _cache[9] || (_cache[9] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)),\n onCompositionend: _cache[10] || (_cache[10] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)),\n onInput: _cache[11] || (_cache[11] = (...args) => _ctx.onInput && _ctx.onInput(...args)),\n onClick: _cache[12] || (_cache[12] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), [\"stop\"]))\n }, null, 46, _hoisted_1), [\n [vModelText, _ctx.states.inputValue]\n ]),\n _ctx.filterable ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n ref: \"calculatorRef\",\n \"aria-hidden\": \"true\",\n class: normalizeClass(_ctx.nsSelect.e(\"input-calculator\")),\n textContent: toDisplayString(_ctx.states.inputValue)\n }, null, 10, _hoisted_2)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.shouldShowPlaceholder ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\n _ctx.nsSelect.e(\"selected-item\"),\n _ctx.nsSelect.e(\"placeholder\"),\n _ctx.nsSelect.is(\"transparent\", !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue)\n ])\n }, [\n _ctx.hasModelValue ? renderSlot(_ctx.$slots, \"label\", {\n key: 0,\n label: _ctx.currentPlaceholder,\n value: _ctx.modelValue\n }, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.currentPlaceholder), 1)\n ]) : (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.currentPlaceholder), 1))\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2),\n createElementVNode(\"div\", {\n ref: \"suffixRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"suffix\"))\n }, [\n _ctx.iconComponent && !_ctx.showClose ? (openBlock(), createBlock(_component_el_icon, {\n key: 0,\n class: normalizeClass([_ctx.nsSelect.e(\"caret\"), _ctx.nsSelect.e(\"icon\"), _ctx.iconReverse])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true),\n _ctx.showClose && _ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {\n key: 1,\n class: normalizeClass([_ctx.nsSelect.e(\"caret\"), _ctx.nsSelect.e(\"icon\")]),\n onClick: _ctx.handleClearClick\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true),\n _ctx.validateState && _ctx.validateIcon ? (openBlock(), createBlock(_component_el_icon, {\n key: 2,\n class: normalizeClass([_ctx.nsInput.e(\"icon\"), _ctx.nsInput.e(\"validateIcon\")])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.validateIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2)\n ];\n }),\n content: withCtx(() => [\n createVNode(_component_el_select_menu, { ref: \"menuRef\" }, {\n default: withCtx(() => [\n _ctx.$slots.header ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"header\")),\n onClick: _cache[13] || (_cache[13] = withModifiers(() => {\n }, [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"header\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n withDirectives(createVNode(_component_el_scrollbar, {\n id: _ctx.contentId,\n ref: \"scrollbarRef\",\n tag: \"ul\",\n \"wrap-class\": _ctx.nsSelect.be(\"dropdown\", \"wrap\"),\n \"view-class\": _ctx.nsSelect.be(\"dropdown\", \"list\"),\n class: normalizeClass([_ctx.nsSelect.is(\"empty\", _ctx.filteredOptionsCount === 0)]),\n role: \"listbox\",\n \"aria-label\": _ctx.ariaLabel,\n \"aria-orientation\": \"vertical\"\n }, {\n default: withCtx(() => [\n _ctx.showNewOption ? (openBlock(), createBlock(_component_el_option, {\n key: 0,\n value: _ctx.states.inputValue,\n created: true\n }, null, 8, [\"value\"])) : createCommentVNode(\"v-if\", true),\n createVNode(_component_el_options, null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n })\n ]),\n _: 3\n }, 8, [\"id\", \"wrap-class\", \"view-class\", \"class\", \"aria-label\"]), [\n [vShow, _ctx.states.options.size > 0 && !_ctx.loading]\n ]),\n _ctx.$slots.loading && _ctx.loading ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"loading\"))\n }, [\n renderSlot(_ctx.$slots, \"loading\")\n ], 2)) : _ctx.loading || _ctx.filteredOptionsCount === 0 ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"empty\"))\n }, [\n renderSlot(_ctx.$slots, \"empty\", {}, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.emptyText), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.footer ? (openBlock(), createElementBlock(\"div\", {\n key: 3,\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"footer\")),\n onClick: _cache[14] || (_cache[14] = withModifiers(() => {\n }, [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"footer\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 512)\n ]),\n _: 3\n }, 8, [\"visible\", \"placement\", \"teleported\", \"popper-class\", \"popper-options\", \"fallback-placements\", \"effect\", \"transition\", \"persistent\", \"onBeforeShow\"])\n ], 34)), [\n [_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef]\n ]);\n}\nvar Select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"select.vue\"]]);\n\nexport { Select as default };\n//# sourceMappingURL=select2.mjs.map\n","import { defineComponent, ref, getCurrentInstance, provide, reactive, toRefs, computed, onMounted, withDirectives, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, renderSlot, vShow } from 'vue';\nimport { useMutationObserver } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { selectGroupKey } from './token.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { castArray } from 'lodash-unified';\n\nconst _sfc_main = defineComponent({\n name: \"ElOptionGroup\",\n componentName: \"ElOptionGroup\",\n props: {\n label: String,\n disabled: Boolean\n },\n setup(props) {\n const ns = useNamespace(\"select\");\n const groupRef = ref(null);\n const instance = getCurrentInstance();\n const children = ref([]);\n provide(selectGroupKey, reactive({\n ...toRefs(props)\n }));\n const visible = computed(() => children.value.some((option) => option.visible === true));\n const isOption = (node) => {\n var _a, _b;\n return ((_a = node.type) == null ? void 0 : _a.name) === \"ElOption\" && !!((_b = node.component) == null ? void 0 : _b.proxy);\n };\n const flattedChildren = (node) => {\n const Nodes = castArray(node);\n const children2 = [];\n Nodes.forEach((child) => {\n var _a, _b;\n if (isOption(child)) {\n children2.push(child.component.proxy);\n } else if ((_a = child.children) == null ? void 0 : _a.length) {\n children2.push(...flattedChildren(child.children));\n } else if ((_b = child.component) == null ? void 0 : _b.subTree) {\n children2.push(...flattedChildren(child.component.subTree));\n }\n });\n return children2;\n };\n const updateChildren = () => {\n children.value = flattedChildren(instance.subTree);\n };\n onMounted(() => {\n updateChildren();\n });\n useMutationObserver(groupRef, updateChildren, {\n attributes: true,\n subtree: true,\n childList: true\n });\n return {\n groupRef,\n visible,\n ns\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return withDirectives((openBlock(), createElementBlock(\"ul\", {\n ref: \"groupRef\",\n class: normalizeClass(_ctx.ns.be(\"group\", \"wrap\"))\n }, [\n createElementVNode(\"li\", {\n class: normalizeClass(_ctx.ns.be(\"group\", \"title\"))\n }, toDisplayString(_ctx.label), 3),\n createElementVNode(\"li\", null, [\n createElementVNode(\"ul\", {\n class: normalizeClass(_ctx.ns.b(\"group\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ])\n ], 2)), [\n [vShow, _ctx.visible]\n ]);\n}\nvar OptionGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"option-group.vue\"]]);\n\nexport { OptionGroup as default };\n//# sourceMappingURL=option-group.mjs.map\n","import '../../utils/index.mjs';\nimport Select from './src/select2.mjs';\nimport Option from './src/option.mjs';\nimport OptionGroup from './src/option-group.mjs';\nexport { selectGroupKey, selectKey } from './src/token.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElSelect = withInstall(Select, {\n Option,\n OptionGroup\n});\nconst ElOption = withNoopInstall(Option);\nconst ElOptionGroup = withNoopInstall(OptionGroup);\n\nexport { ElOption, ElOptionGroup, ElSelect, ElSelect as default };\n//# sourceMappingURL=index.mjs.map\n","import { inject } from 'vue';\nimport { elPaginationKey } from './constants.mjs';\n\nconst usePagination = () => inject(elPaginationKey, {});\n\nexport { usePagination };\n//# sourceMappingURL=usePagination.mjs.map\n","import '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../../utils/typescript.mjs';\nimport { componentSizes } from '../../../../constants/size.mjs';\n\nconst paginationSizesProps = buildProps({\n pageSize: {\n type: Number,\n required: true\n },\n pageSizes: {\n type: definePropType(Array),\n default: () => mutable([10, 20, 30, 40, 50, 100])\n },\n popperClass: {\n type: String\n },\n disabled: Boolean,\n teleported: Boolean,\n size: {\n type: String,\n values: componentSizes\n }\n});\n\nexport { paginationSizesProps };\n//# sourceMappingURL=sizes.mjs.map\n","import { defineComponent, ref, watch, computed, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx, Fragment, renderList, createBlock } from 'vue';\nimport { isEqual } from 'lodash-unified';\nimport { ElSelect, ElOption } from '../../../select/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { usePagination } from '../usePagination.mjs';\nimport { paginationSizesProps } from './sizes.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElPaginationSizes\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: paginationSizesProps,\n emits: [\"page-size-change\"],\n setup(__props, { emit }) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"pagination\");\n const pagination = usePagination();\n const innerPageSize = ref(props.pageSize);\n watch(() => props.pageSizes, (newVal, oldVal) => {\n if (isEqual(newVal, oldVal))\n return;\n if (Array.isArray(newVal)) {\n const pageSize = newVal.includes(props.pageSize) ? props.pageSize : props.pageSizes[0];\n emit(\"page-size-change\", pageSize);\n }\n });\n watch(() => props.pageSize, (newVal) => {\n innerPageSize.value = newVal;\n });\n const innerPageSizes = computed(() => props.pageSizes);\n function handleChange(val) {\n var _a;\n if (val !== innerPageSize.value) {\n innerPageSize.value = val;\n (_a = pagination.handleSizeChange) == null ? void 0 : _a.call(pagination, Number(val));\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(ns).e(\"sizes\"))\n }, [\n createVNode(unref(ElSelect), {\n \"model-value\": innerPageSize.value,\n disabled: _ctx.disabled,\n \"popper-class\": _ctx.popperClass,\n size: _ctx.size,\n teleported: _ctx.teleported,\n \"validate-event\": false,\n onChange: handleChange\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(innerPageSizes), (item) => {\n return openBlock(), createBlock(unref(ElOption), {\n key: item,\n value: item,\n label: item + unref(t)(\"el.pagination.pagesize\")\n }, null, 8, [\"value\", \"label\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"model-value\", \"disabled\", \"popper-class\", \"size\", \"teleported\"])\n ], 2);\n };\n }\n});\nvar Sizes = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"sizes.vue\"]]);\n\nexport { Sizes as default };\n//# sourceMappingURL=sizes2.mjs.map\n","import '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\nimport { componentSizes } from '../../../../constants/size.mjs';\n\nconst paginationJumperProps = buildProps({\n size: {\n type: String,\n values: componentSizes\n }\n});\n\nexport { paginationJumperProps };\n//# sourceMappingURL=jumper.mjs.map\n","import { defineComponent, ref, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, toDisplayString, createVNode } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { ElInput } from '../../../input/index.mjs';\nimport { usePagination } from '../usePagination.mjs';\nimport { paginationJumperProps } from './jumper.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"disabled\"];\nconst __default__ = defineComponent({\n name: \"ElPaginationJumper\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: paginationJumperProps,\n setup(__props) {\n const { t } = useLocale();\n const ns = useNamespace(\"pagination\");\n const { pageCount, disabled, currentPage, changeEvent } = usePagination();\n const userInput = ref();\n const innerValue = computed(() => {\n var _a;\n return (_a = userInput.value) != null ? _a : currentPage == null ? void 0 : currentPage.value;\n });\n function handleInput(val) {\n userInput.value = val ? +val : \"\";\n }\n function handleChange(val) {\n val = Math.trunc(+val);\n changeEvent == null ? void 0 : changeEvent(val);\n userInput.value = void 0;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(ns).e(\"jump\")),\n disabled: unref(disabled)\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([unref(ns).e(\"goto\")])\n }, toDisplayString(unref(t)(\"el.pagination.goto\")), 3),\n createVNode(unref(ElInput), {\n size: _ctx.size,\n class: normalizeClass([unref(ns).e(\"editor\"), unref(ns).is(\"in-pagination\")]),\n min: 1,\n max: unref(pageCount),\n disabled: unref(disabled),\n \"model-value\": unref(innerValue),\n \"validate-event\": false,\n \"aria-label\": unref(t)(\"el.pagination.page\"),\n type: \"number\",\n \"onUpdate:modelValue\": handleInput,\n onChange: handleChange\n }, null, 8, [\"size\", \"class\", \"max\", \"disabled\", \"model-value\", \"aria-label\"]),\n createElementVNode(\"span\", {\n class: normalizeClass([unref(ns).e(\"classifier\")])\n }, toDisplayString(unref(t)(\"el.pagination.pageClassifier\")), 3)\n ], 10, _hoisted_1);\n };\n }\n});\nvar Jumper = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"jumper.vue\"]]);\n\nexport { Jumper as default };\n//# sourceMappingURL=jumper2.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\n\nconst paginationTotalProps = buildProps({\n total: {\n type: Number,\n default: 1e3\n }\n});\n\nexport { paginationTotalProps };\n//# sourceMappingURL=total.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, toDisplayString } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { usePagination } from '../usePagination.mjs';\nimport { paginationTotalProps } from './total.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"disabled\"];\nconst __default__ = defineComponent({\n name: \"ElPaginationTotal\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: paginationTotalProps,\n setup(__props) {\n const { t } = useLocale();\n const ns = useNamespace(\"pagination\");\n const { disabled } = usePagination();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass(unref(ns).e(\"total\")),\n disabled: unref(disabled)\n }, toDisplayString(unref(t)(\"el.pagination.total\", {\n total: _ctx.total\n })), 11, _hoisted_1);\n };\n }\n});\nvar Total = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"total.vue\"]]);\n\nexport { Total as default };\n//# sourceMappingURL=total2.mjs.map\n","import '../../../../utils/index.mjs';\nimport { buildProps } from '../../../../utils/vue/props/runtime.mjs';\n\nconst paginationPagerProps = buildProps({\n currentPage: {\n type: Number,\n default: 1\n },\n pageCount: {\n type: Number,\n required: true\n },\n pagerCount: {\n type: Number,\n default: 7\n },\n disabled: Boolean\n});\n\nexport { paginationPagerProps };\n//# sourceMappingURL=pager.mjs.map\n","import { defineComponent, ref, computed, watchEffect, openBlock, createElementBlock, normalizeClass, unref, withKeys, createCommentVNode, createBlock, Fragment, renderList, toDisplayString } from 'vue';\nimport { DArrowLeft, MoreFilled, DArrowRight } from '@element-plus/icons-vue';\nimport '../../../../hooks/index.mjs';\nimport { paginationPagerProps } from './pager.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\n\nconst _hoisted_1 = [\"onKeyup\"];\nconst _hoisted_2 = [\"aria-current\", \"aria-label\", \"tabindex\"];\nconst _hoisted_3 = [\"tabindex\", \"aria-label\"];\nconst _hoisted_4 = [\"aria-current\", \"aria-label\", \"tabindex\"];\nconst _hoisted_5 = [\"tabindex\", \"aria-label\"];\nconst _hoisted_6 = [\"aria-current\", \"aria-label\", \"tabindex\"];\nconst __default__ = defineComponent({\n name: \"ElPaginationPager\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: paginationPagerProps,\n emits: [\"change\"],\n setup(__props, { emit }) {\n const props = __props;\n const nsPager = useNamespace(\"pager\");\n const nsIcon = useNamespace(\"icon\");\n const { t } = useLocale();\n const showPrevMore = ref(false);\n const showNextMore = ref(false);\n const quickPrevHover = ref(false);\n const quickNextHover = ref(false);\n const quickPrevFocus = ref(false);\n const quickNextFocus = ref(false);\n const pagers = computed(() => {\n const pagerCount = props.pagerCount;\n const halfPagerCount = (pagerCount - 1) / 2;\n const currentPage = Number(props.currentPage);\n const pageCount = Number(props.pageCount);\n let showPrevMore2 = false;\n let showNextMore2 = false;\n if (pageCount > pagerCount) {\n if (currentPage > pagerCount - halfPagerCount) {\n showPrevMore2 = true;\n }\n if (currentPage < pageCount - halfPagerCount) {\n showNextMore2 = true;\n }\n }\n const array = [];\n if (showPrevMore2 && !showNextMore2) {\n const startPage = pageCount - (pagerCount - 2);\n for (let i = startPage; i < pageCount; i++) {\n array.push(i);\n }\n } else if (!showPrevMore2 && showNextMore2) {\n for (let i = 2; i < pagerCount; i++) {\n array.push(i);\n }\n } else if (showPrevMore2 && showNextMore2) {\n const offset = Math.floor(pagerCount / 2) - 1;\n for (let i = currentPage - offset; i <= currentPage + offset; i++) {\n array.push(i);\n }\n } else {\n for (let i = 2; i < pageCount; i++) {\n array.push(i);\n }\n }\n return array;\n });\n const prevMoreKls = computed(() => [\n \"more\",\n \"btn-quickprev\",\n nsIcon.b(),\n nsPager.is(\"disabled\", props.disabled)\n ]);\n const nextMoreKls = computed(() => [\n \"more\",\n \"btn-quicknext\",\n nsIcon.b(),\n nsPager.is(\"disabled\", props.disabled)\n ]);\n const tabindex = computed(() => props.disabled ? -1 : 0);\n watchEffect(() => {\n const halfPagerCount = (props.pagerCount - 1) / 2;\n showPrevMore.value = false;\n showNextMore.value = false;\n if (props.pageCount > props.pagerCount) {\n if (props.currentPage > props.pagerCount - halfPagerCount) {\n showPrevMore.value = true;\n }\n if (props.currentPage < props.pageCount - halfPagerCount) {\n showNextMore.value = true;\n }\n }\n });\n function onMouseEnter(forward = false) {\n if (props.disabled)\n return;\n if (forward) {\n quickPrevHover.value = true;\n } else {\n quickNextHover.value = true;\n }\n }\n function onFocus(forward = false) {\n if (forward) {\n quickPrevFocus.value = true;\n } else {\n quickNextFocus.value = true;\n }\n }\n function onEnter(e) {\n const target = e.target;\n if (target.tagName.toLowerCase() === \"li\" && Array.from(target.classList).includes(\"number\")) {\n const newPage = Number(target.textContent);\n if (newPage !== props.currentPage) {\n emit(\"change\", newPage);\n }\n } else if (target.tagName.toLowerCase() === \"li\" && Array.from(target.classList).includes(\"more\")) {\n onPagerClick(e);\n }\n }\n function onPagerClick(event) {\n const target = event.target;\n if (target.tagName.toLowerCase() === \"ul\" || props.disabled) {\n return;\n }\n let newPage = Number(target.textContent);\n const pageCount = props.pageCount;\n const currentPage = props.currentPage;\n const pagerCountOffset = props.pagerCount - 2;\n if (target.className.includes(\"more\")) {\n if (target.className.includes(\"quickprev\")) {\n newPage = currentPage - pagerCountOffset;\n } else if (target.className.includes(\"quicknext\")) {\n newPage = currentPage + pagerCountOffset;\n }\n }\n if (!Number.isNaN(+newPage)) {\n if (newPage < 1) {\n newPage = 1;\n }\n if (newPage > pageCount) {\n newPage = pageCount;\n }\n }\n if (newPage !== currentPage) {\n emit(\"change\", newPage);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"ul\", {\n class: normalizeClass(unref(nsPager).b()),\n onClick: onPagerClick,\n onKeyup: withKeys(onEnter, [\"enter\"])\n }, [\n _ctx.pageCount > 0 ? (openBlock(), createElementBlock(\"li\", {\n key: 0,\n class: normalizeClass([[\n unref(nsPager).is(\"active\", _ctx.currentPage === 1),\n unref(nsPager).is(\"disabled\", _ctx.disabled)\n ], \"number\"]),\n \"aria-current\": _ctx.currentPage === 1,\n \"aria-label\": unref(t)(\"el.pagination.currentPage\", { pager: 1 }),\n tabindex: unref(tabindex)\n }, \" 1 \", 10, _hoisted_2)) : createCommentVNode(\"v-if\", true),\n showPrevMore.value ? (openBlock(), createElementBlock(\"li\", {\n key: 1,\n class: normalizeClass(unref(prevMoreKls)),\n tabindex: unref(tabindex),\n \"aria-label\": unref(t)(\"el.pagination.prevPages\", { pager: _ctx.pagerCount - 2 }),\n onMouseenter: _cache[0] || (_cache[0] = ($event) => onMouseEnter(true)),\n onMouseleave: _cache[1] || (_cache[1] = ($event) => quickPrevHover.value = false),\n onFocus: _cache[2] || (_cache[2] = ($event) => onFocus(true)),\n onBlur: _cache[3] || (_cache[3] = ($event) => quickPrevFocus.value = false)\n }, [\n (quickPrevHover.value || quickPrevFocus.value) && !_ctx.disabled ? (openBlock(), createBlock(unref(DArrowLeft), { key: 0 })) : (openBlock(), createBlock(unref(MoreFilled), { key: 1 }))\n ], 42, _hoisted_3)) : createCommentVNode(\"v-if\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(pagers), (pager) => {\n return openBlock(), createElementBlock(\"li\", {\n key: pager,\n class: normalizeClass([[\n unref(nsPager).is(\"active\", _ctx.currentPage === pager),\n unref(nsPager).is(\"disabled\", _ctx.disabled)\n ], \"number\"]),\n \"aria-current\": _ctx.currentPage === pager,\n \"aria-label\": unref(t)(\"el.pagination.currentPage\", { pager }),\n tabindex: unref(tabindex)\n }, toDisplayString(pager), 11, _hoisted_4);\n }), 128)),\n showNextMore.value ? (openBlock(), createElementBlock(\"li\", {\n key: 2,\n class: normalizeClass(unref(nextMoreKls)),\n tabindex: unref(tabindex),\n \"aria-label\": unref(t)(\"el.pagination.nextPages\", { pager: _ctx.pagerCount - 2 }),\n onMouseenter: _cache[4] || (_cache[4] = ($event) => onMouseEnter()),\n onMouseleave: _cache[5] || (_cache[5] = ($event) => quickNextHover.value = false),\n onFocus: _cache[6] || (_cache[6] = ($event) => onFocus()),\n onBlur: _cache[7] || (_cache[7] = ($event) => quickNextFocus.value = false)\n }, [\n (quickNextHover.value || quickNextFocus.value) && !_ctx.disabled ? (openBlock(), createBlock(unref(DArrowRight), { key: 0 })) : (openBlock(), createBlock(unref(MoreFilled), { key: 1 }))\n ], 42, _hoisted_5)) : createCommentVNode(\"v-if\", true),\n _ctx.pageCount > 1 ? (openBlock(), createElementBlock(\"li\", {\n key: 3,\n class: normalizeClass([[\n unref(nsPager).is(\"active\", _ctx.currentPage === _ctx.pageCount),\n unref(nsPager).is(\"disabled\", _ctx.disabled)\n ], \"number\"]),\n \"aria-current\": _ctx.currentPage === _ctx.pageCount,\n \"aria-label\": unref(t)(\"el.pagination.currentPage\", { pager: _ctx.pageCount }),\n tabindex: unref(tabindex)\n }, toDisplayString(_ctx.pageCount), 11, _hoisted_6)) : createCommentVNode(\"v-if\", true)\n ], 42, _hoisted_1);\n };\n }\n});\nvar Pager = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"pager.vue\"]]);\n\nexport { Pager as default };\n//# sourceMappingURL=pager2.mjs.map\n","import { defineComponent, getCurrentInstance, computed, ref, watch, provide, h } from 'vue';\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { elPaginationKey } from './constants.mjs';\nimport Prev from './components/prev2.mjs';\nimport Next from './components/next2.mjs';\nimport Sizes from './components/sizes2.mjs';\nimport Jumper from './components/jumper2.mjs';\nimport Total from './components/total2.mjs';\nimport Pager from './components/pager2.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\n\nconst isAbsent = (v) => typeof v !== \"number\";\nconst paginationProps = buildProps({\n pageSize: Number,\n defaultPageSize: Number,\n total: Number,\n pageCount: Number,\n pagerCount: {\n type: Number,\n validator: (value) => {\n return isNumber(value) && Math.trunc(value) === value && value > 4 && value < 22 && value % 2 === 1;\n },\n default: 7\n },\n currentPage: Number,\n defaultCurrentPage: Number,\n layout: {\n type: String,\n default: [\"prev\", \"pager\", \"next\", \"jumper\", \"->\", \"total\"].join(\", \")\n },\n pageSizes: {\n type: definePropType(Array),\n default: () => mutable([10, 20, 30, 40, 50, 100])\n },\n popperClass: {\n type: String,\n default: \"\"\n },\n prevText: {\n type: String,\n default: \"\"\n },\n prevIcon: {\n type: iconPropType,\n default: () => ArrowLeft\n },\n nextText: {\n type: String,\n default: \"\"\n },\n nextIcon: {\n type: iconPropType,\n default: () => ArrowRight\n },\n teleported: {\n type: Boolean,\n default: true\n },\n small: Boolean,\n background: Boolean,\n disabled: Boolean,\n hideOnSinglePage: Boolean\n});\nconst paginationEmits = {\n \"update:current-page\": (val) => isNumber(val),\n \"update:page-size\": (val) => isNumber(val),\n \"size-change\": (val) => isNumber(val),\n change: (currentPage, pageSize) => isNumber(currentPage) && isNumber(pageSize),\n \"current-change\": (val) => isNumber(val),\n \"prev-click\": (val) => isNumber(val),\n \"next-click\": (val) => isNumber(val)\n};\nconst componentName = \"ElPagination\";\nvar Pagination = defineComponent({\n name: componentName,\n props: paginationProps,\n emits: paginationEmits,\n setup(props, { emit, slots }) {\n const { t } = useLocale();\n const ns = useNamespace(\"pagination\");\n const vnodeProps = getCurrentInstance().vnode.props || {};\n const hasCurrentPageListener = \"onUpdate:currentPage\" in vnodeProps || \"onUpdate:current-page\" in vnodeProps || \"onCurrentChange\" in vnodeProps;\n const hasPageSizeListener = \"onUpdate:pageSize\" in vnodeProps || \"onUpdate:page-size\" in vnodeProps || \"onSizeChange\" in vnodeProps;\n const assertValidUsage = computed(() => {\n if (isAbsent(props.total) && isAbsent(props.pageCount))\n return false;\n if (!isAbsent(props.currentPage) && !hasCurrentPageListener)\n return false;\n if (props.layout.includes(\"sizes\")) {\n if (!isAbsent(props.pageCount)) {\n if (!hasPageSizeListener)\n return false;\n } else if (!isAbsent(props.total)) {\n if (!isAbsent(props.pageSize)) {\n if (!hasPageSizeListener) {\n return false;\n }\n } else {\n }\n }\n }\n return true;\n });\n const innerPageSize = ref(isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize);\n const innerCurrentPage = ref(isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage);\n const pageSizeBridge = computed({\n get() {\n return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize;\n },\n set(v) {\n if (isAbsent(props.pageSize)) {\n innerPageSize.value = v;\n }\n if (hasPageSizeListener) {\n emit(\"update:page-size\", v);\n emit(\"size-change\", v);\n }\n }\n });\n const pageCountBridge = computed(() => {\n let pageCount = 0;\n if (!isAbsent(props.pageCount)) {\n pageCount = props.pageCount;\n } else if (!isAbsent(props.total)) {\n pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value));\n }\n return pageCount;\n });\n const currentPageBridge = computed({\n get() {\n return isAbsent(props.currentPage) ? innerCurrentPage.value : props.currentPage;\n },\n set(v) {\n let newCurrentPage = v;\n if (v < 1) {\n newCurrentPage = 1;\n } else if (v > pageCountBridge.value) {\n newCurrentPage = pageCountBridge.value;\n }\n if (isAbsent(props.currentPage)) {\n innerCurrentPage.value = newCurrentPage;\n }\n if (hasCurrentPageListener) {\n emit(\"update:current-page\", newCurrentPage);\n emit(\"current-change\", newCurrentPage);\n }\n }\n });\n watch(pageCountBridge, (val) => {\n if (currentPageBridge.value > val)\n currentPageBridge.value = val;\n });\n watch([currentPageBridge, pageSizeBridge], (value) => {\n emit(\"change\", ...value);\n }, { flush: \"post\" });\n function handleCurrentChange(val) {\n currentPageBridge.value = val;\n }\n function handleSizeChange(val) {\n pageSizeBridge.value = val;\n const newPageCount = pageCountBridge.value;\n if (currentPageBridge.value > newPageCount) {\n currentPageBridge.value = newPageCount;\n }\n }\n function prev() {\n if (props.disabled)\n return;\n currentPageBridge.value -= 1;\n emit(\"prev-click\", currentPageBridge.value);\n }\n function next() {\n if (props.disabled)\n return;\n currentPageBridge.value += 1;\n emit(\"next-click\", currentPageBridge.value);\n }\n function addClass(element, cls) {\n if (element) {\n if (!element.props) {\n element.props = {};\n }\n element.props.class = [element.props.class, cls].join(\" \");\n }\n }\n provide(elPaginationKey, {\n pageCount: pageCountBridge,\n disabled: computed(() => props.disabled),\n currentPage: currentPageBridge,\n changeEvent: handleCurrentChange,\n handleSizeChange\n });\n return () => {\n var _a, _b;\n if (!assertValidUsage.value) {\n debugWarn(componentName, t(\"el.pagination.deprecationWarning\"));\n return null;\n }\n if (!props.layout)\n return null;\n if (props.hideOnSinglePage && pageCountBridge.value <= 1)\n return null;\n const rootChildren = [];\n const rightWrapperChildren = [];\n const rightWrapperRoot = h(\"div\", { class: ns.e(\"rightwrapper\") }, rightWrapperChildren);\n const TEMPLATE_MAP = {\n prev: h(Prev, {\n disabled: props.disabled,\n currentPage: currentPageBridge.value,\n prevText: props.prevText,\n prevIcon: props.prevIcon,\n onClick: prev\n }),\n jumper: h(Jumper, {\n size: props.small ? \"small\" : \"default\"\n }),\n pager: h(Pager, {\n currentPage: currentPageBridge.value,\n pageCount: pageCountBridge.value,\n pagerCount: props.pagerCount,\n onChange: handleCurrentChange,\n disabled: props.disabled\n }),\n next: h(Next, {\n disabled: props.disabled,\n currentPage: currentPageBridge.value,\n pageCount: pageCountBridge.value,\n nextText: props.nextText,\n nextIcon: props.nextIcon,\n onClick: next\n }),\n sizes: h(Sizes, {\n pageSize: pageSizeBridge.value,\n pageSizes: props.pageSizes,\n popperClass: props.popperClass,\n disabled: props.disabled,\n teleported: props.teleported,\n size: props.small ? \"small\" : \"default\"\n }),\n slot: (_b = (_a = slots == null ? void 0 : slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : null,\n total: h(Total, { total: isAbsent(props.total) ? 0 : props.total })\n };\n const components = props.layout.split(\",\").map((item) => item.trim());\n let haveRightWrapper = false;\n components.forEach((c) => {\n if (c === \"->\") {\n haveRightWrapper = true;\n return;\n }\n if (!haveRightWrapper) {\n rootChildren.push(TEMPLATE_MAP[c]);\n } else {\n rightWrapperChildren.push(TEMPLATE_MAP[c]);\n }\n });\n addClass(rootChildren[0], ns.is(\"first\"));\n addClass(rootChildren[rootChildren.length - 1], ns.is(\"last\"));\n if (haveRightWrapper && rightWrapperChildren.length > 0) {\n addClass(rightWrapperChildren[0], ns.is(\"first\"));\n addClass(rightWrapperChildren[rightWrapperChildren.length - 1], ns.is(\"last\"));\n rootChildren.push(rightWrapperRoot);\n }\n return h(\"div\", {\n class: [\n ns.b(),\n ns.is(\"background\", props.background),\n {\n [ns.m(\"small\")]: props.small\n }\n ]\n }, rootChildren);\n };\n }\n});\n\nexport { Pagination as default, paginationEmits, paginationProps };\n//# sourceMappingURL=pagination.mjs.map\n","import '../../utils/index.mjs';\nimport Pagination from './src/pagination.mjs';\nexport { paginationEmits, paginationProps } from './src/pagination.mjs';\nexport { elPaginationKey } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPagination = withInstall(Pagination);\n\nexport { ElPagination, ElPagination as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../button/index.mjs';\nimport { QuestionFilled } from '@element-plus/icons-vue';\nimport '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { buttonTypes } from '../../button/src/button.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\n\nconst popconfirmProps = buildProps({\n title: String,\n confirmButtonText: String,\n cancelButtonText: String,\n confirmButtonType: {\n type: String,\n values: buttonTypes,\n default: \"primary\"\n },\n cancelButtonType: {\n type: String,\n values: buttonTypes,\n default: \"text\"\n },\n icon: {\n type: iconPropType,\n default: () => QuestionFilled\n },\n iconColor: {\n type: String,\n default: \"#f90\"\n },\n hideIcon: {\n type: Boolean,\n default: false\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n teleported: useTooltipContentProps.teleported,\n persistent: useTooltipContentProps.persistent,\n width: {\n type: [String, Number],\n default: 150\n }\n});\nconst popconfirmEmits = {\n confirm: (e) => e instanceof MouseEvent,\n cancel: (e) => e instanceof MouseEvent\n};\n\nexport { popconfirmEmits, popconfirmProps };\n//# sourceMappingURL=popconfirm.mjs.map\n","import { defineComponent, ref, computed, openBlock, createBlock, unref, mergeProps, withCtx, createElementVNode, normalizeClass, normalizeStyle, resolveDynamicComponent, createCommentVNode, createTextVNode, toDisplayString, createVNode, renderSlot } from 'vue';\nimport { ElButton } from '../../button/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { popconfirmProps, popconfirmEmits } from './popconfirm.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElPopconfirm\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popconfirmProps,\n emits: popconfirmEmits,\n setup(__props, { emit }) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"popconfirm\");\n const tooltipRef = ref();\n const hidePopper = () => {\n var _a, _b;\n (_b = (_a = tooltipRef.value) == null ? void 0 : _a.onClose) == null ? void 0 : _b.call(_a);\n };\n const style = computed(() => {\n return {\n width: addUnit(props.width)\n };\n });\n const confirm = (e) => {\n emit(\"confirm\", e);\n hidePopper();\n };\n const cancel = (e) => {\n emit(\"cancel\", e);\n hidePopper();\n };\n const finalConfirmButtonText = computed(() => props.confirmButtonText || t(\"el.popconfirm.confirmButtonText\"));\n const finalCancelButtonText = computed(() => props.cancelButtonText || t(\"el.popconfirm.cancelButtonText\"));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef,\n trigger: \"click\",\n effect: \"light\"\n }, _ctx.$attrs, {\n \"popper-class\": `${unref(ns).namespace.value}-popover`,\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n \"fallback-placements\": [\"bottom\", \"top\", \"right\", \"left\"],\n \"hide-after\": _ctx.hideAfter,\n persistent: _ctx.persistent\n }), {\n content: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"main\"))\n }, [\n !_ctx.hideIcon && _ctx.icon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).e(\"icon\")),\n style: normalizeStyle({ color: _ctx.iconColor })\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n }, 8, [\"class\", \"style\"])) : createCommentVNode(\"v-if\", true),\n createTextVNode(\" \" + toDisplayString(_ctx.title), 1)\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"action\"))\n }, [\n createVNode(unref(ElButton), {\n size: \"small\",\n type: _ctx.cancelButtonType === \"text\" ? \"\" : _ctx.cancelButtonType,\n text: _ctx.cancelButtonType === \"text\",\n onClick: cancel\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(finalCancelButtonText)), 1)\n ]),\n _: 1\n }, 8, [\"type\", \"text\"]),\n createVNode(unref(ElButton), {\n size: \"small\",\n type: _ctx.confirmButtonType === \"text\" ? \"\" : _ctx.confirmButtonType,\n text: _ctx.confirmButtonType === \"text\",\n onClick: confirm\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(finalConfirmButtonText)), 1)\n ]),\n _: 1\n }, 8, [\"type\", \"text\"])\n ], 2)\n ], 2)\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"popper-class\", \"popper-style\", \"teleported\", \"hide-after\", \"persistent\"]);\n };\n }\n});\nvar Popconfirm = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"popconfirm.vue\"]]);\n\nexport { Popconfirm as default };\n//# sourceMappingURL=popconfirm2.mjs.map\n","import '../../utils/index.mjs';\nimport Popconfirm from './src/popconfirm2.mjs';\nexport { popconfirmEmits, popconfirmProps } from './src/popconfirm.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopconfirm = withInstall(Popconfirm);\n\nexport { ElPopconfirm, ElPopconfirm as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps } from '../../tooltip/src/trigger.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst updateEventKeyRaw = `onUpdate:visible`;\nconst __default__ = defineComponent({\n name: \"ElPopover\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === `${ns.namespace.value}-fade-in-linear`;\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst progressProps = buildProps({\n type: {\n type: String,\n default: \"line\",\n values: [\"line\", \"circle\", \"dashboard\"]\n },\n percentage: {\n type: Number,\n default: 0,\n validator: (val) => val >= 0 && val <= 100\n },\n status: {\n type: String,\n default: \"\",\n values: [\"\", \"success\", \"exception\", \"warning\"]\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n duration: {\n type: Number,\n default: 3\n },\n strokeWidth: {\n type: Number,\n default: 6\n },\n strokeLinecap: {\n type: definePropType(String),\n default: \"round\"\n },\n textInside: {\n type: Boolean,\n default: false\n },\n width: {\n type: Number,\n default: 126\n },\n showText: {\n type: Boolean,\n default: true\n },\n color: {\n type: definePropType([\n String,\n Array,\n Function\n ]),\n default: \"\"\n },\n striped: Boolean,\n stripedFlow: Boolean,\n format: {\n type: definePropType(Function),\n default: (percentage) => `${percentage}%`\n }\n});\n\nexport { progressProps };\n//# sourceMappingURL=progress2.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, normalizeStyle, renderSlot, toDisplayString, createCommentVNode, createBlock, withCtx, resolveDynamicComponent } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { WarningFilled, CircleCheck, CircleClose, Check, Close } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { progressProps } from './progress2.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isString, isFunction } from '@vue/shared';\n\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = { viewBox: \"0 0 100 100\" };\nconst _hoisted_3 = [\"d\", \"stroke\", \"stroke-linecap\", \"stroke-width\"];\nconst _hoisted_4 = [\"d\", \"stroke\", \"opacity\", \"stroke-linecap\", \"stroke-width\"];\nconst _hoisted_5 = { key: 0 };\nconst __default__ = defineComponent({\n name: \"ElProgress\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: progressProps,\n setup(__props) {\n const props = __props;\n const STATUS_COLOR_MAP = {\n success: \"#13ce66\",\n exception: \"#ff4949\",\n warning: \"#e6a23c\",\n default: \"#20a0ff\"\n };\n const ns = useNamespace(\"progress\");\n const barStyle = computed(() => ({\n width: `${props.percentage}%`,\n animationDuration: `${props.duration}s`,\n background: getCurrentColor(props.percentage)\n }));\n const relativeStrokeWidth = computed(() => (props.strokeWidth / props.width * 100).toFixed(1));\n const radius = computed(() => {\n if ([\"circle\", \"dashboard\"].includes(props.type)) {\n return Number.parseInt(`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`, 10);\n }\n return 0;\n });\n const trackPath = computed(() => {\n const r = radius.value;\n const isDashboard = props.type === \"dashboard\";\n return `\n M 50 50\n m 0 ${isDashboard ? \"\" : \"-\"}${r}\n a ${r} ${r} 0 1 1 0 ${isDashboard ? \"-\" : \"\"}${r * 2}\n a ${r} ${r} 0 1 1 0 ${isDashboard ? \"\" : \"-\"}${r * 2}\n `;\n });\n const perimeter = computed(() => 2 * Math.PI * radius.value);\n const rate = computed(() => props.type === \"dashboard\" ? 0.75 : 1);\n const strokeDashoffset = computed(() => {\n const offset = -1 * perimeter.value * (1 - rate.value) / 2;\n return `${offset}px`;\n });\n const trailPathStyle = computed(() => ({\n strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,\n strokeDashoffset: strokeDashoffset.value\n }));\n const circlePathStyle = computed(() => ({\n strokeDasharray: `${perimeter.value * rate.value * (props.percentage / 100)}px, ${perimeter.value}px`,\n strokeDashoffset: strokeDashoffset.value,\n transition: \"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s\"\n }));\n const stroke = computed(() => {\n let ret;\n if (props.color) {\n ret = getCurrentColor(props.percentage);\n } else {\n ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default;\n }\n return ret;\n });\n const statusIcon = computed(() => {\n if (props.status === \"warning\") {\n return WarningFilled;\n }\n if (props.type === \"line\") {\n return props.status === \"success\" ? CircleCheck : CircleClose;\n } else {\n return props.status === \"success\" ? Check : Close;\n }\n });\n const progressTextSize = computed(() => {\n return props.type === \"line\" ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2;\n });\n const content = computed(() => props.format(props.percentage));\n function getColors(color) {\n const span = 100 / color.length;\n const seriesColors = color.map((seriesColor, index) => {\n if (isString(seriesColor)) {\n return {\n color: seriesColor,\n percentage: (index + 1) * span\n };\n }\n return seriesColor;\n });\n return seriesColors.sort((a, b) => a.percentage - b.percentage);\n }\n const getCurrentColor = (percentage) => {\n var _a;\n const { color } = props;\n if (isFunction(color)) {\n return color(percentage);\n } else if (isString(color)) {\n return color;\n } else {\n const colors = getColors(color);\n for (const color2 of colors) {\n if (color2.percentage > percentage)\n return color2.color;\n }\n return (_a = colors[colors.length - 1]) == null ? void 0 : _a.color;\n }\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ns).b(),\n unref(ns).m(_ctx.type),\n unref(ns).is(_ctx.status),\n {\n [unref(ns).m(\"without-text\")]: !_ctx.showText,\n [unref(ns).m(\"text-inside\")]: _ctx.textInside\n }\n ]),\n role: \"progressbar\",\n \"aria-valuenow\": _ctx.percentage,\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\"\n }, [\n _ctx.type === \"line\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).b(\"bar\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).be(\"bar\", \"outer\")),\n style: normalizeStyle({ height: `${_ctx.strokeWidth}px` })\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([\n unref(ns).be(\"bar\", \"inner\"),\n { [unref(ns).bem(\"bar\", \"inner\", \"indeterminate\")]: _ctx.indeterminate },\n { [unref(ns).bem(\"bar\", \"inner\", \"striped\")]: _ctx.striped },\n { [unref(ns).bem(\"bar\", \"inner\", \"striped-flow\")]: _ctx.stripedFlow }\n ]),\n style: normalizeStyle(unref(barStyle))\n }, [\n (_ctx.showText || _ctx.$slots.default) && _ctx.textInside ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).be(\"bar\", \"innerText\"))\n }, [\n renderSlot(_ctx.$slots, \"default\", { percentage: _ctx.percentage }, () => [\n createElementVNode(\"span\", null, toDisplayString(unref(content)), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 6)\n ], 6)\n ], 2)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).b(\"circle\")),\n style: normalizeStyle({ height: `${_ctx.width}px`, width: `${_ctx.width}px` })\n }, [\n (openBlock(), createElementBlock(\"svg\", _hoisted_2, [\n createElementVNode(\"path\", {\n class: normalizeClass(unref(ns).be(\"circle\", \"track\")),\n d: unref(trackPath),\n stroke: `var(${unref(ns).cssVarName(\"fill-color-light\")}, #e5e9f2)`,\n \"stroke-linecap\": _ctx.strokeLinecap,\n \"stroke-width\": unref(relativeStrokeWidth),\n fill: \"none\",\n style: normalizeStyle(unref(trailPathStyle))\n }, null, 14, _hoisted_3),\n createElementVNode(\"path\", {\n class: normalizeClass(unref(ns).be(\"circle\", \"path\")),\n d: unref(trackPath),\n stroke: unref(stroke),\n fill: \"none\",\n opacity: _ctx.percentage ? 1 : 0,\n \"stroke-linecap\": _ctx.strokeLinecap,\n \"stroke-width\": unref(relativeStrokeWidth),\n style: normalizeStyle(unref(circlePathStyle))\n }, null, 14, _hoisted_4)\n ]))\n ], 6)),\n (_ctx.showText || _ctx.$slots.default) && !_ctx.textInside ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(unref(ns).e(\"text\")),\n style: normalizeStyle({ fontSize: `${unref(progressTextSize)}px` })\n }, [\n renderSlot(_ctx.$slots, \"default\", { percentage: _ctx.percentage }, () => [\n !_ctx.status ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString(unref(content)), 1)) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(statusIcon))))\n ]),\n _: 1\n }))\n ])\n ], 6)) : createCommentVNode(\"v-if\", true)\n ], 10, _hoisted_1);\n };\n }\n});\nvar Progress = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"progress.vue\"]]);\n\nexport { Progress as default };\n//# sourceMappingURL=progress.mjs.map\n","import '../../utils/index.mjs';\nimport Progress from './src/progress.mjs';\nexport { progressProps } from './src/progress2.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElProgress = withInstall(Progress);\n\nexport { ElProgress, ElProgress as default };\n//# sourceMappingURL=index.mjs.map\n","import { StarFilled, Star } from '@element-plus/icons-vue';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst rateProps = buildProps({\n modelValue: {\n type: Number,\n default: 0\n },\n id: {\n type: String,\n default: void 0\n },\n lowThreshold: {\n type: Number,\n default: 2\n },\n highThreshold: {\n type: Number,\n default: 4\n },\n max: {\n type: Number,\n default: 5\n },\n colors: {\n type: definePropType([Array, Object]),\n default: () => mutable([\"\", \"\", \"\"])\n },\n voidColor: {\n type: String,\n default: \"\"\n },\n disabledVoidColor: {\n type: String,\n default: \"\"\n },\n icons: {\n type: definePropType([Array, Object]),\n default: () => [StarFilled, StarFilled, StarFilled]\n },\n voidIcon: {\n type: iconPropType,\n default: () => Star\n },\n disabledVoidIcon: {\n type: iconPropType,\n default: () => StarFilled\n },\n disabled: Boolean,\n allowHalf: Boolean,\n showText: Boolean,\n showScore: Boolean,\n textColor: {\n type: String,\n default: \"\"\n },\n texts: {\n type: definePropType(Array),\n default: () => mutable([\n \"Extremely bad\",\n \"Disappointed\",\n \"Fair\",\n \"Satisfied\",\n \"Surprise\"\n ])\n },\n scoreTemplate: {\n type: String,\n default: \"{value}\"\n },\n size: useSizeProp,\n label: {\n type: String,\n default: void 0\n },\n clearable: {\n type: Boolean,\n default: false\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst rateEmits = {\n [CHANGE_EVENT]: (value) => isNumber(value),\n [UPDATE_MODEL_EVENT]: (value) => isNumber(value)\n};\n\nexport { rateEmits, rateProps };\n//# sourceMappingURL=rate.mjs.map\n","import { defineComponent, inject, ref, computed, markRaw, watch, openBlock, createElementBlock, unref, normalizeClass, normalizeStyle, Fragment, renderList, createVNode, withCtx, withDirectives, createBlock, resolveDynamicComponent, vShow, createCommentVNode, toDisplayString } from 'vue';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../form/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { rateProps, rateEmits } from './rate.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { isObject, isArray, isString } from '@vue/shared';\nimport { formContextKey, formItemContextKey } from '../../form/src/constants.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { hasClass } from '../../../utils/dom/style.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"id\", \"aria-label\", \"aria-labelledby\", \"aria-valuenow\", \"aria-valuetext\", \"aria-valuemax\"];\nconst _hoisted_2 = [\"onMousemove\", \"onClick\"];\nconst __default__ = defineComponent({\n name: \"ElRate\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: rateProps,\n emits: rateEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n function getValueFromMap(value, map) {\n const isExcludedObject = (val) => isObject(val);\n const matchedKeys = Object.keys(map).map((key) => +key).filter((key) => {\n const val = map[key];\n const excluded = isExcludedObject(val) ? val.excluded : false;\n return excluded ? value < key : value <= key;\n }).sort((a, b) => a - b);\n const matchedValue = map[matchedKeys[0]];\n return isExcludedObject(matchedValue) && matchedValue.value || matchedValue;\n }\n const formContext = inject(formContextKey, void 0);\n const formItemContext = inject(formItemContextKey, void 0);\n const rateSize = useFormSize();\n const ns = useNamespace(\"rate\");\n const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext\n });\n const currentValue = ref(props.modelValue);\n const hoverIndex = ref(-1);\n const pointerAtLeftHalf = ref(true);\n const rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)]);\n const rateDisabled = computed(() => props.disabled || (formContext == null ? void 0 : formContext.disabled));\n const rateStyles = computed(() => {\n return ns.cssVarBlock({\n \"void-color\": props.voidColor,\n \"disabled-void-color\": props.disabledVoidColor,\n \"fill-color\": activeColor.value\n });\n });\n const text = computed(() => {\n let result = \"\";\n if (props.showScore) {\n result = props.scoreTemplate.replace(/\\{\\s*value\\s*\\}/, rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`);\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1];\n }\n return result;\n });\n const valueDecimal = computed(() => props.modelValue * 100 - Math.floor(props.modelValue) * 100);\n const colorMap = computed(() => isArray(props.colors) ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2]\n } : props.colors);\n const activeColor = computed(() => {\n const color = getValueFromMap(currentValue.value, colorMap.value);\n return isObject(color) ? \"\" : color;\n });\n const decimalStyle = computed(() => {\n let width = \"\";\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`;\n } else if (props.allowHalf) {\n width = \"50%\";\n }\n return {\n color: activeColor.value,\n width\n };\n });\n const componentMap = computed(() => {\n let icons = isArray(props.icons) ? [...props.icons] : { ...props.icons };\n icons = markRaw(icons);\n return isArray(icons) ? {\n [props.lowThreshold]: icons[0],\n [props.highThreshold]: {\n value: icons[1],\n excluded: true\n },\n [props.max]: icons[2]\n } : icons;\n });\n const decimalIconComponent = computed(() => getValueFromMap(props.modelValue, componentMap.value));\n const voidComponent = computed(() => rateDisabled.value ? isString(props.disabledVoidIcon) ? props.disabledVoidIcon : markRaw(props.disabledVoidIcon) : isString(props.voidIcon) ? props.voidIcon : markRaw(props.voidIcon));\n const activeComponent = computed(() => getValueFromMap(currentValue.value, componentMap.value));\n function showDecimalIcon(item) {\n const showWhenDisabled = rateDisabled.value && valueDecimal.value > 0 && item - 1 < props.modelValue && item > props.modelValue;\n const showWhenAllowHalf = props.allowHalf && pointerAtLeftHalf.value && item - 0.5 <= currentValue.value && item > currentValue.value;\n return showWhenDisabled || showWhenAllowHalf;\n }\n function emitValue(value) {\n if (props.clearable && value === props.modelValue) {\n value = 0;\n }\n emit(UPDATE_MODEL_EVENT, value);\n if (props.modelValue !== value) {\n emit(\"change\", value);\n }\n }\n function selectValue(value) {\n if (rateDisabled.value) {\n return;\n }\n if (props.allowHalf && pointerAtLeftHalf.value) {\n emitValue(currentValue.value);\n } else {\n emitValue(value);\n }\n }\n function handleKey(e) {\n if (rateDisabled.value) {\n return;\n }\n let _currentValue = currentValue.value;\n const code = e.code;\n if (code === EVENT_CODE.up || code === EVENT_CODE.right) {\n if (props.allowHalf) {\n _currentValue += 0.5;\n } else {\n _currentValue += 1;\n }\n e.stopPropagation();\n e.preventDefault();\n } else if (code === EVENT_CODE.left || code === EVENT_CODE.down) {\n if (props.allowHalf) {\n _currentValue -= 0.5;\n } else {\n _currentValue -= 1;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n _currentValue = _currentValue < 0 ? 0 : _currentValue;\n _currentValue = _currentValue > props.max ? props.max : _currentValue;\n emit(UPDATE_MODEL_EVENT, _currentValue);\n emit(\"change\", _currentValue);\n return _currentValue;\n }\n function setCurrentValue(value, event) {\n if (rateDisabled.value) {\n return;\n }\n if (props.allowHalf && event) {\n let target = event.target;\n if (hasClass(target, ns.e(\"item\"))) {\n target = target.querySelector(`.${ns.e(\"icon\")}`);\n }\n if (target.clientWidth === 0 || hasClass(target, ns.e(\"decimal\"))) {\n target = target.parentNode;\n }\n pointerAtLeftHalf.value = event.offsetX * 2 <= target.clientWidth;\n currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value;\n } else {\n currentValue.value = value;\n }\n hoverIndex.value = value;\n }\n function resetCurrentValue() {\n if (rateDisabled.value) {\n return;\n }\n if (props.allowHalf) {\n pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue);\n }\n currentValue.value = props.modelValue;\n hoverIndex.value = -1;\n }\n watch(() => props.modelValue, (val) => {\n currentValue.value = val;\n pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue);\n });\n if (!props.modelValue) {\n emit(UPDATE_MODEL_EVENT, 0);\n }\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-rate\",\n ref: \"https://element-plus.org/en-US/component/rate.html\"\n }, computed(() => !!props.label));\n expose({\n setCurrentValue,\n resetCurrentValue\n });\n return (_ctx, _cache) => {\n var _a;\n return openBlock(), createElementBlock(\"div\", {\n id: unref(inputId),\n class: normalizeClass([unref(rateClasses), unref(ns).is(\"disabled\", unref(rateDisabled))]),\n role: \"slider\",\n \"aria-label\": !unref(isLabeledByFormItem) ? _ctx.label || _ctx.ariaLabel || \"rating\" : void 0,\n \"aria-labelledby\": unref(isLabeledByFormItem) ? (_a = unref(formItemContext)) == null ? void 0 : _a.labelId : void 0,\n \"aria-valuenow\": currentValue.value,\n \"aria-valuetext\": unref(text) || void 0,\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": _ctx.max,\n tabindex: \"0\",\n style: normalizeStyle(unref(rateStyles)),\n onKeydown: handleKey\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.max, (item, key) => {\n return openBlock(), createElementBlock(\"span\", {\n key,\n class: normalizeClass(unref(ns).e(\"item\")),\n onMousemove: ($event) => setCurrentValue(item, $event),\n onMouseleave: resetCurrentValue,\n onClick: ($event) => selectValue(item)\n }, [\n createVNode(unref(ElIcon), {\n class: normalizeClass([\n unref(ns).e(\"icon\"),\n { hover: hoverIndex.value === item },\n unref(ns).is(\"active\", item <= currentValue.value)\n ])\n }, {\n default: withCtx(() => [\n !showDecimalIcon(item) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n withDirectives((openBlock(), createBlock(resolveDynamicComponent(unref(activeComponent)), null, null, 512)), [\n [vShow, item <= currentValue.value]\n ]),\n withDirectives((openBlock(), createBlock(resolveDynamicComponent(unref(voidComponent)), null, null, 512)), [\n [vShow, !(item <= currentValue.value)]\n ])\n ], 64)) : createCommentVNode(\"v-if\", true),\n showDecimalIcon(item) ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n (openBlock(), createBlock(resolveDynamicComponent(unref(voidComponent)), {\n class: normalizeClass([unref(ns).em(\"decimal\", \"box\")])\n }, null, 8, [\"class\"])),\n createVNode(unref(ElIcon), {\n style: normalizeStyle(unref(decimalStyle)),\n class: normalizeClass([unref(ns).e(\"icon\"), unref(ns).e(\"decimal\")])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(decimalIconComponent))))\n ]),\n _: 1\n }, 8, [\"style\", \"class\"])\n ], 64)) : createCommentVNode(\"v-if\", true)\n ]),\n _: 2\n }, 1032, [\"class\"])\n ], 42, _hoisted_2);\n }), 128)),\n _ctx.showText || _ctx.showScore ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"text\")),\n style: normalizeStyle({ color: _ctx.textColor })\n }, toDisplayString(unref(text)), 7)) : createCommentVNode(\"v-if\", true)\n ], 46, _hoisted_1);\n };\n }\n});\nvar Rate = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"rate.vue\"]]);\n\nexport { Rate as default };\n//# sourceMappingURL=rate2.mjs.map\n","import '../../utils/index.mjs';\nimport Rate from './src/rate2.mjs';\nexport { rateEmits, rateProps } from './src/rate.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElRate = withInstall(Rate);\n\nexport { ElRate, ElRate as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { CircleCheckFilled, WarningFilled, CircleCloseFilled, InfoFilled } from '@element-plus/icons-vue';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst IconMap = {\n success: \"icon-success\",\n warning: \"icon-warning\",\n error: \"icon-error\",\n info: \"icon-info\"\n};\nconst IconComponentMap = {\n [IconMap.success]: CircleCheckFilled,\n [IconMap.warning]: WarningFilled,\n [IconMap.error]: CircleCloseFilled,\n [IconMap.info]: InfoFilled\n};\nconst resultProps = buildProps({\n title: {\n type: String,\n default: \"\"\n },\n subTitle: {\n type: String,\n default: \"\"\n },\n icon: {\n type: String,\n values: [\"success\", \"warning\", \"info\", \"error\"],\n default: \"info\"\n }\n});\n\nexport { IconComponentMap, IconMap, resultProps };\n//# sourceMappingURL=result.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createBlock, resolveDynamicComponent, createCommentVNode, toDisplayString } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { resultProps, IconMap, IconComponentMap } from './result.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElResult\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: resultProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"result\");\n const resultIcon = computed(() => {\n const icon = props.icon;\n const iconClass = icon && IconMap[icon] ? IconMap[icon] : \"icon-info\";\n const iconComponent = IconComponentMap[iconClass] || IconComponentMap[\"icon-info\"];\n return {\n class: iconClass,\n component: iconComponent\n };\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"icon\"))\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n unref(resultIcon).component ? (openBlock(), createBlock(resolveDynamicComponent(unref(resultIcon).component), {\n key: 0,\n class: normalizeClass(unref(resultIcon).class)\n }, null, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ])\n ], 2),\n _ctx.title || _ctx.$slots.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\"))\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createElementVNode(\"p\", null, toDisplayString(_ctx.title), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.subTitle || _ctx.$slots[\"sub-title\"] ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"subtitle\"))\n }, [\n renderSlot(_ctx.$slots, \"sub-title\", {}, () => [\n createElementVNode(\"p\", null, toDisplayString(_ctx.subTitle), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.extra ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(unref(ns).e(\"extra\"))\n }, [\n renderSlot(_ctx.$slots, \"extra\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar Result = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"result.vue\"]]);\n\nexport { Result as default };\n//# sourceMappingURL=result2.mjs.map\n","import '../../utils/index.mjs';\nimport Result from './src/result2.mjs';\nexport { IconComponentMap, IconMap, resultProps } from './src/result.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElResult = withInstall(Result);\n\nexport { ElResult, ElResult as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst RowJustify = [\n \"start\",\n \"center\",\n \"end\",\n \"space-around\",\n \"space-between\",\n \"space-evenly\"\n];\nconst RowAlign = [\"top\", \"middle\", \"bottom\"];\nconst rowProps = buildProps({\n tag: {\n type: String,\n default: \"div\"\n },\n gutter: {\n type: Number,\n default: 0\n },\n justify: {\n type: String,\n values: RowJustify,\n default: \"start\"\n },\n align: {\n type: String,\n values: RowAlign\n }\n});\n\nexport { RowAlign, RowJustify, rowProps };\n//# sourceMappingURL=row.mjs.map\n","import { defineComponent, computed, provide, openBlock, createBlock, resolveDynamicComponent, normalizeClass, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { rowContextKey } from './constants.mjs';\nimport { rowProps } from './row.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElRow\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: rowProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"row\");\n const gutter = computed(() => props.gutter);\n provide(rowContextKey, {\n gutter\n });\n const style = computed(() => {\n const styles = {};\n if (!props.gutter) {\n return styles;\n }\n styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`;\n return styles;\n });\n const rowKls = computed(() => [\n ns.b(),\n ns.is(`justify-${props.justify}`, props.justify !== \"start\"),\n ns.is(`align-${props.align}`, !!props.align)\n ]);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), {\n class: normalizeClass(unref(rowKls)),\n style: normalizeStyle(unref(style))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"style\"]);\n };\n }\n});\nvar Row = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"row.vue\"]]);\n\nexport { Row as default };\n//# sourceMappingURL=row2.mjs.map\n","import '../../utils/index.mjs';\nimport Row from './src/row2.mjs';\nexport { RowAlign, RowJustify, rowProps } from './src/row.mjs';\nexport { rowContextKey } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElRow = withInstall(Row);\n\nexport { ElRow, ElRow as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, normalizeStyle, toDisplayString } from 'vue';\nimport '../../../hooks/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _sfc_main = defineComponent({\n props: {\n item: {\n type: Object,\n required: true\n },\n style: Object,\n height: Number\n },\n setup() {\n const ns = useNamespace(\"select\");\n return {\n ns\n };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.ns.be(\"group\", \"title\")),\n style: normalizeStyle([_ctx.style, { lineHeight: `${_ctx.height}px` }])\n }, toDisplayString(_ctx.item.label), 7);\n}\nvar GroupItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"group-item.vue\"]]);\n\nexport { GroupItem as default };\n//# sourceMappingURL=group-item.mjs.map\n","function useOption(props, { emit }) {\n return {\n hoverItem: () => {\n if (!props.disabled) {\n emit(\"hover\", props.index);\n }\n },\n selectOptionClick: () => {\n if (!props.disabled) {\n emit(\"select\", props.item, props.index);\n }\n }\n };\n}\n\nexport { useOption };\n//# sourceMappingURL=useOption.mjs.map\n","import { computed } from 'vue';\nimport { get } from 'lodash-unified';\n\nconst defaultProps = {\n label: \"label\",\n value: \"value\",\n disabled: \"disabled\",\n options: \"options\"\n};\nfunction useProps(props) {\n const aliasProps = computed(() => ({ ...defaultProps, ...props.props }));\n const getLabel = (option) => get(option, aliasProps.value.label);\n const getValue = (option) => get(option, aliasProps.value.value);\n const getDisabled = (option) => get(option, aliasProps.value.disabled);\n const getOptions = (option) => get(option, aliasProps.value.options);\n return {\n aliasProps,\n getLabel,\n getValue,\n getDisabled,\n getOptions\n };\n}\n\nexport { defaultProps, useProps };\n//# sourceMappingURL=useProps.mjs.map\n","import { placements } from '@popperjs/core';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport { CircleClose } from '@element-plus/icons-vue';\nimport '../../tag/index.mjs';\nimport { defaultProps } from './useProps.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useTooltipContentProps } from '../../tooltip/src/content.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { tagProps } from '../../tag/src/tag.mjs';\nimport { useEmptyValuesProps } from '../../../hooks/use-empty-values/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\n\nconst SelectProps = buildProps({\n allowCreate: Boolean,\n autocomplete: {\n type: definePropType(String),\n default: \"none\"\n },\n automaticDropdown: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: iconPropType,\n default: CircleClose\n },\n effect: {\n type: definePropType(String),\n default: \"light\"\n },\n collapseTags: Boolean,\n collapseTagsTooltip: Boolean,\n maxCollapseTags: {\n type: Number,\n default: 1\n },\n defaultFirstOption: Boolean,\n disabled: Boolean,\n estimatedOptionHeight: {\n type: Number,\n default: void 0\n },\n filterable: Boolean,\n filterMethod: Function,\n height: {\n type: Number,\n default: 274\n },\n itemHeight: {\n type: Number,\n default: 34\n },\n id: String,\n loading: Boolean,\n loadingText: String,\n modelValue: {\n type: definePropType([Array, String, Number, Boolean, Object])\n },\n multiple: Boolean,\n multipleLimit: {\n type: Number,\n default: 0\n },\n name: String,\n noDataText: String,\n noMatchText: String,\n remoteMethod: Function,\n reserveKeyword: {\n type: Boolean,\n default: true\n },\n options: {\n type: definePropType(Array),\n required: true\n },\n placeholder: {\n type: String\n },\n teleported: useTooltipContentProps.teleported,\n persistent: {\n type: Boolean,\n default: true\n },\n popperClass: {\n type: String,\n default: \"\"\n },\n popperOptions: {\n type: definePropType(Object),\n default: () => ({})\n },\n remote: Boolean,\n size: useSizeProp,\n props: {\n type: definePropType(Object),\n default: () => defaultProps\n },\n valueKey: {\n type: String,\n default: \"value\"\n },\n scrollbarAlwaysOn: Boolean,\n validateEvent: {\n type: Boolean,\n default: true\n },\n placement: {\n type: definePropType(String),\n values: placements,\n default: \"bottom-start\"\n },\n fallbackPlacements: {\n type: definePropType(Array),\n default: [\"bottom-start\", \"top-start\", \"right\", \"left\"]\n },\n tagType: { ...tagProps.type, default: \"info\" },\n ...useEmptyValuesProps,\n ...useAriaProps([\"ariaLabel\"])\n});\nconst OptionProps = buildProps({\n data: Array,\n disabled: Boolean,\n hovering: Boolean,\n item: {\n type: definePropType(Object),\n required: true\n },\n index: Number,\n style: Object,\n selected: Boolean,\n created: Boolean\n});\n\nexport { OptionProps, SelectProps };\n//# sourceMappingURL=defaults.mjs.map\n","const selectV2InjectionKey = Symbol(\"ElSelectV2Injection\");\n\nexport { selectV2InjectionKey };\n//# sourceMappingURL=token.mjs.map\n","import { defineComponent, inject, openBlock, createElementBlock, normalizeStyle, normalizeClass, withModifiers, renderSlot, createElementVNode, toDisplayString } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { useOption } from './useOption.mjs';\nimport { useProps } from './useProps.mjs';\nimport { OptionProps } from './defaults.mjs';\nimport { selectV2InjectionKey } from './token.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _sfc_main = defineComponent({\n props: OptionProps,\n emits: [\"select\", \"hover\"],\n setup(props, { emit }) {\n const select = inject(selectV2InjectionKey);\n const ns = useNamespace(\"select\");\n const { hoverItem, selectOptionClick } = useOption(props, { emit });\n const { getLabel } = useProps(select.props);\n return {\n ns,\n hoverItem,\n selectOptionClick,\n getLabel\n };\n }\n});\nconst _hoisted_1 = [\"aria-selected\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n \"aria-selected\": _ctx.selected,\n style: normalizeStyle(_ctx.style),\n class: normalizeClass([\n _ctx.ns.be(\"dropdown\", \"item\"),\n _ctx.ns.is(\"selected\", _ctx.selected),\n _ctx.ns.is(\"disabled\", _ctx.disabled),\n _ctx.ns.is(\"created\", _ctx.created),\n _ctx.ns.is(\"hovering\", _ctx.hovering)\n ]),\n onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),\n onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"default\", {\n item: _ctx.item,\n index: _ctx.index,\n disabled: _ctx.disabled\n }, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.getLabel(_ctx.item)), 1)\n ])\n ], 46, _hoisted_1);\n}\nvar OptionItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"option-item.vue\"]]);\n\nexport { OptionItem as default };\n//# sourceMappingURL=option-item.mjs.map\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","import { getCurrentInstance, computed } from 'vue';\nimport { memoize } from 'lodash-unified';\nimport memoOne from 'memoize-one';\n\nconst useCache = () => {\n const vm = getCurrentInstance();\n const props = vm.proxy.$props;\n return computed(() => {\n const _getItemStyleCache = (_, __, ___) => ({});\n return props.perfMode ? memoize(_getItemStyleCache) : memoOne(_getItemStyleCache);\n });\n};\n\nexport { useCache };\n//# sourceMappingURL=use-cache.mjs.map\n","const DEFAULT_DYNAMIC_LIST_ITEM_SIZE = 50;\nconst ITEM_RENDER_EVT = \"itemRendered\";\nconst SCROLL_EVT = \"scroll\";\nconst FORWARD = \"forward\";\nconst BACKWARD = \"backward\";\nconst AUTO_ALIGNMENT = \"auto\";\nconst SMART_ALIGNMENT = \"smart\";\nconst START_ALIGNMENT = \"start\";\nconst CENTERED_ALIGNMENT = \"center\";\nconst END_ALIGNMENT = \"end\";\nconst HORIZONTAL = \"horizontal\";\nconst VERTICAL = \"vertical\";\nconst LTR = \"ltr\";\nconst RTL = \"rtl\";\nconst RTL_OFFSET_NAG = \"negative\";\nconst RTL_OFFSET_POS_ASC = \"positive-ascending\";\nconst RTL_OFFSET_POS_DESC = \"positive-descending\";\nconst PageKey = {\n [HORIZONTAL]: \"pageX\",\n [VERTICAL]: \"pageY\"\n};\nconst ScrollbarSizeKey = {\n [HORIZONTAL]: \"height\",\n [VERTICAL]: \"width\"\n};\nconst ScrollbarDirKey = {\n [HORIZONTAL]: \"left\",\n [VERTICAL]: \"top\"\n};\nconst SCROLLBAR_MIN_SIZE = 20;\n\nexport { AUTO_ALIGNMENT, BACKWARD, CENTERED_ALIGNMENT, DEFAULT_DYNAMIC_LIST_ITEM_SIZE, END_ALIGNMENT, FORWARD, HORIZONTAL, ITEM_RENDER_EVT, LTR, PageKey, RTL, RTL_OFFSET_NAG, RTL_OFFSET_POS_ASC, RTL_OFFSET_POS_DESC, SCROLLBAR_MIN_SIZE, SCROLL_EVT, SMART_ALIGNMENT, START_ALIGNMENT, ScrollbarDirKey, ScrollbarSizeKey, VERTICAL };\n//# sourceMappingURL=defaults.mjs.map\n","import '../../../../utils/index.mjs';\nimport { HORIZONTAL, VERTICAL } from '../defaults.mjs';\nimport { cAF, rAF } from '../../../../utils/raf.mjs';\nimport { isFirefox } from '../../../../utils/browser.mjs';\n\nconst LayoutKeys = {\n [HORIZONTAL]: \"deltaX\",\n [VERTICAL]: \"deltaY\"\n};\nconst useWheel = ({ atEndEdge, atStartEdge, layout }, onWheelDelta) => {\n let frameHandle;\n let offset = 0;\n const hasReachedEdge = (offset2) => {\n const edgeReached = offset2 < 0 && atStartEdge.value || offset2 > 0 && atEndEdge.value;\n return edgeReached;\n };\n const onWheel = (e) => {\n cAF(frameHandle);\n const newOffset = e[LayoutKeys[layout.value]];\n if (hasReachedEdge(offset) && hasReachedEdge(offset + newOffset))\n return;\n offset += newOffset;\n if (!isFirefox()) {\n e.preventDefault();\n }\n frameHandle = rAF(() => {\n onWheelDelta(offset);\n offset = 0;\n });\n };\n return {\n hasReachedEdge,\n onWheel\n };\n};\n\nexport { useWheel as default };\n//# sourceMappingURL=use-wheel.mjs.map\n","import '../../../utils/index.mjs';\nimport { VERTICAL } from './defaults.mjs';\nimport { buildProp, definePropType, buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\n\nconst itemSize = buildProp({\n type: definePropType([Number, Function]),\n required: true\n});\nconst estimatedItemSize = buildProp({\n type: Number\n});\nconst cache = buildProp({\n type: Number,\n default: 2\n});\nconst direction = buildProp({\n type: String,\n values: [\"ltr\", \"rtl\"],\n default: \"ltr\"\n});\nconst initScrollOffset = buildProp({\n type: Number,\n default: 0\n});\nconst total = buildProp({\n type: Number,\n required: true\n});\nconst layout = buildProp({\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: VERTICAL\n});\nconst virtualizedProps = buildProps({\n className: {\n type: String,\n default: \"\"\n },\n containerElement: {\n type: definePropType([String, Object]),\n default: \"div\"\n },\n data: {\n type: definePropType(Array),\n default: () => mutable([])\n },\n direction,\n height: {\n type: [String, Number],\n required: true\n },\n innerElement: {\n type: [String, Object],\n default: \"div\"\n },\n style: {\n type: definePropType([Object, String, Array])\n },\n useIsScrolling: {\n type: Boolean,\n default: false\n },\n width: {\n type: [Number, String],\n required: false\n },\n perfMode: {\n type: Boolean,\n default: true\n },\n scrollbarAlwaysOn: {\n type: Boolean,\n default: false\n }\n});\nconst virtualizedListProps = buildProps({\n cache,\n estimatedItemSize,\n layout,\n initScrollOffset,\n total,\n itemSize,\n ...virtualizedProps\n});\nconst scrollbarSize = {\n type: Number,\n default: 6\n};\nconst startGap = { type: Number, default: 0 };\nconst endGap = { type: Number, default: 2 };\nconst virtualizedGridProps = buildProps({\n columnCache: cache,\n columnWidth: itemSize,\n estimatedColumnWidth: estimatedItemSize,\n estimatedRowHeight: estimatedItemSize,\n initScrollLeft: initScrollOffset,\n initScrollTop: initScrollOffset,\n itemKey: {\n type: definePropType(Function),\n default: ({\n columnIndex,\n rowIndex\n }) => `${rowIndex}:${columnIndex}`\n },\n rowCache: cache,\n rowHeight: itemSize,\n totalColumn: total,\n totalRow: total,\n hScrollbarSize: scrollbarSize,\n vScrollbarSize: scrollbarSize,\n scrollbarStartGap: startGap,\n scrollbarEndGap: endGap,\n role: String,\n ...virtualizedProps\n});\nconst virtualizedScrollbarProps = buildProps({\n alwaysOn: Boolean,\n class: String,\n layout,\n total,\n ratio: {\n type: Number,\n required: true\n },\n clientSize: {\n type: Number,\n required: true\n },\n scrollFrom: {\n type: Number,\n required: true\n },\n scrollbarSize,\n startGap,\n endGap,\n visible: Boolean\n});\n\nexport { virtualizedGridProps, virtualizedListProps, virtualizedProps, virtualizedScrollbarProps };\n//# sourceMappingURL=props.mjs.map\n","import { FORWARD, BACKWARD, LTR, RTL, HORIZONTAL, RTL_OFFSET_POS_DESC, RTL_OFFSET_NAG, RTL_OFFSET_POS_ASC, PageKey } from './defaults.mjs';\n\nconst getScrollDir = (prev, cur) => prev < cur ? FORWARD : BACKWARD;\nconst isHorizontal = (dir) => dir === LTR || dir === RTL || dir === HORIZONTAL;\nconst isRTL = (dir) => dir === RTL;\nlet cachedRTLResult = null;\nfunction getRTLOffsetType(recalculate = false) {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement(\"div\");\n const outerStyle = outerDiv.style;\n outerStyle.width = \"50px\";\n outerStyle.height = \"50px\";\n outerStyle.overflow = \"scroll\";\n outerStyle.direction = \"rtl\";\n const innerDiv = document.createElement(\"div\");\n const innerStyle = innerDiv.style;\n innerStyle.width = \"100px\";\n innerStyle.height = \"100px\";\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = RTL_OFFSET_POS_DESC;\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = RTL_OFFSET_NAG;\n } else {\n cachedRTLResult = RTL_OFFSET_POS_ASC;\n }\n }\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n return cachedRTLResult;\n}\nconst getRelativePos = (e, layout) => {\n return \"touches\" in e ? e.touches[0][PageKey[layout]] : e[PageKey[layout]];\n};\nfunction renderThumbStyle({ move, size, bar }, layout) {\n const style = {};\n const translate = `translate${bar.axis}(${move}px)`;\n style[bar.size] = size;\n style.transform = translate;\n style.msTransform = translate;\n style.webkitTransform = translate;\n if (layout === \"horizontal\") {\n style.height = \"100%\";\n } else {\n style.width = \"100%\";\n }\n return style;\n}\n\nexport { getRTLOffsetType, getRelativePos, getScrollDir, isHorizontal, isRTL, renderThumbStyle };\n//# sourceMappingURL=utils.mjs.map\n","import { defineComponent, computed, ref, reactive, unref, watch, onBeforeUnmount, h, withModifiers } from 'vue';\nimport '../../../scrollbar/index.mjs';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { HORIZONTAL, ScrollbarDirKey, SCROLLBAR_MIN_SIZE } from '../defaults.mjs';\nimport { virtualizedScrollbarProps } from '../props.mjs';\nimport { renderThumbStyle } from '../utils.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { BAR_MAP } from '../../../scrollbar/src/util.mjs';\nimport { cAF, rAF } from '../../../../utils/raf.mjs';\n\nconst ScrollBar = defineComponent({\n name: \"ElVirtualScrollBar\",\n props: virtualizedScrollbarProps,\n emits: [\"scroll\", \"start-move\", \"stop-move\"],\n setup(props, { emit }) {\n const GAP = computed(() => props.startGap + props.endGap);\n const nsVirtualScrollbar = useNamespace(\"virtual-scrollbar\");\n const nsScrollbar = useNamespace(\"scrollbar\");\n const trackRef = ref();\n const thumbRef = ref();\n let frameHandle = null;\n let onselectstartStore = null;\n const state = reactive({\n isDragging: false,\n traveled: 0\n });\n const bar = computed(() => BAR_MAP[props.layout]);\n const trackSize = computed(() => props.clientSize - unref(GAP));\n const trackStyle = computed(() => ({\n position: \"absolute\",\n width: `${HORIZONTAL === props.layout ? trackSize.value : props.scrollbarSize}px`,\n height: `${HORIZONTAL === props.layout ? props.scrollbarSize : trackSize.value}px`,\n [ScrollbarDirKey[props.layout]]: \"2px\",\n right: \"2px\",\n bottom: \"2px\",\n borderRadius: \"4px\"\n }));\n const thumbSize = computed(() => {\n const ratio = props.ratio;\n const clientSize = props.clientSize;\n if (ratio >= 100) {\n return Number.POSITIVE_INFINITY;\n }\n if (ratio >= 50) {\n return ratio * clientSize / 100;\n }\n const SCROLLBAR_MAX_SIZE = clientSize / 3;\n return Math.floor(Math.min(Math.max(ratio * clientSize, SCROLLBAR_MIN_SIZE), SCROLLBAR_MAX_SIZE));\n });\n const thumbStyle = computed(() => {\n if (!Number.isFinite(thumbSize.value)) {\n return {\n display: \"none\"\n };\n }\n const thumb = `${thumbSize.value}px`;\n const style = renderThumbStyle({\n bar: bar.value,\n size: thumb,\n move: state.traveled\n }, props.layout);\n return style;\n });\n const totalSteps = computed(() => Math.floor(props.clientSize - thumbSize.value - unref(GAP)));\n const attachEvents = () => {\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n const thumbEl = unref(thumbRef);\n if (!thumbEl)\n return;\n onselectstartStore = document.onselectstart;\n document.onselectstart = () => false;\n thumbEl.addEventListener(\"touchmove\", onMouseMove);\n thumbEl.addEventListener(\"touchend\", onMouseUp);\n };\n const detachEvents = () => {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n document.onselectstart = onselectstartStore;\n onselectstartStore = null;\n const thumbEl = unref(thumbRef);\n if (!thumbEl)\n return;\n thumbEl.removeEventListener(\"touchmove\", onMouseMove);\n thumbEl.removeEventListener(\"touchend\", onMouseUp);\n };\n const onThumbMouseDown = (e) => {\n e.stopImmediatePropagation();\n if (e.ctrlKey || [1, 2].includes(e.button)) {\n return;\n }\n state.isDragging = true;\n state[bar.value.axis] = e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction]);\n emit(\"start-move\");\n attachEvents();\n };\n const onMouseUp = () => {\n state.isDragging = false;\n state[bar.value.axis] = 0;\n emit(\"stop-move\");\n detachEvents();\n };\n const onMouseMove = (e) => {\n const { isDragging } = state;\n if (!isDragging)\n return;\n if (!thumbRef.value || !trackRef.value)\n return;\n const prevPage = state[bar.value.axis];\n if (!prevPage)\n return;\n cAF(frameHandle);\n const offset = (trackRef.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;\n const thumbClickPosition = thumbRef.value[bar.value.offset] - prevPage;\n const distance = offset - thumbClickPosition;\n frameHandle = rAF(() => {\n state.traveled = Math.max(props.startGap, Math.min(distance, totalSteps.value));\n emit(\"scroll\", distance, totalSteps.value);\n });\n };\n const clickTrackHandler = (e) => {\n const offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]);\n const thumbHalf = thumbRef.value[bar.value.offset] / 2;\n const distance = offset - thumbHalf;\n state.traveled = Math.max(0, Math.min(distance, totalSteps.value));\n emit(\"scroll\", distance, totalSteps.value);\n };\n watch(() => props.scrollFrom, (v) => {\n if (state.isDragging)\n return;\n state.traveled = Math.ceil(v * totalSteps.value);\n });\n onBeforeUnmount(() => {\n detachEvents();\n });\n return () => {\n return h(\"div\", {\n role: \"presentation\",\n ref: trackRef,\n class: [\n nsVirtualScrollbar.b(),\n props.class,\n (props.alwaysOn || state.isDragging) && \"always-on\"\n ],\n style: trackStyle.value,\n onMousedown: withModifiers(clickTrackHandler, [\"stop\", \"prevent\"]),\n onTouchstartPrevent: onThumbMouseDown\n }, h(\"div\", {\n ref: thumbRef,\n class: nsScrollbar.e(\"thumb\"),\n style: thumbStyle.value,\n onMousedown: onThumbMouseDown\n }, []));\n };\n }\n});\n\nexport { ScrollBar as default };\n//# sourceMappingURL=scrollbar.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, unref, nextTick, onMounted, onUpdated, resolveDynamicComponent, h } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { useCache } from '../hooks/use-cache.mjs';\nimport useWheel from '../hooks/use-wheel.mjs';\nimport ScrollBar from '../components/scrollbar.mjs';\nimport { isHorizontal, getScrollDir, getRTLOffsetType } from '../utils.mjs';\nimport { virtualizedListProps } from '../props.mjs';\nimport { ITEM_RENDER_EVT, SCROLL_EVT, BACKWARD, FORWARD, RTL, RTL_OFFSET_POS_DESC, RTL_OFFSET_NAG, AUTO_ALIGNMENT, HORIZONTAL, RTL_OFFSET_POS_ASC } from '../defaults.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nimport { hasOwn, isString } from '@vue/shared';\nimport { isClient } from '@vueuse/core';\n\nconst createList = ({\n name,\n getOffset,\n getItemSize,\n getItemOffset,\n getEstimatedTotalSize,\n getStartIndexForOffset,\n getStopIndexForStartIndex,\n initCache,\n clearCache,\n validateProps\n}) => {\n return defineComponent({\n name: name != null ? name : \"ElVirtualList\",\n props: virtualizedListProps,\n emits: [ITEM_RENDER_EVT, SCROLL_EVT],\n setup(props, { emit, expose }) {\n validateProps(props);\n const instance = getCurrentInstance();\n const ns = useNamespace(\"vl\");\n const dynamicSizeCache = ref(initCache(props, instance));\n const getItemStyleCache = useCache();\n const windowRef = ref();\n const innerRef = ref();\n const scrollbarRef = ref();\n const states = ref({\n isScrolling: false,\n scrollDir: \"forward\",\n scrollOffset: isNumber(props.initScrollOffset) ? props.initScrollOffset : 0,\n updateRequested: false,\n isScrollbarDragging: false,\n scrollbarAlwaysOn: props.scrollbarAlwaysOn\n });\n const itemsToRender = computed(() => {\n const { total, cache } = props;\n const { isScrolling, scrollDir, scrollOffset } = unref(states);\n if (total === 0) {\n return [0, 0, 0, 0];\n }\n const startIndex = getStartIndexForOffset(props, scrollOffset, unref(dynamicSizeCache));\n const stopIndex = getStopIndexForStartIndex(props, startIndex, scrollOffset, unref(dynamicSizeCache));\n const cacheBackward = !isScrolling || scrollDir === BACKWARD ? Math.max(1, cache) : 1;\n const cacheForward = !isScrolling || scrollDir === FORWARD ? Math.max(1, cache) : 1;\n return [\n Math.max(0, startIndex - cacheBackward),\n Math.max(0, Math.min(total - 1, stopIndex + cacheForward)),\n startIndex,\n stopIndex\n ];\n });\n const estimatedTotalSize = computed(() => getEstimatedTotalSize(props, unref(dynamicSizeCache)));\n const _isHorizontal = computed(() => isHorizontal(props.layout));\n const windowStyle = computed(() => [\n {\n position: \"relative\",\n [`overflow-${_isHorizontal.value ? \"x\" : \"y\"}`]: \"scroll\",\n WebkitOverflowScrolling: \"touch\",\n willChange: \"transform\"\n },\n {\n direction: props.direction,\n height: isNumber(props.height) ? `${props.height}px` : props.height,\n width: isNumber(props.width) ? `${props.width}px` : props.width\n },\n props.style\n ]);\n const innerStyle = computed(() => {\n const size = unref(estimatedTotalSize);\n const horizontal = unref(_isHorizontal);\n return {\n height: horizontal ? \"100%\" : `${size}px`,\n pointerEvents: unref(states).isScrolling ? \"none\" : void 0,\n width: horizontal ? `${size}px` : \"100%\"\n };\n });\n const clientSize = computed(() => _isHorizontal.value ? props.width : props.height);\n const { onWheel } = useWheel({\n atStartEdge: computed(() => states.value.scrollOffset <= 0),\n atEndEdge: computed(() => states.value.scrollOffset >= estimatedTotalSize.value),\n layout: computed(() => props.layout)\n }, (offset) => {\n var _a, _b;\n ;\n (_b = (_a = scrollbarRef.value).onMouseUp) == null ? void 0 : _b.call(_a);\n scrollTo(Math.min(states.value.scrollOffset + offset, estimatedTotalSize.value - clientSize.value));\n });\n const emitEvents = () => {\n const { total } = props;\n if (total > 0) {\n const [cacheStart, cacheEnd, visibleStart, visibleEnd] = unref(itemsToRender);\n emit(ITEM_RENDER_EVT, cacheStart, cacheEnd, visibleStart, visibleEnd);\n }\n const { scrollDir, scrollOffset, updateRequested } = unref(states);\n emit(SCROLL_EVT, scrollDir, scrollOffset, updateRequested);\n };\n const scrollVertically = (e) => {\n const { clientHeight, scrollHeight, scrollTop } = e.currentTarget;\n const _states = unref(states);\n if (_states.scrollOffset === scrollTop) {\n return;\n }\n const scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n states.value = {\n ..._states,\n isScrolling: true,\n scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),\n scrollOffset,\n updateRequested: false\n };\n nextTick(resetIsScrolling);\n };\n const scrollHorizontally = (e) => {\n const { clientWidth, scrollLeft, scrollWidth } = e.currentTarget;\n const _states = unref(states);\n if (_states.scrollOffset === scrollLeft) {\n return;\n }\n const { direction } = props;\n let scrollOffset = scrollLeft;\n if (direction === RTL) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG: {\n scrollOffset = -scrollLeft;\n break;\n }\n case RTL_OFFSET_POS_DESC: {\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n }\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n states.value = {\n ..._states,\n isScrolling: true,\n scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),\n scrollOffset,\n updateRequested: false\n };\n nextTick(resetIsScrolling);\n };\n const onScroll = (e) => {\n unref(_isHorizontal) ? scrollHorizontally(e) : scrollVertically(e);\n emitEvents();\n };\n const onScrollbarScroll = (distanceToGo, totalSteps) => {\n const offset = (estimatedTotalSize.value - clientSize.value) / totalSteps * distanceToGo;\n scrollTo(Math.min(estimatedTotalSize.value - clientSize.value, offset));\n };\n const scrollTo = (offset) => {\n offset = Math.max(offset, 0);\n if (offset === unref(states).scrollOffset) {\n return;\n }\n states.value = {\n ...unref(states),\n scrollOffset: offset,\n scrollDir: getScrollDir(unref(states).scrollOffset, offset),\n updateRequested: true\n };\n nextTick(resetIsScrolling);\n };\n const scrollToItem = (idx, alignment = AUTO_ALIGNMENT) => {\n const { scrollOffset } = unref(states);\n idx = Math.max(0, Math.min(idx, props.total - 1));\n scrollTo(getOffset(props, idx, alignment, scrollOffset, unref(dynamicSizeCache)));\n };\n const getItemStyle = (idx) => {\n const { direction, itemSize, layout } = props;\n const itemStyleCache = getItemStyleCache.value(clearCache && itemSize, clearCache && layout, clearCache && direction);\n let style;\n if (hasOwn(itemStyleCache, String(idx))) {\n style = itemStyleCache[idx];\n } else {\n const offset = getItemOffset(props, idx, unref(dynamicSizeCache));\n const size = getItemSize(props, idx, unref(dynamicSizeCache));\n const horizontal = unref(_isHorizontal);\n const isRtl = direction === RTL;\n const offsetHorizontal = horizontal ? offset : 0;\n itemStyleCache[idx] = style = {\n position: \"absolute\",\n left: isRtl ? void 0 : `${offsetHorizontal}px`,\n right: isRtl ? `${offsetHorizontal}px` : void 0,\n top: !horizontal ? `${offset}px` : 0,\n height: !horizontal ? `${size}px` : \"100%\",\n width: horizontal ? `${size}px` : \"100%\"\n };\n }\n return style;\n };\n const resetIsScrolling = () => {\n states.value.isScrolling = false;\n nextTick(() => {\n getItemStyleCache.value(-1, null, null);\n });\n };\n const resetScrollTop = () => {\n const window = windowRef.value;\n if (window) {\n window.scrollTop = 0;\n }\n };\n onMounted(() => {\n if (!isClient)\n return;\n const { initScrollOffset } = props;\n const windowElement = unref(windowRef);\n if (isNumber(initScrollOffset) && windowElement) {\n if (unref(_isHorizontal)) {\n windowElement.scrollLeft = initScrollOffset;\n } else {\n windowElement.scrollTop = initScrollOffset;\n }\n }\n emitEvents();\n });\n onUpdated(() => {\n const { direction, layout } = props;\n const { scrollOffset, updateRequested } = unref(states);\n const windowElement = unref(windowRef);\n if (updateRequested && windowElement) {\n if (layout === HORIZONTAL) {\n if (direction === RTL) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG: {\n windowElement.scrollLeft = -scrollOffset;\n break;\n }\n case RTL_OFFSET_POS_ASC: {\n windowElement.scrollLeft = scrollOffset;\n break;\n }\n default: {\n const { clientWidth, scrollWidth } = windowElement;\n windowElement.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n }\n } else {\n windowElement.scrollLeft = scrollOffset;\n }\n } else {\n windowElement.scrollTop = scrollOffset;\n }\n }\n });\n const api = {\n ns,\n clientSize,\n estimatedTotalSize,\n windowStyle,\n windowRef,\n innerRef,\n innerStyle,\n itemsToRender,\n scrollbarRef,\n states,\n getItemStyle,\n onScroll,\n onScrollbarScroll,\n onWheel,\n scrollTo,\n scrollToItem,\n resetScrollTop\n };\n expose({\n windowRef,\n innerRef,\n getItemStyleCache,\n scrollTo,\n scrollToItem,\n resetScrollTop,\n states\n });\n return api;\n },\n render(ctx) {\n var _a;\n const {\n $slots,\n className,\n clientSize,\n containerElement,\n data,\n getItemStyle,\n innerElement,\n itemsToRender,\n innerStyle,\n layout,\n total,\n onScroll,\n onScrollbarScroll,\n onWheel,\n states,\n useIsScrolling,\n windowStyle,\n ns\n } = ctx;\n const [start, end] = itemsToRender;\n const Container = resolveDynamicComponent(containerElement);\n const Inner = resolveDynamicComponent(innerElement);\n const children = [];\n if (total > 0) {\n for (let i = start; i <= end; i++) {\n children.push((_a = $slots.default) == null ? void 0 : _a.call($slots, {\n data,\n key: i,\n index: i,\n isScrolling: useIsScrolling ? states.isScrolling : void 0,\n style: getItemStyle(i)\n }));\n }\n }\n const InnerNode = [\n h(Inner, {\n style: innerStyle,\n ref: \"innerRef\"\n }, !isString(Inner) ? {\n default: () => children\n } : children)\n ];\n const scrollbar = h(ScrollBar, {\n ref: \"scrollbarRef\",\n clientSize,\n layout,\n onScroll: onScrollbarScroll,\n ratio: clientSize * 100 / this.estimatedTotalSize,\n scrollFrom: states.scrollOffset / (this.estimatedTotalSize - clientSize),\n total\n });\n const listContainer = h(Container, {\n class: [ns.e(\"window\"), className],\n style: windowStyle,\n onScroll,\n onWheel,\n ref: \"windowRef\",\n key: 0\n }, !isString(Container) ? { default: () => [InnerNode] } : [InnerNode]);\n return h(\"div\", {\n key: 0,\n class: [ns.e(\"wrapper\"), states.scrollbarAlwaysOn ? \"always-on\" : \"\"]\n }, [listContainer, scrollbar]);\n }\n });\n};\n\nexport { createList as default };\n//# sourceMappingURL=build-list.mjs.map\n","import '../../../../utils/index.mjs';\nimport createList from '../builders/build-list.mjs';\nimport { isHorizontal } from '../utils.mjs';\nimport { SMART_ALIGNMENT, AUTO_ALIGNMENT, CENTERED_ALIGNMENT, END_ALIGNMENT, START_ALIGNMENT } from '../defaults.mjs';\nimport { isString } from '@vue/shared';\nimport { throwError } from '../../../../utils/error.mjs';\n\nconst FixedSizeList = createList({\n name: \"ElFixedSizeList\",\n getItemOffset: ({ itemSize }, index) => index * itemSize,\n getItemSize: ({ itemSize }) => itemSize,\n getEstimatedTotalSize: ({ total, itemSize }) => itemSize * total,\n getOffset: ({ height, total, itemSize, layout, width }, index, alignment, scrollOffset) => {\n const size = isHorizontal(layout) ? width : height;\n if (process.env.NODE_ENV !== \"production\" && isString(size)) {\n throwError(\"[ElVirtualList]\", `\n You should set\n width/height\n to number when your layout is\n horizontal/vertical\n `);\n }\n const lastItemOffset = Math.max(0, total * itemSize - size);\n const maxOffset = Math.min(lastItemOffset, index * itemSize);\n const minOffset = Math.max(0, (index + 1) * itemSize - size);\n if (alignment === SMART_ALIGNMENT) {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n alignment = AUTO_ALIGNMENT;\n } else {\n alignment = CENTERED_ALIGNMENT;\n }\n }\n switch (alignment) {\n case START_ALIGNMENT: {\n return maxOffset;\n }\n case END_ALIGNMENT: {\n return minOffset;\n }\n case CENTERED_ALIGNMENT: {\n const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(size / 2)) {\n return 0;\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset;\n } else {\n return middleOffset;\n }\n }\n case AUTO_ALIGNMENT:\n default: {\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n }\n },\n getStartIndexForOffset: ({ total, itemSize }, offset) => Math.max(0, Math.min(total - 1, Math.floor(offset / itemSize))),\n getStopIndexForStartIndex: ({ height, total, itemSize, layout, width }, startIndex, scrollOffset) => {\n const offset = startIndex * itemSize;\n const size = isHorizontal(layout) ? width : height;\n const numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(total - 1, startIndex + numVisibleItems - 1));\n },\n initCache() {\n return void 0;\n },\n clearCache: true,\n validateProps() {\n }\n});\n\nexport { FixedSizeList as default };\n//# sourceMappingURL=fixed-size-list.mjs.map\n","import '../../../../utils/index.mjs';\nimport createList from '../builders/build-list.mjs';\nimport { isHorizontal } from '../utils.mjs';\nimport { SMART_ALIGNMENT, AUTO_ALIGNMENT, CENTERED_ALIGNMENT, END_ALIGNMENT, START_ALIGNMENT, DEFAULT_DYNAMIC_LIST_ITEM_SIZE } from '../defaults.mjs';\nimport { throwError } from '../../../../utils/error.mjs';\n\nconst SCOPE = \"ElDynamicSizeList\";\nconst getItemFromCache = (props, index, listCache) => {\n const { itemSize } = props;\n const { items, lastVisitedIndex } = listCache;\n if (index > lastVisitedIndex) {\n let offset = 0;\n if (lastVisitedIndex >= 0) {\n const item = items[lastVisitedIndex];\n offset = item.offset + item.size;\n }\n for (let i = lastVisitedIndex + 1; i <= index; i++) {\n const size = itemSize(i);\n items[i] = {\n offset,\n size\n };\n offset += size;\n }\n listCache.lastVisitedIndex = index;\n }\n return items[index];\n};\nconst findItem = (props, listCache, offset) => {\n const { items, lastVisitedIndex } = listCache;\n const lastVisitedOffset = lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0;\n if (lastVisitedOffset >= offset) {\n return bs(props, listCache, 0, lastVisitedIndex, offset);\n }\n return es(props, listCache, Math.max(0, lastVisitedIndex), offset);\n};\nconst bs = (props, listCache, low, high, offset) => {\n while (low <= high) {\n const mid = low + Math.floor((high - low) / 2);\n const currentOffset = getItemFromCache(props, mid, listCache).offset;\n if (currentOffset === offset) {\n return mid;\n } else if (currentOffset < offset) {\n low = mid + 1;\n } else if (currentOffset > offset) {\n high = mid - 1;\n }\n }\n return Math.max(0, low - 1);\n};\nconst es = (props, listCache, index, offset) => {\n const { total } = props;\n let exponent = 1;\n while (index < total && getItemFromCache(props, index, listCache).offset < offset) {\n index += exponent;\n exponent *= 2;\n }\n return bs(props, listCache, Math.floor(index / 2), Math.min(index, total - 1), offset);\n};\nconst getEstimatedTotalSize = ({ total }, { items, estimatedItemSize, lastVisitedIndex }) => {\n let totalSizeOfMeasuredItems = 0;\n if (lastVisitedIndex >= total) {\n lastVisitedIndex = total - 1;\n }\n if (lastVisitedIndex >= 0) {\n const item = items[lastVisitedIndex];\n totalSizeOfMeasuredItems = item.offset + item.size;\n }\n const numUnmeasuredItems = total - lastVisitedIndex - 1;\n const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\nconst DynamicSizeList = createList({\n name: \"ElDynamicSizeList\",\n getItemOffset: (props, index, listCache) => getItemFromCache(props, index, listCache).offset,\n getItemSize: (_, index, { items }) => items[index].size,\n getEstimatedTotalSize,\n getOffset: (props, index, alignment, scrollOffset, listCache) => {\n const { height, layout, width } = props;\n const size = isHorizontal(layout) ? width : height;\n const item = getItemFromCache(props, index, listCache);\n const estimatedTotalSize = getEstimatedTotalSize(props, listCache);\n const maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, item.offset));\n const minOffset = Math.max(0, item.offset - size + item.size);\n if (alignment === SMART_ALIGNMENT) {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n alignment = AUTO_ALIGNMENT;\n } else {\n alignment = CENTERED_ALIGNMENT;\n }\n }\n switch (alignment) {\n case START_ALIGNMENT: {\n return maxOffset;\n }\n case END_ALIGNMENT: {\n return minOffset;\n }\n case CENTERED_ALIGNMENT: {\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n }\n case AUTO_ALIGNMENT:\n default: {\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n }\n },\n getStartIndexForOffset: (props, offset, listCache) => findItem(props, listCache, offset),\n getStopIndexForStartIndex: (props, startIndex, scrollOffset, listCache) => {\n const { height, total, layout, width } = props;\n const size = isHorizontal(layout) ? width : height;\n const item = getItemFromCache(props, startIndex, listCache);\n const maxOffset = scrollOffset + size;\n let offset = item.offset + item.size;\n let stopIndex = startIndex;\n while (stopIndex < total - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemFromCache(props, stopIndex, listCache).size;\n }\n return stopIndex;\n },\n initCache({ estimatedItemSize = DEFAULT_DYNAMIC_LIST_ITEM_SIZE }, instance) {\n const cache = {\n items: {},\n estimatedItemSize,\n lastVisitedIndex: -1\n };\n cache.clearCacheAfterIndex = (index, forceUpdate = true) => {\n var _a, _b;\n cache.lastVisitedIndex = Math.min(cache.lastVisitedIndex, index - 1);\n (_a = instance.exposed) == null ? void 0 : _a.getItemStyleCache(-1);\n if (forceUpdate) {\n (_b = instance.proxy) == null ? void 0 : _b.$forceUpdate();\n }\n };\n return cache;\n },\n clearCache: false,\n validateProps: ({ itemSize }) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof itemSize !== \"function\") {\n throwError(SCOPE, `\n itemSize is required as function, but the given value was ${typeof itemSize}\n `);\n }\n }\n }\n});\n\nexport { DynamicSizeList as default };\n//# sourceMappingURL=dynamic-size-list.mjs.map\n","import { defineComponent, inject, ref, computed, watch, toRaw, unref, createVNode, mergeProps } from 'vue';\nimport { get } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport '../../virtual-list/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport GroupItem from './group-item.mjs';\nimport OptionItem from './option-item.mjs';\nimport { useProps } from './useProps.mjs';\nimport { selectV2InjectionKey } from './token.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isUndefined } from '../../../utils/types.mjs';\nimport { isObject } from '@vue/shared';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport FixedSizeList from '../../virtual-list/src/components/fixed-size-list.mjs';\nimport DynamicSizeList from '../../virtual-list/src/components/dynamic-size-list.mjs';\n\nvar ElSelectMenu = defineComponent({\n name: \"ElSelectDropdown\",\n props: {\n loading: Boolean,\n data: {\n type: Array,\n required: true\n },\n hoveringIndex: Number,\n width: Number\n },\n setup(props, {\n slots,\n expose\n }) {\n const select = inject(selectV2InjectionKey);\n const ns = useNamespace(\"select\");\n const {\n getLabel,\n getValue,\n getDisabled\n } = useProps(select.props);\n const cachedHeights = ref([]);\n const listRef = ref();\n const size = computed(() => props.data.length);\n watch(() => size.value, () => {\n var _a, _b;\n (_b = (_a = select.tooltipRef.value).updatePopper) == null ? void 0 : _b.call(_a);\n });\n const isSized = computed(() => isUndefined(select.props.estimatedOptionHeight));\n const listProps = computed(() => {\n if (isSized.value) {\n return {\n itemSize: select.props.itemHeight\n };\n }\n return {\n estimatedSize: select.props.estimatedOptionHeight,\n itemSize: (idx) => cachedHeights.value[idx]\n };\n });\n const contains = (arr = [], target) => {\n const {\n props: {\n valueKey\n }\n } = select;\n if (!isObject(target)) {\n return arr.includes(target);\n }\n return arr && arr.some((item) => {\n return toRaw(get(item, valueKey)) === get(target, valueKey);\n });\n };\n const isEqual = (selected, target) => {\n if (!isObject(target)) {\n return selected === target;\n } else {\n const {\n valueKey\n } = select.props;\n return get(selected, valueKey) === get(target, valueKey);\n }\n };\n const isItemSelected = (modelValue, target) => {\n if (select.props.multiple) {\n return contains(modelValue, getValue(target));\n }\n return isEqual(modelValue, getValue(target));\n };\n const isItemDisabled = (modelValue, selected) => {\n const {\n disabled,\n multiple,\n multipleLimit\n } = select.props;\n return disabled || !selected && (multiple ? multipleLimit > 0 && modelValue.length >= multipleLimit : false);\n };\n const isItemHovering = (target) => props.hoveringIndex === target;\n const scrollToItem = (index) => {\n const list = listRef.value;\n if (list) {\n list.scrollToItem(index);\n }\n };\n const resetScrollTop = () => {\n const list = listRef.value;\n if (list) {\n list.resetScrollTop();\n }\n };\n expose({\n listRef,\n isSized,\n isItemDisabled,\n isItemHovering,\n isItemSelected,\n scrollToItem,\n resetScrollTop\n });\n const Item = (itemProps) => {\n const {\n index,\n data,\n style\n } = itemProps;\n const sized = unref(isSized);\n const {\n itemSize,\n estimatedSize\n } = unref(listProps);\n const {\n modelValue\n } = select.props;\n const {\n onSelect,\n onHover\n } = select;\n const item = data[index];\n if (item.type === \"Group\") {\n return createVNode(GroupItem, {\n \"item\": item,\n \"style\": style,\n \"height\": sized ? itemSize : estimatedSize\n }, null);\n }\n const isSelected = isItemSelected(modelValue, item);\n const isDisabled = isItemDisabled(modelValue, isSelected);\n const isHovering = isItemHovering(index);\n return createVNode(OptionItem, mergeProps(itemProps, {\n \"selected\": isSelected,\n \"disabled\": getDisabled(item) || isDisabled,\n \"created\": !!item.created,\n \"hovering\": isHovering,\n \"item\": item,\n \"onSelect\": onSelect,\n \"onHover\": onHover\n }), {\n default: (props2) => {\n var _a;\n return ((_a = slots.default) == null ? void 0 : _a.call(slots, props2)) || createVNode(\"span\", null, [getLabel(item)]);\n }\n });\n };\n const {\n onKeyboardNavigate,\n onKeyboardSelect\n } = select;\n const onForward = () => {\n onKeyboardNavigate(\"forward\");\n };\n const onBackward = () => {\n onKeyboardNavigate(\"backward\");\n };\n const onEscOrTab = () => {\n select.expanded = false;\n };\n const onKeydown = (e) => {\n const {\n code\n } = e;\n const {\n tab,\n esc,\n down,\n up,\n enter\n } = EVENT_CODE;\n if (code !== tab) {\n e.preventDefault();\n e.stopPropagation();\n }\n switch (code) {\n case tab:\n case esc: {\n onEscOrTab();\n break;\n }\n case down: {\n onForward();\n break;\n }\n case up: {\n onBackward();\n break;\n }\n case enter: {\n onKeyboardSelect();\n break;\n }\n }\n };\n return () => {\n var _a, _b, _c, _d;\n const {\n data,\n width\n } = props;\n const {\n height,\n multiple,\n scrollbarAlwaysOn\n } = select.props;\n const List = unref(isSized) ? FixedSizeList : DynamicSizeList;\n return createVNode(\"div\", {\n \"class\": [ns.b(\"dropdown\"), ns.is(\"multiple\", multiple)],\n \"style\": {\n width: `${width}px`\n }\n }, [(_a = slots.header) == null ? void 0 : _a.call(slots), ((_b = slots.loading) == null ? void 0 : _b.call(slots)) || ((_c = slots.empty) == null ? void 0 : _c.call(slots)) || createVNode(List, mergeProps({\n \"ref\": listRef\n }, unref(listProps), {\n \"className\": ns.be(\"dropdown\", \"list\"),\n \"scrollbarAlwaysOn\": scrollbarAlwaysOn,\n \"data\": data,\n \"height\": height,\n \"width\": width,\n \"total\": data.length,\n \"onKeydown\": onKeydown\n }), {\n default: (props2) => createVNode(Item, props2, null)\n }), (_d = slots.footer) == null ? void 0 : _d.call(slots)]);\n };\n }\n});\n\nexport { ElSelectMenu as default };\n//# sourceMappingURL=select-dropdown.mjs.map\n","import { ref, computed } from 'vue';\nimport { useProps } from './useProps.mjs';\n\nfunction useAllowCreate(props, states) {\n const { aliasProps, getLabel, getValue } = useProps(props);\n const createOptionCount = ref(0);\n const cachedSelectedOption = ref(null);\n const enableAllowCreateMode = computed(() => {\n return props.allowCreate && props.filterable;\n });\n function hasExistingOption(query) {\n const hasOption = (option) => getLabel(option) === query;\n return props.options && props.options.some(hasOption) || states.createdOptions.some(hasOption);\n }\n function selectNewOption(option) {\n if (!enableAllowCreateMode.value) {\n return;\n }\n if (props.multiple && option.created) {\n createOptionCount.value++;\n } else {\n cachedSelectedOption.value = option;\n }\n }\n function createNewOption(query) {\n if (enableAllowCreateMode.value) {\n if (query && query.length > 0) {\n if (hasExistingOption(query)) {\n return;\n }\n const newOption = {\n [aliasProps.value.value]: query,\n [aliasProps.value.label]: query,\n created: true,\n [aliasProps.value.disabled]: false\n };\n if (states.createdOptions.length >= createOptionCount.value) {\n states.createdOptions[createOptionCount.value] = newOption;\n } else {\n states.createdOptions.push(newOption);\n }\n } else {\n if (props.multiple) {\n states.createdOptions.length = createOptionCount.value;\n } else {\n const selectedOption = cachedSelectedOption.value;\n states.createdOptions.length = 0;\n if (selectedOption && selectedOption.created) {\n states.createdOptions.push(selectedOption);\n }\n }\n }\n }\n }\n function removeNewOption(option) {\n if (!enableAllowCreateMode.value || !option || !option.created || option.created && props.reserveKeyword && states.inputValue === getLabel(option)) {\n return;\n }\n const idx = states.createdOptions.findIndex((it) => getValue(it) === getValue(option));\n if (~idx) {\n states.createdOptions.splice(idx, 1);\n createOptionCount.value--;\n }\n }\n function clearAllNewOption() {\n if (enableAllowCreateMode.value) {\n states.createdOptions.length = 0;\n createOptionCount.value = 0;\n }\n }\n return {\n createNewOption,\n removeNewOption,\n selectNewOption,\n clearAllNewOption\n };\n}\n\nexport { useAllowCreate };\n//# sourceMappingURL=useAllowCreate.mjs.map\n","import { reactive, ref, computed, nextTick, watch, watchEffect, onMounted } from 'vue';\nimport { isArray, isFunction, isObject } from '@vue/shared';\nimport { debounce, isEqual, get, findLastIndex } from 'lodash-unified';\nimport { useResizeObserver } from '@vueuse/core';\nimport '../../../hooks/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../form/index.mjs';\nimport { ArrowDown } from '@element-plus/icons-vue';\nimport { useAllowCreate } from './useAllowCreate.mjs';\nimport { useInput } from './useInput.mjs';\nimport { useProps } from './useProps.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useEmptyValues } from '../../../hooks/use-empty-values/index.mjs';\nimport { useFocusController } from '../../../hooks/use-focus-controller/index.mjs';\nimport { ValidateComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { escapeStringRegexp } from '../../../utils/strings.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\n\nconst MINIMUM_INPUT_WIDTH = 11;\nconst useSelect = (props, emit) => {\n const { t } = useLocale();\n const nsSelect = useNamespace(\"select\");\n const nsInput = useNamespace(\"input\");\n const { form: elForm, formItem: elFormItem } = useFormItem();\n const { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem\n });\n const { aliasProps, getLabel, getValue, getDisabled, getOptions } = useProps(props);\n const { valueOnClear, isEmptyValue } = useEmptyValues(props);\n const states = reactive({\n inputValue: \"\",\n cachedOptions: [],\n createdOptions: [],\n hoveringIndex: -1,\n inputHovering: false,\n selectionWidth: 0,\n calculatorWidth: 0,\n collapseItemWidth: 0,\n previousQuery: null,\n previousValue: void 0,\n selectedLabel: \"\",\n menuVisibleOnFocus: false,\n isBeforeHide: false\n });\n const popperSize = ref(-1);\n const selectRef = ref(null);\n const selectionRef = ref(null);\n const tooltipRef = ref(null);\n const tagTooltipRef = ref(null);\n const inputRef = ref(null);\n const calculatorRef = ref(null);\n const prefixRef = ref(null);\n const suffixRef = ref(null);\n const menuRef = ref(null);\n const tagMenuRef = ref(null);\n const collapseItemRef = ref(null);\n const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true;\n states.menuVisibleOnFocus = true;\n }\n },\n beforeBlur(event) {\n var _a, _b;\n return ((_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event));\n },\n afterBlur() {\n expanded.value = false;\n states.menuVisibleOnFocus = false;\n }\n });\n const allOptions = ref([]);\n const filteredOptions = ref([]);\n const expanded = ref(false);\n const selectDisabled = computed(() => props.disabled || (elForm == null ? void 0 : elForm.disabled));\n const popupHeight = computed(() => {\n const totalHeight = filteredOptions.value.length * props.itemHeight;\n return totalHeight > props.height ? props.height : totalHeight;\n });\n const hasModelValue = computed(() => {\n return props.multiple ? isArray(props.modelValue) && props.modelValue.length > 0 : !isEmptyValue(props.modelValue);\n });\n const showClearBtn = computed(() => {\n return props.clearable && !selectDisabled.value && states.inputHovering && hasModelValue.value;\n });\n const iconComponent = computed(() => props.remote && props.filterable ? \"\" : ArrowDown);\n const iconReverse = computed(() => iconComponent.value && nsSelect.is(\"reverse\", expanded.value));\n const validateState = computed(() => (elFormItem == null ? void 0 : elFormItem.validateState) || \"\");\n const validateIcon = computed(() => ValidateComponentsMap[validateState.value]);\n const debounce$1 = computed(() => props.remote ? 300 : 0);\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t(\"el.select.loading\");\n } else {\n if (props.remote && !states.inputValue && allOptions.value.length === 0)\n return false;\n if (props.filterable && states.inputValue && allOptions.value.length > 0 && filteredOptions.value.length === 0) {\n return props.noMatchText || t(\"el.select.noMatch\");\n }\n if (allOptions.value.length === 0) {\n return props.noDataText || t(\"el.select.noData\");\n }\n }\n return null;\n });\n const filterOptions = (query) => {\n const isValidOption = (o) => {\n if (props.filterable && isFunction(props.filterMethod))\n return true;\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return true;\n const regexp = new RegExp(escapeStringRegexp(query), \"i\");\n return query ? regexp.test(getLabel(o) || \"\") : true;\n };\n if (props.loading) {\n return [];\n }\n return [...states.createdOptions, ...props.options].reduce((all, item) => {\n const options = getOptions(item);\n if (isArray(options)) {\n const filtered = options.filter(isValidOption);\n if (filtered.length > 0) {\n all.push({\n label: getLabel(item),\n type: \"Group\"\n }, ...filtered);\n }\n } else if (props.remote || isValidOption(item)) {\n all.push(item);\n }\n return all;\n }, []);\n };\n const updateOptions = () => {\n allOptions.value = filterOptions(\"\");\n filteredOptions.value = filterOptions(states.inputValue);\n };\n const allOptionsValueMap = computed(() => {\n const valueMap = /* @__PURE__ */ new Map();\n allOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index });\n });\n return valueMap;\n });\n const filteredOptionsValueMap = computed(() => {\n const valueMap = /* @__PURE__ */ new Map();\n filteredOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index });\n });\n return valueMap;\n });\n const optionsAllDisabled = computed(() => filteredOptions.value.every((option) => getDisabled(option)));\n const selectSize = useFormSize();\n const collapseTagSize = computed(() => selectSize.value === \"small\" ? \"small\" : \"default\");\n const calculatePopperSize = () => {\n var _a;\n popperSize.value = ((_a = selectRef.value) == null ? void 0 : _a.offsetWidth) || 200;\n };\n const getGapWidth = () => {\n if (!selectionRef.value)\n return 0;\n const style = window.getComputedStyle(selectionRef.value);\n return Number.parseFloat(style.gap || \"6px\");\n };\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth();\n const maxWidth = collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth : states.selectionWidth;\n return { maxWidth: `${maxWidth}px` };\n });\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` };\n });\n const inputStyle = computed(() => ({\n width: `${Math.max(states.calculatorWidth, MINIMUM_INPUT_WIDTH)}px`\n }));\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.inputValue;\n }\n return props.filterable ? !states.inputValue : true;\n });\n const currentPlaceholder = computed(() => {\n var _a;\n const _placeholder = (_a = props.placeholder) != null ? _a : t(\"el.select.placeholder\");\n return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel;\n });\n const popperRef = computed(() => {\n var _a, _b;\n return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n const indexRef = computed(() => {\n if (props.multiple) {\n const len = props.modelValue.length;\n if (props.modelValue.length > 0 && filteredOptionsValueMap.value.has(props.modelValue[len - 1])) {\n const { index } = filteredOptionsValueMap.value.get(props.modelValue[len - 1]);\n return index;\n }\n } else {\n if (props.modelValue && filteredOptionsValueMap.value.has(props.modelValue)) {\n const { index } = filteredOptionsValueMap.value.get(props.modelValue);\n return index;\n }\n }\n return -1;\n });\n const dropdownMenuVisible = computed({\n get() {\n return expanded.value && emptyText.value !== false;\n },\n set(val) {\n expanded.value = val;\n }\n });\n const showTagList = computed(() => {\n if (!props.multiple) {\n return [];\n }\n return props.collapseTags ? states.cachedOptions.slice(0, props.maxCollapseTags) : states.cachedOptions;\n });\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return [];\n }\n return props.collapseTags ? states.cachedOptions.slice(props.maxCollapseTags) : [];\n });\n const {\n createNewOption,\n removeNewOption,\n selectNewOption,\n clearAllNewOption\n } = useAllowCreate(props, states);\n const {\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd\n } = useInput((e) => onInput(e));\n const toggleMenu = () => {\n if (selectDisabled.value)\n return;\n if (states.menuVisibleOnFocus) {\n states.menuVisibleOnFocus = false;\n } else {\n expanded.value = !expanded.value;\n }\n };\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true;\n }\n createNewOption(states.inputValue);\n handleQueryChange(states.inputValue);\n };\n const debouncedOnInputChange = debounce(onInputChange, debounce$1.value);\n const handleQueryChange = (val) => {\n if (states.previousQuery === val) {\n return;\n }\n states.previousQuery = val;\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val);\n } else if (props.filterable && props.remote && isFunction(props.remoteMethod)) {\n props.remoteMethod(val);\n }\n if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptions.value.length) {\n nextTick(checkDefaultFirstOption);\n } else {\n nextTick(updateHoveringIndex);\n }\n };\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = filteredOptions.value.filter((n) => !n.disabled && n.type !== \"Group\");\n const userCreatedOption = optionsInDropdown.find((n) => n.created);\n const firstOriginOption = optionsInDropdown[0];\n states.hoveringIndex = getValueIndex(filteredOptions.value, userCreatedOption || firstOriginOption);\n };\n const emitChange = (val) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val);\n }\n };\n const update = (val) => {\n emit(UPDATE_MODEL_EVENT, val);\n emitChange(val);\n states.previousValue = props.multiple ? String(val) : val;\n };\n const getValueIndex = (arr = [], value) => {\n if (!isObject(value)) {\n return arr.indexOf(value);\n }\n const valueKey = props.valueKey;\n let index = -1;\n arr.some((item, i) => {\n if (get(item, valueKey) === get(value, valueKey)) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n };\n const getValueKey = (item) => {\n return isObject(item) ? get(item, props.valueKey) : item;\n };\n const handleResize = () => {\n calculatePopperSize();\n };\n const resetSelectionWidth = () => {\n states.selectionWidth = selectionRef.value.getBoundingClientRect().width;\n };\n const resetCalculatorWidth = () => {\n states.calculatorWidth = calculatorRef.value.getBoundingClientRect().width;\n };\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;\n };\n const updateTooltip = () => {\n var _a, _b;\n (_b = (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n };\n const updateTagTooltip = () => {\n var _a, _b;\n (_b = (_a = tagTooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n };\n const onSelect = (option) => {\n if (props.multiple) {\n let selectedOptions = props.modelValue.slice();\n const index = getValueIndex(selectedOptions, getValue(option));\n if (index > -1) {\n selectedOptions = [\n ...selectedOptions.slice(0, index),\n ...selectedOptions.slice(index + 1)\n ];\n states.cachedOptions.splice(index, 1);\n removeNewOption(option);\n } else if (props.multipleLimit <= 0 || selectedOptions.length < props.multipleLimit) {\n selectedOptions = [...selectedOptions, getValue(option)];\n states.cachedOptions.push(option);\n selectNewOption(option);\n }\n update(selectedOptions);\n if (option.created) {\n handleQueryChange(\"\");\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = \"\";\n }\n } else {\n states.selectedLabel = getLabel(option);\n update(getValue(option));\n expanded.value = false;\n selectNewOption(option);\n if (!option.created) {\n clearAllNewOption();\n }\n }\n focus();\n };\n const deleteTag = (event, option) => {\n let selectedOptions = props.modelValue.slice();\n const index = getValueIndex(selectedOptions, getValue(option));\n if (index > -1 && !selectDisabled.value) {\n selectedOptions = [\n ...props.modelValue.slice(0, index),\n ...props.modelValue.slice(index + 1)\n ];\n states.cachedOptions.splice(index, 1);\n update(selectedOptions);\n emit(\"remove-tag\", getValue(option));\n removeNewOption(option);\n }\n event.stopPropagation();\n focus();\n };\n const focus = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.blur();\n };\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = \"\";\n } else {\n expanded.value = false;\n }\n };\n const getLastNotDisabledIndex = (value) => findLastIndex(value, (it) => !states.cachedOptions.some((option) => getValue(option) === it && getDisabled(option)));\n const handleDel = (e) => {\n if (!props.multiple)\n return;\n if (e.code === EVENT_CODE.delete)\n return;\n if (states.inputValue.length === 0) {\n e.preventDefault();\n const selected = props.modelValue.slice();\n const lastNotDisabledIndex = getLastNotDisabledIndex(selected);\n if (lastNotDisabledIndex < 0)\n return;\n const removeTagValue = selected[lastNotDisabledIndex];\n selected.splice(lastNotDisabledIndex, 1);\n const option = states.cachedOptions[lastNotDisabledIndex];\n states.cachedOptions.splice(lastNotDisabledIndex, 1);\n removeNewOption(option);\n update(selected);\n emit(\"remove-tag\", removeTagValue);\n }\n };\n const handleClear = () => {\n let emptyValue;\n if (isArray(props.modelValue)) {\n emptyValue = [];\n } else {\n emptyValue = valueOnClear.value;\n }\n if (props.multiple) {\n states.cachedOptions = [];\n } else {\n states.selectedLabel = \"\";\n }\n expanded.value = false;\n update(emptyValue);\n emit(\"clear\");\n clearAllNewOption();\n focus();\n };\n const onKeyboardNavigate = (direction, hoveringIndex = void 0) => {\n const options = filteredOptions.value;\n if (![\"forward\", \"backward\"].includes(direction) || selectDisabled.value || options.length <= 0 || optionsAllDisabled.value) {\n return;\n }\n if (!expanded.value) {\n return toggleMenu();\n }\n if (hoveringIndex === void 0) {\n hoveringIndex = states.hoveringIndex;\n }\n let newIndex = -1;\n if (direction === \"forward\") {\n newIndex = hoveringIndex + 1;\n if (newIndex >= options.length) {\n newIndex = 0;\n }\n } else if (direction === \"backward\") {\n newIndex = hoveringIndex - 1;\n if (newIndex < 0 || newIndex >= options.length) {\n newIndex = options.length - 1;\n }\n }\n const option = options[newIndex];\n if (getDisabled(option) || option.type === \"Group\") {\n return onKeyboardNavigate(direction, newIndex);\n } else {\n states.hoveringIndex = newIndex;\n scrollToItem(newIndex);\n }\n };\n const onKeyboardSelect = () => {\n if (!expanded.value) {\n return toggleMenu();\n } else if (~states.hoveringIndex && filteredOptions.value[states.hoveringIndex]) {\n onSelect(filteredOptions.value[states.hoveringIndex]);\n }\n };\n const onHoverOption = (idx) => {\n states.hoveringIndex = idx;\n };\n const updateHoveringIndex = () => {\n if (!props.multiple) {\n states.hoveringIndex = filteredOptions.value.findIndex((item) => {\n return getValueKey(item) === getValueKey(props.modelValue);\n });\n } else {\n states.hoveringIndex = filteredOptions.value.findIndex((item) => props.modelValue.some((modelValue) => getValueKey(modelValue) === getValueKey(item)));\n }\n };\n const onInput = (event) => {\n states.inputValue = event.target.value;\n if (props.remote) {\n debouncedOnInputChange();\n } else {\n return onInputChange();\n }\n };\n const handleClickOutside = (event) => {\n expanded.value = false;\n if (isFocused.value) {\n const _event = new FocusEvent(\"focus\", event);\n handleBlur(_event);\n }\n };\n const handleMenuEnter = () => {\n states.isBeforeHide = false;\n return nextTick(() => {\n if (~indexRef.value) {\n scrollToItem(states.hoveringIndex);\n }\n });\n };\n const scrollToItem = (index) => {\n menuRef.value.scrollToItem(index);\n };\n const getOption = (value) => {\n const selectValue = getValueKey(value);\n if (allOptionsValueMap.value.has(selectValue)) {\n const { option } = allOptionsValueMap.value.get(selectValue);\n return option;\n }\n return {\n [aliasProps.value.value]: value,\n [aliasProps.value.label]: value\n };\n };\n const initStates = () => {\n if (props.multiple) {\n if (props.modelValue.length > 0) {\n states.cachedOptions.length = 0;\n states.previousValue = props.modelValue.toString();\n for (const value of props.modelValue) {\n const option = getOption(value);\n states.cachedOptions.push(option);\n }\n } else {\n states.cachedOptions = [];\n states.previousValue = void 0;\n }\n } else {\n if (hasModelValue.value) {\n states.previousValue = props.modelValue;\n const options = filteredOptions.value;\n const selectedItemIndex = options.findIndex((option) => getValueKey(getValue(option)) === getValueKey(props.modelValue));\n if (~selectedItemIndex) {\n states.selectedLabel = getLabel(options[selectedItemIndex]);\n } else {\n states.selectedLabel = getValueKey(props.modelValue);\n }\n } else {\n states.selectedLabel = \"\";\n states.previousValue = void 0;\n }\n }\n clearAllNewOption();\n calculatePopperSize();\n };\n watch(expanded, (val) => {\n if (val) {\n handleQueryChange(\"\");\n } else {\n states.inputValue = \"\";\n states.previousQuery = null;\n states.isBeforeHide = true;\n createNewOption(\"\");\n }\n emit(\"visible-change\", val);\n });\n watch(() => props.modelValue, (val, oldVal) => {\n var _a;\n if (!val || props.multiple && val.toString() !== states.previousValue || !props.multiple && getValueKey(val) !== getValueKey(states.previousValue)) {\n initStates();\n }\n if (!isEqual(val, oldVal) && props.validateEvent) {\n (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, \"change\").catch((err) => debugWarn(err));\n }\n }, {\n deep: true\n });\n watch(() => props.options, () => {\n const input = inputRef.value;\n if (!input || input && document.activeElement !== input) {\n initStates();\n }\n }, {\n deep: true,\n flush: \"post\"\n });\n watch(() => filteredOptions.value, () => {\n return menuRef.value && nextTick(menuRef.value.resetScrollTop);\n });\n watchEffect(() => {\n if (states.isBeforeHide)\n return;\n updateOptions();\n });\n watchEffect(() => {\n const { valueKey, options } = props;\n const duplicateValue = /* @__PURE__ */ new Map();\n for (const item of options) {\n const optionValue = getValue(item);\n let v = optionValue;\n if (isObject(v)) {\n v = get(optionValue, valueKey);\n }\n if (duplicateValue.get(v)) {\n debugWarn(\"ElSelectV2\", `The option values you provided seem to be duplicated, which may cause some problems, please check.`);\n break;\n } else {\n duplicateValue.set(v, true);\n }\n }\n });\n onMounted(() => {\n initStates();\n });\n useResizeObserver(selectRef, handleResize);\n useResizeObserver(selectionRef, resetSelectionWidth);\n useResizeObserver(calculatorRef, resetCalculatorWidth);\n useResizeObserver(menuRef, updateTooltip);\n useResizeObserver(wrapperRef, updateTooltip);\n useResizeObserver(tagMenuRef, updateTagTooltip);\n useResizeObserver(collapseItemRef, resetCollapseItemWidth);\n return {\n inputId,\n collapseTagSize,\n currentPlaceholder,\n expanded,\n emptyText,\n popupHeight,\n debounce: debounce$1,\n allOptions,\n filteredOptions,\n iconComponent,\n iconReverse,\n tagStyle,\n collapseTagStyle,\n inputStyle,\n popperSize,\n dropdownMenuVisible,\n hasModelValue,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n showClearBtn,\n states,\n isFocused,\n nsSelect,\n nsInput,\n calculatorRef,\n inputRef,\n menuRef,\n tagMenuRef,\n tooltipRef,\n tagTooltipRef,\n selectRef,\n wrapperRef,\n selectionRef,\n prefixRef,\n suffixRef,\n collapseItemRef,\n popperRef,\n validateState,\n validateIcon,\n showTagList,\n collapseTagList,\n debouncedOnInputChange,\n deleteTag,\n getLabel,\n getValue,\n getDisabled,\n getValueKey,\n handleBlur,\n handleClear,\n handleClickOutside,\n handleDel,\n handleEsc,\n handleFocus,\n focus,\n blur,\n handleMenuEnter,\n handleResize,\n resetSelectionWidth,\n resetCalculatorWidth,\n updateTooltip,\n updateTagTooltip,\n updateOptions,\n toggleMenu,\n scrollTo: scrollToItem,\n onInput,\n onKeyboardNavigate,\n onKeyboardSelect,\n onSelect,\n onHover: onHoverOption,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate\n };\n};\n\nexport { useSelect as default };\n//# sourceMappingURL=useSelect.mjs.map\n","import { defineComponent, computed, reactive, toRefs, provide, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, withModifiers, createVNode, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, normalizeStyle, createTextVNode, toDisplayString, createBlock, withKeys, vModelText, resolveDynamicComponent, vShow, createSlots, normalizeProps, guardReactiveProps } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../directives/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElTag } from '../../tag/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../constants/index.mjs';\nimport ElSelectMenu from './select-dropdown.mjs';\nimport useSelect from './useSelect.mjs';\nimport { SelectProps } from './defaults.mjs';\nimport { selectV2InjectionKey } from './token.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isArray } from '@vue/shared';\n\nconst _sfc_main = defineComponent({\n name: \"ElSelectV2\",\n components: {\n ElSelectMenu,\n ElTag,\n ElTooltip,\n ElIcon\n },\n directives: { ClickOutside },\n props: SelectProps,\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n \"remove-tag\",\n \"clear\",\n \"visible-change\",\n \"focus\",\n \"blur\"\n ],\n setup(props, { emit }) {\n const modelValue = computed(() => {\n const { modelValue: rawModelValue, multiple } = props;\n const fallback = multiple ? [] : void 0;\n if (isArray(rawModelValue)) {\n return multiple ? rawModelValue : fallback;\n }\n return multiple ? fallback : rawModelValue;\n });\n const API = useSelect(reactive({\n ...toRefs(props),\n modelValue\n }), emit);\n provide(selectV2InjectionKey, {\n props: reactive({\n ...toRefs(props),\n height: API.popupHeight,\n modelValue\n }),\n tooltipRef: API.tooltipRef,\n onSelect: API.onSelect,\n onHover: API.onHover,\n onKeyboardNavigate: API.onKeyboardNavigate,\n onKeyboardSelect: API.onKeyboardSelect\n });\n return {\n ...API,\n modelValue\n };\n }\n});\nconst _hoisted_1 = [\"id\", \"autocomplete\", \"aria-expanded\", \"aria-label\", \"disabled\", \"readonly\", \"name\"];\nconst _hoisted_2 = [\"textContent\"];\nconst _hoisted_3 = { key: 1 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_tag = resolveComponent(\"el-tag\");\n const _component_el_tooltip = resolveComponent(\"el-tooltip\");\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_el_select_menu = resolveComponent(\"el-select-menu\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n ref: \"selectRef\",\n class: normalizeClass([_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]),\n onMouseenter: _cache[14] || (_cache[14] = ($event) => _ctx.states.inputHovering = true),\n onMouseleave: _cache[15] || (_cache[15] = ($event) => _ctx.states.inputHovering = false),\n onClick: _cache[16] || (_cache[16] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), [\"prevent\", \"stop\"]))\n }, [\n createVNode(_component_el_tooltip, {\n ref: \"tooltipRef\",\n visible: _ctx.dropdownMenuVisible,\n teleported: _ctx.teleported,\n \"popper-class\": [_ctx.nsSelect.e(\"popper\"), _ctx.popperClass],\n \"gpu-acceleration\": false,\n \"stop-popper-mouse-event\": false,\n \"popper-options\": _ctx.popperOptions,\n \"fallback-placements\": _ctx.fallbackPlacements,\n effect: _ctx.effect,\n placement: _ctx.placement,\n pure: \"\",\n transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,\n trigger: \"click\",\n persistent: _ctx.persistent,\n onBeforeShow: _ctx.handleMenuEnter,\n onHide: _cache[13] || (_cache[13] = ($event) => _ctx.states.isBeforeHide = false)\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"wrapperRef\",\n class: normalizeClass([\n _ctx.nsSelect.e(\"wrapper\"),\n _ctx.nsSelect.is(\"focused\", _ctx.isFocused),\n _ctx.nsSelect.is(\"hovering\", _ctx.states.inputHovering),\n _ctx.nsSelect.is(\"filterable\", _ctx.filterable),\n _ctx.nsSelect.is(\"disabled\", _ctx.selectDisabled)\n ])\n }, [\n _ctx.$slots.prefix ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"prefixRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"prefix\"))\n }, [\n renderSlot(_ctx.$slots, \"prefix\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n ref: \"selectionRef\",\n class: normalizeClass([\n _ctx.nsSelect.e(\"selection\"),\n _ctx.nsSelect.is(\"near\", _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.modelValue.length)\n ])\n }, [\n _ctx.multiple ? renderSlot(_ctx.$slots, \"tag\", { key: 0 }, () => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.showTagList, (item) => {\n return openBlock(), createElementBlock(\"div\", {\n key: _ctx.getValueKey(_ctx.getValue(item)),\n class: normalizeClass(_ctx.nsSelect.e(\"selected-item\"))\n }, [\n createVNode(_component_el_tag, {\n closable: !_ctx.selectDisabled && !_ctx.getDisabled(item),\n size: _ctx.collapseTagSize,\n type: _ctx.tagType,\n \"disable-transitions\": \"\",\n style: normalizeStyle(_ctx.tagStyle),\n onClose: ($event) => _ctx.deleteTag($event, item)\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.nsSelect.e(\"tags-text\"))\n }, [\n renderSlot(_ctx.$slots, \"label\", {\n label: _ctx.getLabel(item),\n value: _ctx.getValue(item)\n }, () => [\n createTextVNode(toDisplayString(_ctx.getLabel(item)), 1)\n ])\n ], 2)\n ]),\n _: 2\n }, 1032, [\"closable\", \"size\", \"type\", \"style\", \"onClose\"])\n ], 2);\n }), 128)),\n _ctx.collapseTags && _ctx.modelValue.length > _ctx.maxCollapseTags ? (openBlock(), createBlock(_component_el_tooltip, {\n key: 0,\n ref: \"tagTooltipRef\",\n disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip,\n \"fallback-placements\": [\"bottom\", \"top\", \"right\", \"left\"],\n effect: _ctx.effect,\n placement: \"bottom\",\n teleported: _ctx.teleported\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"collapseItemRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"selected-item\"))\n }, [\n createVNode(_component_el_tag, {\n closable: false,\n size: _ctx.collapseTagSize,\n type: _ctx.tagType,\n style: normalizeStyle(_ctx.collapseTagStyle),\n \"disable-transitions\": \"\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.nsSelect.e(\"tags-text\"))\n }, \" + \" + toDisplayString(_ctx.modelValue.length - _ctx.maxCollapseTags), 3)\n ]),\n _: 1\n }, 8, [\"size\", \"type\", \"style\"])\n ], 2)\n ]),\n content: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"tagMenuRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"selection\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.collapseTagList, (selected) => {\n return openBlock(), createElementBlock(\"div\", {\n key: _ctx.getValueKey(_ctx.getValue(selected)),\n class: normalizeClass(_ctx.nsSelect.e(\"selected-item\"))\n }, [\n createVNode(_component_el_tag, {\n class: \"in-tooltip\",\n closable: !_ctx.selectDisabled && !_ctx.getDisabled(selected),\n size: _ctx.collapseTagSize,\n type: _ctx.tagType,\n \"disable-transitions\": \"\",\n onClose: ($event) => _ctx.deleteTag($event, selected)\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.nsSelect.e(\"tags-text\"))\n }, [\n renderSlot(_ctx.$slots, \"label\", {\n label: _ctx.getLabel(selected),\n value: _ctx.getValue(selected)\n }, () => [\n createTextVNode(toDisplayString(_ctx.getLabel(selected)), 1)\n ])\n ], 2)\n ]),\n _: 2\n }, 1032, [\"closable\", \"size\", \"type\", \"onClose\"])\n ], 2);\n }), 128))\n ], 2)\n ]),\n _: 3\n }, 8, [\"disabled\", \"effect\", \"teleported\"])) : createCommentVNode(\"v-if\", true)\n ]) : createCommentVNode(\"v-if\", true),\n !_ctx.selectDisabled ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass([\n _ctx.nsSelect.e(\"selected-item\"),\n _ctx.nsSelect.e(\"input-wrapper\"),\n _ctx.nsSelect.is(\"hidden\", !_ctx.filterable)\n ])\n }, [\n withDirectives(createElementVNode(\"input\", {\n id: _ctx.inputId,\n ref: \"inputRef\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.states.inputValue = $event),\n style: normalizeStyle(_ctx.inputStyle),\n autocomplete: _ctx.autocomplete,\n \"aria-autocomplete\": \"list\",\n \"aria-haspopup\": \"listbox\",\n autocapitalize: \"off\",\n \"aria-expanded\": _ctx.expanded,\n \"aria-label\": _ctx.ariaLabel,\n class: normalizeClass([_ctx.nsSelect.e(\"input\"), _ctx.nsSelect.is(_ctx.selectSize)]),\n disabled: _ctx.selectDisabled,\n role: \"combobox\",\n readonly: !_ctx.filterable,\n spellcheck: \"false\",\n type: \"text\",\n name: _ctx.name,\n onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),\n onBlur: _cache[2] || (_cache[2] = (...args) => _ctx.handleBlur && _ctx.handleBlur(...args)),\n onInput: _cache[3] || (_cache[3] = (...args) => _ctx.onInput && _ctx.onInput(...args)),\n onCompositionstart: _cache[4] || (_cache[4] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)),\n onCompositionupdate: _cache[5] || (_cache[5] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)),\n onCompositionend: _cache[6] || (_cache[6] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)),\n onKeydown: [\n _cache[7] || (_cache[7] = withKeys(withModifiers(($event) => _ctx.onKeyboardNavigate(\"backward\"), [\"stop\", \"prevent\"]), [\"up\"])),\n _cache[8] || (_cache[8] = withKeys(withModifiers(($event) => _ctx.onKeyboardNavigate(\"forward\"), [\"stop\", \"prevent\"]), [\"down\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers((...args) => _ctx.onKeyboardSelect && _ctx.onKeyboardSelect(...args), [\"stop\", \"prevent\"]), [\"enter\"])),\n _cache[10] || (_cache[10] = withKeys(withModifiers((...args) => _ctx.handleEsc && _ctx.handleEsc(...args), [\"stop\", \"prevent\"]), [\"esc\"])),\n _cache[11] || (_cache[11] = withKeys(withModifiers((...args) => _ctx.handleDel && _ctx.handleDel(...args), [\"stop\"]), [\"delete\"]))\n ],\n onClick: _cache[12] || (_cache[12] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), [\"stop\"]))\n }, null, 46, _hoisted_1), [\n [vModelText, _ctx.states.inputValue]\n ]),\n _ctx.filterable ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n ref: \"calculatorRef\",\n \"aria-hidden\": \"true\",\n class: normalizeClass(_ctx.nsSelect.e(\"input-calculator\")),\n textContent: toDisplayString(_ctx.states.inputValue)\n }, null, 10, _hoisted_2)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true),\n _ctx.shouldShowPlaceholder ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\n _ctx.nsSelect.e(\"selected-item\"),\n _ctx.nsSelect.e(\"placeholder\"),\n _ctx.nsSelect.is(\"transparent\", !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue)\n ])\n }, [\n _ctx.hasModelValue ? renderSlot(_ctx.$slots, \"label\", {\n key: 0,\n label: _ctx.currentPlaceholder,\n value: _ctx.modelValue\n }, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.currentPlaceholder), 1)\n ]) : (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.currentPlaceholder), 1))\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2),\n createElementVNode(\"div\", {\n ref: \"suffixRef\",\n class: normalizeClass(_ctx.nsSelect.e(\"suffix\"))\n }, [\n _ctx.iconComponent ? withDirectives((openBlock(), createBlock(_component_el_icon, {\n key: 0,\n class: normalizeClass([_ctx.nsSelect.e(\"caret\"), _ctx.nsInput.e(\"icon\"), _ctx.iconReverse])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))\n ]),\n _: 1\n }, 8, [\"class\"])), [\n [vShow, !_ctx.showClearBtn]\n ]) : createCommentVNode(\"v-if\", true),\n _ctx.showClearBtn && _ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {\n key: 1,\n class: normalizeClass([_ctx.nsSelect.e(\"caret\"), _ctx.nsInput.e(\"icon\")]),\n onClick: withModifiers(_ctx.handleClear, [\"prevent\", \"stop\"])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))\n ]),\n _: 1\n }, 8, [\"class\", \"onClick\"])) : createCommentVNode(\"v-if\", true),\n _ctx.validateState && _ctx.validateIcon ? (openBlock(), createBlock(_component_el_icon, {\n key: 2,\n class: normalizeClass([_ctx.nsInput.e(\"icon\"), _ctx.nsInput.e(\"validateIcon\")])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.validateIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2)\n ]),\n content: withCtx(() => [\n createVNode(_component_el_select_menu, {\n ref: \"menuRef\",\n data: _ctx.filteredOptions,\n width: _ctx.popperSize,\n \"hovering-index\": _ctx.states.hoveringIndex,\n \"scrollbar-always-on\": _ctx.scrollbarAlwaysOn\n }, createSlots({\n default: withCtx((scope) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(scope)))\n ]),\n _: 2\n }, [\n _ctx.$slots.header ? {\n name: \"header\",\n fn: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"header\"))\n }, [\n renderSlot(_ctx.$slots, \"header\")\n ], 2)\n ])\n } : void 0,\n _ctx.$slots.loading && _ctx.loading ? {\n name: \"loading\",\n fn: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"loading\"))\n }, [\n renderSlot(_ctx.$slots, \"loading\")\n ], 2)\n ])\n } : _ctx.loading || _ctx.filteredOptions.length === 0 ? {\n name: \"empty\",\n fn: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"empty\"))\n }, [\n renderSlot(_ctx.$slots, \"empty\", {}, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.emptyText), 1)\n ])\n ], 2)\n ])\n } : void 0,\n _ctx.$slots.footer ? {\n name: \"footer\",\n fn: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.nsSelect.be(\"dropdown\", \"footer\"))\n }, [\n renderSlot(_ctx.$slots, \"footer\")\n ], 2)\n ])\n } : void 0\n ]), 1032, [\"data\", \"width\", \"hovering-index\", \"scrollbar-always-on\"])\n ]),\n _: 3\n }, 8, [\"visible\", \"teleported\", \"popper-class\", \"popper-options\", \"fallback-placements\", \"effect\", \"placement\", \"transition\", \"persistent\", \"onBeforeShow\"])\n ], 34)), [\n [_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef]\n ]);\n}\nvar Select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"select.vue\"]]);\n\nexport { Select as default };\n//# sourceMappingURL=select.mjs.map\n","import Select from './src/select.mjs';\nexport { selectV2InjectionKey } from './src/token.mjs';\n\nSelect.install = (app) => {\n app.component(Select.name, Select);\n};\nconst _Select = Select;\nconst ElSelectV2 = _Select;\n\nexport { ElSelectV2, _Select as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst skeletonProps = buildProps({\n animated: {\n type: Boolean,\n default: false\n },\n count: {\n type: Number,\n default: 1\n },\n rows: {\n type: Number,\n default: 3\n },\n loading: {\n type: Boolean,\n default: true\n },\n throttle: {\n type: Number\n }\n});\n\nexport { skeletonProps };\n//# sourceMappingURL=skeleton.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst skeletonItemProps = buildProps({\n variant: {\n type: String,\n values: [\n \"circle\",\n \"rect\",\n \"h1\",\n \"h3\",\n \"text\",\n \"caption\",\n \"p\",\n \"image\",\n \"button\"\n ],\n default: \"text\"\n }\n});\n\nexport { skeletonItemProps };\n//# sourceMappingURL=skeleton-item.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, createBlock, createCommentVNode } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { PictureFilled } from '@element-plus/icons-vue';\nimport { skeletonItemProps } from './skeleton-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElSkeletonItem\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: skeletonItemProps,\n setup(__props) {\n const ns = useNamespace(\"skeleton\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).e(\"item\"), unref(ns).e(_ctx.variant)])\n }, [\n _ctx.variant === \"image\" ? (openBlock(), createBlock(unref(PictureFilled), { key: 0 })) : createCommentVNode(\"v-if\", true)\n ], 2);\n };\n }\n});\nvar SkeletonItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"skeleton-item.vue\"]]);\n\nexport { SkeletonItem as default };\n//# sourceMappingURL=skeleton-item2.mjs.map\n","import { ref, onMounted, watch } from 'vue';\n\nconst useThrottleRender = (loading, throttle = 0) => {\n if (throttle === 0)\n return loading;\n const throttled = ref(false);\n let timeoutHandle = 0;\n const dispatchThrottling = () => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n timeoutHandle = window.setTimeout(() => {\n throttled.value = loading.value;\n }, throttle);\n };\n onMounted(dispatchThrottling);\n watch(() => loading.value, (val) => {\n if (val) {\n dispatchThrottling();\n } else {\n throttled.value = val;\n }\n });\n return throttled;\n};\n\nexport { useThrottleRender };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, toRef, unref, openBlock, createElementBlock, mergeProps, Fragment, renderList, renderSlot, createVNode, normalizeClass, createBlock, createCommentVNode, normalizeProps } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { skeletonProps } from './skeleton.mjs';\nimport SkeletonItem from './skeleton-item2.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useThrottleRender } from '../../../hooks/use-throttle-render/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElSkeleton\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: skeletonProps,\n setup(__props, { expose }) {\n const props = __props;\n const ns = useNamespace(\"skeleton\");\n const uiLoading = useThrottleRender(toRef(props, \"loading\"), props.throttle);\n expose({\n uiLoading\n });\n return (_ctx, _cache) => {\n return unref(uiLoading) ? (openBlock(), createElementBlock(\"div\", mergeProps({\n key: 0,\n class: [unref(ns).b(), unref(ns).is(\"animated\", _ctx.animated)]\n }, _ctx.$attrs), [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.count, (i) => {\n return openBlock(), createElementBlock(Fragment, { key: i }, [\n _ctx.loading ? renderSlot(_ctx.$slots, \"template\", { key: i }, () => [\n createVNode(SkeletonItem, {\n class: normalizeClass(unref(ns).is(\"first\")),\n variant: \"p\"\n }, null, 8, [\"class\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.rows, (item) => {\n return openBlock(), createBlock(SkeletonItem, {\n key: item,\n class: normalizeClass([\n unref(ns).e(\"paragraph\"),\n unref(ns).is(\"last\", item === _ctx.rows && _ctx.rows > 1)\n ]),\n variant: \"p\"\n }, null, 8, [\"class\"]);\n }), 128))\n ]) : createCommentVNode(\"v-if\", true)\n ], 64);\n }), 128))\n ], 16)) : renderSlot(_ctx.$slots, \"default\", normalizeProps(mergeProps({ key: 1 }, _ctx.$attrs)));\n };\n }\n});\nvar Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"skeleton.vue\"]]);\n\nexport { Skeleton as default };\n//# sourceMappingURL=skeleton2.mjs.map\n","import '../../utils/index.mjs';\nimport Skeleton from './src/skeleton2.mjs';\nimport SkeletonItem from './src/skeleton-item2.mjs';\nexport { skeletonProps } from './src/skeleton.mjs';\nexport { skeletonItemProps } from './src/skeleton-item.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElSkeleton = withInstall(Skeleton, {\n SkeletonItem\n});\nconst ElSkeletonItem = withNoopInstall(SkeletonItem);\n\nexport { ElSkeleton, ElSkeletonItem, ElSkeleton as default };\n//# sourceMappingURL=index.mjs.map\n","const sliderContextKey = Symbol(\"sliderContextKey\");\n\nexport { sliderContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import { placements } from '@popperjs/core';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { isArray } from '@vue/shared';\nimport { UPDATE_MODEL_EVENT, INPUT_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst sliderProps = buildProps({\n modelValue: {\n type: definePropType([Number, Array]),\n default: 0\n },\n id: {\n type: String,\n default: void 0\n },\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n step: {\n type: Number,\n default: 1\n },\n showInput: Boolean,\n showInputControls: {\n type: Boolean,\n default: true\n },\n size: useSizeProp,\n inputSize: useSizeProp,\n showStops: Boolean,\n showTooltip: {\n type: Boolean,\n default: true\n },\n formatTooltip: {\n type: definePropType(Function),\n default: void 0\n },\n disabled: Boolean,\n range: Boolean,\n vertical: Boolean,\n height: String,\n debounce: {\n type: Number,\n default: 300\n },\n label: {\n type: String,\n default: void 0\n },\n rangeStartLabel: {\n type: String,\n default: void 0\n },\n rangeEndLabel: {\n type: String,\n default: void 0\n },\n formatValueText: {\n type: definePropType(Function),\n default: void 0\n },\n tooltipClass: {\n type: String,\n default: void 0\n },\n placement: {\n type: String,\n values: placements,\n default: \"top\"\n },\n marks: {\n type: definePropType(Object)\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst isValidValue = (value) => isNumber(value) || isArray(value) && value.every(isNumber);\nconst sliderEmits = {\n [UPDATE_MODEL_EVENT]: isValidValue,\n [INPUT_EVENT]: isValidValue,\n [CHANGE_EVENT]: isValidValue\n};\n\nexport { sliderEmits, sliderProps };\n//# sourceMappingURL=slider.mjs.map\n","import { placements } from '@popperjs/core';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst sliderButtonProps = buildProps({\n modelValue: {\n type: Number,\n default: 0\n },\n vertical: Boolean,\n tooltipClass: String,\n placement: {\n type: String,\n values: placements,\n default: \"top\"\n }\n});\nconst sliderButtonEmits = {\n [UPDATE_MODEL_EVENT]: (value) => isNumber(value)\n};\n\nexport { sliderButtonEmits, sliderButtonProps };\n//# sourceMappingURL=button.mjs.map\n","import { ref, computed, inject, nextTick, watch } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport '../../../../constants/index.mjs';\nimport { sliderContextKey } from '../constants.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../../constants/event.mjs';\n\nconst { left, down, right, up, home, end, pageUp, pageDown } = EVENT_CODE;\nconst useTooltip = (props, formatTooltip, showTooltip) => {\n const tooltip = ref();\n const tooltipVisible = ref(false);\n const enableFormat = computed(() => {\n return formatTooltip.value instanceof Function;\n });\n const formatValue = computed(() => {\n return enableFormat.value && formatTooltip.value(props.modelValue) || props.modelValue;\n });\n const displayTooltip = debounce(() => {\n showTooltip.value && (tooltipVisible.value = true);\n }, 50);\n const hideTooltip = debounce(() => {\n showTooltip.value && (tooltipVisible.value = false);\n }, 50);\n return {\n tooltip,\n tooltipVisible,\n formatValue,\n displayTooltip,\n hideTooltip\n };\n};\nconst useSliderButton = (props, initData, emit) => {\n const {\n disabled,\n min,\n max,\n step,\n showTooltip,\n precision,\n sliderSize,\n formatTooltip,\n emitChange,\n resetSize,\n updateDragging\n } = inject(sliderContextKey);\n const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } = useTooltip(props, formatTooltip, showTooltip);\n const button = ref();\n const currentPosition = computed(() => {\n return `${(props.modelValue - min.value) / (max.value - min.value) * 100}%`;\n });\n const wrapperStyle = computed(() => {\n return props.vertical ? { bottom: currentPosition.value } : { left: currentPosition.value };\n });\n const handleMouseEnter = () => {\n initData.hovering = true;\n displayTooltip();\n };\n const handleMouseLeave = () => {\n initData.hovering = false;\n if (!initData.dragging) {\n hideTooltip();\n }\n };\n const onButtonDown = (event) => {\n if (disabled.value)\n return;\n event.preventDefault();\n onDragStart(event);\n window.addEventListener(\"mousemove\", onDragging);\n window.addEventListener(\"touchmove\", onDragging);\n window.addEventListener(\"mouseup\", onDragEnd);\n window.addEventListener(\"touchend\", onDragEnd);\n window.addEventListener(\"contextmenu\", onDragEnd);\n button.value.focus();\n };\n const incrementPosition = (amount) => {\n if (disabled.value)\n return;\n initData.newPosition = Number.parseFloat(currentPosition.value) + amount / (max.value - min.value) * 100;\n setPosition(initData.newPosition);\n emitChange();\n };\n const onLeftKeyDown = () => {\n incrementPosition(-step.value);\n };\n const onRightKeyDown = () => {\n incrementPosition(step.value);\n };\n const onPageDownKeyDown = () => {\n incrementPosition(-step.value * 4);\n };\n const onPageUpKeyDown = () => {\n incrementPosition(step.value * 4);\n };\n const onHomeKeyDown = () => {\n if (disabled.value)\n return;\n setPosition(0);\n emitChange();\n };\n const onEndKeyDown = () => {\n if (disabled.value)\n return;\n setPosition(100);\n emitChange();\n };\n const onKeyDown = (event) => {\n let isPreventDefault = true;\n if ([left, down].includes(event.key)) {\n onLeftKeyDown();\n } else if ([right, up].includes(event.key)) {\n onRightKeyDown();\n } else if (event.key === home) {\n onHomeKeyDown();\n } else if (event.key === end) {\n onEndKeyDown();\n } else if (event.key === pageDown) {\n onPageDownKeyDown();\n } else if (event.key === pageUp) {\n onPageUpKeyDown();\n } else {\n isPreventDefault = false;\n }\n isPreventDefault && event.preventDefault();\n };\n const getClientXY = (event) => {\n let clientX;\n let clientY;\n if (event.type.startsWith(\"touch\")) {\n clientY = event.touches[0].clientY;\n clientX = event.touches[0].clientX;\n } else {\n clientY = event.clientY;\n clientX = event.clientX;\n }\n return {\n clientX,\n clientY\n };\n };\n const onDragStart = (event) => {\n initData.dragging = true;\n initData.isClick = true;\n const { clientX, clientY } = getClientXY(event);\n if (props.vertical) {\n initData.startY = clientY;\n } else {\n initData.startX = clientX;\n }\n initData.startPosition = Number.parseFloat(currentPosition.value);\n initData.newPosition = initData.startPosition;\n };\n const onDragging = (event) => {\n if (initData.dragging) {\n initData.isClick = false;\n displayTooltip();\n resetSize();\n let diff;\n const { clientX, clientY } = getClientXY(event);\n if (props.vertical) {\n initData.currentY = clientY;\n diff = (initData.startY - initData.currentY) / sliderSize.value * 100;\n } else {\n initData.currentX = clientX;\n diff = (initData.currentX - initData.startX) / sliderSize.value * 100;\n }\n initData.newPosition = initData.startPosition + diff;\n setPosition(initData.newPosition);\n }\n };\n const onDragEnd = () => {\n if (initData.dragging) {\n setTimeout(() => {\n initData.dragging = false;\n if (!initData.hovering) {\n hideTooltip();\n }\n if (!initData.isClick) {\n setPosition(initData.newPosition);\n }\n emitChange();\n }, 0);\n window.removeEventListener(\"mousemove\", onDragging);\n window.removeEventListener(\"touchmove\", onDragging);\n window.removeEventListener(\"mouseup\", onDragEnd);\n window.removeEventListener(\"touchend\", onDragEnd);\n window.removeEventListener(\"contextmenu\", onDragEnd);\n }\n };\n const setPosition = async (newPosition) => {\n if (newPosition === null || Number.isNaN(+newPosition))\n return;\n if (newPosition < 0) {\n newPosition = 0;\n } else if (newPosition > 100) {\n newPosition = 100;\n }\n const lengthPerStep = 100 / ((max.value - min.value) / step.value);\n const steps = Math.round(newPosition / lengthPerStep);\n let value = steps * lengthPerStep * (max.value - min.value) * 0.01 + min.value;\n value = Number.parseFloat(value.toFixed(precision.value));\n if (value !== props.modelValue) {\n emit(UPDATE_MODEL_EVENT, value);\n }\n if (!initData.dragging && props.modelValue !== initData.oldValue) {\n initData.oldValue = props.modelValue;\n }\n await nextTick();\n initData.dragging && displayTooltip();\n tooltip.value.updatePopper();\n };\n watch(() => initData.dragging, (val) => {\n updateDragging(val);\n });\n return {\n disabled,\n button,\n tooltip,\n tooltipVisible,\n showTooltip,\n wrapperStyle,\n formatValue,\n handleMouseEnter,\n handleMouseLeave,\n onButtonDown,\n onKeyDown,\n setPosition\n };\n};\n\nexport { useSliderButton };\n//# sourceMappingURL=use-slider-button.mjs.map\n","import { defineComponent, reactive, toRefs, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, createVNode, withCtx, createElementVNode, toDisplayString } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../hooks/index.mjs';\nimport './composables/index.mjs';\nimport { sliderButtonProps, sliderButtonEmits } from './button.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useSliderButton } from './composables/use-slider-button.mjs';\n\nconst _hoisted_1 = [\"tabindex\"];\nconst __default__ = defineComponent({\n name: \"ElSliderButton\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: sliderButtonProps,\n emits: sliderButtonEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const ns = useNamespace(\"slider\");\n const initData = reactive({\n hovering: false,\n dragging: false,\n isClick: false,\n startX: 0,\n currentX: 0,\n startY: 0,\n currentY: 0,\n startPosition: 0,\n newPosition: 0,\n oldValue: props.modelValue\n });\n const {\n disabled,\n button,\n tooltip,\n showTooltip,\n tooltipVisible,\n wrapperStyle,\n formatValue,\n handleMouseEnter,\n handleMouseLeave,\n onButtonDown,\n onKeyDown,\n setPosition\n } = useSliderButton(props, initData, emit);\n const { hovering, dragging } = toRefs(initData);\n expose({\n onButtonDown,\n onKeyDown,\n setPosition,\n hovering,\n dragging\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"button\",\n ref: button,\n class: normalizeClass([unref(ns).e(\"button-wrapper\"), { hover: unref(hovering), dragging: unref(dragging) }]),\n style: normalizeStyle(unref(wrapperStyle)),\n tabindex: unref(disabled) ? -1 : 0,\n onMouseenter: _cache[0] || (_cache[0] = (...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args)),\n onMousedown: _cache[2] || (_cache[2] = (...args) => unref(onButtonDown) && unref(onButtonDown)(...args)),\n onTouchstart: _cache[3] || (_cache[3] = (...args) => unref(onButtonDown) && unref(onButtonDown)(...args)),\n onFocus: _cache[4] || (_cache[4] = (...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args)),\n onBlur: _cache[5] || (_cache[5] = (...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args)),\n onKeydown: _cache[6] || (_cache[6] = (...args) => unref(onKeyDown) && unref(onKeyDown)(...args))\n }, [\n createVNode(unref(ElTooltip), {\n ref_key: \"tooltip\",\n ref: tooltip,\n visible: unref(tooltipVisible),\n placement: _ctx.placement,\n \"fallback-placements\": [\"top\", \"bottom\", \"right\", \"left\"],\n \"stop-popper-mouse-event\": false,\n \"popper-class\": _ctx.tooltipClass,\n disabled: !unref(showTooltip),\n persistent: \"\"\n }, {\n content: withCtx(() => [\n createElementVNode(\"span\", null, toDisplayString(unref(formatValue)), 1)\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).e(\"button\"), { hover: unref(hovering), dragging: unref(dragging) }])\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"visible\", \"placement\", \"popper-class\", \"disabled\"])\n ], 46, _hoisted_1);\n };\n }\n});\nvar SliderButton = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"button.vue\"]]);\n\nexport { SliderButton as default };\n//# sourceMappingURL=button2.mjs.map\n","import { defineComponent, computed, h } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isString } from '@vue/shared';\n\nconst sliderMarkerProps = buildProps({\n mark: {\n type: definePropType([String, Object]),\n default: void 0\n }\n});\nvar SliderMarker = defineComponent({\n name: \"ElSliderMarker\",\n props: sliderMarkerProps,\n setup(props) {\n const ns = useNamespace(\"slider\");\n const label = computed(() => {\n return isString(props.mark) ? props.mark : props.mark.label;\n });\n const style = computed(() => isString(props.mark) ? void 0 : props.mark.style);\n return () => h(\"div\", {\n class: ns.e(\"marks-text\"),\n style: style.value\n }, label.value);\n }\n});\n\nexport { SliderMarker as default, sliderMarkerProps };\n//# sourceMappingURL=marker.mjs.map\n","import { shallowRef, ref, computed, nextTick } from 'vue';\nimport '../../../../constants/index.mjs';\nimport '../../../form/index.mjs';\nimport { useFormItem } from '../../../form/src/hooks/use-form-item.mjs';\nimport { UPDATE_MODEL_EVENT, INPUT_EVENT, CHANGE_EVENT } from '../../../../constants/event.mjs';\n\nconst useSlide = (props, initData, emit) => {\n const { form: elForm, formItem: elFormItem } = useFormItem();\n const slider = shallowRef();\n const firstButton = ref();\n const secondButton = ref();\n const buttonRefs = {\n firstButton,\n secondButton\n };\n const sliderDisabled = computed(() => {\n return props.disabled || (elForm == null ? void 0 : elForm.disabled) || false;\n });\n const minValue = computed(() => {\n return Math.min(initData.firstValue, initData.secondValue);\n });\n const maxValue = computed(() => {\n return Math.max(initData.firstValue, initData.secondValue);\n });\n const barSize = computed(() => {\n return props.range ? `${100 * (maxValue.value - minValue.value) / (props.max - props.min)}%` : `${100 * (initData.firstValue - props.min) / (props.max - props.min)}%`;\n });\n const barStart = computed(() => {\n return props.range ? `${100 * (minValue.value - props.min) / (props.max - props.min)}%` : \"0%\";\n });\n const runwayStyle = computed(() => {\n return props.vertical ? { height: props.height } : {};\n });\n const barStyle = computed(() => {\n return props.vertical ? {\n height: barSize.value,\n bottom: barStart.value\n } : {\n width: barSize.value,\n left: barStart.value\n };\n });\n const resetSize = () => {\n if (slider.value) {\n initData.sliderSize = slider.value[`client${props.vertical ? \"Height\" : \"Width\"}`];\n }\n };\n const getButtonRefByPercent = (percent) => {\n const targetValue = props.min + percent * (props.max - props.min) / 100;\n if (!props.range) {\n return firstButton;\n }\n let buttonRefName;\n if (Math.abs(minValue.value - targetValue) < Math.abs(maxValue.value - targetValue)) {\n buttonRefName = initData.firstValue < initData.secondValue ? \"firstButton\" : \"secondButton\";\n } else {\n buttonRefName = initData.firstValue > initData.secondValue ? \"firstButton\" : \"secondButton\";\n }\n return buttonRefs[buttonRefName];\n };\n const setPosition = (percent) => {\n const buttonRef = getButtonRefByPercent(percent);\n buttonRef.value.setPosition(percent);\n return buttonRef;\n };\n const setFirstValue = (firstValue) => {\n initData.firstValue = firstValue;\n _emit(props.range ? [minValue.value, maxValue.value] : firstValue);\n };\n const setSecondValue = (secondValue) => {\n initData.secondValue = secondValue;\n if (props.range) {\n _emit([minValue.value, maxValue.value]);\n }\n };\n const _emit = (val) => {\n emit(UPDATE_MODEL_EVENT, val);\n emit(INPUT_EVENT, val);\n };\n const emitChange = async () => {\n await nextTick();\n emit(CHANGE_EVENT, props.range ? [minValue.value, maxValue.value] : props.modelValue);\n };\n const handleSliderPointerEvent = (event) => {\n var _a, _b, _c, _d, _e, _f;\n if (sliderDisabled.value || initData.dragging)\n return;\n resetSize();\n let newPercent = 0;\n if (props.vertical) {\n const clientY = (_c = (_b = (_a = event.touches) == null ? void 0 : _a.item(0)) == null ? void 0 : _b.clientY) != null ? _c : event.clientY;\n const sliderOffsetBottom = slider.value.getBoundingClientRect().bottom;\n newPercent = (sliderOffsetBottom - clientY) / initData.sliderSize * 100;\n } else {\n const clientX = (_f = (_e = (_d = event.touches) == null ? void 0 : _d.item(0)) == null ? void 0 : _e.clientX) != null ? _f : event.clientX;\n const sliderOffsetLeft = slider.value.getBoundingClientRect().left;\n newPercent = (clientX - sliderOffsetLeft) / initData.sliderSize * 100;\n }\n if (newPercent < 0 || newPercent > 100)\n return;\n return setPosition(newPercent);\n };\n const onSliderWrapperPrevent = (event) => {\n var _a, _b;\n if (((_a = buttonRefs[\"firstButton\"].value) == null ? void 0 : _a.dragging) || ((_b = buttonRefs[\"secondButton\"].value) == null ? void 0 : _b.dragging)) {\n event.preventDefault();\n }\n };\n const onSliderDown = async (event) => {\n const buttonRef = handleSliderPointerEvent(event);\n if (buttonRef) {\n await nextTick();\n buttonRef.value.onButtonDown(event);\n }\n };\n const onSliderClick = (event) => {\n const buttonRef = handleSliderPointerEvent(event);\n if (buttonRef) {\n emitChange();\n }\n };\n return {\n elFormItem,\n slider,\n firstButton,\n secondButton,\n sliderDisabled,\n minValue,\n maxValue,\n runwayStyle,\n barStyle,\n resetSize,\n setPosition,\n emitChange,\n onSliderWrapperPrevent,\n onSliderClick,\n onSliderDown,\n setFirstValue,\n setSecondValue\n };\n};\n\nexport { useSlide };\n//# sourceMappingURL=use-slide.mjs.map\n","import { computed } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\n\nconst useStops = (props, initData, minValue, maxValue) => {\n const stops = computed(() => {\n if (!props.showStops || props.min > props.max)\n return [];\n if (props.step === 0) {\n debugWarn(\"ElSlider\", \"step should not be 0.\");\n return [];\n }\n const stopCount = (props.max - props.min) / props.step;\n const stepWidth = 100 * props.step / (props.max - props.min);\n const result = Array.from({ length: stopCount - 1 }).map((_, index) => (index + 1) * stepWidth);\n if (props.range) {\n return result.filter((step) => {\n return step < 100 * (minValue.value - props.min) / (props.max - props.min) || step > 100 * (maxValue.value - props.min) / (props.max - props.min);\n });\n } else {\n return result.filter((step) => step > 100 * (initData.firstValue - props.min) / (props.max - props.min));\n }\n });\n const getStopStyle = (position) => {\n return props.vertical ? { bottom: `${position}%` } : { left: `${position}%` };\n };\n return {\n stops,\n getStopStyle\n };\n};\n\nexport { useStops };\n//# sourceMappingURL=use-stops.mjs.map\n","import { computed } from 'vue';\n\nconst useMarks = (props) => {\n return computed(() => {\n if (!props.marks) {\n return [];\n }\n const marksKeys = Object.keys(props.marks);\n return marksKeys.map(Number.parseFloat).sort((a, b) => a - b).filter((point) => point <= props.max && point >= props.min).map((point) => ({\n point,\n position: (point - props.min) * 100 / (props.max - props.min),\n mark: props.marks[point]\n }));\n });\n};\n\nexport { useMarks };\n//# sourceMappingURL=use-marks.mjs.map\n","import { watch } from 'vue';\nimport '../../../../constants/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { UPDATE_MODEL_EVENT, INPUT_EVENT } from '../../../../constants/event.mjs';\nimport { throwError, debugWarn } from '../../../../utils/error.mjs';\n\nconst useWatch = (props, initData, minValue, maxValue, emit, elFormItem) => {\n const _emit = (val) => {\n emit(UPDATE_MODEL_EVENT, val);\n emit(INPUT_EVENT, val);\n };\n const valueChanged = () => {\n if (props.range) {\n return ![minValue.value, maxValue.value].every((item, index) => item === initData.oldValue[index]);\n } else {\n return props.modelValue !== initData.oldValue;\n }\n };\n const setValues = () => {\n var _a, _b;\n if (props.min > props.max) {\n throwError(\"Slider\", \"min should not be greater than max.\");\n }\n const val = props.modelValue;\n if (props.range && Array.isArray(val)) {\n if (val[1] < props.min) {\n _emit([props.min, props.min]);\n } else if (val[0] > props.max) {\n _emit([props.max, props.max]);\n } else if (val[0] < props.min) {\n _emit([props.min, val[1]]);\n } else if (val[1] > props.max) {\n _emit([val[0], props.max]);\n } else {\n initData.firstValue = val[0];\n initData.secondValue = val[1];\n if (valueChanged()) {\n if (props.validateEvent) {\n (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, \"change\").catch((err) => debugWarn(err));\n }\n initData.oldValue = val.slice();\n }\n }\n } else if (!props.range && typeof val === \"number\" && !Number.isNaN(val)) {\n if (val < props.min) {\n _emit(props.min);\n } else if (val > props.max) {\n _emit(props.max);\n } else {\n initData.firstValue = val;\n if (valueChanged()) {\n if (props.validateEvent) {\n (_b = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _b.call(elFormItem, \"change\").catch((err) => debugWarn(err));\n }\n initData.oldValue = val;\n }\n }\n }\n };\n setValues();\n watch(() => initData.dragging, (val) => {\n if (!val) {\n setValues();\n }\n });\n watch(() => props.modelValue, (val, oldVal) => {\n if (initData.dragging || Array.isArray(val) && Array.isArray(oldVal) && val.every((item, index) => item === oldVal[index]) && initData.firstValue === val[0] && initData.secondValue === val[1]) {\n return;\n }\n setValues();\n }, {\n deep: true\n });\n watch(() => [props.min, props.max], () => {\n setValues();\n });\n};\n\nexport { useWatch };\n//# sourceMappingURL=use-watch.mjs.map\n","import { ref, onMounted, nextTick } from 'vue';\nimport { useEventListener } from '@vueuse/core';\n\nconst useLifecycle = (props, initData, resetSize) => {\n const sliderWrapper = ref();\n onMounted(async () => {\n if (props.range) {\n if (Array.isArray(props.modelValue)) {\n initData.firstValue = Math.max(props.min, props.modelValue[0]);\n initData.secondValue = Math.min(props.max, props.modelValue[1]);\n } else {\n initData.firstValue = props.min;\n initData.secondValue = props.max;\n }\n initData.oldValue = [initData.firstValue, initData.secondValue];\n } else {\n if (typeof props.modelValue !== \"number\" || Number.isNaN(props.modelValue)) {\n initData.firstValue = props.min;\n } else {\n initData.firstValue = Math.min(props.max, Math.max(props.min, props.modelValue));\n }\n initData.oldValue = initData.firstValue;\n }\n useEventListener(window, \"resize\", resetSize);\n await nextTick();\n resetSize();\n });\n return {\n sliderWrapper\n };\n};\n\nexport { useLifecycle };\n//# sourceMappingURL=use-lifecycle.mjs.map\n","import { defineComponent, reactive, computed, toRefs, provide, openBlock, createElementBlock, unref, normalizeClass, createElementVNode, normalizeStyle, createVNode, createBlock, createCommentVNode, Fragment, renderList } from 'vue';\nimport { ElInputNumber } from '../../input-number/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { sliderContextKey } from './constants.mjs';\nimport { sliderProps, sliderEmits } from './slider.mjs';\nimport SliderButton from './button2.mjs';\nimport SliderMarker from './marker.mjs';\nimport './composables/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useSlide } from './composables/use-slide.mjs';\nimport { useStops } from './composables/use-stops.mjs';\nimport { useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useMarks } from './composables/use-marks.mjs';\nimport { useWatch } from './composables/use-watch.mjs';\nimport { useLifecycle } from './composables/use-lifecycle.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"id\", \"role\", \"aria-label\", \"aria-labelledby\"];\nconst _hoisted_2 = { key: 1 };\nconst __default__ = defineComponent({\n name: \"ElSlider\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: sliderProps,\n emits: sliderEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const ns = useNamespace(\"slider\");\n const { t } = useLocale();\n const initData = reactive({\n firstValue: 0,\n secondValue: 0,\n oldValue: 0,\n dragging: false,\n sliderSize: 1\n });\n const {\n elFormItem,\n slider,\n firstButton,\n secondButton,\n sliderDisabled,\n minValue,\n maxValue,\n runwayStyle,\n barStyle,\n resetSize,\n emitChange,\n onSliderWrapperPrevent,\n onSliderClick,\n onSliderDown,\n setFirstValue,\n setSecondValue\n } = useSlide(props, initData, emit);\n const { stops, getStopStyle } = useStops(props, initData, minValue, maxValue);\n const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: elFormItem\n });\n const sliderWrapperSize = useFormSize();\n const sliderInputSize = computed(() => props.inputSize || sliderWrapperSize.value);\n const groupLabel = computed(() => {\n return props.label || props.ariaLabel || t(\"el.slider.defaultLabel\", {\n min: props.min,\n max: props.max\n });\n });\n const firstButtonLabel = computed(() => {\n if (props.range) {\n return props.rangeStartLabel || t(\"el.slider.defaultRangeStartLabel\");\n } else {\n return groupLabel.value;\n }\n });\n const firstValueText = computed(() => {\n return props.formatValueText ? props.formatValueText(firstValue.value) : `${firstValue.value}`;\n });\n const secondButtonLabel = computed(() => {\n return props.rangeEndLabel || t(\"el.slider.defaultRangeEndLabel\");\n });\n const secondValueText = computed(() => {\n return props.formatValueText ? props.formatValueText(secondValue.value) : `${secondValue.value}`;\n });\n const sliderKls = computed(() => [\n ns.b(),\n ns.m(sliderWrapperSize.value),\n ns.is(\"vertical\", props.vertical),\n { [ns.m(\"with-input\")]: props.showInput }\n ]);\n const markList = useMarks(props);\n useWatch(props, initData, minValue, maxValue, emit, elFormItem);\n const precision = computed(() => {\n const precisions = [props.min, props.max, props.step].map((item) => {\n const decimal = `${item}`.split(\".\")[1];\n return decimal ? decimal.length : 0;\n });\n return Math.max.apply(null, precisions);\n });\n const { sliderWrapper } = useLifecycle(props, initData, resetSize);\n const { firstValue, secondValue, sliderSize } = toRefs(initData);\n const updateDragging = (val) => {\n initData.dragging = val;\n };\n provide(sliderContextKey, {\n ...toRefs(props),\n sliderSize,\n disabled: sliderDisabled,\n precision,\n emitChange,\n resetSize,\n updateDragging\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-slider\",\n ref: \"https://element-plus.org/en-US/component/slider.html\"\n }, computed(() => !!props.label));\n expose({\n onSliderClick\n });\n return (_ctx, _cache) => {\n var _a, _b;\n return openBlock(), createElementBlock(\"div\", {\n id: _ctx.range ? unref(inputId) : void 0,\n ref_key: \"sliderWrapper\",\n ref: sliderWrapper,\n class: normalizeClass(unref(sliderKls)),\n role: _ctx.range ? \"group\" : void 0,\n \"aria-label\": _ctx.range && !unref(isLabeledByFormItem) ? unref(groupLabel) : void 0,\n \"aria-labelledby\": _ctx.range && unref(isLabeledByFormItem) ? (_a = unref(elFormItem)) == null ? void 0 : _a.labelId : void 0,\n onTouchstart: _cache[2] || (_cache[2] = (...args) => unref(onSliderWrapperPrevent) && unref(onSliderWrapperPrevent)(...args)),\n onTouchmove: _cache[3] || (_cache[3] = (...args) => unref(onSliderWrapperPrevent) && unref(onSliderWrapperPrevent)(...args))\n }, [\n createElementVNode(\"div\", {\n ref_key: \"slider\",\n ref: slider,\n class: normalizeClass([\n unref(ns).e(\"runway\"),\n { \"show-input\": _ctx.showInput && !_ctx.range },\n unref(ns).is(\"disabled\", unref(sliderDisabled))\n ]),\n style: normalizeStyle(unref(runwayStyle)),\n onMousedown: _cache[0] || (_cache[0] = (...args) => unref(onSliderDown) && unref(onSliderDown)(...args)),\n onTouchstart: _cache[1] || (_cache[1] = (...args) => unref(onSliderDown) && unref(onSliderDown)(...args))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"bar\")),\n style: normalizeStyle(unref(barStyle))\n }, null, 6),\n createVNode(SliderButton, {\n id: !_ctx.range ? unref(inputId) : void 0,\n ref_key: \"firstButton\",\n ref: firstButton,\n \"model-value\": unref(firstValue),\n vertical: _ctx.vertical,\n \"tooltip-class\": _ctx.tooltipClass,\n placement: _ctx.placement,\n role: \"slider\",\n \"aria-label\": _ctx.range || !unref(isLabeledByFormItem) ? unref(firstButtonLabel) : void 0,\n \"aria-labelledby\": !_ctx.range && unref(isLabeledByFormItem) ? (_b = unref(elFormItem)) == null ? void 0 : _b.labelId : void 0,\n \"aria-valuemin\": _ctx.min,\n \"aria-valuemax\": _ctx.range ? unref(secondValue) : _ctx.max,\n \"aria-valuenow\": unref(firstValue),\n \"aria-valuetext\": unref(firstValueText),\n \"aria-orientation\": _ctx.vertical ? \"vertical\" : \"horizontal\",\n \"aria-disabled\": unref(sliderDisabled),\n \"onUpdate:modelValue\": unref(setFirstValue)\n }, null, 8, [\"id\", \"model-value\", \"vertical\", \"tooltip-class\", \"placement\", \"aria-label\", \"aria-labelledby\", \"aria-valuemin\", \"aria-valuemax\", \"aria-valuenow\", \"aria-valuetext\", \"aria-orientation\", \"aria-disabled\", \"onUpdate:modelValue\"]),\n _ctx.range ? (openBlock(), createBlock(SliderButton, {\n key: 0,\n ref_key: \"secondButton\",\n ref: secondButton,\n \"model-value\": unref(secondValue),\n vertical: _ctx.vertical,\n \"tooltip-class\": _ctx.tooltipClass,\n placement: _ctx.placement,\n role: \"slider\",\n \"aria-label\": unref(secondButtonLabel),\n \"aria-valuemin\": unref(firstValue),\n \"aria-valuemax\": _ctx.max,\n \"aria-valuenow\": unref(secondValue),\n \"aria-valuetext\": unref(secondValueText),\n \"aria-orientation\": _ctx.vertical ? \"vertical\" : \"horizontal\",\n \"aria-disabled\": unref(sliderDisabled),\n \"onUpdate:modelValue\": unref(setSecondValue)\n }, null, 8, [\"model-value\", \"vertical\", \"tooltip-class\", \"placement\", \"aria-label\", \"aria-valuemin\", \"aria-valuemax\", \"aria-valuenow\", \"aria-valuetext\", \"aria-orientation\", \"aria-disabled\", \"onUpdate:modelValue\"])) : createCommentVNode(\"v-if\", true),\n _ctx.showStops ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(stops), (item, key) => {\n return openBlock(), createElementBlock(\"div\", {\n key,\n class: normalizeClass(unref(ns).e(\"stop\")),\n style: normalizeStyle(unref(getStopStyle)(item))\n }, null, 6);\n }), 128))\n ])) : createCommentVNode(\"v-if\", true),\n unref(markList).length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n createElementVNode(\"div\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(markList), (item, key) => {\n return openBlock(), createElementBlock(\"div\", {\n key,\n style: normalizeStyle(unref(getStopStyle)(item.position)),\n class: normalizeClass([unref(ns).e(\"stop\"), unref(ns).e(\"marks-stop\")])\n }, null, 6);\n }), 128))\n ]),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"marks\"))\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(markList), (item, key) => {\n return openBlock(), createBlock(unref(SliderMarker), {\n key,\n mark: item.mark,\n style: normalizeStyle(unref(getStopStyle)(item.position))\n }, null, 8, [\"mark\", \"style\"]);\n }), 128))\n ], 2)\n ], 64)) : createCommentVNode(\"v-if\", true)\n ], 38),\n _ctx.showInput && !_ctx.range ? (openBlock(), createBlock(unref(ElInputNumber), {\n key: 0,\n ref: \"input\",\n \"model-value\": unref(firstValue),\n class: normalizeClass(unref(ns).e(\"input\")),\n step: _ctx.step,\n disabled: unref(sliderDisabled),\n controls: _ctx.showInputControls,\n min: _ctx.min,\n max: _ctx.max,\n debounce: _ctx.debounce,\n size: unref(sliderInputSize),\n \"onUpdate:modelValue\": unref(setFirstValue),\n onChange: unref(emitChange)\n }, null, 8, [\"model-value\", \"class\", \"step\", \"disabled\", \"controls\", \"min\", \"max\", \"debounce\", \"size\", \"onUpdate:modelValue\", \"onChange\"])) : createCommentVNode(\"v-if\", true)\n ], 42, _hoisted_1);\n };\n }\n});\nvar Slider = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"slider.vue\"]]);\n\nexport { Slider as default };\n//# sourceMappingURL=slider2.mjs.map\n","import '../../utils/index.mjs';\nimport Slider from './src/slider2.mjs';\nexport { sliderEmits, sliderProps } from './src/slider.mjs';\nexport { sliderContextKey } from './src/constants.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElSlider = withInstall(Slider);\n\nexport { ElSlider, ElSlider as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, computed, h, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst spaceItemProps = buildProps({\n prefixCls: {\n type: String\n }\n});\nconst SpaceItem = defineComponent({\n name: \"ElSpaceItem\",\n props: spaceItemProps,\n setup(props, { slots }) {\n const ns = useNamespace(\"space\");\n const classes = computed(() => `${props.prefixCls || ns.b()}__item`);\n return () => h(\"div\", { class: classes.value }, renderSlot(slots, \"default\"));\n }\n});\n\nexport { SpaceItem as default, spaceItemProps };\n//# sourceMappingURL=item.mjs.map\n","import { computed, ref, watchEffect } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isArray } from '@vue/shared';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst SIZE_MAP = {\n small: 8,\n default: 12,\n large: 16\n};\nfunction useSpace(props) {\n const ns = useNamespace(\"space\");\n const classes = computed(() => [ns.b(), ns.m(props.direction), props.class]);\n const horizontalSize = ref(0);\n const verticalSize = ref(0);\n const containerStyle = computed(() => {\n const wrapKls = props.wrap || props.fill ? { flexWrap: \"wrap\" } : {};\n const alignment = {\n alignItems: props.alignment\n };\n const gap = {\n rowGap: `${verticalSize.value}px`,\n columnGap: `${horizontalSize.value}px`\n };\n return [wrapKls, alignment, gap, props.style];\n });\n const itemStyle = computed(() => {\n return props.fill ? { flexGrow: 1, minWidth: `${props.fillRatio}%` } : {};\n });\n watchEffect(() => {\n const { size = \"small\", wrap, direction: dir, fill } = props;\n if (isArray(size)) {\n const [h = 0, v = 0] = size;\n horizontalSize.value = h;\n verticalSize.value = v;\n } else {\n let val;\n if (isNumber(size)) {\n val = size;\n } else {\n val = SIZE_MAP[size || \"small\"] || SIZE_MAP.small;\n }\n if ((wrap || fill) && dir === \"horizontal\") {\n horizontalSize.value = verticalSize.value = val;\n } else {\n if (dir === \"horizontal\") {\n horizontalSize.value = val;\n verticalSize.value = 0;\n } else {\n verticalSize.value = val;\n horizontalSize.value = 0;\n }\n }\n }\n });\n return {\n classes,\n containerStyle,\n itemStyle\n };\n}\n\nexport { useSpace };\n//# sourceMappingURL=use-space.mjs.map\n","import { isVNode, defineComponent, createVNode, renderSlot, createTextVNode } from 'vue';\nimport { isString, isArray } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport SpaceItem from './item.mjs';\nimport { useSpace } from './use-space.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nimport { componentSizes } from '../../../constants/size.mjs';\nimport { isFragment, PatchFlags, isValidElementNode } from '../../../utils/vue/vnode.mjs';\n\nconst spaceProps = buildProps({\n direction: {\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: \"horizontal\"\n },\n class: {\n type: definePropType([\n String,\n Object,\n Array\n ]),\n default: \"\"\n },\n style: {\n type: definePropType([String, Array, Object]),\n default: \"\"\n },\n alignment: {\n type: definePropType(String),\n default: \"center\"\n },\n prefixCls: {\n type: String\n },\n spacer: {\n type: definePropType([Object, String, Number, Array]),\n default: null,\n validator: (val) => isVNode(val) || isNumber(val) || isString(val)\n },\n wrap: Boolean,\n fill: Boolean,\n fillRatio: {\n type: Number,\n default: 100\n },\n size: {\n type: [String, Array, Number],\n values: componentSizes,\n validator: (val) => {\n return isNumber(val) || isArray(val) && val.length === 2 && val.every(isNumber);\n }\n }\n});\nconst Space = defineComponent({\n name: \"ElSpace\",\n props: spaceProps,\n setup(props, { slots }) {\n const { classes, containerStyle, itemStyle } = useSpace(props);\n function extractChildren(children, parentKey = \"\", extractedChildren = []) {\n const { prefixCls } = props;\n children.forEach((child, loopKey) => {\n if (isFragment(child)) {\n if (isArray(child.children)) {\n child.children.forEach((nested, key) => {\n if (isFragment(nested) && isArray(nested.children)) {\n extractChildren(nested.children, `${parentKey + key}-`, extractedChildren);\n } else {\n extractedChildren.push(createVNode(SpaceItem, {\n style: itemStyle.value,\n prefixCls,\n key: `nested-${parentKey + key}`\n }, {\n default: () => [nested]\n }, PatchFlags.PROPS | PatchFlags.STYLE, [\"style\", \"prefixCls\"]));\n }\n });\n }\n } else if (isValidElementNode(child)) {\n extractedChildren.push(createVNode(SpaceItem, {\n style: itemStyle.value,\n prefixCls,\n key: `LoopKey${parentKey + loopKey}`\n }, {\n default: () => [child]\n }, PatchFlags.PROPS | PatchFlags.STYLE, [\"style\", \"prefixCls\"]));\n }\n });\n return extractedChildren;\n }\n return () => {\n var _a;\n const { spacer, direction } = props;\n const children = renderSlot(slots, \"default\", { key: 0 }, () => []);\n if (((_a = children.children) != null ? _a : []).length === 0)\n return null;\n if (isArray(children.children)) {\n let extractedChildren = extractChildren(children.children);\n if (spacer) {\n const len = extractedChildren.length - 1;\n extractedChildren = extractedChildren.reduce((acc, child, idx) => {\n const children2 = [...acc, child];\n if (idx !== len) {\n children2.push(createVNode(\"span\", {\n style: [\n itemStyle.value,\n direction === \"vertical\" ? \"width: 100%\" : null\n ],\n key: idx\n }, [\n isVNode(spacer) ? spacer : createTextVNode(spacer, PatchFlags.TEXT)\n ], PatchFlags.STYLE));\n }\n return children2;\n }, []);\n }\n return createVNode(\"div\", {\n class: classes.value,\n style: containerStyle.value\n }, extractedChildren, PatchFlags.STYLE | PatchFlags.CLASS);\n }\n return children.children;\n };\n }\n});\n\nexport { Space as default, spaceProps };\n//# sourceMappingURL=space.mjs.map\n","import '../../utils/index.mjs';\nimport Space from './src/space.mjs';\nexport { spaceProps } from './src/space.mjs';\nexport { spaceItemProps } from './src/item.mjs';\nexport { useSpace } from './src/use-space.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElSpace = withInstall(Space);\n\nexport { ElSpace, ElSpace as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst statisticProps = buildProps({\n decimalSeparator: {\n type: String,\n default: \".\"\n },\n groupSeparator: {\n type: String,\n default: \",\"\n },\n precision: {\n type: Number,\n default: 0\n },\n formatter: Function,\n value: {\n type: definePropType([Number, Object]),\n default: 0\n },\n prefix: String,\n suffix: String,\n title: String,\n valueStyle: {\n type: definePropType([String, Object, Array])\n }\n});\n\nexport { statisticProps };\n//# sourceMappingURL=statistic.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, normalizeStyle } from 'vue';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { statisticProps } from './statistic.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isFunction } from '@vue/shared';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElStatistic\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: statisticProps,\n setup(__props, { expose }) {\n const props = __props;\n const ns = useNamespace(\"statistic\");\n const displayValue = computed(() => {\n const { value, formatter, precision, decimalSeparator, groupSeparator } = props;\n if (isFunction(formatter))\n return formatter(value);\n if (!isNumber(value))\n return value;\n let [integer, decimal = \"\"] = String(value).split(\".\");\n decimal = decimal.padEnd(precision, \"0\").slice(0, precision > 0 ? precision : 0);\n integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator);\n return [integer, decimal].join(decimal ? decimalSeparator : \"\");\n });\n expose({\n displayValue\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [\n _ctx.$slots.title || _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"head\"))\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"content\"))\n }, [\n _ctx.$slots.prefix || _ctx.prefix ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"prefix\"))\n }, [\n renderSlot(_ctx.$slots, \"prefix\", {}, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.prefix), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"span\", {\n class: normalizeClass(unref(ns).e(\"number\")),\n style: normalizeStyle(_ctx.valueStyle)\n }, toDisplayString(unref(displayValue)), 7),\n _ctx.$slots.suffix || _ctx.suffix ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"suffix\"))\n }, [\n renderSlot(_ctx.$slots, \"suffix\", {}, () => [\n createElementVNode(\"span\", null, toDisplayString(_ctx.suffix), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2);\n };\n }\n});\nvar Statistic = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"statistic.vue\"]]);\n\nexport { Statistic as default };\n//# sourceMappingURL=statistic2.mjs.map\n","import '../../utils/index.mjs';\nimport Statistic from './src/statistic2.mjs';\nexport { statisticProps } from './src/statistic.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElStatistic = withInstall(Statistic);\n\nexport { ElStatistic, ElStatistic as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst countdownProps = buildProps({\n format: {\n type: String,\n default: \"HH:mm:ss\"\n },\n prefix: String,\n suffix: String,\n title: String,\n value: {\n type: definePropType([Number, Object]),\n default: 0\n },\n valueStyle: {\n type: definePropType([String, Object, Array])\n }\n});\nconst countdownEmits = {\n finish: () => true,\n [CHANGE_EVENT]: (value) => isNumber(value)\n};\n\nexport { countdownEmits, countdownProps };\n//# sourceMappingURL=countdown.mjs.map\n","import '../../../utils/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst timeUnits = [\n [\"Y\", 1e3 * 60 * 60 * 24 * 365],\n [\"M\", 1e3 * 60 * 60 * 24 * 30],\n [\"D\", 1e3 * 60 * 60 * 24],\n [\"H\", 1e3 * 60 * 60],\n [\"m\", 1e3 * 60],\n [\"s\", 1e3],\n [\"S\", 1]\n];\nconst getTime = (value) => {\n return isNumber(value) ? new Date(value).getTime() : value.valueOf();\n};\nconst formatTime = (timestamp, format) => {\n let timeLeft = timestamp;\n const escapeRegex = /\\[([^\\]]*)]/g;\n const replacedText = timeUnits.reduce((current, [name, unit]) => {\n const replaceRegex = new RegExp(`${name}+(?![^\\\\[\\\\]]*\\\\])`, \"g\");\n if (replaceRegex.test(current)) {\n const value = Math.floor(timeLeft / unit);\n timeLeft -= value * unit;\n return current.replace(replaceRegex, (match) => String(value).padStart(match.length, \"0\"));\n }\n return current;\n }, format);\n return replacedText.replace(escapeRegex, \"$1\");\n};\n\nexport { formatTime, getTime };\n//# sourceMappingURL=utils.mjs.map\n","import { defineComponent, ref, computed, watch, onBeforeUnmount, openBlock, createBlock, unref, createSlots, renderList, withCtx, renderSlot } from 'vue';\nimport { ElStatistic } from '../../statistic/index.mjs';\nimport '../../../utils/index.mjs';\nimport { countdownProps, countdownEmits } from './countdown.mjs';\nimport { getTime, formatTime } from './utils.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { cAF, rAF } from '../../../utils/raf.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElCountdown\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: countdownProps,\n emits: countdownEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n let timer;\n const rawValue = ref(getTime(props.value) - Date.now());\n const displayValue = computed(() => formatTime(rawValue.value, props.format));\n const formatter = (val) => formatTime(val, props.format);\n const stopTimer = () => {\n if (timer) {\n cAF(timer);\n timer = void 0;\n }\n };\n const startTimer = () => {\n const timestamp = getTime(props.value);\n const frameFunc = () => {\n let diff = timestamp - Date.now();\n emit(\"change\", diff);\n if (diff <= 0) {\n diff = 0;\n stopTimer();\n emit(\"finish\");\n } else {\n timer = rAF(frameFunc);\n }\n rawValue.value = diff;\n };\n timer = rAF(frameFunc);\n };\n watch(() => [props.value, props.format], () => {\n stopTimer();\n startTimer();\n }, {\n immediate: true\n });\n onBeforeUnmount(() => {\n stopTimer();\n });\n expose({\n displayValue\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElStatistic), {\n value: rawValue.value,\n title: _ctx.title,\n prefix: _ctx.prefix,\n suffix: _ctx.suffix,\n \"value-style\": _ctx.valueStyle,\n formatter\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (_, name) => {\n return {\n name,\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, name)\n ])\n };\n })\n ]), 1032, [\"value\", \"title\", \"prefix\", \"suffix\", \"value-style\"]);\n };\n }\n});\nvar Countdown = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"countdown.vue\"]]);\n\nexport { Countdown as default };\n//# sourceMappingURL=countdown2.mjs.map\n","import '../../utils/index.mjs';\nimport Countdown from './src/countdown2.mjs';\nexport { countdownEmits, countdownProps } from './src/countdown.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCountdown = withInstall(Countdown);\n\nexport { ElCountdown, ElCountdown as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../constants/index.mjs';\nimport '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst stepsProps = buildProps({\n space: {\n type: [Number, String],\n default: \"\"\n },\n active: {\n type: Number,\n default: 0\n },\n direction: {\n type: String,\n default: \"horizontal\",\n values: [\"horizontal\", \"vertical\"]\n },\n alignCenter: {\n type: Boolean\n },\n simple: {\n type: Boolean\n },\n finishStatus: {\n type: String,\n values: [\"wait\", \"process\", \"finish\", \"error\", \"success\"],\n default: \"finish\"\n },\n processStatus: {\n type: String,\n values: [\"wait\", \"process\", \"finish\", \"error\", \"success\"],\n default: \"process\"\n }\n});\nconst stepsEmits = {\n [CHANGE_EVENT]: (newVal, oldVal) => [newVal, oldVal].every(isNumber)\n};\n\nexport { stepsEmits, stepsProps };\n//# sourceMappingURL=steps.mjs.map\n","import { defineComponent, getCurrentInstance, watch, provide, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { stepsProps, stepsEmits } from './steps.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useOrderedChildren } from '../../../hooks/use-ordered-children/index.mjs';\nimport { CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElSteps\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: stepsProps,\n emits: stepsEmits,\n setup(__props, { emit }) {\n const props = __props;\n const ns = useNamespace(\"steps\");\n const {\n children: steps,\n addChild: addStep,\n removeChild: removeStep\n } = useOrderedChildren(getCurrentInstance(), \"ElStep\");\n watch(steps, () => {\n steps.value.forEach((instance, index) => {\n instance.setIndex(index);\n });\n });\n provide(\"ElSteps\", { props, steps, addStep, removeStep });\n watch(() => props.active, (newVal, oldVal) => {\n emit(CHANGE_EVENT, newVal, oldVal);\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.simple ? \"simple\" : _ctx.direction)])\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar Steps = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"steps.vue\"]]);\n\nexport { Steps as default };\n//# sourceMappingURL=steps2.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst stepProps = buildProps({\n title: {\n type: String,\n default: \"\"\n },\n icon: {\n type: iconPropType\n },\n description: {\n type: String,\n default: \"\"\n },\n status: {\n type: String,\n values: [\"\", \"wait\", \"process\", \"finish\", \"error\", \"success\"],\n default: \"\"\n }\n});\n\nexport { stepProps };\n//# sourceMappingURL=item.mjs.map\n","import { defineComponent, ref, inject, getCurrentInstance, onMounted, watch, onBeforeUnmount, computed, reactive, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createCommentVNode, createElementVNode, renderSlot, createBlock, withCtx, resolveDynamicComponent, createVNode, toDisplayString, createTextVNode } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { Check, Close } from '@element-plus/icons-vue';\nimport '../../../utils/index.mjs';\nimport { stepProps } from './item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElStep\"\n});\nconst _sfc_main = defineComponent({\n ...__default__,\n props: stepProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"step\");\n const index = ref(-1);\n const lineStyle = ref({});\n const internalStatus = ref(\"\");\n const parent = inject(\"ElSteps\");\n const currentInstance = getCurrentInstance();\n onMounted(() => {\n watch([\n () => parent.props.active,\n () => parent.props.processStatus,\n () => parent.props.finishStatus\n ], ([active]) => {\n updateStatus(active);\n }, { immediate: true });\n });\n onBeforeUnmount(() => {\n parent.removeStep(stepItemState.uid);\n });\n const currentStatus = computed(() => {\n return props.status || internalStatus.value;\n });\n const prevStatus = computed(() => {\n const prevStep = parent.steps.value[index.value - 1];\n return prevStep ? prevStep.currentStatus : \"wait\";\n });\n const isCenter = computed(() => {\n return parent.props.alignCenter;\n });\n const isVertical = computed(() => {\n return parent.props.direction === \"vertical\";\n });\n const isSimple = computed(() => {\n return parent.props.simple;\n });\n const stepsCount = computed(() => {\n return parent.steps.value.length;\n });\n const isLast = computed(() => {\n var _a;\n return ((_a = parent.steps.value[stepsCount.value - 1]) == null ? void 0 : _a.uid) === (currentInstance == null ? void 0 : currentInstance.uid);\n });\n const space = computed(() => {\n return isSimple.value ? \"\" : parent.props.space;\n });\n const containerKls = computed(() => {\n return [\n ns.b(),\n ns.is(isSimple.value ? \"simple\" : parent.props.direction),\n ns.is(\"flex\", isLast.value && !space.value && !isCenter.value),\n ns.is(\"center\", isCenter.value && !isVertical.value && !isSimple.value)\n ];\n });\n const style = computed(() => {\n const style2 = {\n flexBasis: isNumber(space.value) ? `${space.value}px` : space.value ? space.value : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`\n };\n if (isVertical.value)\n return style2;\n if (isLast.value) {\n style2.maxWidth = `${100 / stepsCount.value}%`;\n }\n return style2;\n });\n const setIndex = (val) => {\n index.value = val;\n };\n const calcProgress = (status) => {\n const isWait = status === \"wait\";\n const style2 = {\n transitionDelay: `${isWait ? \"-\" : \"\"}${150 * index.value}ms`\n };\n const step = status === parent.props.processStatus || isWait ? 0 : 100;\n style2.borderWidth = step && !isSimple.value ? \"1px\" : 0;\n style2[parent.props.direction === \"vertical\" ? \"height\" : \"width\"] = `${step}%`;\n lineStyle.value = style2;\n };\n const updateStatus = (activeIndex) => {\n if (activeIndex > index.value) {\n internalStatus.value = parent.props.finishStatus;\n } else if (activeIndex === index.value && prevStatus.value !== \"error\") {\n internalStatus.value = parent.props.processStatus;\n } else {\n internalStatus.value = \"wait\";\n }\n const prevChild = parent.steps.value[index.value - 1];\n if (prevChild)\n prevChild.calcProgress(internalStatus.value);\n };\n const stepItemState = reactive({\n uid: currentInstance.uid,\n currentStatus,\n setIndex,\n calcProgress\n });\n parent.addStep(stepItemState);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(style)),\n class: normalizeClass(unref(containerKls))\n }, [\n createCommentVNode(\" icon & line \"),\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).e(\"head\"), unref(ns).is(unref(currentStatus))])\n }, [\n !unref(isSimple) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"line\"))\n }, [\n createElementVNode(\"i\", {\n class: normalizeClass(unref(ns).e(\"line-inner\")),\n style: normalizeStyle(lineStyle.value)\n }, null, 6)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).e(\"icon\"), unref(ns).is(_ctx.icon || _ctx.$slots.icon ? \"icon\" : \"text\")])\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _ctx.icon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).e(\"icon-inner\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : unref(currentStatus) === \"success\" ? (openBlock(), createBlock(unref(ElIcon), {\n key: 1,\n class: normalizeClass([unref(ns).e(\"icon-inner\"), unref(ns).is(\"status\")])\n }, {\n default: withCtx(() => [\n createVNode(unref(Check))\n ]),\n _: 1\n }, 8, [\"class\"])) : unref(currentStatus) === \"error\" ? (openBlock(), createBlock(unref(ElIcon), {\n key: 2,\n class: normalizeClass([unref(ns).e(\"icon-inner\"), unref(ns).is(\"status\")])\n }, {\n default: withCtx(() => [\n createVNode(unref(Close))\n ]),\n _: 1\n }, 8, [\"class\"])) : !unref(isSimple) ? (openBlock(), createElementBlock(\"div\", {\n key: 3,\n class: normalizeClass(unref(ns).e(\"icon-inner\"))\n }, toDisplayString(index.value + 1), 3)) : createCommentVNode(\"v-if\", true)\n ])\n ], 2)\n ], 2),\n createCommentVNode(\" title & description \"),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"main\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([unref(ns).e(\"title\"), unref(ns).is(unref(currentStatus))])\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ])\n ], 2),\n unref(isSimple) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"arrow\"))\n }, null, 2)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass([unref(ns).e(\"description\"), unref(ns).is(unref(currentStatus))])\n }, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ])\n ], 2))\n ], 2)\n ], 6);\n };\n }\n});\nvar Step = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"item.vue\"]]);\n\nexport { Step as default };\n//# sourceMappingURL=item2.mjs.map\n","import '../../utils/index.mjs';\nimport Steps from './src/steps2.mjs';\nimport Step from './src/item2.mjs';\nexport { stepProps } from './src/item.mjs';\nexport { stepsEmits, stepsProps } from './src/steps.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElSteps = withInstall(Steps, {\n Step\n});\nconst ElStep = withNoopInstall(Step);\n\nexport { ElStep, ElSteps, ElSteps as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isValidComponentSize } from '../../../utils/vue/validator.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT, INPUT_EVENT } from '../../../constants/event.mjs';\nimport { isBoolean, isNumber } from '../../../utils/types.mjs';\nimport { isString } from '@vue/shared';\n\nconst switchProps = buildProps({\n modelValue: {\n type: [Boolean, String, Number],\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n loading: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n validator: isValidComponentSize\n },\n width: {\n type: [String, Number],\n default: \"\"\n },\n inlinePrompt: {\n type: Boolean,\n default: false\n },\n inactiveActionIcon: {\n type: iconPropType\n },\n activeActionIcon: {\n type: iconPropType\n },\n activeIcon: {\n type: iconPropType\n },\n inactiveIcon: {\n type: iconPropType\n },\n activeText: {\n type: String,\n default: \"\"\n },\n inactiveText: {\n type: String,\n default: \"\"\n },\n activeValue: {\n type: [Boolean, String, Number],\n default: true\n },\n inactiveValue: {\n type: [Boolean, String, Number],\n default: false\n },\n name: {\n type: String,\n default: \"\"\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n beforeChange: {\n type: definePropType(Function)\n },\n id: String,\n tabindex: {\n type: [String, Number]\n },\n label: {\n type: String,\n default: void 0\n },\n ...useAriaProps([\"ariaLabel\"])\n});\nconst switchEmits = {\n [UPDATE_MODEL_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),\n [CHANGE_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),\n [INPUT_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val)\n};\n\nexport { switchEmits, switchProps };\n//# sourceMappingURL=switch.mjs.map\n","import { defineComponent, computed, ref, watch, nextTick, onMounted, openBlock, createElementBlock, normalizeClass, unref, withModifiers, createElementVNode, withKeys, createBlock, withCtx, resolveDynamicComponent, createCommentVNode, toDisplayString, normalizeStyle, createVNode, renderSlot } from 'vue';\nimport { isPromise } from '@vue/shared';\nimport '../../../utils/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../form/index.mjs';\nimport { Loading } from '@element-plus/icons-vue';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { switchProps, switchEmits } from './switch.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT, INPUT_EVENT } from '../../../constants/event.mjs';\nimport { debugWarn, throwError } from '../../../utils/error.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\n\nconst _hoisted_1 = [\"onClick\"];\nconst _hoisted_2 = [\"id\", \"aria-checked\", \"aria-disabled\", \"aria-label\", \"name\", \"true-value\", \"false-value\", \"disabled\", \"tabindex\", \"onKeydown\"];\nconst _hoisted_3 = [\"aria-hidden\"];\nconst _hoisted_4 = [\"aria-hidden\"];\nconst _hoisted_5 = [\"aria-hidden\"];\nconst COMPONENT_NAME = \"ElSwitch\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: switchProps,\n emits: switchEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const { formItem } = useFormItem();\n const switchSize = useFormSize();\n const ns = useNamespace(\"switch\");\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem\n });\n const switchDisabled = useFormDisabled(computed(() => props.loading));\n const isControlled = ref(props.modelValue !== false);\n const input = ref();\n const core = ref();\n const switchKls = computed(() => [\n ns.b(),\n ns.m(switchSize.value),\n ns.is(\"disabled\", switchDisabled.value),\n ns.is(\"checked\", checked.value)\n ]);\n const labelLeftKls = computed(() => [\n ns.e(\"label\"),\n ns.em(\"label\", \"left\"),\n ns.is(\"active\", !checked.value)\n ]);\n const labelRightKls = computed(() => [\n ns.e(\"label\"),\n ns.em(\"label\", \"right\"),\n ns.is(\"active\", checked.value)\n ]);\n const coreStyle = computed(() => ({\n width: addUnit(props.width)\n }));\n watch(() => props.modelValue, () => {\n isControlled.value = true;\n });\n const actualValue = computed(() => {\n return isControlled.value ? props.modelValue : false;\n });\n const checked = computed(() => actualValue.value === props.activeValue);\n if (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {\n emit(UPDATE_MODEL_EVENT, props.inactiveValue);\n emit(CHANGE_EVENT, props.inactiveValue);\n emit(INPUT_EVENT, props.inactiveValue);\n }\n watch(checked, (val) => {\n var _a;\n input.value.checked = val;\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"change\").catch((err) => debugWarn(err));\n }\n });\n const handleChange = () => {\n const val = checked.value ? props.inactiveValue : props.activeValue;\n emit(UPDATE_MODEL_EVENT, val);\n emit(CHANGE_EVENT, val);\n emit(INPUT_EVENT, val);\n nextTick(() => {\n input.value.checked = checked.value;\n });\n };\n const switchValue = () => {\n if (switchDisabled.value)\n return;\n const { beforeChange } = props;\n if (!beforeChange) {\n handleChange();\n return;\n }\n const shouldChange = beforeChange();\n const isPromiseOrBool = [\n isPromise(shouldChange),\n isBoolean(shouldChange)\n ].includes(true);\n if (!isPromiseOrBool) {\n throwError(COMPONENT_NAME, \"beforeChange must return type `Promise` or `boolean`\");\n }\n if (isPromise(shouldChange)) {\n shouldChange.then((result) => {\n if (result) {\n handleChange();\n }\n }).catch((e) => {\n debugWarn(COMPONENT_NAME, `some error occurred: ${e}`);\n });\n } else if (shouldChange) {\n handleChange();\n }\n };\n const focus = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);\n };\n onMounted(() => {\n input.value.checked = checked.value;\n });\n useDeprecated({\n from: \"label\",\n replacement: \"aria-label\",\n version: \"2.8.0\",\n scope: \"el-switch\",\n ref: \"https://element-plus.org/en-US/component/switch.html\"\n }, computed(() => !!props.label));\n expose({\n focus,\n checked\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(switchKls)),\n onClick: withModifiers(switchValue, [\"prevent\"])\n }, [\n createElementVNode(\"input\", {\n id: unref(inputId),\n ref_key: \"input\",\n ref: input,\n class: normalizeClass(unref(ns).e(\"input\")),\n type: \"checkbox\",\n role: \"switch\",\n \"aria-checked\": unref(checked),\n \"aria-disabled\": unref(switchDisabled),\n \"aria-label\": _ctx.label || _ctx.ariaLabel,\n name: _ctx.name,\n \"true-value\": _ctx.activeValue,\n \"false-value\": _ctx.inactiveValue,\n disabled: unref(switchDisabled),\n tabindex: _ctx.tabindex,\n onChange: handleChange,\n onKeydown: withKeys(switchValue, [\"enter\"])\n }, null, 42, _hoisted_2),\n !_ctx.inlinePrompt && (_ctx.inactiveIcon || _ctx.inactiveText) ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass(unref(labelLeftKls))\n }, [\n _ctx.inactiveIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.inactiveIcon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true),\n !_ctx.inactiveIcon && _ctx.inactiveText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n \"aria-hidden\": unref(checked)\n }, toDisplayString(_ctx.inactiveText), 9, _hoisted_3)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"span\", {\n ref_key: \"core\",\n ref: core,\n class: normalizeClass(unref(ns).e(\"core\")),\n style: normalizeStyle(unref(coreStyle))\n }, [\n _ctx.inlinePrompt ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"inner\"))\n }, [\n _ctx.activeIcon || _ctx.inactiveIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).is(\"icon\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(checked) ? _ctx.activeIcon : _ctx.inactiveIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : _ctx.activeText || _ctx.inactiveText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass(unref(ns).is(\"text\")),\n \"aria-hidden\": !unref(checked)\n }, toDisplayString(unref(checked) ? _ctx.activeText : _ctx.inactiveText), 11, _hoisted_4)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"action\"))\n }, [\n _ctx.loading ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).is(\"loading\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(Loading))\n ]),\n _: 1\n }, 8, [\"class\"])) : unref(checked) ? renderSlot(_ctx.$slots, \"active-action\", { key: 1 }, () => [\n _ctx.activeActionIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.activeActionIcon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true)\n ]) : !unref(checked) ? renderSlot(_ctx.$slots, \"inactive-action\", { key: 2 }, () => [\n _ctx.inactiveActionIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.inactiveActionIcon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true)\n ]) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 6),\n !_ctx.inlinePrompt && (_ctx.activeIcon || _ctx.activeText) ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass(unref(labelRightKls))\n }, [\n _ctx.activeIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.activeIcon)))\n ]),\n _: 1\n })) : createCommentVNode(\"v-if\", true),\n !_ctx.activeIcon && _ctx.activeText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n \"aria-hidden\": !unref(checked)\n }, toDisplayString(_ctx.activeText), 9, _hoisted_5)) : createCommentVNode(\"v-if\", true)\n ], 2)) : createCommentVNode(\"v-if\", true)\n ], 10, _hoisted_1);\n };\n }\n});\nvar Switch = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"switch.vue\"]]);\n\nexport { Switch as default };\n//# sourceMappingURL=switch2.mjs.map\n","import '../../utils/index.mjs';\nimport Switch from './src/switch2.mjs';\nexport { switchEmits, switchProps } from './src/switch.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElSwitch = withInstall(Switch);\n\nexport { ElSwitch, ElSwitch as default };\n//# sourceMappingURL=index.mjs.map\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nexport default flatMap;\n","import { createVNode, render } from 'vue';\nimport { get, flatMap } from 'lodash-unified';\nimport '../../../utils/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { isObject, hasOwn, isArray } from '@vue/shared';\nimport { throwError } from '../../../utils/error.mjs';\nimport { isBoolean } from '../../../utils/types.mjs';\n\nconst getCell = function(event) {\n var _a;\n return (_a = event.target) == null ? void 0 : _a.closest(\"td\");\n};\nconst orderBy = function(array, sortKey, reverse, sortMethod, sortBy) {\n if (!sortKey && !sortMethod && (!sortBy || Array.isArray(sortBy) && !sortBy.length)) {\n return array;\n }\n if (typeof reverse === \"string\") {\n reverse = reverse === \"descending\" ? -1 : 1;\n } else {\n reverse = reverse && reverse < 0 ? -1 : 1;\n }\n const getKey = sortMethod ? null : function(value, index) {\n if (sortBy) {\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map((by) => {\n if (typeof by === \"string\") {\n return get(value, by);\n } else {\n return by(value, index, array);\n }\n });\n }\n if (sortKey !== \"$key\") {\n if (isObject(value) && \"$value\" in value)\n value = value.$value;\n }\n return [isObject(value) ? get(value, sortKey) : value];\n };\n const compare = function(a, b) {\n if (sortMethod) {\n return sortMethod(a.value, b.value);\n }\n for (let i = 0, len = a.key.length; i < len; i++) {\n if (a.key[i] < b.key[i]) {\n return -1;\n }\n if (a.key[i] > b.key[i]) {\n return 1;\n }\n }\n return 0;\n };\n return array.map((value, index) => {\n return {\n value,\n index,\n key: getKey ? getKey(value, index) : null\n };\n }).sort((a, b) => {\n let order = compare(a, b);\n if (!order) {\n order = a.index - b.index;\n }\n return order * +reverse;\n }).map((item) => item.value);\n};\nconst getColumnById = function(table, columnId) {\n let column = null;\n table.columns.forEach((item) => {\n if (item.id === columnId) {\n column = item;\n }\n });\n return column;\n};\nconst getColumnByKey = function(table, columnKey) {\n let column = null;\n for (let i = 0; i < table.columns.length; i++) {\n const item = table.columns[i];\n if (item.columnKey === columnKey) {\n column = item;\n break;\n }\n }\n if (!column)\n throwError(\"ElTable\", `No column matching with column-key: ${columnKey}`);\n return column;\n};\nconst getColumnByCell = function(table, cell, namespace) {\n const matches = (cell.className || \"\").match(new RegExp(`${namespace}-table_[^\\\\s]+`, \"gm\"));\n if (matches) {\n return getColumnById(table, matches[0]);\n }\n return null;\n};\nconst getRowIdentity = (row, rowKey) => {\n if (!row)\n throw new Error(\"Row is required when get row identity\");\n if (typeof rowKey === \"string\") {\n if (!rowKey.includes(\".\")) {\n return `${row[rowKey]}`;\n }\n const key = rowKey.split(\".\");\n let current = row;\n for (const element of key) {\n current = current[element];\n }\n return `${current}`;\n } else if (typeof rowKey === \"function\") {\n return rowKey.call(null, row);\n }\n};\nconst getKeysMap = function(array, rowKey) {\n const arrayMap = {};\n (array || []).forEach((row, index) => {\n arrayMap[getRowIdentity(row, rowKey)] = { row, index };\n });\n return arrayMap;\n};\nfunction mergeOptions(defaults, config) {\n const options = {};\n let key;\n for (key in defaults) {\n options[key] = defaults[key];\n }\n for (key in config) {\n if (hasOwn(config, key)) {\n const value = config[key];\n if (typeof value !== \"undefined\") {\n options[key] = value;\n }\n }\n }\n return options;\n}\nfunction parseWidth(width) {\n if (width === \"\")\n return width;\n if (width !== void 0) {\n width = Number.parseInt(width, 10);\n if (Number.isNaN(width)) {\n width = \"\";\n }\n }\n return width;\n}\nfunction parseMinWidth(minWidth) {\n if (minWidth === \"\")\n return minWidth;\n if (minWidth !== void 0) {\n minWidth = parseWidth(minWidth);\n if (Number.isNaN(minWidth)) {\n minWidth = 80;\n }\n }\n return minWidth;\n}\nfunction parseHeight(height) {\n if (typeof height === \"number\") {\n return height;\n }\n if (typeof height === \"string\") {\n if (/^\\d+(?:px)?$/.test(height)) {\n return Number.parseInt(height, 10);\n } else {\n return height;\n }\n }\n return null;\n}\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\nfunction toggleRowStatus(statusArr, row, newVal) {\n let changed = false;\n const index = statusArr.indexOf(row);\n const included = index !== -1;\n const toggleStatus = (type) => {\n if (type === \"add\") {\n statusArr.push(row);\n } else {\n statusArr.splice(index, 1);\n }\n changed = true;\n if (isArray(row.children)) {\n row.children.forEach((item) => {\n toggleRowStatus(statusArr, item, newVal != null ? newVal : !included);\n });\n }\n };\n if (isBoolean(newVal)) {\n if (newVal && !included) {\n toggleStatus(\"add\");\n } else if (!newVal && included) {\n toggleStatus(\"remove\");\n }\n } else {\n included ? toggleStatus(\"remove\") : toggleStatus(\"add\");\n }\n return changed;\n}\nfunction walkTreeNode(root, cb, childrenKey = \"children\", lazyKey = \"hasChildren\") {\n const isNil = (array) => !(Array.isArray(array) && array.length);\n function _walker(parent, children, level) {\n cb(parent, children, level);\n children.forEach((item) => {\n if (item[lazyKey]) {\n cb(item, null, level + 1);\n return;\n }\n const children2 = item[childrenKey];\n if (!isNil(children2)) {\n _walker(item, children2, level + 1);\n }\n });\n }\n root.forEach((item) => {\n if (item[lazyKey]) {\n cb(item, null, 0);\n return;\n }\n const children = item[childrenKey];\n if (!isNil(children)) {\n _walker(item, children, 0);\n }\n });\n}\nlet removePopper = null;\nfunction createTablePopper(props, popperContent, trigger, table) {\n if ((removePopper == null ? void 0 : removePopper.trigger) === trigger) {\n return;\n }\n removePopper == null ? void 0 : removePopper();\n const parentNode = table == null ? void 0 : table.refs.tableWrapper;\n const ns = parentNode == null ? void 0 : parentNode.dataset.prefix;\n const popperOptions = {\n strategy: \"fixed\",\n ...props.popperOptions\n };\n const vm = createVNode(ElTooltip, {\n content: popperContent,\n virtualTriggering: true,\n virtualRef: trigger,\n appendTo: parentNode,\n placement: \"top\",\n transition: \"none\",\n offset: 0,\n hideAfter: 0,\n ...props,\n popperOptions,\n onHide: () => {\n removePopper == null ? void 0 : removePopper();\n }\n });\n vm.appContext = { ...table.appContext, ...table };\n const container = document.createElement(\"div\");\n render(vm, container);\n vm.component.exposed.onOpen();\n const scrollContainer = parentNode == null ? void 0 : parentNode.querySelector(`.${ns}-scrollbar__wrap`);\n removePopper = () => {\n render(null, container);\n scrollContainer == null ? void 0 : scrollContainer.removeEventListener(\"scroll\", removePopper);\n removePopper = null;\n };\n removePopper.trigger = trigger;\n scrollContainer == null ? void 0 : scrollContainer.addEventListener(\"scroll\", removePopper);\n}\nfunction getCurrentColumns(column) {\n if (column.children) {\n return flatMap(column.children, getCurrentColumns);\n } else {\n return [column];\n }\n}\nfunction getColSpan(colSpan, column) {\n return colSpan + column.colSpan;\n}\nconst isFixedColumn = (index, fixed, store, realColumns) => {\n let start = 0;\n let after = index;\n const columns = store.states.columns.value;\n if (realColumns) {\n const curColumns = getCurrentColumns(realColumns[index]);\n const preColumns = columns.slice(0, columns.indexOf(curColumns[0]));\n start = preColumns.reduce(getColSpan, 0);\n after = start + curColumns.reduce(getColSpan, 0) - 1;\n } else {\n start = index;\n }\n let fixedLayout;\n switch (fixed) {\n case \"left\":\n if (after < store.states.fixedLeafColumnsLength.value) {\n fixedLayout = \"left\";\n }\n break;\n case \"right\":\n if (start >= columns.length - store.states.rightFixedLeafColumnsLength.value) {\n fixedLayout = \"right\";\n }\n break;\n default:\n if (after < store.states.fixedLeafColumnsLength.value) {\n fixedLayout = \"left\";\n } else if (start >= columns.length - store.states.rightFixedLeafColumnsLength.value) {\n fixedLayout = \"right\";\n }\n }\n return fixedLayout ? {\n direction: fixedLayout,\n start,\n after\n } : {};\n};\nconst getFixedColumnsClass = (namespace, index, fixed, store, realColumns, offset = 0) => {\n const classes = [];\n const { direction, start, after } = isFixedColumn(index, fixed, store, realColumns);\n if (direction) {\n const isLeft = direction === \"left\";\n classes.push(`${namespace}-fixed-column--${direction}`);\n if (isLeft && after + offset === store.states.fixedLeafColumnsLength.value - 1) {\n classes.push(\"is-last-column\");\n } else if (!isLeft && start - offset === store.states.columns.value.length - store.states.rightFixedLeafColumnsLength.value) {\n classes.push(\"is-first-column\");\n }\n }\n return classes;\n};\nfunction getOffset(offset, column) {\n return offset + (column.realWidth === null || Number.isNaN(column.realWidth) ? Number(column.width) : column.realWidth);\n}\nconst getFixedColumnOffset = (index, fixed, store, realColumns) => {\n const {\n direction,\n start = 0,\n after = 0\n } = isFixedColumn(index, fixed, store, realColumns);\n if (!direction) {\n return;\n }\n const styles = {};\n const isLeft = direction === \"left\";\n const columns = store.states.columns.value;\n if (isLeft) {\n styles.left = columns.slice(0, start).reduce(getOffset, 0);\n } else {\n styles.right = columns.slice(after + 1).reverse().reduce(getOffset, 0);\n }\n return styles;\n};\nconst ensurePosition = (style, key) => {\n if (!style)\n return;\n if (!Number.isNaN(style[key])) {\n style[key] = `${style[key]}px`;\n }\n};\n\nexport { compose, createTablePopper, ensurePosition, getCell, getColumnByCell, getColumnById, getColumnByKey, getFixedColumnOffset, getFixedColumnsClass, getKeysMap, getRowIdentity, isFixedColumn, mergeOptions, orderBy, parseHeight, parseMinWidth, parseWidth, removePopper, toggleRowStatus, walkTreeNode };\n//# sourceMappingURL=util.mjs.map\n","import { getCurrentInstance, ref } from 'vue';\nimport { getKeysMap, getRowIdentity, toggleRowStatus } from '../util.mjs';\n\nfunction useExpand(watcherData) {\n const instance = getCurrentInstance();\n const defaultExpandAll = ref(false);\n const expandRows = ref([]);\n const updateExpandRows = () => {\n const data = watcherData.data.value || [];\n const rowKey = watcherData.rowKey.value;\n if (defaultExpandAll.value) {\n expandRows.value = data.slice();\n } else if (rowKey) {\n const expandRowsMap = getKeysMap(expandRows.value, rowKey);\n expandRows.value = data.reduce((prev, row) => {\n const rowId = getRowIdentity(row, rowKey);\n const rowInfo = expandRowsMap[rowId];\n if (rowInfo) {\n prev.push(row);\n }\n return prev;\n }, []);\n } else {\n expandRows.value = [];\n }\n };\n const toggleRowExpansion = (row, expanded) => {\n const changed = toggleRowStatus(expandRows.value, row, expanded);\n if (changed) {\n instance.emit(\"expand-change\", row, expandRows.value.slice());\n }\n };\n const setExpandRowKeys = (rowKeys) => {\n instance.store.assertRowKey();\n const data = watcherData.data.value || [];\n const rowKey = watcherData.rowKey.value;\n const keysMap = getKeysMap(data, rowKey);\n expandRows.value = rowKeys.reduce((prev, cur) => {\n const info = keysMap[cur];\n if (info) {\n prev.push(info.row);\n }\n return prev;\n }, []);\n };\n const isRowExpanded = (row) => {\n const rowKey = watcherData.rowKey.value;\n if (rowKey) {\n const expandMap = getKeysMap(expandRows.value, rowKey);\n return !!expandMap[getRowIdentity(row, rowKey)];\n }\n return expandRows.value.includes(row);\n };\n return {\n updateExpandRows,\n toggleRowExpansion,\n setExpandRowKeys,\n isRowExpanded,\n states: {\n expandRows,\n defaultExpandAll\n }\n };\n}\n\nexport { useExpand as default };\n//# sourceMappingURL=expand.mjs.map\n","import { getCurrentInstance, ref, unref } from 'vue';\nimport { getRowIdentity } from '../util.mjs';\n\nfunction useCurrent(watcherData) {\n const instance = getCurrentInstance();\n const _currentRowKey = ref(null);\n const currentRow = ref(null);\n const setCurrentRowKey = (key) => {\n instance.store.assertRowKey();\n _currentRowKey.value = key;\n setCurrentRowByKey(key);\n };\n const restoreCurrentRowKey = () => {\n _currentRowKey.value = null;\n };\n const setCurrentRowByKey = (key) => {\n const { data, rowKey } = watcherData;\n let _currentRow = null;\n if (rowKey.value) {\n _currentRow = (unref(data) || []).find((item) => getRowIdentity(item, rowKey.value) === key);\n }\n currentRow.value = _currentRow;\n instance.emit(\"current-change\", currentRow.value, null);\n };\n const updateCurrentRow = (_currentRow) => {\n const oldCurrentRow = currentRow.value;\n if (_currentRow && _currentRow !== oldCurrentRow) {\n currentRow.value = _currentRow;\n instance.emit(\"current-change\", currentRow.value, oldCurrentRow);\n return;\n }\n if (!_currentRow && oldCurrentRow) {\n currentRow.value = null;\n instance.emit(\"current-change\", null, oldCurrentRow);\n }\n };\n const updateCurrentRowData = () => {\n const rowKey = watcherData.rowKey.value;\n const data = watcherData.data.value || [];\n const oldCurrentRow = currentRow.value;\n if (!data.includes(oldCurrentRow) && oldCurrentRow) {\n if (rowKey) {\n const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);\n setCurrentRowByKey(currentRowKey);\n } else {\n currentRow.value = null;\n }\n if (currentRow.value === null) {\n instance.emit(\"current-change\", null, oldCurrentRow);\n }\n } else if (_currentRowKey.value) {\n setCurrentRowByKey(_currentRowKey.value);\n restoreCurrentRowKey();\n }\n };\n return {\n setCurrentRowKey,\n restoreCurrentRowKey,\n setCurrentRowByKey,\n updateCurrentRow,\n updateCurrentRowData,\n states: {\n _currentRowKey,\n currentRow\n }\n };\n}\n\nexport { useCurrent as default };\n//# sourceMappingURL=current.mjs.map\n","import { ref, getCurrentInstance, computed, unref, watch } from 'vue';\nimport { getRowIdentity, walkTreeNode } from '../util.mjs';\n\nfunction useTree(watcherData) {\n const expandRowKeys = ref([]);\n const treeData = ref({});\n const indent = ref(16);\n const lazy = ref(false);\n const lazyTreeNodeMap = ref({});\n const lazyColumnIdentifier = ref(\"hasChildren\");\n const childrenColumnName = ref(\"children\");\n const instance = getCurrentInstance();\n const normalizedData = computed(() => {\n if (!watcherData.rowKey.value)\n return {};\n const data = watcherData.data.value || [];\n return normalize(data);\n });\n const normalizedLazyNode = computed(() => {\n const rowKey = watcherData.rowKey.value;\n const keys = Object.keys(lazyTreeNodeMap.value);\n const res = {};\n if (!keys.length)\n return res;\n keys.forEach((key) => {\n if (lazyTreeNodeMap.value[key].length) {\n const item = { children: [] };\n lazyTreeNodeMap.value[key].forEach((row) => {\n const currentRowKey = getRowIdentity(row, rowKey);\n item.children.push(currentRowKey);\n if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] };\n }\n });\n res[key] = item;\n }\n });\n return res;\n });\n const normalize = (data) => {\n const rowKey = watcherData.rowKey.value;\n const res = {};\n walkTreeNode(data, (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey);\n if (Array.isArray(children)) {\n res[parentId] = {\n children: children.map((row) => getRowIdentity(row, rowKey)),\n level\n };\n } else if (lazy.value) {\n res[parentId] = {\n children: [],\n lazy: true,\n level\n };\n }\n }, childrenColumnName.value, lazyColumnIdentifier.value);\n return res;\n };\n const updateTreeData = (ifChangeExpandRowKeys = false, ifExpandAll = ((_a) => (_a = instance.store) == null ? void 0 : _a.states.defaultExpandAll.value)()) => {\n var _a2;\n const nested = normalizedData.value;\n const normalizedLazyNode_ = normalizedLazyNode.value;\n const keys = Object.keys(nested);\n const newTreeData = {};\n if (keys.length) {\n const oldTreeData = unref(treeData);\n const rootLazyRowKeys = [];\n const getExpanded = (oldValue, key) => {\n if (ifChangeExpandRowKeys) {\n if (expandRowKeys.value) {\n return ifExpandAll || expandRowKeys.value.includes(key);\n } else {\n return !!(ifExpandAll || (oldValue == null ? void 0 : oldValue.expanded));\n }\n } else {\n const included = ifExpandAll || expandRowKeys.value && expandRowKeys.value.includes(key);\n return !!((oldValue == null ? void 0 : oldValue.expanded) || included);\n }\n };\n keys.forEach((key) => {\n const oldValue = oldTreeData[key];\n const newValue = { ...nested[key] };\n newValue.expanded = getExpanded(oldValue, key);\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {};\n newValue.loaded = !!loaded;\n newValue.loading = !!loading;\n rootLazyRowKeys.push(key);\n }\n newTreeData[key] = newValue;\n });\n const lazyKeys = Object.keys(normalizedLazyNode_);\n if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach((key) => {\n const oldValue = oldTreeData[key];\n const lazyNodeChildren = normalizedLazyNode_[key].children;\n if (rootLazyRowKeys.includes(key)) {\n if (newTreeData[key].children.length !== 0) {\n throw new Error(\"[ElTable]children must be an empty array.\");\n }\n newTreeData[key].children = lazyNodeChildren;\n } else {\n const { loaded = false, loading = false } = oldValue || {};\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: \"\"\n };\n }\n });\n }\n }\n treeData.value = newTreeData;\n (_a2 = instance.store) == null ? void 0 : _a2.updateTableScrollY();\n };\n watch(() => expandRowKeys.value, () => {\n updateTreeData(true);\n });\n watch(() => normalizedData.value, () => {\n updateTreeData();\n });\n watch(() => normalizedLazyNode.value, () => {\n updateTreeData();\n });\n const updateTreeExpandKeys = (value) => {\n expandRowKeys.value = value;\n updateTreeData();\n };\n const toggleTreeExpansion = (row, expanded) => {\n instance.store.assertRowKey();\n const rowKey = watcherData.rowKey.value;\n const id = getRowIdentity(row, rowKey);\n const data = id && treeData.value[id];\n if (id && data && \"expanded\" in data) {\n const oldExpanded = data.expanded;\n expanded = typeof expanded === \"undefined\" ? !data.expanded : expanded;\n treeData.value[id].expanded = expanded;\n if (oldExpanded !== expanded) {\n instance.emit(\"expand-change\", row, expanded);\n }\n instance.store.updateTableScrollY();\n }\n };\n const loadOrToggle = (row) => {\n instance.store.assertRowKey();\n const rowKey = watcherData.rowKey.value;\n const id = getRowIdentity(row, rowKey);\n const data = treeData.value[id];\n if (lazy.value && data && \"loaded\" in data && !data.loaded) {\n loadData(row, id, data);\n } else {\n toggleTreeExpansion(row, void 0);\n }\n };\n const loadData = (row, key, treeNode) => {\n const { load } = instance.props;\n if (load && !treeData.value[key].loaded) {\n treeData.value[key].loading = true;\n load(row, treeNode, (data) => {\n if (!Array.isArray(data)) {\n throw new TypeError(\"[ElTable] data must be an array\");\n }\n treeData.value[key].loading = false;\n treeData.value[key].loaded = true;\n treeData.value[key].expanded = true;\n if (data.length) {\n lazyTreeNodeMap.value[key] = data;\n }\n instance.emit(\"expand-change\", row, true);\n });\n }\n };\n return {\n loadData,\n loadOrToggle,\n toggleTreeExpansion,\n updateTreeExpandKeys,\n updateTreeData,\n normalize,\n states: {\n expandRowKeys,\n treeData,\n indent,\n lazy,\n lazyTreeNodeMap,\n lazyColumnIdentifier,\n childrenColumnName\n }\n };\n}\n\nexport { useTree as default };\n//# sourceMappingURL=tree.mjs.map\n","import { getCurrentInstance, toRefs, ref, watch, unref } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { orderBy, getKeysMap, toggleRowStatus, getRowIdentity, getColumnById, getColumnByKey } from '../util.mjs';\nimport useExpand from './expand.mjs';\nimport useCurrent from './current.mjs';\nimport useTree from './tree.mjs';\nimport { hasOwn } from '@vue/shared';\n\nconst sortData = (data, states) => {\n const sortingColumn = states.sortingColumn;\n if (!sortingColumn || typeof sortingColumn.sortable === \"string\") {\n return data;\n }\n return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);\n};\nconst doFlattenColumns = (columns) => {\n const result = [];\n columns.forEach((column) => {\n if (column.children && column.children.length > 0) {\n result.push.apply(result, doFlattenColumns(column.children));\n } else {\n result.push(column);\n }\n });\n return result;\n};\nfunction useWatcher() {\n var _a;\n const instance = getCurrentInstance();\n const { size: tableSize } = toRefs((_a = instance.proxy) == null ? void 0 : _a.$props);\n const rowKey = ref(null);\n const data = ref([]);\n const _data = ref([]);\n const isComplex = ref(false);\n const _columns = ref([]);\n const originColumns = ref([]);\n const columns = ref([]);\n const fixedColumns = ref([]);\n const rightFixedColumns = ref([]);\n const leafColumns = ref([]);\n const fixedLeafColumns = ref([]);\n const rightFixedLeafColumns = ref([]);\n const updateOrderFns = [];\n const leafColumnsLength = ref(0);\n const fixedLeafColumnsLength = ref(0);\n const rightFixedLeafColumnsLength = ref(0);\n const isAllSelected = ref(false);\n const selection = ref([]);\n const reserveSelection = ref(false);\n const selectOnIndeterminate = ref(false);\n const selectable = ref(null);\n const filters = ref({});\n const filteredData = ref(null);\n const sortingColumn = ref(null);\n const sortProp = ref(null);\n const sortOrder = ref(null);\n const hoverRow = ref(null);\n watch(data, () => instance.state && scheduleLayout(false), {\n deep: true\n });\n const assertRowKey = () => {\n if (!rowKey.value)\n throw new Error(\"[ElTable] prop row-key is required\");\n };\n const updateChildFixed = (column) => {\n var _a2;\n (_a2 = column.children) == null ? void 0 : _a2.forEach((childColumn) => {\n childColumn.fixed = column.fixed;\n updateChildFixed(childColumn);\n });\n };\n const updateColumns = () => {\n _columns.value.forEach((column) => {\n updateChildFixed(column);\n });\n fixedColumns.value = _columns.value.filter((column) => column.fixed === true || column.fixed === \"left\");\n rightFixedColumns.value = _columns.value.filter((column) => column.fixed === \"right\");\n if (fixedColumns.value.length > 0 && _columns.value[0] && _columns.value[0].type === \"selection\" && !_columns.value[0].fixed) {\n _columns.value[0].fixed = true;\n fixedColumns.value.unshift(_columns.value[0]);\n }\n const notFixedColumns = _columns.value.filter((column) => !column.fixed);\n originColumns.value = [].concat(fixedColumns.value).concat(notFixedColumns).concat(rightFixedColumns.value);\n const leafColumns2 = doFlattenColumns(notFixedColumns);\n const fixedLeafColumns2 = doFlattenColumns(fixedColumns.value);\n const rightFixedLeafColumns2 = doFlattenColumns(rightFixedColumns.value);\n leafColumnsLength.value = leafColumns2.length;\n fixedLeafColumnsLength.value = fixedLeafColumns2.length;\n rightFixedLeafColumnsLength.value = rightFixedLeafColumns2.length;\n columns.value = [].concat(fixedLeafColumns2).concat(leafColumns2).concat(rightFixedLeafColumns2);\n isComplex.value = fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0;\n };\n const scheduleLayout = (needUpdateColumns, immediate = false) => {\n if (needUpdateColumns) {\n updateColumns();\n }\n if (immediate) {\n instance.state.doLayout();\n } else {\n instance.state.debouncedUpdateLayout();\n }\n };\n const isSelected = (row) => {\n return selection.value.includes(row);\n };\n const clearSelection = () => {\n isAllSelected.value = false;\n const oldSelection = selection.value;\n selection.value = [];\n if (oldSelection.length) {\n instance.emit(\"selection-change\", []);\n }\n };\n const cleanSelection = () => {\n let deleted;\n if (rowKey.value) {\n deleted = [];\n const selectedMap = getKeysMap(selection.value, rowKey.value);\n const dataMap = getKeysMap(data.value, rowKey.value);\n for (const key in selectedMap) {\n if (hasOwn(selectedMap, key) && !dataMap[key]) {\n deleted.push(selectedMap[key].row);\n }\n }\n } else {\n deleted = selection.value.filter((item) => !data.value.includes(item));\n }\n if (deleted.length) {\n const newSelection = selection.value.filter((item) => !deleted.includes(item));\n selection.value = newSelection;\n instance.emit(\"selection-change\", newSelection.slice());\n }\n };\n const getSelectionRows = () => {\n return (selection.value || []).slice();\n };\n const toggleRowSelection = (row, selected = void 0, emitChange = true) => {\n const changed = toggleRowStatus(selection.value, row, selected);\n if (changed) {\n const newSelection = (selection.value || []).slice();\n if (emitChange) {\n instance.emit(\"select\", newSelection, row);\n }\n instance.emit(\"selection-change\", newSelection);\n }\n };\n const _toggleAllSelection = () => {\n var _a2, _b;\n const value = selectOnIndeterminate.value ? !isAllSelected.value : !(isAllSelected.value || selection.value.length);\n isAllSelected.value = value;\n let selectionChanged = false;\n let childrenCount = 0;\n const rowKey2 = (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.rowKey.value;\n data.value.forEach((row, index) => {\n const rowIndex = index + childrenCount;\n if (selectable.value) {\n if (selectable.value.call(null, row, rowIndex) && toggleRowStatus(selection.value, row, value)) {\n selectionChanged = true;\n }\n } else {\n if (toggleRowStatus(selection.value, row, value)) {\n selectionChanged = true;\n }\n }\n childrenCount += getChildrenCount(getRowIdentity(row, rowKey2));\n });\n if (selectionChanged) {\n instance.emit(\"selection-change\", selection.value ? selection.value.slice() : []);\n }\n instance.emit(\"select-all\", (selection.value || []).slice());\n };\n const updateSelectionByRowKey = () => {\n const selectedMap = getKeysMap(selection.value, rowKey.value);\n data.value.forEach((row) => {\n const rowId = getRowIdentity(row, rowKey.value);\n const rowInfo = selectedMap[rowId];\n if (rowInfo) {\n selection.value[rowInfo.index] = row;\n }\n });\n };\n const updateAllSelected = () => {\n var _a2, _b, _c;\n if (((_a2 = data.value) == null ? void 0 : _a2.length) === 0) {\n isAllSelected.value = false;\n return;\n }\n let selectedMap;\n if (rowKey.value) {\n selectedMap = getKeysMap(selection.value, rowKey.value);\n }\n const isSelected2 = function(row) {\n if (selectedMap) {\n return !!selectedMap[getRowIdentity(row, rowKey.value)];\n } else {\n return selection.value.includes(row);\n }\n };\n let isAllSelected_ = true;\n let selectedCount = 0;\n let childrenCount = 0;\n for (let i = 0, j = (data.value || []).length; i < j; i++) {\n const keyProp = (_c = (_b = instance == null ? void 0 : instance.store) == null ? void 0 : _b.states) == null ? void 0 : _c.rowKey.value;\n const rowIndex = i + childrenCount;\n const item = data.value[i];\n const isRowSelectable = selectable.value && selectable.value.call(null, item, rowIndex);\n if (!isSelected2(item)) {\n if (!selectable.value || isRowSelectable) {\n isAllSelected_ = false;\n break;\n }\n } else {\n selectedCount++;\n }\n childrenCount += getChildrenCount(getRowIdentity(item, keyProp));\n }\n if (selectedCount === 0)\n isAllSelected_ = false;\n isAllSelected.value = isAllSelected_;\n };\n const getChildrenCount = (rowKey2) => {\n var _a2;\n if (!instance || !instance.store)\n return 0;\n const { treeData } = instance.store.states;\n let count = 0;\n const children = (_a2 = treeData.value[rowKey2]) == null ? void 0 : _a2.children;\n if (children) {\n count += children.length;\n children.forEach((childKey) => {\n count += getChildrenCount(childKey);\n });\n }\n return count;\n };\n const updateFilters = (columns2, values) => {\n if (!Array.isArray(columns2)) {\n columns2 = [columns2];\n }\n const filters_ = {};\n columns2.forEach((col) => {\n filters.value[col.id] = values;\n filters_[col.columnKey || col.id] = values;\n });\n return filters_;\n };\n const updateSort = (column, prop, order) => {\n if (sortingColumn.value && sortingColumn.value !== column) {\n sortingColumn.value.order = null;\n }\n sortingColumn.value = column;\n sortProp.value = prop;\n sortOrder.value = order;\n };\n const execFilter = () => {\n let sourceData = unref(_data);\n Object.keys(filters.value).forEach((columnId) => {\n const values = filters.value[columnId];\n if (!values || values.length === 0)\n return;\n const column = getColumnById({\n columns: columns.value\n }, columnId);\n if (column && column.filterMethod) {\n sourceData = sourceData.filter((row) => {\n return values.some((value) => column.filterMethod.call(null, value, row, column));\n });\n }\n });\n filteredData.value = sourceData;\n };\n const execSort = () => {\n data.value = sortData(filteredData.value, {\n sortingColumn: sortingColumn.value,\n sortProp: sortProp.value,\n sortOrder: sortOrder.value\n });\n };\n const execQuery = (ignore = void 0) => {\n if (!(ignore && ignore.filter)) {\n execFilter();\n }\n execSort();\n };\n const clearFilter = (columnKeys) => {\n const { tableHeaderRef } = instance.refs;\n if (!tableHeaderRef)\n return;\n const panels = Object.assign({}, tableHeaderRef.filterPanels);\n const keys = Object.keys(panels);\n if (!keys.length)\n return;\n if (typeof columnKeys === \"string\") {\n columnKeys = [columnKeys];\n }\n if (Array.isArray(columnKeys)) {\n const columns_ = columnKeys.map((key) => getColumnByKey({\n columns: columns.value\n }, key));\n keys.forEach((key) => {\n const column = columns_.find((col) => col.id === key);\n if (column) {\n column.filteredValue = [];\n }\n });\n instance.store.commit(\"filterChange\", {\n column: columns_,\n values: [],\n silent: true,\n multi: true\n });\n } else {\n keys.forEach((key) => {\n const column = columns.value.find((col) => col.id === key);\n if (column) {\n column.filteredValue = [];\n }\n });\n filters.value = {};\n instance.store.commit(\"filterChange\", {\n column: {},\n values: [],\n silent: true\n });\n }\n };\n const clearSort = () => {\n if (!sortingColumn.value)\n return;\n updateSort(null, null, null);\n instance.store.commit(\"changeSortCondition\", {\n silent: true\n });\n };\n const {\n setExpandRowKeys,\n toggleRowExpansion,\n updateExpandRows,\n states: expandStates,\n isRowExpanded\n } = useExpand({\n data,\n rowKey\n });\n const {\n updateTreeExpandKeys,\n toggleTreeExpansion,\n updateTreeData,\n loadOrToggle,\n states: treeStates\n } = useTree({\n data,\n rowKey\n });\n const {\n updateCurrentRowData,\n updateCurrentRow,\n setCurrentRowKey,\n states: currentData\n } = useCurrent({\n data,\n rowKey\n });\n const setExpandRowKeysAdapter = (val) => {\n setExpandRowKeys(val);\n updateTreeExpandKeys(val);\n };\n const toggleRowExpansionAdapter = (row, expanded) => {\n const hasExpandColumn = columns.value.some(({ type }) => type === \"expand\");\n if (hasExpandColumn) {\n toggleRowExpansion(row, expanded);\n } else {\n toggleTreeExpansion(row, expanded);\n }\n };\n return {\n assertRowKey,\n updateColumns,\n scheduleLayout,\n isSelected,\n clearSelection,\n cleanSelection,\n getSelectionRows,\n toggleRowSelection,\n _toggleAllSelection,\n toggleAllSelection: null,\n updateSelectionByRowKey,\n updateAllSelected,\n updateFilters,\n updateCurrentRow,\n updateSort,\n execFilter,\n execSort,\n execQuery,\n clearFilter,\n clearSort,\n toggleRowExpansion,\n setExpandRowKeysAdapter,\n setCurrentRowKey,\n toggleRowExpansionAdapter,\n isRowExpanded,\n updateExpandRows,\n updateCurrentRowData,\n loadOrToggle,\n updateTreeData,\n states: {\n tableSize,\n rowKey,\n data,\n _data,\n isComplex,\n _columns,\n originColumns,\n columns,\n fixedColumns,\n rightFixedColumns,\n leafColumns,\n fixedLeafColumns,\n rightFixedLeafColumns,\n updateOrderFns,\n leafColumnsLength,\n fixedLeafColumnsLength,\n rightFixedLeafColumnsLength,\n isAllSelected,\n selection,\n reserveSelection,\n selectOnIndeterminate,\n selectable,\n filters,\n filteredData,\n sortingColumn,\n sortProp,\n sortOrder,\n hoverRow,\n ...expandStates,\n ...treeStates,\n ...currentData\n }\n };\n}\n\nexport { useWatcher as default };\n//# sourceMappingURL=watcher.mjs.map\n","import { getCurrentInstance, unref, nextTick } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport useWatcher from './watcher.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nfunction replaceColumn(array, column) {\n return array.map((item) => {\n var _a;\n if (item.id === column.id) {\n return column;\n } else if ((_a = item.children) == null ? void 0 : _a.length) {\n item.children = replaceColumn(item.children, column);\n }\n return item;\n });\n}\nfunction sortColumn(array) {\n array.forEach((item) => {\n var _a, _b;\n item.no = (_a = item.getColumnIndex) == null ? void 0 : _a.call(item);\n if ((_b = item.children) == null ? void 0 : _b.length) {\n sortColumn(item.children);\n }\n });\n array.sort((cur, pre) => cur.no - pre.no);\n}\nfunction useStore() {\n const instance = getCurrentInstance();\n const watcher = useWatcher();\n const ns = useNamespace(\"table\");\n const mutations = {\n setData(states, data) {\n const dataInstanceChanged = unref(states._data) !== data;\n states.data.value = data;\n states._data.value = data;\n instance.store.execQuery();\n instance.store.updateCurrentRowData();\n instance.store.updateExpandRows();\n instance.store.updateTreeData(instance.store.states.defaultExpandAll.value);\n if (unref(states.reserveSelection)) {\n instance.store.assertRowKey();\n instance.store.updateSelectionByRowKey();\n } else {\n if (dataInstanceChanged) {\n instance.store.clearSelection();\n } else {\n instance.store.cleanSelection();\n }\n }\n instance.store.updateAllSelected();\n if (instance.$ready) {\n instance.store.scheduleLayout();\n }\n },\n insertColumn(states, column, parent, updateColumnOrder) {\n const array = unref(states._columns);\n let newColumns = [];\n if (!parent) {\n array.push(column);\n newColumns = array;\n } else {\n if (parent && !parent.children) {\n parent.children = [];\n }\n parent.children.push(column);\n newColumns = replaceColumn(array, parent);\n }\n sortColumn(newColumns);\n states._columns.value = newColumns;\n states.updateOrderFns.push(updateColumnOrder);\n if (column.type === \"selection\") {\n states.selectable.value = column.selectable;\n states.reserveSelection.value = column.reserveSelection;\n }\n if (instance.$ready) {\n instance.store.updateColumns();\n instance.store.scheduleLayout();\n }\n },\n updateColumnOrder(states, column) {\n var _a;\n const newColumnIndex = (_a = column.getColumnIndex) == null ? void 0 : _a.call(column);\n if (newColumnIndex === column.no)\n return;\n sortColumn(states._columns.value);\n if (instance.$ready) {\n instance.store.updateColumns();\n }\n },\n removeColumn(states, column, parent, updateColumnOrder) {\n const array = unref(states._columns) || [];\n if (parent) {\n parent.children.splice(parent.children.findIndex((item) => item.id === column.id), 1);\n nextTick(() => {\n var _a;\n if (((_a = parent.children) == null ? void 0 : _a.length) === 0) {\n delete parent.children;\n }\n });\n states._columns.value = replaceColumn(array, parent);\n } else {\n const index = array.indexOf(column);\n if (index > -1) {\n array.splice(index, 1);\n states._columns.value = array;\n }\n }\n const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder);\n updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1);\n if (instance.$ready) {\n instance.store.updateColumns();\n instance.store.scheduleLayout();\n }\n },\n sort(states, options) {\n const { prop, order, init } = options;\n if (prop) {\n const column = unref(states.columns).find((column2) => column2.property === prop);\n if (column) {\n column.order = order;\n instance.store.updateSort(column, prop, order);\n instance.store.commit(\"changeSortCondition\", { init });\n }\n }\n },\n changeSortCondition(states, options) {\n const { sortingColumn, sortProp, sortOrder } = states;\n const columnValue = unref(sortingColumn), propValue = unref(sortProp), orderValue = unref(sortOrder);\n if (orderValue === null) {\n states.sortingColumn.value = null;\n states.sortProp.value = null;\n }\n const ignore = { filter: true };\n instance.store.execQuery(ignore);\n if (!options || !(options.silent || options.init)) {\n instance.emit(\"sort-change\", {\n column: columnValue,\n prop: propValue,\n order: orderValue\n });\n }\n instance.store.updateTableScrollY();\n },\n filterChange(_states, options) {\n const { column, values, silent } = options;\n const newFilters = instance.store.updateFilters(column, values);\n instance.store.execQuery();\n if (!silent) {\n instance.emit(\"filter-change\", newFilters);\n }\n instance.store.updateTableScrollY();\n },\n toggleAllSelection() {\n instance.store.toggleAllSelection();\n },\n rowSelectedChanged(_states, row) {\n instance.store.toggleRowSelection(row);\n instance.store.updateAllSelected();\n },\n setHoverRow(states, row) {\n states.hoverRow.value = row;\n },\n setCurrentRow(_states, row) {\n instance.store.updateCurrentRow(row);\n }\n };\n const commit = function(name, ...args) {\n const mutations2 = instance.store.mutations;\n if (mutations2[name]) {\n mutations2[name].apply(instance, [instance.store.states].concat(args));\n } else {\n throw new Error(`Action not found: ${name}`);\n }\n };\n const updateTableScrollY = function() {\n nextTick(() => instance.layout.updateScrollY.apply(instance.layout));\n };\n return {\n ns,\n ...watcher,\n mutations,\n commit,\n updateTableScrollY\n };\n}\nclass HelperStore {\n constructor() {\n this.Return = useStore();\n }\n}\n\nexport { useStore as default };\n//# sourceMappingURL=index.mjs.map\n","import { watch } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport useStore from './index.mjs';\n\nconst InitialStateMap = {\n rowKey: \"rowKey\",\n defaultExpandAll: \"defaultExpandAll\",\n selectOnIndeterminate: \"selectOnIndeterminate\",\n indent: \"indent\",\n lazy: \"lazy\",\n data: \"data\",\n [\"treeProps.hasChildren\"]: {\n key: \"lazyColumnIdentifier\",\n default: \"hasChildren\"\n },\n [\"treeProps.children\"]: {\n key: \"childrenColumnName\",\n default: \"children\"\n }\n};\nfunction createStore(table, props) {\n if (!table) {\n throw new Error(\"Table is required.\");\n }\n const store = useStore();\n store.toggleAllSelection = debounce(store._toggleAllSelection, 10);\n Object.keys(InitialStateMap).forEach((key) => {\n handleValue(getArrKeysValue(props, key), key, store);\n });\n proxyTableProps(store, props);\n return store;\n}\nfunction proxyTableProps(store, props) {\n Object.keys(InitialStateMap).forEach((key) => {\n watch(() => getArrKeysValue(props, key), (value) => {\n handleValue(value, key, store);\n });\n });\n}\nfunction handleValue(value, propsKey, store) {\n let newVal = value;\n let storeKey = InitialStateMap[propsKey];\n if (typeof InitialStateMap[propsKey] === \"object\") {\n storeKey = storeKey.key;\n newVal = newVal || InitialStateMap[propsKey].default;\n }\n store.states[storeKey].value = newVal;\n}\nfunction getArrKeysValue(props, keys) {\n if (keys.includes(\".\")) {\n const keyList = keys.split(\".\");\n let value = props;\n keyList.forEach((key) => {\n value = value[key];\n });\n return value;\n } else {\n return props[keys];\n }\n}\n\nexport { createStore };\n//# sourceMappingURL=helper.mjs.map\n","import { ref, isRef, nextTick } from 'vue';\nimport '../../../utils/index.mjs';\nimport { parseHeight } from './util.mjs';\nimport { hasOwn } from '@vue/shared';\nimport { isClient } from '@vueuse/core';\n\nclass TableLayout {\n constructor(options) {\n this.observers = [];\n this.table = null;\n this.store = null;\n this.columns = [];\n this.fit = true;\n this.showHeader = true;\n this.height = ref(null);\n this.scrollX = ref(false);\n this.scrollY = ref(false);\n this.bodyWidth = ref(null);\n this.fixedWidth = ref(null);\n this.rightFixedWidth = ref(null);\n this.gutterWidth = 0;\n for (const name in options) {\n if (hasOwn(options, name)) {\n if (isRef(this[name])) {\n this[name].value = options[name];\n } else {\n this[name] = options[name];\n }\n }\n }\n if (!this.table) {\n throw new Error(\"Table is required for Table Layout\");\n }\n if (!this.store) {\n throw new Error(\"Store is required for Table Layout\");\n }\n }\n updateScrollY() {\n const height = this.height.value;\n if (height === null)\n return false;\n const scrollBarRef = this.table.refs.scrollBarRef;\n if (this.table.vnode.el && (scrollBarRef == null ? void 0 : scrollBarRef.wrapRef)) {\n let scrollY = true;\n const prevScrollY = this.scrollY.value;\n scrollY = scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight;\n this.scrollY.value = scrollY;\n return prevScrollY !== scrollY;\n }\n return false;\n }\n setHeight(value, prop = \"height\") {\n if (!isClient)\n return;\n const el = this.table.vnode.el;\n value = parseHeight(value);\n this.height.value = Number(value);\n if (!el && (value || value === 0))\n return nextTick(() => this.setHeight(value, prop));\n if (typeof value === \"number\") {\n el.style[prop] = `${value}px`;\n this.updateElsHeight();\n } else if (typeof value === \"string\") {\n el.style[prop] = value;\n this.updateElsHeight();\n }\n }\n setMaxHeight(value) {\n this.setHeight(value, \"max-height\");\n }\n getFlattenColumns() {\n const flattenColumns = [];\n const columns = this.table.store.states.columns.value;\n columns.forEach((column) => {\n if (column.isColumnGroup) {\n flattenColumns.push.apply(flattenColumns, column.columns);\n } else {\n flattenColumns.push(column);\n }\n });\n return flattenColumns;\n }\n updateElsHeight() {\n this.updateScrollY();\n this.notifyObservers(\"scrollable\");\n }\n headerDisplayNone(elm) {\n if (!elm)\n return true;\n let headerChild = elm;\n while (headerChild.tagName !== \"DIV\") {\n if (getComputedStyle(headerChild).display === \"none\") {\n return true;\n }\n headerChild = headerChild.parentElement;\n }\n return false;\n }\n updateColumnsWidth() {\n if (!isClient)\n return;\n const fit = this.fit;\n const bodyWidth = this.table.vnode.el.clientWidth;\n let bodyMinWidth = 0;\n const flattenColumns = this.getFlattenColumns();\n const flexColumns = flattenColumns.filter((column) => typeof column.width !== \"number\");\n flattenColumns.forEach((column) => {\n if (typeof column.width === \"number\" && column.realWidth)\n column.realWidth = null;\n });\n if (flexColumns.length > 0 && fit) {\n flattenColumns.forEach((column) => {\n bodyMinWidth += Number(column.width || column.minWidth || 80);\n });\n if (bodyMinWidth <= bodyWidth) {\n this.scrollX.value = false;\n const totalFlexWidth = bodyWidth - bodyMinWidth;\n if (flexColumns.length === 1) {\n flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth;\n } else {\n const allColumnsWidth = flexColumns.reduce((prev, column) => prev + Number(column.minWidth || 80), 0);\n const flexWidthPerPixel = totalFlexWidth / allColumnsWidth;\n let noneFirstWidth = 0;\n flexColumns.forEach((column, index) => {\n if (index === 0)\n return;\n const flexWidth = Math.floor(Number(column.minWidth || 80) * flexWidthPerPixel);\n noneFirstWidth += flexWidth;\n column.realWidth = Number(column.minWidth || 80) + flexWidth;\n });\n flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;\n }\n } else {\n this.scrollX.value = true;\n flexColumns.forEach((column) => {\n column.realWidth = Number(column.minWidth);\n });\n }\n this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth);\n this.table.state.resizeState.value.width = this.bodyWidth.value;\n } else {\n flattenColumns.forEach((column) => {\n if (!column.width && !column.minWidth) {\n column.realWidth = 80;\n } else {\n column.realWidth = Number(column.width || column.minWidth);\n }\n bodyMinWidth += column.realWidth;\n });\n this.scrollX.value = bodyMinWidth > bodyWidth;\n this.bodyWidth.value = bodyMinWidth;\n }\n const fixedColumns = this.store.states.fixedColumns.value;\n if (fixedColumns.length > 0) {\n let fixedWidth = 0;\n fixedColumns.forEach((column) => {\n fixedWidth += Number(column.realWidth || column.width);\n });\n this.fixedWidth.value = fixedWidth;\n }\n const rightFixedColumns = this.store.states.rightFixedColumns.value;\n if (rightFixedColumns.length > 0) {\n let rightFixedWidth = 0;\n rightFixedColumns.forEach((column) => {\n rightFixedWidth += Number(column.realWidth || column.width);\n });\n this.rightFixedWidth.value = rightFixedWidth;\n }\n this.notifyObservers(\"columns\");\n }\n addObserver(observer) {\n this.observers.push(observer);\n }\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index !== -1) {\n this.observers.splice(index, 1);\n }\n }\n notifyObservers(event) {\n const observers = this.observers;\n observers.forEach((observer) => {\n var _a, _b;\n switch (event) {\n case \"columns\":\n (_a = observer.state) == null ? void 0 : _a.onColumnsChange(this);\n break;\n case \"scrollable\":\n (_b = observer.state) == null ? void 0 : _b.onScrollableChange(this);\n break;\n default:\n throw new Error(`Table Layout don't have event ${event}.`);\n }\n });\n }\n}\n\nexport { TableLayout as default };\n//# sourceMappingURL=table-layout.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, watch, resolveComponent, resolveDirective, openBlock, createBlock, withCtx, createElementBlock, createElementVNode, normalizeClass, createVNode, Fragment, renderList, createTextVNode, toDisplayString, withDirectives } from 'vue';\nimport { ElCheckbox } from '../../checkbox/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ArrowDown, ArrowUp } from '@element-plus/icons-vue';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst { CheckboxGroup: ElCheckboxGroup } = ElCheckbox;\nconst _sfc_main = defineComponent({\n name: \"ElTableFilterPanel\",\n components: {\n ElCheckbox,\n ElCheckboxGroup,\n ElScrollbar,\n ElTooltip,\n ElIcon,\n ArrowDown,\n ArrowUp\n },\n directives: { ClickOutside },\n props: {\n placement: {\n type: String,\n default: \"bottom-start\"\n },\n store: {\n type: Object\n },\n column: {\n type: Object\n },\n upDataColumn: {\n type: Function\n }\n },\n setup(props) {\n const instance = getCurrentInstance();\n const { t } = useLocale();\n const ns = useNamespace(\"table-filter\");\n const parent = instance == null ? void 0 : instance.parent;\n if (!parent.filterPanels.value[props.column.id]) {\n parent.filterPanels.value[props.column.id] = instance;\n }\n const tooltipVisible = ref(false);\n const tooltip = ref(null);\n const filters = computed(() => {\n return props.column && props.column.filters;\n });\n const filterClassName = computed(() => {\n if (props.column.filterClassName) {\n return `${ns.b()} ${props.column.filterClassName}`;\n }\n return ns.b();\n });\n const filterValue = computed({\n get: () => {\n var _a;\n return (((_a = props.column) == null ? void 0 : _a.filteredValue) || [])[0];\n },\n set: (value) => {\n if (filteredValue.value) {\n if (typeof value !== \"undefined\" && value !== null) {\n filteredValue.value.splice(0, 1, value);\n } else {\n filteredValue.value.splice(0, 1);\n }\n }\n }\n });\n const filteredValue = computed({\n get() {\n if (props.column) {\n return props.column.filteredValue || [];\n }\n return [];\n },\n set(value) {\n if (props.column) {\n props.upDataColumn(\"filteredValue\", value);\n }\n }\n });\n const multiple = computed(() => {\n if (props.column) {\n return props.column.filterMultiple;\n }\n return true;\n });\n const isActive = (filter) => {\n return filter.value === filterValue.value;\n };\n const hidden = () => {\n tooltipVisible.value = false;\n };\n const showFilterPanel = (e) => {\n e.stopPropagation();\n tooltipVisible.value = !tooltipVisible.value;\n };\n const hideFilterPanel = () => {\n tooltipVisible.value = false;\n };\n const handleConfirm = () => {\n confirmFilter(filteredValue.value);\n hidden();\n };\n const handleReset = () => {\n filteredValue.value = [];\n confirmFilter(filteredValue.value);\n hidden();\n };\n const handleSelect = (_filterValue) => {\n filterValue.value = _filterValue;\n if (typeof _filterValue !== \"undefined\" && _filterValue !== null) {\n confirmFilter(filteredValue.value);\n } else {\n confirmFilter([]);\n }\n hidden();\n };\n const confirmFilter = (filteredValue2) => {\n props.store.commit(\"filterChange\", {\n column: props.column,\n values: filteredValue2\n });\n props.store.updateAllSelected();\n };\n watch(tooltipVisible, (value) => {\n if (props.column) {\n props.upDataColumn(\"filterOpened\", value);\n }\n }, {\n immediate: true\n });\n const popperPaneRef = computed(() => {\n var _a, _b;\n return (_b = (_a = tooltip.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n return {\n tooltipVisible,\n multiple,\n filterClassName,\n filteredValue,\n filterValue,\n filters,\n handleConfirm,\n handleReset,\n handleSelect,\n isActive,\n t,\n ns,\n showFilterPanel,\n hideFilterPanel,\n popperPaneRef,\n tooltip\n };\n }\n});\nconst _hoisted_1 = { key: 0 };\nconst _hoisted_2 = [\"disabled\"];\nconst _hoisted_3 = [\"label\", \"onClick\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = resolveComponent(\"el-checkbox-group\");\n const _component_el_scrollbar = resolveComponent(\"el-scrollbar\");\n const _component_arrow_up = resolveComponent(\"arrow-up\");\n const _component_arrow_down = resolveComponent(\"arrow-down\");\n const _component_el_icon = resolveComponent(\"el-icon\");\n const _component_el_tooltip = resolveComponent(\"el-tooltip\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createBlock(_component_el_tooltip, {\n ref: \"tooltip\",\n visible: _ctx.tooltipVisible,\n offset: 0,\n placement: _ctx.placement,\n \"show-arrow\": false,\n \"stop-popper-mouse-event\": false,\n teleported: \"\",\n effect: \"light\",\n pure: \"\",\n \"popper-class\": _ctx.filterClassName,\n persistent: \"\"\n }, {\n content: withCtx(() => [\n _ctx.multiple ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"content\"))\n }, [\n createVNode(_component_el_scrollbar, {\n \"wrap-class\": _ctx.ns.e(\"wrap\")\n }, {\n default: withCtx(() => [\n createVNode(_component_el_checkbox_group, {\n modelValue: _ctx.filteredValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.filteredValue = $event),\n class: normalizeClass(_ctx.ns.e(\"checkbox-group\"))\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filters, (filter) => {\n return openBlock(), createBlock(_component_el_checkbox, {\n key: filter.value,\n value: filter.value\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(filter.text), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"class\"])\n ]),\n _: 1\n }, 8, [\"wrap-class\"])\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"bottom\"))\n }, [\n createElementVNode(\"button\", {\n class: normalizeClass({ [_ctx.ns.is(\"disabled\")]: _ctx.filteredValue.length === 0 }),\n disabled: _ctx.filteredValue.length === 0,\n type: \"button\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleConfirm && _ctx.handleConfirm(...args))\n }, toDisplayString(_ctx.t(\"el.table.confirmFilter\")), 11, _hoisted_2),\n createElementVNode(\"button\", {\n type: \"button\",\n onClick: _cache[2] || (_cache[2] = (...args) => _ctx.handleReset && _ctx.handleReset(...args))\n }, toDisplayString(_ctx.t(\"el.table.resetFilter\")), 1)\n ], 2)\n ])) : (openBlock(), createElementBlock(\"ul\", {\n key: 1,\n class: normalizeClass(_ctx.ns.e(\"list\"))\n }, [\n createElementVNode(\"li\", {\n class: normalizeClass([\n _ctx.ns.e(\"list-item\"),\n {\n [_ctx.ns.is(\"active\")]: _ctx.filterValue === void 0 || _ctx.filterValue === null\n }\n ]),\n onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleSelect(null))\n }, toDisplayString(_ctx.t(\"el.table.clearFilter\")), 3),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filters, (filter) => {\n return openBlock(), createElementBlock(\"li\", {\n key: filter.value,\n class: normalizeClass([_ctx.ns.e(\"list-item\"), _ctx.ns.is(\"active\", _ctx.isActive(filter))]),\n label: filter.value,\n onClick: ($event) => _ctx.handleSelect(filter.value)\n }, toDisplayString(filter.text), 11, _hoisted_3);\n }), 128))\n ], 2))\n ]),\n default: withCtx(() => [\n withDirectives((openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\n `${_ctx.ns.namespace.value}-table__column-filter-trigger`,\n `${_ctx.ns.namespace.value}-none-outline`\n ]),\n onClick: _cache[4] || (_cache[4] = (...args) => _ctx.showFilterPanel && _ctx.showFilterPanel(...args))\n }, [\n createVNode(_component_el_icon, null, {\n default: withCtx(() => [\n _ctx.column.filterOpened ? (openBlock(), createBlock(_component_arrow_up, { key: 0 })) : (openBlock(), createBlock(_component_arrow_down, { key: 1 }))\n ]),\n _: 1\n })\n ], 2)), [\n [_directive_click_outside, _ctx.hideFilterPanel, _ctx.popperPaneRef]\n ])\n ]),\n _: 1\n }, 8, [\"visible\", \"placement\", \"popper-class\"]);\n}\nvar FilterPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"filter-panel.vue\"]]);\n\nexport { FilterPanel as default };\n//# sourceMappingURL=filter-panel.mjs.map\n","import { getCurrentInstance, onBeforeMount, onMounted, onUpdated, onUnmounted, computed } from 'vue';\n\nfunction useLayoutObserver(root) {\n const instance = getCurrentInstance();\n onBeforeMount(() => {\n tableLayout.value.addObserver(instance);\n });\n onMounted(() => {\n onColumnsChange(tableLayout.value);\n onScrollableChange(tableLayout.value);\n });\n onUpdated(() => {\n onColumnsChange(tableLayout.value);\n onScrollableChange(tableLayout.value);\n });\n onUnmounted(() => {\n tableLayout.value.removeObserver(instance);\n });\n const tableLayout = computed(() => {\n const layout = root.layout;\n if (!layout) {\n throw new Error(\"Can not find table layout.\");\n }\n return layout;\n });\n const onColumnsChange = (layout) => {\n var _a;\n const cols = ((_a = root.vnode.el) == null ? void 0 : _a.querySelectorAll(\"colgroup > col\")) || [];\n if (!cols.length)\n return;\n const flattenColumns = layout.getFlattenColumns();\n const columnsMap = {};\n flattenColumns.forEach((column) => {\n columnsMap[column.id] = column;\n });\n for (let i = 0, j = cols.length; i < j; i++) {\n const col = cols[i];\n const name = col.getAttribute(\"name\");\n const column = columnsMap[name];\n if (column) {\n col.setAttribute(\"width\", column.realWidth || column.width);\n }\n }\n };\n const onScrollableChange = (layout) => {\n var _a, _b;\n const cols = ((_a = root.vnode.el) == null ? void 0 : _a.querySelectorAll(\"colgroup > col[name=gutter]\")) || [];\n for (let i = 0, j = cols.length; i < j; i++) {\n const col = cols[i];\n col.setAttribute(\"width\", layout.scrollY.value ? layout.gutterWidth : \"0\");\n }\n const ths = ((_b = root.vnode.el) == null ? void 0 : _b.querySelectorAll(\"th.gutter\")) || [];\n for (let i = 0, j = ths.length; i < j; i++) {\n const th = ths[i];\n th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : \"0\";\n th.style.display = layout.scrollY.value ? \"\" : \"none\";\n }\n };\n return {\n tableLayout: tableLayout.value,\n onColumnsChange,\n onScrollableChange\n };\n}\n\nexport { useLayoutObserver as default };\n//# sourceMappingURL=layout-observer.mjs.map\n","const TABLE_INJECTION_KEY = Symbol(\"ElTable\");\n\nexport { TABLE_INJECTION_KEY };\n//# sourceMappingURL=tokens.mjs.map\n","import { getCurrentInstance, inject, ref } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport { isClient } from '@vueuse/core';\nimport { addClass, removeClass, hasClass } from '../../../../utils/dom/style.mjs';\nimport { isElement } from '../../../../utils/types.mjs';\n\nfunction useEvent(props, emit) {\n const instance = getCurrentInstance();\n const parent = inject(TABLE_INJECTION_KEY);\n const handleFilterClick = (event) => {\n event.stopPropagation();\n return;\n };\n const handleHeaderClick = (event, column) => {\n if (!column.filters && column.sortable) {\n handleSortClick(event, column, false);\n } else if (column.filterable && !column.sortable) {\n handleFilterClick(event);\n }\n parent == null ? void 0 : parent.emit(\"header-click\", column, event);\n };\n const handleHeaderContextMenu = (event, column) => {\n parent == null ? void 0 : parent.emit(\"header-contextmenu\", column, event);\n };\n const draggingColumn = ref(null);\n const dragging = ref(false);\n const dragState = ref({});\n const handleMouseDown = (event, column) => {\n if (!isClient)\n return;\n if (column.children && column.children.length > 0)\n return;\n if (draggingColumn.value && props.border) {\n dragging.value = true;\n const table = parent;\n emit(\"set-drag-visible\", true);\n const tableEl = table == null ? void 0 : table.vnode.el;\n const tableLeft = tableEl.getBoundingClientRect().left;\n const columnEl = instance.vnode.el.querySelector(`th.${column.id}`);\n const columnRect = columnEl.getBoundingClientRect();\n const minLeft = columnRect.left - tableLeft + 30;\n addClass(columnEl, \"noclick\");\n dragState.value = {\n startMouseLeft: event.clientX,\n startLeft: columnRect.right - tableLeft,\n startColumnLeft: columnRect.left - tableLeft,\n tableLeft\n };\n const resizeProxy = table == null ? void 0 : table.refs.resizeProxy;\n resizeProxy.style.left = `${dragState.value.startLeft}px`;\n document.onselectstart = function() {\n return false;\n };\n document.ondragstart = function() {\n return false;\n };\n const handleMouseMove2 = (event2) => {\n const deltaLeft = event2.clientX - dragState.value.startMouseLeft;\n const proxyLeft = dragState.value.startLeft + deltaLeft;\n resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`;\n };\n const handleMouseUp = () => {\n if (dragging.value) {\n const { startColumnLeft, startLeft } = dragState.value;\n const finalLeft = Number.parseInt(resizeProxy.style.left, 10);\n const columnWidth = finalLeft - startColumnLeft;\n column.width = column.realWidth = columnWidth;\n table == null ? void 0 : table.emit(\"header-dragend\", column.width, startLeft - startColumnLeft, column, event);\n requestAnimationFrame(() => {\n props.store.scheduleLayout(false, true);\n });\n document.body.style.cursor = \"\";\n dragging.value = false;\n draggingColumn.value = null;\n dragState.value = {};\n emit(\"set-drag-visible\", false);\n }\n document.removeEventListener(\"mousemove\", handleMouseMove2);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.onselectstart = null;\n document.ondragstart = null;\n setTimeout(() => {\n removeClass(columnEl, \"noclick\");\n }, 0);\n };\n document.addEventListener(\"mousemove\", handleMouseMove2);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n };\n const handleMouseMove = (event, column) => {\n if (column.children && column.children.length > 0)\n return;\n const el = event.target;\n if (!isElement(el)) {\n return;\n }\n const target = el == null ? void 0 : el.closest(\"th\");\n if (!column || !column.resizable)\n return;\n if (!dragging.value && props.border) {\n const rect = target.getBoundingClientRect();\n const bodyStyle = document.body.style;\n if (rect.width > 12 && rect.right - event.pageX < 8) {\n bodyStyle.cursor = \"col-resize\";\n if (hasClass(target, \"is-sortable\")) {\n target.style.cursor = \"col-resize\";\n }\n draggingColumn.value = column;\n } else if (!dragging.value) {\n bodyStyle.cursor = \"\";\n if (hasClass(target, \"is-sortable\")) {\n target.style.cursor = \"pointer\";\n }\n draggingColumn.value = null;\n }\n }\n };\n const handleMouseOut = () => {\n if (!isClient)\n return;\n document.body.style.cursor = \"\";\n };\n const toggleOrder = ({ order, sortOrders }) => {\n if (order === \"\")\n return sortOrders[0];\n const index = sortOrders.indexOf(order || null);\n return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];\n };\n const handleSortClick = (event, column, givenOrder) => {\n var _a;\n event.stopPropagation();\n const order = column.order === givenOrder ? null : givenOrder || toggleOrder(column);\n const target = (_a = event.target) == null ? void 0 : _a.closest(\"th\");\n if (target) {\n if (hasClass(target, \"noclick\")) {\n removeClass(target, \"noclick\");\n return;\n }\n }\n if (!column.sortable)\n return;\n const states = props.store.states;\n let sortProp = states.sortProp.value;\n let sortOrder;\n const sortingColumn = states.sortingColumn.value;\n if (sortingColumn !== column || sortingColumn === column && sortingColumn.order === null) {\n if (sortingColumn) {\n sortingColumn.order = null;\n }\n states.sortingColumn.value = column;\n sortProp = column.property;\n }\n if (!order) {\n sortOrder = column.order = null;\n } else {\n sortOrder = column.order = order;\n }\n states.sortProp.value = sortProp;\n states.sortOrder.value = sortOrder;\n parent == null ? void 0 : parent.store.commit(\"changeSortCondition\");\n };\n return {\n handleHeaderClick,\n handleHeaderContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleMouseOut,\n handleSortClick,\n handleFilterClick\n };\n}\n\nexport { useEvent as default };\n//# sourceMappingURL=event-helper.mjs.map\n","import { inject } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { getFixedColumnOffset, ensurePosition, getFixedColumnsClass } from '../util.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nfunction useStyle(props) {\n const parent = inject(TABLE_INJECTION_KEY);\n const ns = useNamespace(\"table\");\n const getHeaderRowStyle = (rowIndex) => {\n const headerRowStyle = parent == null ? void 0 : parent.props.headerRowStyle;\n if (typeof headerRowStyle === \"function\") {\n return headerRowStyle.call(null, { rowIndex });\n }\n return headerRowStyle;\n };\n const getHeaderRowClass = (rowIndex) => {\n const classes = [];\n const headerRowClassName = parent == null ? void 0 : parent.props.headerRowClassName;\n if (typeof headerRowClassName === \"string\") {\n classes.push(headerRowClassName);\n } else if (typeof headerRowClassName === \"function\") {\n classes.push(headerRowClassName.call(null, { rowIndex }));\n }\n return classes.join(\" \");\n };\n const getHeaderCellStyle = (rowIndex, columnIndex, row, column) => {\n var _a;\n let headerCellStyles = (_a = parent == null ? void 0 : parent.props.headerCellStyle) != null ? _a : {};\n if (typeof headerCellStyles === \"function\") {\n headerCellStyles = headerCellStyles.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n });\n }\n const fixedStyle = getFixedColumnOffset(columnIndex, column.fixed, props.store, row);\n ensurePosition(fixedStyle, \"left\");\n ensurePosition(fixedStyle, \"right\");\n return Object.assign({}, headerCellStyles, fixedStyle);\n };\n const getHeaderCellClass = (rowIndex, columnIndex, row, column) => {\n const fixedClasses = getFixedColumnsClass(ns.b(), columnIndex, column.fixed, props.store, row);\n const classes = [\n column.id,\n column.order,\n column.headerAlign,\n column.className,\n column.labelClassName,\n ...fixedClasses\n ];\n if (!column.children) {\n classes.push(\"is-leaf\");\n }\n if (column.sortable) {\n classes.push(\"is-sortable\");\n }\n const headerCellClassName = parent == null ? void 0 : parent.props.headerCellClassName;\n if (typeof headerCellClassName === \"string\") {\n classes.push(headerCellClassName);\n } else if (typeof headerCellClassName === \"function\") {\n classes.push(headerCellClassName.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n }));\n }\n classes.push(ns.e(\"cell\"));\n return classes.filter((className) => Boolean(className)).join(\" \");\n };\n return {\n getHeaderRowStyle,\n getHeaderRowClass,\n getHeaderCellStyle,\n getHeaderCellClass\n };\n}\n\nexport { useStyle as default };\n//# sourceMappingURL=style.helper.mjs.map\n","import { inject, computed } from 'vue';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\n\nconst getAllColumns = (columns) => {\n const result = [];\n columns.forEach((column) => {\n if (column.children) {\n result.push(column);\n result.push.apply(result, getAllColumns(column.children));\n } else {\n result.push(column);\n }\n });\n return result;\n};\nconst convertToRows = (originColumns) => {\n let maxLevel = 1;\n const traverse = (column, parent) => {\n if (parent) {\n column.level = parent.level + 1;\n if (maxLevel < column.level) {\n maxLevel = column.level;\n }\n }\n if (column.children) {\n let colSpan = 0;\n column.children.forEach((subColumn) => {\n traverse(subColumn, column);\n colSpan += subColumn.colSpan;\n });\n column.colSpan = colSpan;\n } else {\n column.colSpan = 1;\n }\n };\n originColumns.forEach((column) => {\n column.level = 1;\n traverse(column, void 0);\n });\n const rows = [];\n for (let i = 0; i < maxLevel; i++) {\n rows.push([]);\n }\n const allColumns = getAllColumns(originColumns);\n allColumns.forEach((column) => {\n if (!column.children) {\n column.rowSpan = maxLevel - column.level + 1;\n } else {\n column.rowSpan = 1;\n column.children.forEach((col) => col.isSubColumn = true);\n }\n rows[column.level - 1].push(column);\n });\n return rows;\n};\nfunction useUtils(props) {\n const parent = inject(TABLE_INJECTION_KEY);\n const columnRows = computed(() => {\n return convertToRows(props.store.states.originColumns.value);\n });\n const isGroup = computed(() => {\n const result = columnRows.value.length > 1;\n if (result && parent) {\n parent.state.isGroup.value = true;\n }\n return result;\n });\n const toggleAllSelection = (event) => {\n event.stopPropagation();\n parent == null ? void 0 : parent.store.commit(\"toggleAllSelection\");\n };\n return {\n isGroup,\n toggleAllSelection,\n columnRows\n };\n}\n\nexport { useUtils as default };\n//# sourceMappingURL=utils-helper.mjs.map\n","import { defineComponent, getCurrentInstance, inject, ref, onMounted, nextTick, h } from 'vue';\nimport { ElCheckbox } from '../../../checkbox/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport FilterPanel from '../filter-panel.mjs';\nimport useLayoutObserver from '../layout-observer.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport useEvent from './event-helper.mjs';\nimport useStyle from './style.helper.mjs';\nimport useUtils from './utils-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nvar TableHeader = defineComponent({\n name: \"ElTableHeader\",\n components: {\n ElCheckbox\n },\n props: {\n fixed: {\n type: String,\n default: \"\"\n },\n store: {\n required: true,\n type: Object\n },\n border: Boolean,\n defaultSort: {\n type: Object,\n default: () => {\n return {\n prop: \"\",\n order: \"\"\n };\n }\n }\n },\n setup(props, { emit }) {\n const instance = getCurrentInstance();\n const parent = inject(TABLE_INJECTION_KEY);\n const ns = useNamespace(\"table\");\n const filterPanels = ref({});\n const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent);\n onMounted(async () => {\n await nextTick();\n await nextTick();\n const { prop, order } = props.defaultSort;\n parent == null ? void 0 : parent.store.commit(\"sort\", { prop, order, init: true });\n });\n const {\n handleHeaderClick,\n handleHeaderContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleMouseOut,\n handleSortClick,\n handleFilterClick\n } = useEvent(props, emit);\n const {\n getHeaderRowStyle,\n getHeaderRowClass,\n getHeaderCellStyle,\n getHeaderCellClass\n } = useStyle(props);\n const { isGroup, toggleAllSelection, columnRows } = useUtils(props);\n instance.state = {\n onColumnsChange,\n onScrollableChange\n };\n instance.filterPanels = filterPanels;\n return {\n ns,\n filterPanels,\n onColumnsChange,\n onScrollableChange,\n columnRows,\n getHeaderRowClass,\n getHeaderRowStyle,\n getHeaderCellClass,\n getHeaderCellStyle,\n handleHeaderClick,\n handleHeaderContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleMouseOut,\n handleSortClick,\n handleFilterClick,\n isGroup,\n toggleAllSelection\n };\n },\n render() {\n const {\n ns,\n isGroup,\n columnRows,\n getHeaderCellStyle,\n getHeaderCellClass,\n getHeaderRowClass,\n getHeaderRowStyle,\n handleHeaderClick,\n handleHeaderContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleSortClick,\n handleMouseOut,\n store,\n $parent\n } = this;\n let rowSpan = 1;\n return h(\"thead\", {\n class: { [ns.is(\"group\")]: isGroup }\n }, columnRows.map((subColumns, rowIndex) => h(\"tr\", {\n class: getHeaderRowClass(rowIndex),\n key: rowIndex,\n style: getHeaderRowStyle(rowIndex)\n }, subColumns.map((column, cellIndex) => {\n if (column.rowSpan > rowSpan) {\n rowSpan = column.rowSpan;\n }\n return h(\"th\", {\n class: getHeaderCellClass(rowIndex, cellIndex, subColumns, column),\n colspan: column.colSpan,\n key: `${column.id}-thead`,\n rowspan: column.rowSpan,\n style: getHeaderCellStyle(rowIndex, cellIndex, subColumns, column),\n onClick: ($event) => handleHeaderClick($event, column),\n onContextmenu: ($event) => handleHeaderContextMenu($event, column),\n onMousedown: ($event) => handleMouseDown($event, column),\n onMousemove: ($event) => handleMouseMove($event, column),\n onMouseout: handleMouseOut\n }, [\n h(\"div\", {\n class: [\n \"cell\",\n column.filteredValue && column.filteredValue.length > 0 ? \"highlight\" : \"\"\n ]\n }, [\n column.renderHeader ? column.renderHeader({\n column,\n $index: cellIndex,\n store,\n _self: $parent\n }) : column.label,\n column.sortable && h(\"span\", {\n onClick: ($event) => handleSortClick($event, column),\n class: \"caret-wrapper\"\n }, [\n h(\"i\", {\n onClick: ($event) => handleSortClick($event, column, \"ascending\"),\n class: \"sort-caret ascending\"\n }),\n h(\"i\", {\n onClick: ($event) => handleSortClick($event, column, \"descending\"),\n class: \"sort-caret descending\"\n })\n ]),\n column.filterable && h(FilterPanel, {\n store,\n placement: column.filterPlacement || \"bottom-start\",\n column,\n upDataColumn: (key, value) => {\n column[key] = value;\n }\n })\n ])\n ]);\n }))));\n }\n});\n\nexport { TableHeader as default };\n//# sourceMappingURL=index.mjs.map\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import { inject, ref, h } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport '../../../../utils/index.mjs';\nimport { getCell, getColumnByCell, createTablePopper } from '../util.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport { addClass, hasClass, removeClass } from '../../../../utils/dom/style.mjs';\n\nfunction isGreaterThan(a, b, epsilon = 0.01) {\n return a - b > epsilon;\n}\nfunction useEvents(props) {\n const parent = inject(TABLE_INJECTION_KEY);\n const tooltipContent = ref(\"\");\n const tooltipTrigger = ref(h(\"div\"));\n const handleEvent = (event, row, name) => {\n var _a;\n const table = parent;\n const cell = getCell(event);\n let column;\n const namespace = (_a = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a.dataset.prefix;\n if (cell) {\n column = getColumnByCell({\n columns: props.store.states.columns.value\n }, cell, namespace);\n if (column) {\n table == null ? void 0 : table.emit(`cell-${name}`, row, column, cell, event);\n }\n }\n table == null ? void 0 : table.emit(`row-${name}`, row, column, event);\n };\n const handleDoubleClick = (event, row) => {\n handleEvent(event, row, \"dblclick\");\n };\n const handleClick = (event, row) => {\n props.store.commit(\"setCurrentRow\", row);\n handleEvent(event, row, \"click\");\n };\n const handleContextMenu = (event, row) => {\n handleEvent(event, row, \"contextmenu\");\n };\n const handleMouseEnter = debounce((index) => {\n props.store.commit(\"setHoverRow\", index);\n }, 30);\n const handleMouseLeave = debounce(() => {\n props.store.commit(\"setHoverRow\", null);\n }, 30);\n const getPadding = (el) => {\n const style = window.getComputedStyle(el, null);\n const paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0;\n const paddingRight = Number.parseInt(style.paddingRight, 10) || 0;\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0;\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0;\n return {\n left: paddingLeft,\n right: paddingRight,\n top: paddingTop,\n bottom: paddingBottom\n };\n };\n const toggleRowClassByCell = (rowSpan, event, toggle) => {\n let node = event.target.parentNode;\n while (rowSpan > 1) {\n node = node == null ? void 0 : node.nextSibling;\n if (!node || node.nodeName !== \"TR\")\n break;\n toggle(node, \"hover-row hover-fixed-row\");\n rowSpan--;\n }\n };\n const handleCellMouseEnter = (event, row, tooltipOptions) => {\n var _a;\n const table = parent;\n const cell = getCell(event);\n const namespace = (_a = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a.dataset.prefix;\n if (cell) {\n const column = getColumnByCell({\n columns: props.store.states.columns.value\n }, cell, namespace);\n if (cell.rowSpan > 1) {\n toggleRowClassByCell(cell.rowSpan, event, addClass);\n }\n const hoverState = table.hoverState = { cell, column, row };\n table == null ? void 0 : table.emit(\"cell-mouse-enter\", hoverState.row, hoverState.column, hoverState.cell, event);\n }\n if (!tooltipOptions) {\n return;\n }\n const cellChild = event.target.querySelector(\".cell\");\n if (!(hasClass(cellChild, `${namespace}-tooltip`) && cellChild.childNodes.length)) {\n return;\n }\n const range = document.createRange();\n range.setStart(cellChild, 0);\n range.setEnd(cellChild, cellChild.childNodes.length);\n let { width: rangeWidth, height: rangeHeight } = range.getBoundingClientRect();\n const offsetWidth = rangeWidth - Math.floor(rangeWidth);\n const { width: cellChildWidth, height: cellChildHeight } = cellChild.getBoundingClientRect();\n if (offsetWidth < 1e-3) {\n rangeWidth = Math.floor(rangeWidth);\n }\n const offsetHeight = rangeHeight - Math.floor(rangeHeight);\n if (offsetHeight < 1e-3) {\n rangeHeight = Math.floor(rangeHeight);\n }\n const { top, left, right, bottom } = getPadding(cellChild);\n const horizontalPadding = left + right;\n const verticalPadding = top + bottom;\n if (isGreaterThan(rangeWidth + horizontalPadding, cellChildWidth) || isGreaterThan(rangeHeight + verticalPadding, cellChildHeight) || isGreaterThan(cellChild.scrollWidth, cellChildWidth)) {\n createTablePopper(tooltipOptions, cell.innerText || cell.textContent, cell, table);\n }\n };\n const handleCellMouseLeave = (event) => {\n const cell = getCell(event);\n if (!cell)\n return;\n if (cell.rowSpan > 1) {\n toggleRowClassByCell(cell.rowSpan, event, removeClass);\n }\n const oldHoverState = parent == null ? void 0 : parent.hoverState;\n parent == null ? void 0 : parent.emit(\"cell-mouse-leave\", oldHoverState == null ? void 0 : oldHoverState.row, oldHoverState == null ? void 0 : oldHoverState.column, oldHoverState == null ? void 0 : oldHoverState.cell, event);\n };\n return {\n handleDoubleClick,\n handleClick,\n handleContextMenu,\n handleMouseEnter,\n handleMouseLeave,\n handleCellMouseEnter,\n handleCellMouseLeave,\n tooltipContent,\n tooltipTrigger\n };\n}\n\nexport { useEvents as default };\n//# sourceMappingURL=events-helper.mjs.map\n","import { inject } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { getFixedColumnOffset, ensurePosition, getFixedColumnsClass } from '../util.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nfunction useStyles(props) {\n const parent = inject(TABLE_INJECTION_KEY);\n const ns = useNamespace(\"table\");\n const getRowStyle = (row, rowIndex) => {\n const rowStyle = parent == null ? void 0 : parent.props.rowStyle;\n if (typeof rowStyle === \"function\") {\n return rowStyle.call(null, {\n row,\n rowIndex\n });\n }\n return rowStyle || null;\n };\n const getRowClass = (row, rowIndex) => {\n const classes = [ns.e(\"row\")];\n if ((parent == null ? void 0 : parent.props.highlightCurrentRow) && row === props.store.states.currentRow.value) {\n classes.push(\"current-row\");\n }\n if (props.stripe && rowIndex % 2 === 1) {\n classes.push(ns.em(\"row\", \"striped\"));\n }\n const rowClassName = parent == null ? void 0 : parent.props.rowClassName;\n if (typeof rowClassName === \"string\") {\n classes.push(rowClassName);\n } else if (typeof rowClassName === \"function\") {\n classes.push(rowClassName.call(null, {\n row,\n rowIndex\n }));\n }\n return classes;\n };\n const getCellStyle = (rowIndex, columnIndex, row, column) => {\n const cellStyle = parent == null ? void 0 : parent.props.cellStyle;\n let cellStyles = cellStyle != null ? cellStyle : {};\n if (typeof cellStyle === \"function\") {\n cellStyles = cellStyle.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n });\n }\n const fixedStyle = getFixedColumnOffset(columnIndex, props == null ? void 0 : props.fixed, props.store);\n ensurePosition(fixedStyle, \"left\");\n ensurePosition(fixedStyle, \"right\");\n return Object.assign({}, cellStyles, fixedStyle);\n };\n const getCellClass = (rowIndex, columnIndex, row, column, offset) => {\n const fixedClasses = getFixedColumnsClass(ns.b(), columnIndex, props == null ? void 0 : props.fixed, props.store, void 0, offset);\n const classes = [column.id, column.align, column.className, ...fixedClasses];\n const cellClassName = parent == null ? void 0 : parent.props.cellClassName;\n if (typeof cellClassName === \"string\") {\n classes.push(cellClassName);\n } else if (typeof cellClassName === \"function\") {\n classes.push(cellClassName.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n }));\n }\n classes.push(ns.e(\"cell\"));\n return classes.filter((className) => Boolean(className)).join(\" \");\n };\n const getSpan = (row, column, rowIndex, columnIndex) => {\n let rowspan = 1;\n let colspan = 1;\n const fn = parent == null ? void 0 : parent.props.spanMethod;\n if (typeof fn === \"function\") {\n const result = fn({\n row,\n column,\n rowIndex,\n columnIndex\n });\n if (Array.isArray(result)) {\n rowspan = result[0];\n colspan = result[1];\n } else if (typeof result === \"object\") {\n rowspan = result.rowspan;\n colspan = result.colspan;\n }\n }\n return { rowspan, colspan };\n };\n const getColspanRealWidth = (columns, colspan, index) => {\n if (colspan < 1) {\n return columns[index].realWidth;\n }\n const widthArr = columns.map(({ realWidth, width }) => realWidth || width).slice(index, index + colspan);\n return Number(widthArr.reduce((acc, width) => Number(acc) + Number(width), -1));\n };\n return {\n getRowStyle,\n getRowClass,\n getCellStyle,\n getCellClass,\n getSpan,\n getColspanRealWidth\n };\n}\n\nexport { useStyles as default };\n//# sourceMappingURL=styles-helper.mjs.map\n","import { inject, computed, h } from 'vue';\nimport { merge } from 'lodash-unified';\nimport '../../../../hooks/index.mjs';\nimport { getRowIdentity } from '../util.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport useEvents from './events-helper.mjs';\nimport useStyles from './styles-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nfunction useRender(props) {\n const parent = inject(TABLE_INJECTION_KEY);\n const ns = useNamespace(\"table\");\n const {\n handleDoubleClick,\n handleClick,\n handleContextMenu,\n handleMouseEnter,\n handleMouseLeave,\n handleCellMouseEnter,\n handleCellMouseLeave,\n tooltipContent,\n tooltipTrigger\n } = useEvents(props);\n const {\n getRowStyle,\n getRowClass,\n getCellStyle,\n getCellClass,\n getSpan,\n getColspanRealWidth\n } = useStyles(props);\n const firstDefaultColumnIndex = computed(() => {\n return props.store.states.columns.value.findIndex(({ type }) => type === \"default\");\n });\n const getKeyOfRow = (row, index) => {\n const rowKey = parent.props.rowKey;\n if (rowKey) {\n return getRowIdentity(row, rowKey);\n }\n return index;\n };\n const rowRender = (row, $index, treeRowData, expanded = false) => {\n const { tooltipEffect, tooltipOptions, store } = props;\n const { indent, columns } = store.states;\n const rowClasses = getRowClass(row, $index);\n let display = true;\n if (treeRowData) {\n rowClasses.push(ns.em(\"row\", `level-${treeRowData.level}`));\n display = treeRowData.display;\n }\n const displayStyle = display ? null : {\n display: \"none\"\n };\n return h(\"tr\", {\n style: [displayStyle, getRowStyle(row, $index)],\n class: rowClasses,\n key: getKeyOfRow(row, $index),\n onDblclick: ($event) => handleDoubleClick($event, row),\n onClick: ($event) => handleClick($event, row),\n onContextmenu: ($event) => handleContextMenu($event, row),\n onMouseenter: () => handleMouseEnter($index),\n onMouseleave: handleMouseLeave\n }, columns.value.map((column, cellIndex) => {\n const { rowspan, colspan } = getSpan(row, column, $index, cellIndex);\n if (!rowspan || !colspan) {\n return null;\n }\n const columnData = Object.assign({}, column);\n columnData.realWidth = getColspanRealWidth(columns.value, colspan, cellIndex);\n const data = {\n store: props.store,\n _self: props.context || parent,\n column: columnData,\n row,\n $index,\n cellIndex,\n expanded\n };\n if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {\n data.treeNode = {\n indent: treeRowData.level * indent.value,\n level: treeRowData.level\n };\n if (typeof treeRowData.expanded === \"boolean\") {\n data.treeNode.expanded = treeRowData.expanded;\n if (\"loading\" in treeRowData) {\n data.treeNode.loading = treeRowData.loading;\n }\n if (\"noLazyChildren\" in treeRowData) {\n data.treeNode.noLazyChildren = treeRowData.noLazyChildren;\n }\n }\n }\n const baseKey = `${getKeyOfRow(row, $index)},${cellIndex}`;\n const patchKey = columnData.columnKey || columnData.rawColumnKey || \"\";\n const tdChildren = cellChildren(cellIndex, column, data);\n const mergedTooltipOptions = column.showOverflowTooltip && merge({\n effect: tooltipEffect\n }, tooltipOptions, column.showOverflowTooltip);\n return h(\"td\", {\n style: getCellStyle($index, cellIndex, row, column),\n class: getCellClass($index, cellIndex, row, column, colspan - 1),\n key: `${patchKey}${baseKey}`,\n rowspan,\n colspan,\n onMouseenter: ($event) => handleCellMouseEnter($event, row, mergedTooltipOptions),\n onMouseleave: handleCellMouseLeave\n }, [tdChildren]);\n }));\n };\n const cellChildren = (cellIndex, column, data) => {\n return column.renderCell(data);\n };\n const wrappedRowRender = (row, $index) => {\n const store = props.store;\n const { isRowExpanded, assertRowKey } = store;\n const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } = store.states;\n const columns = store.states.columns.value;\n const hasExpandColumn = columns.some(({ type }) => type === \"expand\");\n if (hasExpandColumn) {\n const expanded = isRowExpanded(row);\n const tr = rowRender(row, $index, void 0, expanded);\n const renderExpanded = parent.renderExpanded;\n if (expanded) {\n if (!renderExpanded) {\n console.error(\"[Element Error]renderExpanded is required.\");\n return tr;\n }\n return [\n [\n tr,\n h(\"tr\", {\n key: `expanded-row__${tr.key}`\n }, [\n h(\"td\", {\n colspan: columns.length,\n class: `${ns.e(\"cell\")} ${ns.e(\"expanded-cell\")}`\n }, [renderExpanded({ row, $index, store, expanded })])\n ])\n ]\n ];\n } else {\n return [[tr]];\n }\n } else if (Object.keys(treeData.value).length) {\n assertRowKey();\n const key = getRowIdentity(row, rowKey.value);\n let cur = treeData.value[key];\n let treeRowData = null;\n if (cur) {\n treeRowData = {\n expanded: cur.expanded,\n level: cur.level,\n display: true\n };\n if (typeof cur.lazy === \"boolean\") {\n if (typeof cur.loaded === \"boolean\" && cur.loaded) {\n treeRowData.noLazyChildren = !(cur.children && cur.children.length);\n }\n treeRowData.loading = cur.loading;\n }\n }\n const tmp = [rowRender(row, $index, treeRowData)];\n if (cur) {\n let i = 0;\n const traverse = (children, parent2) => {\n if (!(children && children.length && parent2))\n return;\n children.forEach((node) => {\n const innerTreeRowData = {\n display: parent2.display && parent2.expanded,\n level: parent2.level + 1,\n expanded: false,\n noLazyChildren: false,\n loading: false\n };\n const childKey = getRowIdentity(node, rowKey.value);\n if (childKey === void 0 || childKey === null) {\n throw new Error(\"For nested data item, row-key is required.\");\n }\n cur = { ...treeData.value[childKey] };\n if (cur) {\n innerTreeRowData.expanded = cur.expanded;\n cur.level = cur.level || innerTreeRowData.level;\n cur.display = !!(cur.expanded && innerTreeRowData.display);\n if (typeof cur.lazy === \"boolean\") {\n if (typeof cur.loaded === \"boolean\" && cur.loaded) {\n innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length);\n }\n innerTreeRowData.loading = cur.loading;\n }\n }\n i++;\n tmp.push(rowRender(node, $index + i, innerTreeRowData));\n if (cur) {\n const nodes2 = lazyTreeNodeMap.value[childKey] || node[childrenColumnName.value];\n traverse(nodes2, cur);\n }\n });\n };\n cur.display = true;\n const nodes = lazyTreeNodeMap.value[key] || row[childrenColumnName.value];\n traverse(nodes, cur);\n }\n return tmp;\n } else {\n return rowRender(row, $index, void 0);\n }\n };\n return {\n wrappedRowRender,\n tooltipContent,\n tooltipTrigger\n };\n}\n\nexport { useRender as default };\n//# sourceMappingURL=render-helper.mjs.map\n","const defaultProps = {\n store: {\n required: true,\n type: Object\n },\n stripe: Boolean,\n tooltipEffect: String,\n tooltipOptions: {\n type: Object\n },\n context: {\n default: () => ({}),\n type: Object\n },\n rowClassName: [String, Function],\n rowStyle: [Object, Function],\n fixed: {\n type: String,\n default: \"\"\n },\n highlight: Boolean\n};\n\nexport { defaultProps as default };\n//# sourceMappingURL=defaults.mjs.map\n","import { defineComponent, getCurrentInstance, inject, watch, onUnmounted, h } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport useLayoutObserver from '../layout-observer.mjs';\nimport { removePopper } from '../util.mjs';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\nimport useRender from './render-helper.mjs';\nimport defaultProps from './defaults.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { addClass, removeClass } from '../../../../utils/dom/style.mjs';\nimport { isClient } from '@vueuse/core';\nimport { rAF } from '../../../../utils/raf.mjs';\n\nvar TableBody = defineComponent({\n name: \"ElTableBody\",\n props: defaultProps,\n setup(props) {\n const instance = getCurrentInstance();\n const parent = inject(TABLE_INJECTION_KEY);\n const ns = useNamespace(\"table\");\n const { wrappedRowRender, tooltipContent, tooltipTrigger } = useRender(props);\n const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent);\n const hoveredCellList = [];\n watch(props.store.states.hoverRow, (newVal, oldVal) => {\n var _a;\n const el = instance == null ? void 0 : instance.vnode.el;\n const rows = Array.from((el == null ? void 0 : el.children) || []).filter((e) => e == null ? void 0 : e.classList.contains(`${ns.e(\"row\")}`));\n let rowNum = newVal;\n const childNodes = (_a = rows[rowNum]) == null ? void 0 : _a.childNodes;\n if (childNodes == null ? void 0 : childNodes.length) {\n let control = 0;\n const indexes = Array.from(childNodes).reduce((acc, item, index) => {\n var _a2, _b;\n if (((_a2 = childNodes[index]) == null ? void 0 : _a2.colSpan) > 1) {\n control = (_b = childNodes[index]) == null ? void 0 : _b.colSpan;\n }\n if (item.nodeName !== \"TD\" && control === 0) {\n acc.push(index);\n }\n control > 0 && control--;\n return acc;\n }, []);\n indexes.forEach((rowIndex) => {\n var _a2;\n rowNum = newVal;\n while (rowNum > 0) {\n const preChildNodes = (_a2 = rows[rowNum - 1]) == null ? void 0 : _a2.childNodes;\n if (preChildNodes[rowIndex] && preChildNodes[rowIndex].nodeName === \"TD\" && preChildNodes[rowIndex].rowSpan > 1) {\n addClass(preChildNodes[rowIndex], \"hover-cell\");\n hoveredCellList.push(preChildNodes[rowIndex]);\n break;\n }\n rowNum--;\n }\n });\n } else {\n hoveredCellList.forEach((item) => removeClass(item, \"hover-cell\"));\n hoveredCellList.length = 0;\n }\n if (!props.store.states.isComplex.value || !isClient)\n return;\n rAF(() => {\n const oldRow = rows[oldVal];\n const newRow = rows[newVal];\n if (oldRow && !oldRow.classList.contains(\"hover-fixed-row\")) {\n removeClass(oldRow, \"hover-row\");\n }\n if (newRow) {\n addClass(newRow, \"hover-row\");\n }\n });\n });\n onUnmounted(() => {\n var _a;\n (_a = removePopper) == null ? void 0 : _a();\n });\n return {\n ns,\n onColumnsChange,\n onScrollableChange,\n wrappedRowRender,\n tooltipContent,\n tooltipTrigger\n };\n },\n render() {\n const { wrappedRowRender, store } = this;\n const data = store.states.data.value || [];\n return h(\"tbody\", { tabIndex: -1 }, [\n data.reduce((acc, row) => {\n return acc.concat(wrappedRowRender(row, acc.length));\n }, [])\n ]);\n }\n});\n\nexport { TableBody as default };\n//# sourceMappingURL=index.mjs.map\n","import { inject, computed } from 'vue';\nimport { TABLE_INJECTION_KEY } from '../tokens.mjs';\n\nfunction useMapState() {\n const table = inject(TABLE_INJECTION_KEY);\n const store = table == null ? void 0 : table.store;\n const leftFixedLeafCount = computed(() => {\n return store.states.fixedLeafColumnsLength.value;\n });\n const rightFixedLeafCount = computed(() => {\n return store.states.rightFixedColumns.value.length;\n });\n const columnsCount = computed(() => {\n return store.states.columns.value.length;\n });\n const leftFixedCount = computed(() => {\n return store.states.fixedColumns.value.length;\n });\n const rightFixedCount = computed(() => {\n return store.states.rightFixedColumns.value.length;\n });\n return {\n leftFixedLeafCount,\n rightFixedLeafCount,\n columnsCount,\n leftFixedCount,\n rightFixedCount,\n columns: store.states.columns\n };\n}\n\nexport { useMapState as default };\n//# sourceMappingURL=mapState-helper.mjs.map\n","import '../../../../hooks/index.mjs';\nimport { getFixedColumnsClass, getFixedColumnOffset, ensurePosition } from '../util.mjs';\nimport useMapState from './mapState-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nfunction useStyle(props) {\n const { columns } = useMapState();\n const ns = useNamespace(\"table\");\n const getCellClasses = (columns2, cellIndex) => {\n const column = columns2[cellIndex];\n const classes = [\n ns.e(\"cell\"),\n column.id,\n column.align,\n column.labelClassName,\n ...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props.store)\n ];\n if (column.className) {\n classes.push(column.className);\n }\n if (!column.children) {\n classes.push(ns.is(\"leaf\"));\n }\n return classes;\n };\n const getCellStyles = (column, cellIndex) => {\n const fixedStyle = getFixedColumnOffset(cellIndex, column.fixed, props.store);\n ensurePosition(fixedStyle, \"left\");\n ensurePosition(fixedStyle, \"right\");\n return fixedStyle;\n };\n return {\n getCellClasses,\n getCellStyles,\n columns\n };\n}\n\nexport { useStyle as default };\n//# sourceMappingURL=style-helper.mjs.map\n","import { defineComponent, h } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport useStyle from './style-helper.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\n\nvar TableFooter = defineComponent({\n name: \"ElTableFooter\",\n props: {\n fixed: {\n type: String,\n default: \"\"\n },\n store: {\n required: true,\n type: Object\n },\n summaryMethod: Function,\n sumText: String,\n border: Boolean,\n defaultSort: {\n type: Object,\n default: () => {\n return {\n prop: \"\",\n order: \"\"\n };\n }\n }\n },\n setup(props) {\n const { getCellClasses, getCellStyles, columns } = useStyle(props);\n const ns = useNamespace(\"table\");\n return {\n ns,\n getCellClasses,\n getCellStyles,\n columns\n };\n },\n render() {\n const { columns, getCellStyles, getCellClasses, summaryMethod, sumText } = this;\n const data = this.store.states.data.value;\n let sums = [];\n if (summaryMethod) {\n sums = summaryMethod({\n columns,\n data\n });\n } else {\n columns.forEach((column, index) => {\n if (index === 0) {\n sums[index] = sumText;\n return;\n }\n const values = data.map((item) => Number(item[column.property]));\n const precisions = [];\n let notNumber = true;\n values.forEach((value) => {\n if (!Number.isNaN(+value)) {\n notNumber = false;\n const decimal = `${value}`.split(\".\")[1];\n precisions.push(decimal ? decimal.length : 0);\n }\n });\n const precision = Math.max.apply(null, precisions);\n if (!notNumber) {\n sums[index] = values.reduce((prev, curr) => {\n const value = Number(curr);\n if (!Number.isNaN(+value)) {\n return Number.parseFloat((prev + curr).toFixed(Math.min(precision, 20)));\n } else {\n return prev;\n }\n }, 0);\n } else {\n sums[index] = \"\";\n }\n });\n }\n return h(h(\"tfoot\", [\n h(\"tr\", {}, [\n ...columns.map((column, cellIndex) => h(\"td\", {\n key: cellIndex,\n colspan: column.colSpan,\n rowspan: column.rowSpan,\n class: getCellClasses(columns, cellIndex),\n style: getCellStyles(column, cellIndex)\n }, [\n h(\"div\", {\n class: [\"cell\", column.labelClassName]\n }, [sums[cellIndex]])\n ]))\n ])\n ]));\n }\n});\n\nexport { TableFooter as default };\n//# sourceMappingURL=index.mjs.map\n","function useUtils(store) {\n const setCurrentRow = (row) => {\n store.commit(\"setCurrentRow\", row);\n };\n const getSelectionRows = () => {\n return store.getSelectionRows();\n };\n const toggleRowSelection = (row, selected) => {\n store.toggleRowSelection(row, selected, false);\n store.updateAllSelected();\n };\n const clearSelection = () => {\n store.clearSelection();\n };\n const clearFilter = (columnKeys) => {\n store.clearFilter(columnKeys);\n };\n const toggleAllSelection = () => {\n store.commit(\"toggleAllSelection\");\n };\n const toggleRowExpansion = (row, expanded) => {\n store.toggleRowExpansionAdapter(row, expanded);\n };\n const clearSort = () => {\n store.clearSort();\n };\n const sort = (prop, order) => {\n store.commit(\"sort\", { prop, order });\n };\n return {\n setCurrentRow,\n getSelectionRows,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n sort\n };\n}\n\nexport { useUtils as default };\n//# sourceMappingURL=utils-helper.mjs.map\n","import { ref, watchEffect, watch, unref, computed, onMounted, nextTick } from 'vue';\nimport { useEventListener, useResizeObserver } from '@vueuse/core';\nimport '../../../form/index.mjs';\nimport { useFormSize } from '../../../form/src/hooks/use-form-common-props.mjs';\n\nfunction useStyle(props, layout, store, table) {\n const isHidden = ref(false);\n const renderExpanded = ref(null);\n const resizeProxyVisible = ref(false);\n const setDragVisible = (visible) => {\n resizeProxyVisible.value = visible;\n };\n const resizeState = ref({\n width: null,\n height: null,\n headerHeight: null\n });\n const isGroup = ref(false);\n const scrollbarViewStyle = {\n display: \"inline-block\",\n verticalAlign: \"middle\"\n };\n const tableWidth = ref();\n const tableScrollHeight = ref(0);\n const bodyScrollHeight = ref(0);\n const headerScrollHeight = ref(0);\n const footerScrollHeight = ref(0);\n const appendScrollHeight = ref(0);\n watchEffect(() => {\n layout.setHeight(props.height);\n });\n watchEffect(() => {\n layout.setMaxHeight(props.maxHeight);\n });\n watch(() => [props.currentRowKey, store.states.rowKey], ([currentRowKey, rowKey]) => {\n if (!unref(rowKey) || !unref(currentRowKey))\n return;\n store.setCurrentRowKey(`${currentRowKey}`);\n }, {\n immediate: true\n });\n watch(() => props.data, (data) => {\n table.store.commit(\"setData\", data);\n }, {\n immediate: true,\n deep: true\n });\n watchEffect(() => {\n if (props.expandRowKeys) {\n store.setExpandRowKeysAdapter(props.expandRowKeys);\n }\n });\n const handleMouseLeave = () => {\n table.store.commit(\"setHoverRow\", null);\n if (table.hoverState)\n table.hoverState = null;\n };\n const handleHeaderFooterMousewheel = (event, data) => {\n const { pixelX, pixelY } = data;\n if (Math.abs(pixelX) >= Math.abs(pixelY)) {\n table.refs.bodyWrapper.scrollLeft += data.pixelX / 5;\n }\n };\n const shouldUpdateHeight = computed(() => {\n return props.height || props.maxHeight || store.states.fixedColumns.value.length > 0 || store.states.rightFixedColumns.value.length > 0;\n });\n const tableBodyStyles = computed(() => {\n return {\n width: layout.bodyWidth.value ? `${layout.bodyWidth.value}px` : \"\"\n };\n });\n const doLayout = () => {\n if (shouldUpdateHeight.value) {\n layout.updateElsHeight();\n }\n layout.updateColumnsWidth();\n requestAnimationFrame(syncPosition);\n };\n onMounted(async () => {\n await nextTick();\n store.updateColumns();\n bindEvents();\n requestAnimationFrame(doLayout);\n const el = table.vnode.el;\n const tableHeader = table.refs.headerWrapper;\n if (props.flexible && el && el.parentElement) {\n el.parentElement.style.minWidth = \"0\";\n }\n resizeState.value = {\n width: tableWidth.value = el.offsetWidth,\n height: el.offsetHeight,\n headerHeight: props.showHeader && tableHeader ? tableHeader.offsetHeight : null\n };\n store.states.columns.value.forEach((column) => {\n if (column.filteredValue && column.filteredValue.length) {\n table.store.commit(\"filterChange\", {\n column,\n values: column.filteredValue,\n silent: true\n });\n }\n });\n table.$ready = true;\n });\n const setScrollClassByEl = (el, className) => {\n if (!el)\n return;\n const classList = Array.from(el.classList).filter((item) => !item.startsWith(\"is-scrolling-\"));\n classList.push(layout.scrollX.value ? className : \"is-scrolling-none\");\n el.className = classList.join(\" \");\n };\n const setScrollClass = (className) => {\n const { tableWrapper } = table.refs;\n setScrollClassByEl(tableWrapper, className);\n };\n const hasScrollClass = (className) => {\n const { tableWrapper } = table.refs;\n return !!(tableWrapper && tableWrapper.classList.contains(className));\n };\n const syncPosition = function() {\n if (!table.refs.scrollBarRef)\n return;\n if (!layout.scrollX.value) {\n const scrollingNoneClass = \"is-scrolling-none\";\n if (!hasScrollClass(scrollingNoneClass)) {\n setScrollClass(scrollingNoneClass);\n }\n return;\n }\n const scrollContainer = table.refs.scrollBarRef.wrapRef;\n if (!scrollContainer)\n return;\n const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer;\n const { headerWrapper, footerWrapper } = table.refs;\n if (headerWrapper)\n headerWrapper.scrollLeft = scrollLeft;\n if (footerWrapper)\n footerWrapper.scrollLeft = scrollLeft;\n const maxScrollLeftPosition = scrollWidth - offsetWidth - 1;\n if (scrollLeft >= maxScrollLeftPosition) {\n setScrollClass(\"is-scrolling-right\");\n } else if (scrollLeft === 0) {\n setScrollClass(\"is-scrolling-left\");\n } else {\n setScrollClass(\"is-scrolling-middle\");\n }\n };\n const bindEvents = () => {\n if (!table.refs.scrollBarRef)\n return;\n if (table.refs.scrollBarRef.wrapRef) {\n useEventListener(table.refs.scrollBarRef.wrapRef, \"scroll\", syncPosition, {\n passive: true\n });\n }\n if (props.fit) {\n useResizeObserver(table.vnode.el, resizeListener);\n } else {\n useEventListener(window, \"resize\", resizeListener);\n }\n useResizeObserver(table.refs.bodyWrapper, () => {\n var _a, _b;\n resizeListener();\n (_b = (_a = table.refs) == null ? void 0 : _a.scrollBarRef) == null ? void 0 : _b.update();\n });\n };\n const resizeListener = () => {\n var _a, _b, _c, _d;\n const el = table.vnode.el;\n if (!table.$ready || !el)\n return;\n let shouldUpdateLayout = false;\n const {\n width: oldWidth,\n height: oldHeight,\n headerHeight: oldHeaderHeight\n } = resizeState.value;\n const width = tableWidth.value = el.offsetWidth;\n if (oldWidth !== width) {\n shouldUpdateLayout = true;\n }\n const height = el.offsetHeight;\n if ((props.height || shouldUpdateHeight.value) && oldHeight !== height) {\n shouldUpdateLayout = true;\n }\n const tableHeader = props.tableLayout === \"fixed\" ? table.refs.headerWrapper : (_a = table.refs.tableHeaderRef) == null ? void 0 : _a.$el;\n if (props.showHeader && (tableHeader == null ? void 0 : tableHeader.offsetHeight) !== oldHeaderHeight) {\n shouldUpdateLayout = true;\n }\n tableScrollHeight.value = ((_b = table.refs.tableWrapper) == null ? void 0 : _b.scrollHeight) || 0;\n headerScrollHeight.value = (tableHeader == null ? void 0 : tableHeader.scrollHeight) || 0;\n footerScrollHeight.value = ((_c = table.refs.footerWrapper) == null ? void 0 : _c.offsetHeight) || 0;\n appendScrollHeight.value = ((_d = table.refs.appendWrapper) == null ? void 0 : _d.offsetHeight) || 0;\n bodyScrollHeight.value = tableScrollHeight.value - headerScrollHeight.value - footerScrollHeight.value - appendScrollHeight.value;\n if (shouldUpdateLayout) {\n resizeState.value = {\n width,\n height,\n headerHeight: props.showHeader && (tableHeader == null ? void 0 : tableHeader.offsetHeight) || 0\n };\n doLayout();\n }\n };\n const tableSize = useFormSize();\n const bodyWidth = computed(() => {\n const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout;\n return bodyWidth_.value ? `${bodyWidth_.value - (scrollY.value ? gutterWidth : 0)}px` : \"\";\n });\n const tableLayout = computed(() => {\n if (props.maxHeight)\n return \"fixed\";\n return props.tableLayout;\n });\n const emptyBlockStyle = computed(() => {\n if (props.data && props.data.length)\n return null;\n let height = \"100%\";\n if (props.height && bodyScrollHeight.value) {\n height = `${bodyScrollHeight.value}px`;\n }\n const width = tableWidth.value;\n return {\n width: width ? `${width}px` : \"\",\n height\n };\n });\n const tableInnerStyle = computed(() => {\n if (props.height) {\n return {\n height: !Number.isNaN(Number(props.height)) ? `${props.height}px` : props.height\n };\n }\n if (props.maxHeight) {\n return {\n maxHeight: !Number.isNaN(Number(props.maxHeight)) ? `${props.maxHeight}px` : props.maxHeight\n };\n }\n return {};\n });\n const scrollbarStyle = computed(() => {\n if (props.height) {\n return {\n height: \"100%\"\n };\n }\n if (props.maxHeight) {\n if (!Number.isNaN(Number(props.maxHeight))) {\n return {\n maxHeight: `${props.maxHeight - headerScrollHeight.value - footerScrollHeight.value}px`\n };\n } else {\n return {\n maxHeight: `calc(${props.maxHeight} - ${headerScrollHeight.value + footerScrollHeight.value}px)`\n };\n }\n }\n return {};\n });\n const handleFixedMousewheel = (event, data) => {\n const bodyWrapper = table.refs.bodyWrapper;\n if (Math.abs(data.spinY) > 0) {\n const currentScrollTop = bodyWrapper.scrollTop;\n if (data.pixelY < 0 && currentScrollTop !== 0) {\n event.preventDefault();\n }\n if (data.pixelY > 0 && bodyWrapper.scrollHeight - bodyWrapper.clientHeight > currentScrollTop) {\n event.preventDefault();\n }\n bodyWrapper.scrollTop += Math.ceil(data.pixelY / 5);\n } else {\n bodyWrapper.scrollLeft += Math.ceil(data.pixelX / 5);\n }\n };\n return {\n isHidden,\n renderExpanded,\n setDragVisible,\n isGroup,\n handleMouseLeave,\n handleHeaderFooterMousewheel,\n tableSize,\n emptyBlockStyle,\n handleFixedMousewheel,\n resizeProxyVisible,\n bodyWidth,\n resizeState,\n doLayout,\n tableBodyStyles,\n tableLayout,\n scrollbarViewStyle,\n tableInnerStyle,\n scrollbarStyle\n };\n}\n\nexport { useStyle as default };\n//# sourceMappingURL=style-helper.mjs.map\n","import { ref, onMounted, onUnmounted } from 'vue';\n\nfunction useKeyRender(table) {\n const observer = ref();\n const initWatchDom = () => {\n const el = table.vnode.el;\n const columnsWrapper = el.querySelector(\".hidden-columns\");\n const config = { childList: true, subtree: true };\n const updateOrderFns = table.store.states.updateOrderFns;\n observer.value = new MutationObserver(() => {\n updateOrderFns.forEach((fn) => fn());\n });\n observer.value.observe(columnsWrapper, config);\n };\n onMounted(() => {\n initWatchDom();\n });\n onUnmounted(() => {\n var _a;\n (_a = observer.value) == null ? void 0 : _a.disconnect();\n });\n}\n\nexport { useKeyRender as default };\n//# sourceMappingURL=key-render-helper.mjs.map\n","import '../../../../hooks/index.mjs';\nimport { useSizeProp } from '../../../../hooks/use-size/index.mjs';\n\nvar defaultProps = {\n data: {\n type: Array,\n default: () => []\n },\n size: useSizeProp,\n width: [String, Number],\n height: [String, Number],\n maxHeight: [String, Number],\n fit: {\n type: Boolean,\n default: true\n },\n stripe: Boolean,\n border: Boolean,\n rowKey: [String, Function],\n showHeader: {\n type: Boolean,\n default: true\n },\n showSummary: Boolean,\n sumText: String,\n summaryMethod: Function,\n rowClassName: [String, Function],\n rowStyle: [Object, Function],\n cellClassName: [String, Function],\n cellStyle: [Object, Function],\n headerRowClassName: [String, Function],\n headerRowStyle: [Object, Function],\n headerCellClassName: [String, Function],\n headerCellStyle: [Object, Function],\n highlightCurrentRow: Boolean,\n currentRowKey: [String, Number],\n emptyText: String,\n expandRowKeys: Array,\n defaultExpandAll: Boolean,\n defaultSort: Object,\n tooltipEffect: String,\n tooltipOptions: Object,\n spanMethod: Function,\n selectOnIndeterminate: {\n type: Boolean,\n default: true\n },\n indent: {\n type: Number,\n default: 16\n },\n treeProps: {\n type: Object,\n default: () => {\n return {\n hasChildren: \"hasChildren\",\n children: \"children\"\n };\n }\n },\n lazy: Boolean,\n load: Function,\n style: {\n type: Object,\n default: () => ({})\n },\n className: {\n type: String,\n default: \"\"\n },\n tableLayout: {\n type: String,\n default: \"fixed\"\n },\n scrollbarAlwaysOn: Boolean,\n flexible: Boolean,\n showOverflowTooltip: [Boolean, Object]\n};\n\nexport { defaultProps as default };\n//# sourceMappingURL=defaults.mjs.map\n","import { h } from 'vue';\n\nfunction hColgroup(props) {\n const isAuto = props.tableLayout === \"auto\";\n let columns = props.columns || [];\n if (isAuto) {\n if (columns.every((column) => column.width === void 0)) {\n columns = [];\n }\n }\n const getPropsData = (column) => {\n const propsData = {\n key: `${props.tableLayout}_${column.id}`,\n style: {},\n name: void 0\n };\n if (isAuto) {\n propsData.style = {\n width: `${column.width}px`\n };\n } else {\n propsData.name = column.id;\n }\n return propsData;\n };\n return h(\"colgroup\", {}, columns.map((column) => h(\"col\", getPropsData(column))));\n}\nhColgroup.props = [\"columns\", \"tableLayout\"];\n\nexport { hColgroup };\n//# sourceMappingURL=h-helper.mjs.map\n","import { ref } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\n\nconst useScrollbar = () => {\n const scrollBarRef = ref();\n const scrollTo = (options, yCoord) => {\n const scrollbar = scrollBarRef.value;\n if (scrollbar) {\n scrollbar.scrollTo(options, yCoord);\n }\n };\n const setScrollPosition = (position, offset) => {\n const scrollbar = scrollBarRef.value;\n if (scrollbar && isNumber(offset) && [\"Top\", \"Left\"].includes(position)) {\n scrollbar[`setScroll${position}`](offset);\n }\n };\n const setScrollTop = (top) => setScrollPosition(\"Top\", top);\n const setScrollLeft = (left) => setScrollPosition(\"Left\", left);\n return {\n scrollBarRef,\n scrollTo,\n setScrollTop,\n setScrollLeft\n };\n};\n\nexport { useScrollbar };\n//# sourceMappingURL=use-scrollbar.mjs.map\n","var v=!1,o,f,s,u,d,N,l,p,m,w,D,x,E,M,F;function a(){if(!v){v=!0;var e=navigator.userAgent,n=/(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(e),i=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(x=/\\b(iPhone|iP[ao]d)/.exec(e),E=/\\b(iP[ao]d)/.exec(e),w=/Android/i.exec(e),M=/FBAN\\/\\w+;/i.exec(e),F=/Mobile/i.exec(e),D=!!/Win64/.exec(e),n){o=n[1]?parseFloat(n[1]):n[5]?parseFloat(n[5]):NaN,o&&document&&document.documentMode&&(o=document.documentMode);var r=/(?:Trident\\/(\\d+.\\d+))/.exec(e);N=r?parseFloat(r[1])+4:o,f=n[2]?parseFloat(n[2]):NaN,s=n[3]?parseFloat(n[3]):NaN,u=n[4]?parseFloat(n[4]):NaN,u?(n=/(?:Chrome\\/(\\d+\\.\\d+))/.exec(e),d=n&&n[1]?parseFloat(n[1]):NaN):d=NaN}else o=f=s=d=u=NaN;if(i){if(i[1]){var t=/(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(e);l=t?parseFloat(t[1].replace(\"_\",\".\")):!0}else l=!1;p=!!i[2],m=!!i[3]}else l=p=m=!1}}var _={ie:function(){return a()||o},ieCompatibilityMode:function(){return a()||N>o},ie64:function(){return _.ie()&&D},firefox:function(){return a()||f},opera:function(){return a()||s},webkit:function(){return a()||u},safari:function(){return _.webkit()},chrome:function(){return a()||d},windows:function(){return a()||p},osx:function(){return a()||l},linux:function(){return a()||m},iphone:function(){return a()||x},mobile:function(){return a()||x||E||w||F},nativeApp:function(){return a()||M},android:function(){return a()||w},ipad:function(){return a()||E}},A=_;var c=!!(typeof window<\"u\"&&window.document&&window.document.createElement),U={canUseDOM:c,canUseWorkers:typeof Worker<\"u\",canUseEventListeners:c&&!!(window.addEventListener||window.attachEvent),canUseViewport:c&&!!window.screen,isInWorker:!c},h=U;var X;h.canUseDOM&&(X=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(\"\",\"\")!==!0);function S(e,n){if(!h.canUseDOM||n&&!(\"addEventListener\"in document))return!1;var i=\"on\"+e,r=i in document;if(!r){var t=document.createElement(\"div\");t.setAttribute(i,\"return;\"),r=typeof t[i]==\"function\"}return!r&&X&&e===\"wheel\"&&(r=document.implementation.hasFeature(\"Events.wheel\",\"3.0\")),r}var b=S;var O=10,I=40,P=800;function T(e){var n=0,i=0,r=0,t=0;return\"detail\"in e&&(i=e.detail),\"wheelDelta\"in e&&(i=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(i=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(n=-e.wheelDeltaX/120),\"axis\"in e&&e.axis===e.HORIZONTAL_AXIS&&(n=i,i=0),r=n*O,t=i*O,\"deltaY\"in e&&(t=e.deltaY),\"deltaX\"in e&&(r=e.deltaX),(r||t)&&e.deltaMode&&(e.deltaMode==1?(r*=I,t*=I):(r*=P,t*=P)),r&&!n&&(n=r<1?-1:1),t&&!i&&(i=t<1?-1:1),{spinX:n,spinY:i,pixelX:r,pixelY:t}}T.getEventType=function(){return A.firefox()?\"DOMMouseScroll\":b(\"wheel\")?\"wheel\":\"mousewheel\"};var Y=T;export{Y as default};\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n//# sourceMappingURL=index.mjs.map","import normalizeWheel from 'normalize-wheel-es';\n\nconst mousewheel = function(element, callback) {\n if (element && element.addEventListener) {\n const fn = function(event) {\n const normalized = normalizeWheel(event);\n callback && Reflect.apply(callback, this, [event, normalized]);\n };\n element.addEventListener(\"wheel\", fn, { passive: true });\n }\n};\nconst Mousewheel = {\n beforeMount(el, binding) {\n mousewheel(el, binding.value);\n }\n};\n\nexport { Mousewheel as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, getCurrentInstance, provide, computed, resolveComponent, resolveDirective, openBlock, createElementBlock, normalizeClass, normalizeStyle, createElementVNode, renderSlot, withDirectives, createVNode, createCommentVNode, withCtx, createBlock, createTextVNode, toDisplayString, vShow } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { ElScrollbar } from '../../scrollbar/index.mjs';\nimport { createStore } from './store/helper.mjs';\nimport TableLayout from './table-layout.mjs';\nimport TableHeader from './table-header/index.mjs';\nimport TableBody from './table-body/index.mjs';\nimport TableFooter from './table-footer/index.mjs';\nimport useUtils from './table/utils-helper.mjs';\nimport useStyle from './table/style-helper.mjs';\nimport useKeyRender from './table/key-render-helper.mjs';\nimport defaultProps from './table/defaults.mjs';\nimport { TABLE_INJECTION_KEY } from './tokens.mjs';\nimport { hColgroup } from './h-helper.mjs';\nimport { useScrollbar } from './composables/use-scrollbar.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport Mousewheel from '../../../directives/mousewheel/index.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nlet tableIdSeed = 1;\nconst _sfc_main = defineComponent({\n name: \"ElTable\",\n directives: {\n Mousewheel\n },\n components: {\n TableHeader,\n TableBody,\n TableFooter,\n ElScrollbar,\n hColgroup\n },\n props: defaultProps,\n emits: [\n \"select\",\n \"select-all\",\n \"selection-change\",\n \"cell-mouse-enter\",\n \"cell-mouse-leave\",\n \"cell-contextmenu\",\n \"cell-click\",\n \"cell-dblclick\",\n \"row-click\",\n \"row-contextmenu\",\n \"row-dblclick\",\n \"header-click\",\n \"header-contextmenu\",\n \"sort-change\",\n \"filter-change\",\n \"current-change\",\n \"header-dragend\",\n \"expand-change\"\n ],\n setup(props) {\n const { t } = useLocale();\n const ns = useNamespace(\"table\");\n const table = getCurrentInstance();\n provide(TABLE_INJECTION_KEY, table);\n const store = createStore(table, props);\n table.store = store;\n const layout = new TableLayout({\n store: table.store,\n table,\n fit: props.fit,\n showHeader: props.showHeader\n });\n table.layout = layout;\n const isEmpty = computed(() => (store.states.data.value || []).length === 0);\n const {\n setCurrentRow,\n getSelectionRows,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n sort\n } = useUtils(store);\n const {\n isHidden,\n renderExpanded,\n setDragVisible,\n isGroup,\n handleMouseLeave,\n handleHeaderFooterMousewheel,\n tableSize,\n emptyBlockStyle,\n handleFixedMousewheel,\n resizeProxyVisible,\n bodyWidth,\n resizeState,\n doLayout,\n tableBodyStyles,\n tableLayout,\n scrollbarViewStyle,\n tableInnerStyle,\n scrollbarStyle\n } = useStyle(props, layout, store, table);\n const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } = useScrollbar();\n const debouncedUpdateLayout = debounce(doLayout, 50);\n const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`;\n table.tableId = tableId;\n table.state = {\n isGroup,\n resizeState,\n doLayout,\n debouncedUpdateLayout\n };\n const computedSumText = computed(() => props.sumText || t(\"el.table.sumText\"));\n const computedEmptyText = computed(() => {\n return props.emptyText || t(\"el.table.emptyText\");\n });\n useKeyRender(table);\n return {\n ns,\n layout,\n store,\n handleHeaderFooterMousewheel,\n handleMouseLeave,\n tableId,\n tableSize,\n isHidden,\n isEmpty,\n renderExpanded,\n resizeProxyVisible,\n resizeState,\n isGroup,\n bodyWidth,\n tableBodyStyles,\n emptyBlockStyle,\n debouncedUpdateLayout,\n handleFixedMousewheel,\n setCurrentRow,\n getSelectionRows,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n doLayout,\n sort,\n t,\n setDragVisible,\n context: table,\n computedSumText,\n computedEmptyText,\n tableLayout,\n scrollbarViewStyle,\n tableInnerStyle,\n scrollbarStyle,\n scrollBarRef,\n scrollTo,\n setScrollLeft,\n setScrollTop\n };\n }\n});\nconst _hoisted_1 = [\"data-prefix\"];\nconst _hoisted_2 = {\n ref: \"hiddenColumns\",\n class: \"hidden-columns\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_hColgroup = resolveComponent(\"hColgroup\");\n const _component_table_header = resolveComponent(\"table-header\");\n const _component_table_body = resolveComponent(\"table-body\");\n const _component_table_footer = resolveComponent(\"table-footer\");\n const _component_el_scrollbar = resolveComponent(\"el-scrollbar\");\n const _directive_mousewheel = resolveDirective(\"mousewheel\");\n return openBlock(), createElementBlock(\"div\", {\n ref: \"tableWrapper\",\n class: normalizeClass([\n {\n [_ctx.ns.m(\"fit\")]: _ctx.fit,\n [_ctx.ns.m(\"striped\")]: _ctx.stripe,\n [_ctx.ns.m(\"border\")]: _ctx.border || _ctx.isGroup,\n [_ctx.ns.m(\"hidden\")]: _ctx.isHidden,\n [_ctx.ns.m(\"group\")]: _ctx.isGroup,\n [_ctx.ns.m(\"fluid-height\")]: _ctx.maxHeight,\n [_ctx.ns.m(\"scrollable-x\")]: _ctx.layout.scrollX.value,\n [_ctx.ns.m(\"scrollable-y\")]: _ctx.layout.scrollY.value,\n [_ctx.ns.m(\"enable-row-hover\")]: !_ctx.store.states.isComplex.value,\n [_ctx.ns.m(\"enable-row-transition\")]: (_ctx.store.states.data.value || []).length !== 0 && (_ctx.store.states.data.value || []).length < 100,\n \"has-footer\": _ctx.showSummary\n },\n _ctx.ns.m(_ctx.tableSize),\n _ctx.className,\n _ctx.ns.b(),\n _ctx.ns.m(`layout-${_ctx.tableLayout}`)\n ]),\n style: normalizeStyle(_ctx.style),\n \"data-prefix\": _ctx.ns.namespace.value,\n onMouseleave: _cache[0] || (_cache[0] = (...args) => _ctx.handleMouseLeave && _ctx.handleMouseLeave(...args))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.ns.e(\"inner-wrapper\")),\n style: normalizeStyle(_ctx.tableInnerStyle)\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"default\")\n ], 512),\n _ctx.showHeader && _ctx.tableLayout === \"fixed\" ? withDirectives((openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"headerWrapper\",\n class: normalizeClass(_ctx.ns.e(\"header-wrapper\"))\n }, [\n createElementVNode(\"table\", {\n ref: \"tableHeader\",\n class: normalizeClass(_ctx.ns.e(\"header\")),\n style: normalizeStyle(_ctx.tableBodyStyles),\n border: \"0\",\n cellpadding: \"0\",\n cellspacing: \"0\"\n }, [\n createVNode(_component_hColgroup, {\n columns: _ctx.store.states.columns.value,\n \"table-layout\": _ctx.tableLayout\n }, null, 8, [\"columns\", \"table-layout\"]),\n createVNode(_component_table_header, {\n ref: \"tableHeaderRef\",\n border: _ctx.border,\n \"default-sort\": _ctx.defaultSort,\n store: _ctx.store,\n onSetDragVisible: _ctx.setDragVisible\n }, null, 8, [\"border\", \"default-sort\", \"store\", \"onSetDragVisible\"])\n ], 6)\n ], 2)), [\n [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]\n ]) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n ref: \"bodyWrapper\",\n class: normalizeClass(_ctx.ns.e(\"body-wrapper\"))\n }, [\n createVNode(_component_el_scrollbar, {\n ref: \"scrollBarRef\",\n \"view-style\": _ctx.scrollbarViewStyle,\n \"wrap-style\": _ctx.scrollbarStyle,\n always: _ctx.scrollbarAlwaysOn\n }, {\n default: withCtx(() => [\n createElementVNode(\"table\", {\n ref: \"tableBody\",\n class: normalizeClass(_ctx.ns.e(\"body\")),\n cellspacing: \"0\",\n cellpadding: \"0\",\n border: \"0\",\n style: normalizeStyle({\n width: _ctx.bodyWidth,\n tableLayout: _ctx.tableLayout\n })\n }, [\n createVNode(_component_hColgroup, {\n columns: _ctx.store.states.columns.value,\n \"table-layout\": _ctx.tableLayout\n }, null, 8, [\"columns\", \"table-layout\"]),\n _ctx.showHeader && _ctx.tableLayout === \"auto\" ? (openBlock(), createBlock(_component_table_header, {\n key: 0,\n ref: \"tableHeaderRef\",\n class: normalizeClass(_ctx.ns.e(\"body-header\")),\n border: _ctx.border,\n \"default-sort\": _ctx.defaultSort,\n store: _ctx.store,\n onSetDragVisible: _ctx.setDragVisible\n }, null, 8, [\"class\", \"border\", \"default-sort\", \"store\", \"onSetDragVisible\"])) : createCommentVNode(\"v-if\", true),\n createVNode(_component_table_body, {\n context: _ctx.context,\n highlight: _ctx.highlightCurrentRow,\n \"row-class-name\": _ctx.rowClassName,\n \"tooltip-effect\": _ctx.tooltipEffect,\n \"tooltip-options\": _ctx.tooltipOptions,\n \"row-style\": _ctx.rowStyle,\n store: _ctx.store,\n stripe: _ctx.stripe\n }, null, 8, [\"context\", \"highlight\", \"row-class-name\", \"tooltip-effect\", \"tooltip-options\", \"row-style\", \"store\", \"stripe\"]),\n _ctx.showSummary && _ctx.tableLayout === \"auto\" ? (openBlock(), createBlock(_component_table_footer, {\n key: 1,\n class: normalizeClass(_ctx.ns.e(\"body-footer\")),\n border: _ctx.border,\n \"default-sort\": _ctx.defaultSort,\n store: _ctx.store,\n \"sum-text\": _ctx.computedSumText,\n \"summary-method\": _ctx.summaryMethod\n }, null, 8, [\"class\", \"border\", \"default-sort\", \"store\", \"sum-text\", \"summary-method\"])) : createCommentVNode(\"v-if\", true)\n ], 6),\n _ctx.isEmpty ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"emptyBlock\",\n style: normalizeStyle(_ctx.emptyBlockStyle),\n class: normalizeClass(_ctx.ns.e(\"empty-block\"))\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.ns.e(\"empty-text\"))\n }, [\n renderSlot(_ctx.$slots, \"empty\", {}, () => [\n createTextVNode(toDisplayString(_ctx.computedEmptyText), 1)\n ])\n ], 2)\n ], 6)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.append ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n ref: \"appendWrapper\",\n class: normalizeClass(_ctx.ns.e(\"append-wrapper\"))\n }, [\n renderSlot(_ctx.$slots, \"append\")\n ], 2)) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 8, [\"view-style\", \"wrap-style\", \"always\"])\n ], 2),\n _ctx.showSummary && _ctx.tableLayout === \"fixed\" ? withDirectives((openBlock(), createElementBlock(\"div\", {\n key: 1,\n ref: \"footerWrapper\",\n class: normalizeClass(_ctx.ns.e(\"footer-wrapper\"))\n }, [\n createElementVNode(\"table\", {\n class: normalizeClass(_ctx.ns.e(\"footer\")),\n cellspacing: \"0\",\n cellpadding: \"0\",\n border: \"0\",\n style: normalizeStyle(_ctx.tableBodyStyles)\n }, [\n createVNode(_component_hColgroup, {\n columns: _ctx.store.states.columns.value,\n \"table-layout\": _ctx.tableLayout\n }, null, 8, [\"columns\", \"table-layout\"]),\n createVNode(_component_table_footer, {\n border: _ctx.border,\n \"default-sort\": _ctx.defaultSort,\n store: _ctx.store,\n \"sum-text\": _ctx.computedSumText,\n \"summary-method\": _ctx.summaryMethod\n }, null, 8, [\"border\", \"default-sort\", \"store\", \"sum-text\", \"summary-method\"])\n ], 6)\n ], 2)), [\n [vShow, !_ctx.isEmpty],\n [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]\n ]) : createCommentVNode(\"v-if\", true),\n _ctx.border || _ctx.isGroup ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass(_ctx.ns.e(\"border-left-patch\"))\n }, null, 2)) : createCommentVNode(\"v-if\", true)\n ], 6),\n withDirectives(createElementVNode(\"div\", {\n ref: \"resizeProxy\",\n class: normalizeClass(_ctx.ns.e(\"column-resize-proxy\"))\n }, null, 2), [\n [vShow, _ctx.resizeProxyVisible]\n ])\n ], 46, _hoisted_1);\n}\nvar Table = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__file\", \"table.vue\"]]);\n\nexport { Table as default };\n//# sourceMappingURL=table.mjs.map\n","import { h } from 'vue';\nimport { ElCheckbox } from '../../checkbox/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ArrowRight, Loading } from '@element-plus/icons-vue';\nimport '../../../utils/index.mjs';\nimport { getProp } from '../../../utils/objects.mjs';\n\nconst defaultClassNames = {\n selection: \"table-column--selection\",\n expand: \"table__expand-column\"\n};\nconst cellStarts = {\n default: {\n order: \"\"\n },\n selection: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: \"\"\n },\n expand: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: \"\"\n },\n index: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: \"\"\n }\n};\nconst getDefaultClassName = (type) => {\n return defaultClassNames[type] || \"\";\n};\nconst cellForced = {\n selection: {\n renderHeader({ store, column }) {\n function isDisabled() {\n return store.states.data.value && store.states.data.value.length === 0;\n }\n return h(ElCheckbox, {\n disabled: isDisabled(),\n size: store.states.tableSize.value,\n indeterminate: store.states.selection.value.length > 0 && !store.states.isAllSelected.value,\n \"onUpdate:modelValue\": store.toggleAllSelection,\n modelValue: store.states.isAllSelected.value,\n ariaLabel: column.label\n });\n },\n renderCell({\n row,\n column,\n store,\n $index\n }) {\n return h(ElCheckbox, {\n disabled: column.selectable ? !column.selectable.call(null, row, $index) : false,\n size: store.states.tableSize.value,\n onChange: () => {\n store.commit(\"rowSelectedChanged\", row);\n },\n onClick: (event) => event.stopPropagation(),\n modelValue: store.isSelected(row),\n ariaLabel: column.label\n });\n },\n sortable: false,\n resizable: false\n },\n index: {\n renderHeader({ column }) {\n return column.label || \"#\";\n },\n renderCell({\n column,\n $index\n }) {\n let i = $index + 1;\n const index = column.index;\n if (typeof index === \"number\") {\n i = $index + index;\n } else if (typeof index === \"function\") {\n i = index($index);\n }\n return h(\"div\", {}, [i]);\n },\n sortable: false\n },\n expand: {\n renderHeader({ column }) {\n return column.label || \"\";\n },\n renderCell({\n row,\n store,\n expanded\n }) {\n const { ns } = store;\n const classes = [ns.e(\"expand-icon\")];\n if (expanded) {\n classes.push(ns.em(\"expand-icon\", \"expanded\"));\n }\n const callback = function(e) {\n e.stopPropagation();\n store.toggleRowExpansion(row);\n };\n return h(\"div\", {\n class: classes,\n onClick: callback\n }, {\n default: () => {\n return [\n h(ElIcon, null, {\n default: () => {\n return [h(ArrowRight)];\n }\n })\n ];\n }\n });\n },\n sortable: false,\n resizable: false\n }\n};\nfunction defaultRenderCell({\n row,\n column,\n $index\n}) {\n var _a;\n const property = column.property;\n const value = property && getProp(row, property).value;\n if (column && column.formatter) {\n return column.formatter(row, column, value, $index);\n }\n return ((_a = value == null ? void 0 : value.toString) == null ? void 0 : _a.call(value)) || \"\";\n}\nfunction treeCellPrefix({\n row,\n treeNode,\n store\n}, createPlaceholder = false) {\n const { ns } = store;\n if (!treeNode) {\n if (createPlaceholder) {\n return [\n h(\"span\", {\n class: ns.e(\"placeholder\")\n })\n ];\n }\n return null;\n }\n const ele = [];\n const callback = function(e) {\n e.stopPropagation();\n if (treeNode.loading) {\n return;\n }\n store.loadOrToggle(row);\n };\n if (treeNode.indent) {\n ele.push(h(\"span\", {\n class: ns.e(\"indent\"),\n style: { \"padding-left\": `${treeNode.indent}px` }\n }));\n }\n if (typeof treeNode.expanded === \"boolean\" && !treeNode.noLazyChildren) {\n const expandClasses = [\n ns.e(\"expand-icon\"),\n treeNode.expanded ? ns.em(\"expand-icon\", \"expanded\") : \"\"\n ];\n let icon = ArrowRight;\n if (treeNode.loading) {\n icon = Loading;\n }\n ele.push(h(\"div\", {\n class: expandClasses,\n onClick: callback\n }, {\n default: () => {\n return [\n h(ElIcon, { class: { [ns.is(\"loading\")]: treeNode.loading } }, {\n default: () => [h(icon)]\n })\n ];\n }\n }));\n } else {\n ele.push(h(\"span\", {\n class: ns.e(\"placeholder\")\n }));\n }\n return ele;\n}\n\nexport { cellForced, cellStarts, defaultRenderCell, getDefaultClassName, treeCellPrefix };\n//# sourceMappingURL=config.mjs.map\n","import { getCurrentInstance, watch } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { parseWidth, parseMinWidth } from '../util.mjs';\nimport { hasOwn } from '@vue/shared';\n\nfunction getAllAliases(props, aliases) {\n return props.reduce((prev, cur) => {\n prev[cur] = cur;\n return prev;\n }, aliases);\n}\nfunction useWatcher(owner, props_) {\n const instance = getCurrentInstance();\n const registerComplexWatchers = () => {\n const props = [\"fixed\"];\n const aliases = {\n realWidth: \"width\",\n realMinWidth: \"minWidth\"\n };\n const allAliases = getAllAliases(props, aliases);\n Object.keys(allAliases).forEach((key) => {\n const columnKey = aliases[key];\n if (hasOwn(props_, columnKey)) {\n watch(() => props_[columnKey], (newVal) => {\n let value = newVal;\n if (columnKey === \"width\" && key === \"realWidth\") {\n value = parseWidth(newVal);\n }\n if (columnKey === \"minWidth\" && key === \"realMinWidth\") {\n value = parseMinWidth(newVal);\n }\n instance.columnConfig.value[columnKey] = value;\n instance.columnConfig.value[key] = value;\n const updateColumns = columnKey === \"fixed\";\n owner.value.store.scheduleLayout(updateColumns);\n });\n }\n });\n };\n const registerNormalWatchers = () => {\n const props = [\n \"label\",\n \"filters\",\n \"filterMultiple\",\n \"filteredValue\",\n \"sortable\",\n \"index\",\n \"formatter\",\n \"className\",\n \"labelClassName\",\n \"filterClassName\",\n \"showOverflowTooltip\"\n ];\n const aliases = {\n property: \"prop\",\n align: \"realAlign\",\n headerAlign: \"realHeaderAlign\"\n };\n const allAliases = getAllAliases(props, aliases);\n Object.keys(allAliases).forEach((key) => {\n const columnKey = aliases[key];\n if (hasOwn(props_, columnKey)) {\n watch(() => props_[columnKey], (newVal) => {\n instance.columnConfig.value[key] = newVal;\n });\n }\n });\n };\n return {\n registerComplexWatchers,\n registerNormalWatchers\n };\n}\n\nexport { useWatcher as default };\n//# sourceMappingURL=watcher-helper.mjs.map\n","import { getCurrentInstance, ref, watchEffect, computed, unref, renderSlot, h, Comment } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport { cellForced, getDefaultClassName, defaultRenderCell, treeCellPrefix } from '../config.mjs';\nimport { parseWidth, parseMinWidth } from '../util.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\n\nfunction useRender(props, slots, owner) {\n const instance = getCurrentInstance();\n const columnId = ref(\"\");\n const isSubColumn = ref(false);\n const realAlign = ref();\n const realHeaderAlign = ref();\n const ns = useNamespace(\"table\");\n watchEffect(() => {\n realAlign.value = props.align ? `is-${props.align}` : null;\n realAlign.value;\n });\n watchEffect(() => {\n realHeaderAlign.value = props.headerAlign ? `is-${props.headerAlign}` : realAlign.value;\n realHeaderAlign.value;\n });\n const columnOrTableParent = computed(() => {\n let parent = instance.vnode.vParent || instance.parent;\n while (parent && !parent.tableId && !parent.columnId) {\n parent = parent.vnode.vParent || parent.parent;\n }\n return parent;\n });\n const hasTreeColumn = computed(() => {\n const { store } = instance.parent;\n if (!store)\n return false;\n const { treeData } = store.states;\n const treeDataValue = treeData.value;\n return treeDataValue && Object.keys(treeDataValue).length > 0;\n });\n const realWidth = ref(parseWidth(props.width));\n const realMinWidth = ref(parseMinWidth(props.minWidth));\n const setColumnWidth = (column) => {\n if (realWidth.value)\n column.width = realWidth.value;\n if (realMinWidth.value) {\n column.minWidth = realMinWidth.value;\n }\n if (!realWidth.value && realMinWidth.value) {\n column.width = void 0;\n }\n if (!column.minWidth) {\n column.minWidth = 80;\n }\n column.realWidth = Number(column.width === void 0 ? column.minWidth : column.width);\n return column;\n };\n const setColumnForcedProps = (column) => {\n const type = column.type;\n const source = cellForced[type] || {};\n Object.keys(source).forEach((prop) => {\n const value = source[prop];\n if (prop !== \"className\" && value !== void 0) {\n column[prop] = value;\n }\n });\n const className = getDefaultClassName(type);\n if (className) {\n const forceClass = `${unref(ns.namespace)}-${className}`;\n column.className = column.className ? `${column.className} ${forceClass}` : forceClass;\n }\n return column;\n };\n const checkSubColumn = (children) => {\n if (Array.isArray(children)) {\n children.forEach((child) => check(child));\n } else {\n check(children);\n }\n function check(item) {\n var _a;\n if (((_a = item == null ? void 0 : item.type) == null ? void 0 : _a.name) === \"ElTableColumn\") {\n item.vParent = instance;\n }\n }\n };\n const setColumnRenders = (column) => {\n if (props.renderHeader) {\n debugWarn(\"TableColumn\", \"Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header.\");\n } else if (column.type !== \"selection\") {\n column.renderHeader = (scope) => {\n instance.columnConfig.value[\"label\"];\n return renderSlot(slots, \"header\", scope, () => [column.label]);\n };\n }\n let originRenderCell = column.renderCell;\n if (column.type === \"expand\") {\n column.renderCell = (data) => h(\"div\", {\n class: \"cell\"\n }, [originRenderCell(data)]);\n owner.value.renderExpanded = (data) => {\n return slots.default ? slots.default(data) : slots.default;\n };\n } else {\n originRenderCell = originRenderCell || defaultRenderCell;\n column.renderCell = (data) => {\n let children = null;\n if (slots.default) {\n const vnodes = slots.default(data);\n children = vnodes.some((v) => v.type !== Comment) ? vnodes : originRenderCell(data);\n } else {\n children = originRenderCell(data);\n }\n const { columns } = owner.value.store.states;\n const firstUserColumnIndex = columns.value.findIndex((item) => item.type === \"default\");\n const shouldCreatePlaceholder = hasTreeColumn.value && data.cellIndex === firstUserColumnIndex;\n const prefix = treeCellPrefix(data, shouldCreatePlaceholder);\n const props2 = {\n class: \"cell\",\n style: {}\n };\n if (column.showOverflowTooltip) {\n props2.class = `${props2.class} ${unref(ns.namespace)}-tooltip`;\n props2.style = {\n width: `${(data.column.realWidth || Number(data.column.width)) - 1}px`\n };\n }\n checkSubColumn(children);\n return h(\"div\", props2, [prefix, children]);\n };\n }\n return column;\n };\n const getPropsData = (...propsKey) => {\n return propsKey.reduce((prev, cur) => {\n if (Array.isArray(cur)) {\n cur.forEach((key) => {\n prev[key] = props[key];\n });\n }\n return prev;\n }, {});\n };\n const getColumnElIndex = (children, child) => {\n return Array.prototype.indexOf.call(children, child);\n };\n const updateColumnOrder = () => {\n owner.value.store.commit(\"updateColumnOrder\", instance.columnConfig.value);\n };\n return {\n columnId,\n realAlign,\n isSubColumn,\n realHeaderAlign,\n columnOrTableParent,\n setColumnWidth,\n setColumnForcedProps,\n setColumnRenders,\n getPropsData,\n getColumnElIndex,\n updateColumnOrder\n };\n}\n\nexport { useRender as default };\n//# sourceMappingURL=render-helper.mjs.map\n","var defaultProps = {\n type: {\n type: String,\n default: \"default\"\n },\n label: String,\n className: String,\n labelClassName: String,\n property: String,\n prop: String,\n width: {\n type: [String, Number],\n default: \"\"\n },\n minWidth: {\n type: [String, Number],\n default: \"\"\n },\n renderHeader: Function,\n sortable: {\n type: [Boolean, String],\n default: false\n },\n sortMethod: Function,\n sortBy: [String, Function, Array],\n resizable: {\n type: Boolean,\n default: true\n },\n columnKey: String,\n align: String,\n headerAlign: String,\n showOverflowTooltip: {\n type: [Boolean, Object],\n default: void 0\n },\n fixed: [Boolean, String],\n formatter: Function,\n selectable: Function,\n reserveSelection: Boolean,\n filterMethod: Function,\n filteredValue: Array,\n filters: Array,\n filterPlacement: String,\n filterMultiple: {\n type: Boolean,\n default: true\n },\n filterClassName: String,\n index: [Number, Function],\n sortOrders: {\n type: Array,\n default: () => {\n return [\"ascending\", \"descending\", null];\n },\n validator: (val) => {\n return val.every((order) => [\"ascending\", \"descending\", null].includes(order));\n }\n }\n};\n\nexport { defaultProps as default };\n//# sourceMappingURL=defaults.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, onBeforeMount, onMounted, onBeforeUnmount, Fragment, h } from 'vue';\nimport { ElCheckbox } from '../../../checkbox/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { cellStarts } from '../config.mjs';\nimport { mergeOptions, compose } from '../util.mjs';\nimport useWatcher from './watcher-helper.mjs';\nimport useRender from './render-helper.mjs';\nimport defaultProps from './defaults.mjs';\nimport { isUndefined } from '../../../../utils/types.mjs';\nimport { isString } from '@vue/shared';\n\nlet columnIdSeed = 1;\nvar ElTableColumn = defineComponent({\n name: \"ElTableColumn\",\n components: {\n ElCheckbox\n },\n props: defaultProps,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const columnConfig = ref({});\n const owner = computed(() => {\n let parent2 = instance.parent;\n while (parent2 && !parent2.tableId) {\n parent2 = parent2.parent;\n }\n return parent2;\n });\n const { registerNormalWatchers, registerComplexWatchers } = useWatcher(owner, props);\n const {\n columnId,\n isSubColumn,\n realHeaderAlign,\n columnOrTableParent,\n setColumnWidth,\n setColumnForcedProps,\n setColumnRenders,\n getPropsData,\n getColumnElIndex,\n realAlign,\n updateColumnOrder\n } = useRender(props, slots, owner);\n const parent = columnOrTableParent.value;\n columnId.value = `${parent.tableId || parent.columnId}_column_${columnIdSeed++}`;\n onBeforeMount(() => {\n isSubColumn.value = owner.value !== parent;\n const type = props.type || \"default\";\n const sortable = props.sortable === \"\" ? true : props.sortable;\n const showOverflowTooltip = isUndefined(props.showOverflowTooltip) ? parent.props.showOverflowTooltip : props.showOverflowTooltip;\n const defaults = {\n ...cellStarts[type],\n id: columnId.value,\n type,\n property: props.prop || props.property,\n align: realAlign,\n headerAlign: realHeaderAlign,\n showOverflowTooltip,\n filterable: props.filters || props.filterMethod,\n filteredValue: [],\n filterPlacement: \"\",\n filterClassName: \"\",\n isColumnGroup: false,\n isSubColumn: false,\n filterOpened: false,\n sortable,\n index: props.index,\n rawColumnKey: instance.vnode.key\n };\n const basicProps = [\n \"columnKey\",\n \"label\",\n \"className\",\n \"labelClassName\",\n \"type\",\n \"renderHeader\",\n \"formatter\",\n \"fixed\",\n \"resizable\"\n ];\n const sortProps = [\"sortMethod\", \"sortBy\", \"sortOrders\"];\n const selectProps = [\"selectable\", \"reserveSelection\"];\n const filterProps = [\n \"filterMethod\",\n \"filters\",\n \"filterMultiple\",\n \"filterOpened\",\n \"filteredValue\",\n \"filterPlacement\",\n \"filterClassName\"\n ];\n let column = getPropsData(basicProps, sortProps, selectProps, filterProps);\n column = mergeOptions(defaults, column);\n const chains = compose(setColumnRenders, setColumnWidth, setColumnForcedProps);\n column = chains(column);\n columnConfig.value = column;\n registerNormalWatchers();\n registerComplexWatchers();\n });\n onMounted(() => {\n var _a;\n const parent2 = columnOrTableParent.value;\n const children = isSubColumn.value ? parent2.vnode.el.children : (_a = parent2.refs.hiddenColumns) == null ? void 0 : _a.children;\n const getColumnIndex = () => getColumnElIndex(children || [], instance.vnode.el);\n columnConfig.value.getColumnIndex = getColumnIndex;\n const columnIndex = getColumnIndex();\n columnIndex > -1 && owner.value.store.commit(\"insertColumn\", columnConfig.value, isSubColumn.value ? parent2.columnConfig.value : null, updateColumnOrder);\n });\n onBeforeUnmount(() => {\n const columnIndex = columnConfig.value.getColumnIndex();\n columnIndex > -1 && owner.value.store.commit(\"removeColumn\", columnConfig.value, isSubColumn.value ? parent.columnConfig.value : null, updateColumnOrder);\n });\n instance.columnId = columnId.value;\n instance.columnConfig = columnConfig;\n return;\n },\n render() {\n var _a, _b, _c;\n try {\n const renderDefault = (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, {\n row: {},\n column: {},\n $index: -1\n });\n const children = [];\n if (Array.isArray(renderDefault)) {\n for (const childNode of renderDefault) {\n if (((_c = childNode.type) == null ? void 0 : _c.name) === \"ElTableColumn\" || childNode.shapeFlag & 2) {\n children.push(childNode);\n } else if (childNode.type === Fragment && Array.isArray(childNode.children)) {\n childNode.children.forEach((vnode2) => {\n if ((vnode2 == null ? void 0 : vnode2.patchFlag) !== 1024 && !isString(vnode2 == null ? void 0 : vnode2.children)) {\n children.push(vnode2);\n }\n });\n }\n }\n }\n const vnode = h(\"div\", children);\n return vnode;\n } catch (e) {\n return h(\"div\", []);\n }\n }\n});\n\nexport { ElTableColumn as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../utils/index.mjs';\nimport Table from './src/table.mjs';\nimport './src/tableColumn.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\nimport ElTableColumn$1 from './src/table-column/index.mjs';\n\nconst ElTable = withInstall(Table, {\n TableColumn: ElTableColumn$1\n});\nconst ElTableColumn = withNoopInstall(ElTableColumn$1);\n\nexport { ElTable, ElTableColumn, ElTable as default };\n//# sourceMappingURL=index.mjs.map\n","var SortOrder = /* @__PURE__ */ ((SortOrder2) => {\n SortOrder2[\"ASC\"] = \"asc\";\n SortOrder2[\"DESC\"] = \"desc\";\n return SortOrder2;\n})(SortOrder || {});\nvar Alignment = /* @__PURE__ */ ((Alignment2) => {\n Alignment2[\"CENTER\"] = \"center\";\n Alignment2[\"RIGHT\"] = \"right\";\n return Alignment2;\n})(Alignment || {});\nvar FixedDir = /* @__PURE__ */ ((FixedDir2) => {\n FixedDir2[\"LEFT\"] = \"left\";\n FixedDir2[\"RIGHT\"] = \"right\";\n return FixedDir2;\n})(FixedDir || {});\nconst oppositeOrderMap = {\n [\"asc\" /* ASC */]: \"desc\" /* DESC */,\n [\"desc\" /* DESC */]: \"asc\" /* ASC */\n};\nconst sortOrders = [\"asc\" /* ASC */, \"desc\" /* DESC */];\n\nexport { Alignment, FixedDir, SortOrder, oppositeOrderMap, sortOrders };\n//# sourceMappingURL=constants.mjs.map\n","const placeholderSign = Symbol(\"placeholder\");\n\nexport { placeholderSign };\n//# sourceMappingURL=private.mjs.map\n","const calcColumnStyle = (column, fixedColumn, fixed) => {\n var _a;\n const flex = {\n flexGrow: 0,\n flexShrink: 0,\n ...fixed ? {} : {\n flexGrow: column.flexGrow || 0,\n flexShrink: column.flexShrink || 1\n }\n };\n if (!fixed) {\n flex.flexShrink = 1;\n }\n const style = {\n ...(_a = column.style) != null ? _a : {},\n ...flex,\n flexBasis: \"auto\",\n width: column.width\n };\n if (!fixedColumn) {\n if (column.maxWidth)\n style.maxWidth = column.maxWidth;\n if (column.minWidth)\n style.minWidth = column.minWidth;\n }\n return style;\n};\n\nexport { calcColumnStyle };\n//# sourceMappingURL=utils.mjs.map\n","import { computed, unref } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { SortOrder, oppositeOrderMap } from '../constants.mjs';\nimport { placeholderSign } from '../private.mjs';\nimport { calcColumnStyle } from './utils.mjs';\nimport { isObject } from '@vue/shared';\n\nfunction useColumns(props, columns, fixed) {\n const visibleColumns = computed(() => {\n return unref(columns).filter((column) => !column.hidden);\n });\n const fixedColumnsOnLeft = computed(() => unref(visibleColumns).filter((column) => column.fixed === \"left\" || column.fixed === true));\n const fixedColumnsOnRight = computed(() => unref(visibleColumns).filter((column) => column.fixed === \"right\"));\n const normalColumns = computed(() => unref(visibleColumns).filter((column) => !column.fixed));\n const mainColumns = computed(() => {\n const ret = [];\n unref(fixedColumnsOnLeft).forEach((column) => {\n ret.push({\n ...column,\n placeholderSign\n });\n });\n unref(normalColumns).forEach((column) => {\n ret.push(column);\n });\n unref(fixedColumnsOnRight).forEach((column) => {\n ret.push({\n ...column,\n placeholderSign\n });\n });\n return ret;\n });\n const hasFixedColumns = computed(() => {\n return unref(fixedColumnsOnLeft).length || unref(fixedColumnsOnRight).length;\n });\n const columnsStyles = computed(() => {\n const _columns = unref(columns);\n return _columns.reduce((style, column) => {\n style[column.key] = calcColumnStyle(column, unref(fixed), props.fixed);\n return style;\n }, {});\n });\n const columnsTotalWidth = computed(() => {\n return unref(visibleColumns).reduce((width, column) => width + column.width, 0);\n });\n const getColumn = (key) => {\n return unref(columns).find((column) => column.key === key);\n };\n const getColumnStyle = (key) => {\n return unref(columnsStyles)[key];\n };\n const updateColumnWidth = (column, width) => {\n column.width = width;\n };\n function onColumnSorted(e) {\n var _a;\n const { key } = e.currentTarget.dataset;\n if (!key)\n return;\n const { sortState, sortBy } = props;\n let order = SortOrder.ASC;\n if (isObject(sortState)) {\n order = oppositeOrderMap[sortState[key]];\n } else {\n order = oppositeOrderMap[sortBy.order];\n }\n (_a = props.onColumnSort) == null ? void 0 : _a.call(props, { column: getColumn(key), key, order });\n }\n return {\n columns,\n columnsStyles,\n columnsTotalWidth,\n fixedColumnsOnLeft,\n fixedColumnsOnRight,\n hasFixedColumns,\n mainColumns,\n normalColumns,\n visibleColumns,\n getColumn,\n getColumnStyle,\n updateColumnWidth,\n onColumnSorted\n };\n}\n\nexport { useColumns };\n//# sourceMappingURL=use-columns.mjs.map\n","import { ref, unref, watch } from 'vue';\n\nconst useScrollbar = (props, {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n onMaybeEndReached\n}) => {\n const scrollPos = ref({ scrollLeft: 0, scrollTop: 0 });\n function doScroll(params) {\n var _a, _b, _c;\n const { scrollTop } = params;\n (_a = mainTableRef.value) == null ? void 0 : _a.scrollTo(params);\n (_b = leftTableRef.value) == null ? void 0 : _b.scrollToTop(scrollTop);\n (_c = rightTableRef.value) == null ? void 0 : _c.scrollToTop(scrollTop);\n }\n function scrollTo(params) {\n scrollPos.value = params;\n doScroll(params);\n }\n function scrollToTop(scrollTop) {\n scrollPos.value.scrollTop = scrollTop;\n doScroll(unref(scrollPos));\n }\n function scrollToLeft(scrollLeft) {\n var _a, _b;\n scrollPos.value.scrollLeft = scrollLeft;\n (_b = (_a = mainTableRef.value) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, unref(scrollPos));\n }\n function onScroll(params) {\n var _a;\n scrollTo(params);\n (_a = props.onScroll) == null ? void 0 : _a.call(props, params);\n }\n function onVerticalScroll({ scrollTop }) {\n const { scrollTop: currentScrollTop } = unref(scrollPos);\n if (scrollTop !== currentScrollTop)\n scrollToTop(scrollTop);\n }\n function scrollToRow(row, strategy = \"auto\") {\n var _a;\n (_a = mainTableRef.value) == null ? void 0 : _a.scrollToRow(row, strategy);\n }\n watch(() => unref(scrollPos).scrollTop, (cur, prev) => {\n if (cur > prev)\n onMaybeEndReached();\n });\n return {\n scrollPos,\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n onScroll,\n onVerticalScroll\n };\n};\n\nexport { useScrollbar };\n//# sourceMappingURL=use-scrollbar.mjs.map\n","import { getCurrentInstance, shallowRef, ref, computed, unref } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport '../../../../utils/index.mjs';\nimport { FixedDir } from '../constants.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\n\nconst useRow = (props, {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n tableInstance,\n ns,\n isScrolling\n}) => {\n const vm = getCurrentInstance();\n const { emit } = vm;\n const isResetting = shallowRef(false);\n const expandedRowKeys = ref(props.defaultExpandedRowKeys || []);\n const lastRenderedRowIndex = ref(-1);\n const resetIndex = shallowRef(null);\n const rowHeights = ref({});\n const pendingRowHeights = ref({});\n const leftTableHeights = shallowRef({});\n const mainTableHeights = shallowRef({});\n const rightTableHeights = shallowRef({});\n const isDynamic = computed(() => isNumber(props.estimatedRowHeight));\n function onRowsRendered(params) {\n var _a;\n (_a = props.onRowsRendered) == null ? void 0 : _a.call(props, params);\n if (params.rowCacheEnd > unref(lastRenderedRowIndex)) {\n lastRenderedRowIndex.value = params.rowCacheEnd;\n }\n }\n function onRowHovered({ hovered, rowKey }) {\n if (isScrolling.value) {\n return;\n }\n const tableRoot = tableInstance.vnode.el;\n const rows = tableRoot.querySelectorAll(`[rowkey=${rowKey}]`);\n rows.forEach((row) => {\n if (hovered) {\n row.classList.add(ns.is(\"hovered\"));\n } else {\n row.classList.remove(ns.is(\"hovered\"));\n }\n });\n }\n function onRowExpanded({\n expanded,\n rowData,\n rowIndex,\n rowKey\n }) {\n var _a, _b;\n const _expandedRowKeys = [...unref(expandedRowKeys)];\n const currentKeyIndex = _expandedRowKeys.indexOf(rowKey);\n if (expanded) {\n if (currentKeyIndex === -1)\n _expandedRowKeys.push(rowKey);\n } else {\n if (currentKeyIndex > -1)\n _expandedRowKeys.splice(currentKeyIndex, 1);\n }\n expandedRowKeys.value = _expandedRowKeys;\n emit(\"update:expandedRowKeys\", _expandedRowKeys);\n (_a = props.onRowExpand) == null ? void 0 : _a.call(props, {\n expanded,\n rowData,\n rowIndex,\n rowKey\n });\n (_b = props.onExpandedRowsChange) == null ? void 0 : _b.call(props, _expandedRowKeys);\n }\n const flushingRowHeights = debounce(() => {\n var _a, _b, _c, _d;\n isResetting.value = true;\n rowHeights.value = { ...unref(rowHeights), ...unref(pendingRowHeights) };\n resetAfterIndex(unref(resetIndex), false);\n pendingRowHeights.value = {};\n resetIndex.value = null;\n (_a = mainTableRef.value) == null ? void 0 : _a.forceUpdate();\n (_b = leftTableRef.value) == null ? void 0 : _b.forceUpdate();\n (_c = rightTableRef.value) == null ? void 0 : _c.forceUpdate();\n (_d = vm.proxy) == null ? void 0 : _d.$forceUpdate();\n isResetting.value = false;\n }, 0);\n function resetAfterIndex(index, forceUpdate = false) {\n if (!unref(isDynamic))\n return;\n [mainTableRef, leftTableRef, rightTableRef].forEach((tableRef) => {\n const table = unref(tableRef);\n if (table)\n table.resetAfterRowIndex(index, forceUpdate);\n });\n }\n function resetHeights(rowKey, height, rowIdx) {\n const resetIdx = unref(resetIndex);\n if (resetIdx === null) {\n resetIndex.value = rowIdx;\n } else {\n if (resetIdx > rowIdx) {\n resetIndex.value = rowIdx;\n }\n }\n pendingRowHeights.value[rowKey] = height;\n }\n function onRowHeightChange({ rowKey, height, rowIndex }, fixedDir) {\n if (!fixedDir) {\n mainTableHeights.value[rowKey] = height;\n } else {\n if (fixedDir === FixedDir.RIGHT) {\n rightTableHeights.value[rowKey] = height;\n } else {\n leftTableHeights.value[rowKey] = height;\n }\n }\n const maximumHeight = Math.max(...[leftTableHeights, rightTableHeights, mainTableHeights].map((records) => records.value[rowKey] || 0));\n if (unref(rowHeights)[rowKey] !== maximumHeight) {\n resetHeights(rowKey, maximumHeight, rowIndex);\n flushingRowHeights();\n }\n }\n return {\n expandedRowKeys,\n lastRenderedRowIndex,\n isDynamic,\n isResetting,\n rowHeights,\n resetAfterIndex,\n onRowExpanded,\n onRowHovered,\n onRowsRendered,\n onRowHeightChange\n };\n};\n\nexport { useRow };\n//# sourceMappingURL=use-row.mjs.map\n","import { ref, computed, unref, watch } from 'vue';\n\nconst useData = (props, { expandedRowKeys, lastRenderedRowIndex, resetAfterIndex }) => {\n const depthMap = ref({});\n const flattenedData = computed(() => {\n const depths = {};\n const { data: data2, rowKey } = props;\n const _expandedRowKeys = unref(expandedRowKeys);\n if (!_expandedRowKeys || !_expandedRowKeys.length)\n return data2;\n const array = [];\n const keysSet = /* @__PURE__ */ new Set();\n _expandedRowKeys.forEach((x) => keysSet.add(x));\n let copy = data2.slice();\n copy.forEach((x) => depths[x[rowKey]] = 0);\n while (copy.length > 0) {\n const item = copy.shift();\n array.push(item);\n if (keysSet.has(item[rowKey]) && Array.isArray(item.children) && item.children.length > 0) {\n copy = [...item.children, ...copy];\n item.children.forEach((child) => depths[child[rowKey]] = depths[item[rowKey]] + 1);\n }\n }\n depthMap.value = depths;\n return array;\n });\n const data = computed(() => {\n const { data: data2, expandColumnKey } = props;\n return expandColumnKey ? unref(flattenedData) : data2;\n });\n watch(data, (val, prev) => {\n if (val !== prev) {\n lastRenderedRowIndex.value = -1;\n resetAfterIndex(0, true);\n }\n });\n return {\n data,\n depthMap\n };\n};\n\nexport { useData };\n//# sourceMappingURL=use-data.mjs.map\n","import { isVNode, h } from 'vue';\nimport '../../../utils/index.mjs';\nimport { isArray, isFunction } from '@vue/shared';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst sumReducer = (sum2, num) => sum2 + num;\nconst sum = (listLike) => {\n return isArray(listLike) ? listLike.reduce(sumReducer, 0) : listLike;\n};\nconst tryCall = (fLike, params, defaultRet = {}) => {\n return isFunction(fLike) ? fLike(params) : fLike != null ? fLike : defaultRet;\n};\nconst enforceUnit = (style) => {\n ;\n [\"width\", \"maxWidth\", \"minWidth\", \"height\"].forEach((key) => {\n style[key] = addUnit(style[key]);\n });\n return style;\n};\nconst componentToSlot = (ComponentLike) => isVNode(ComponentLike) ? (props) => h(ComponentLike, props) : ComponentLike;\n\nexport { componentToSlot, enforceUnit, sum, tryCall };\n//# sourceMappingURL=utils.mjs.map\n","import { computed, unref } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { sum, enforceUnit } from '../utils.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nimport { addUnit } from '../../../../utils/dom/style.mjs';\n\nconst useStyles = (props, {\n columnsTotalWidth,\n data,\n fixedColumnsOnLeft,\n fixedColumnsOnRight\n}) => {\n const bodyWidth = computed(() => {\n const { fixed, width, vScrollbarSize } = props;\n const ret = width - vScrollbarSize;\n return fixed ? Math.max(Math.round(unref(columnsTotalWidth)), ret) : ret;\n });\n const headerWidth = computed(() => unref(bodyWidth) + props.vScrollbarSize);\n const mainTableHeight = computed(() => {\n const { height = 0, maxHeight = 0, footerHeight: footerHeight2, hScrollbarSize } = props;\n if (maxHeight > 0) {\n const _fixedRowsHeight = unref(fixedRowsHeight);\n const _rowsHeight = unref(rowsHeight);\n const _headerHeight = unref(headerHeight);\n const total = _headerHeight + _fixedRowsHeight + _rowsHeight + hScrollbarSize;\n return Math.min(total, maxHeight - footerHeight2);\n }\n return height - footerHeight2;\n });\n const rowsHeight = computed(() => {\n const { rowHeight, estimatedRowHeight } = props;\n const _data = unref(data);\n if (isNumber(estimatedRowHeight)) {\n return _data.length * estimatedRowHeight;\n }\n return _data.length * rowHeight;\n });\n const fixedTableHeight = computed(() => {\n const { maxHeight } = props;\n const tableHeight = unref(mainTableHeight);\n if (isNumber(maxHeight) && maxHeight > 0)\n return tableHeight;\n const totalHeight = unref(rowsHeight) + unref(headerHeight) + unref(fixedRowsHeight);\n return Math.min(tableHeight, totalHeight);\n });\n const mapColumn = (column) => column.width;\n const leftTableWidth = computed(() => sum(unref(fixedColumnsOnLeft).map(mapColumn)));\n const rightTableWidth = computed(() => sum(unref(fixedColumnsOnRight).map(mapColumn)));\n const headerHeight = computed(() => sum(props.headerHeight));\n const fixedRowsHeight = computed(() => {\n var _a;\n return (((_a = props.fixedData) == null ? void 0 : _a.length) || 0) * props.rowHeight;\n });\n const windowHeight = computed(() => {\n return unref(mainTableHeight) - unref(headerHeight) - unref(fixedRowsHeight);\n });\n const rootStyle = computed(() => {\n const { style = {}, height, width } = props;\n return enforceUnit({\n ...style,\n height,\n width\n });\n });\n const footerHeight = computed(() => enforceUnit({ height: props.footerHeight }));\n const emptyStyle = computed(() => ({\n top: addUnit(unref(headerHeight)),\n bottom: addUnit(props.footerHeight),\n width: addUnit(props.width)\n }));\n return {\n bodyWidth,\n fixedTableHeight,\n mainTableHeight,\n leftTableWidth,\n rightTableWidth,\n headerWidth,\n rowsHeight,\n windowHeight,\n footerHeight,\n emptyStyle,\n rootStyle,\n headerHeight\n };\n};\n\nexport { useStyles };\n//# sourceMappingURL=use-styles.mjs.map\n","import { ref, toRef, getCurrentInstance, shallowRef, computed, unref, watch } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport './composables/index.mjs';\nimport { useColumns } from './composables/use-columns.mjs';\nimport { useScrollbar } from './composables/use-scrollbar.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useRow } from './composables/use-row.mjs';\nimport { useData } from './composables/use-data.mjs';\nimport { useStyles } from './composables/use-styles.mjs';\nimport { isArray } from '@vue/shared';\n\nfunction useTable(props) {\n const mainTableRef = ref();\n const leftTableRef = ref();\n const rightTableRef = ref();\n const {\n columns,\n columnsStyles,\n columnsTotalWidth,\n fixedColumnsOnLeft,\n fixedColumnsOnRight,\n hasFixedColumns,\n mainColumns,\n onColumnSorted\n } = useColumns(props, toRef(props, \"columns\"), toRef(props, \"fixed\"));\n const {\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n onScroll,\n onVerticalScroll,\n scrollPos\n } = useScrollbar(props, {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n onMaybeEndReached\n });\n const ns = useNamespace(\"table-v2\");\n const instance = getCurrentInstance();\n const isScrolling = shallowRef(false);\n const {\n expandedRowKeys,\n lastRenderedRowIndex,\n isDynamic,\n isResetting,\n rowHeights,\n resetAfterIndex,\n onRowExpanded,\n onRowHeightChange,\n onRowHovered,\n onRowsRendered\n } = useRow(props, {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n tableInstance: instance,\n ns,\n isScrolling\n });\n const { data, depthMap } = useData(props, {\n expandedRowKeys,\n lastRenderedRowIndex,\n resetAfterIndex\n });\n const {\n bodyWidth,\n fixedTableHeight,\n mainTableHeight,\n leftTableWidth,\n rightTableWidth,\n headerWidth,\n rowsHeight,\n windowHeight,\n footerHeight,\n emptyStyle,\n rootStyle,\n headerHeight\n } = useStyles(props, {\n columnsTotalWidth,\n data,\n fixedColumnsOnLeft,\n fixedColumnsOnRight\n });\n const containerRef = ref();\n const showEmpty = computed(() => {\n const noData = unref(data).length === 0;\n return isArray(props.fixedData) ? props.fixedData.length === 0 && noData : noData;\n });\n function getRowHeight(rowIndex) {\n const { estimatedRowHeight, rowHeight, rowKey } = props;\n if (!estimatedRowHeight)\n return rowHeight;\n return unref(rowHeights)[unref(data)[rowIndex][rowKey]] || estimatedRowHeight;\n }\n function onMaybeEndReached() {\n const { onEndReached } = props;\n if (!onEndReached)\n return;\n const { scrollTop } = unref(scrollPos);\n const _totalHeight = unref(rowsHeight);\n const clientHeight = unref(windowHeight);\n const heightUntilEnd = _totalHeight - (scrollTop + clientHeight) + props.hScrollbarSize;\n if (unref(lastRenderedRowIndex) >= 0 && _totalHeight === scrollTop + unref(mainTableHeight) - unref(headerHeight)) {\n onEndReached(heightUntilEnd);\n }\n }\n watch(() => props.expandedRowKeys, (val) => expandedRowKeys.value = val, {\n deep: true\n });\n return {\n columns,\n containerRef,\n mainTableRef,\n leftTableRef,\n rightTableRef,\n isDynamic,\n isResetting,\n isScrolling,\n hasFixedColumns,\n columnsStyles,\n columnsTotalWidth,\n data,\n expandedRowKeys,\n depthMap,\n fixedColumnsOnLeft,\n fixedColumnsOnRight,\n mainColumns,\n bodyWidth,\n emptyStyle,\n rootStyle,\n headerWidth,\n footerHeight,\n mainTableHeight,\n fixedTableHeight,\n leftTableWidth,\n rightTableWidth,\n showEmpty,\n getRowHeight,\n onColumnSorted,\n onRowHovered,\n onRowExpanded,\n onRowsRendered,\n onRowHeightChange,\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n onScroll,\n onVerticalScroll\n };\n}\n\nexport { useTable };\n//# sourceMappingURL=use-table.mjs.map\n","const TableV2InjectionKey = Symbol(\"tableV2\");\n\nexport { TableV2InjectionKey };\n//# sourceMappingURL=tokens.mjs.map\n","import '../../../utils/index.mjs';\nimport { definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\n\nconst classType = String;\nconst columns = {\n type: definePropType(Array),\n required: true\n};\nconst column = {\n type: definePropType(Object)\n};\nconst fixedDataType = {\n type: definePropType(Array)\n};\nconst dataType = {\n ...fixedDataType,\n required: true\n};\nconst expandColumnKey = String;\nconst expandKeys = {\n type: definePropType(Array),\n default: () => mutable([])\n};\nconst requiredNumber = {\n type: Number,\n required: true\n};\nconst rowKey = {\n type: definePropType([String, Number, Symbol]),\n default: \"id\"\n};\nconst styleType = {\n type: definePropType(Object)\n};\n\nexport { classType, column, columns, dataType, expandColumnKey, expandKeys, fixedDataType, requiredNumber, rowKey, styleType };\n//# sourceMappingURL=common.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../virtual-list/index.mjs';\nimport { columns, expandColumnKey, rowKey } from './common.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { virtualizedGridProps } from '../../virtual-list/src/props.mjs';\n\nconst tableV2RowProps = buildProps({\n class: String,\n columns,\n columnsStyles: {\n type: definePropType(Object),\n required: true\n },\n depth: Number,\n expandColumnKey,\n estimatedRowHeight: {\n ...virtualizedGridProps.estimatedRowHeight,\n default: void 0\n },\n isScrolling: Boolean,\n onRowExpand: {\n type: definePropType(Function)\n },\n onRowHover: {\n type: definePropType(Function)\n },\n onRowHeightChange: {\n type: definePropType(Function)\n },\n rowData: {\n type: definePropType(Object),\n required: true\n },\n rowEventHandlers: {\n type: definePropType(Object)\n },\n rowIndex: {\n type: Number,\n required: true\n },\n rowKey,\n style: {\n type: definePropType(Object)\n }\n});\n\nexport { tableV2RowProps };\n//# sourceMappingURL=row.mjs.map\n","import '../../../utils/index.mjs';\nimport { columns } from './common.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst requiredNumberType = {\n type: Number,\n required: true\n};\nconst tableV2HeaderProps = buildProps({\n class: String,\n columns,\n fixedHeaderData: {\n type: definePropType(Array)\n },\n headerData: {\n type: definePropType(Array),\n required: true\n },\n headerHeight: {\n type: definePropType([Number, Array]),\n default: 50\n },\n rowWidth: requiredNumberType,\n rowHeight: {\n type: Number,\n default: 50\n },\n height: requiredNumberType,\n width: requiredNumberType\n});\n\nexport { tableV2HeaderProps };\n//# sourceMappingURL=header.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../virtual-list/index.mjs';\nimport { columns, dataType, fixedDataType, requiredNumber, classType, styleType } from './common.mjs';\nimport { tableV2HeaderProps } from './header.mjs';\nimport { tableV2RowProps } from './row.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { virtualizedListProps, virtualizedGridProps } from '../../virtual-list/src/props.mjs';\n\nconst tableV2GridProps = buildProps({\n columns,\n data: dataType,\n fixedData: fixedDataType,\n estimatedRowHeight: tableV2RowProps.estimatedRowHeight,\n width: requiredNumber,\n height: requiredNumber,\n headerWidth: requiredNumber,\n headerHeight: tableV2HeaderProps.headerHeight,\n bodyWidth: requiredNumber,\n rowHeight: requiredNumber,\n cache: virtualizedListProps.cache,\n useIsScrolling: Boolean,\n scrollbarAlwaysOn: virtualizedGridProps.scrollbarAlwaysOn,\n scrollbarStartGap: virtualizedGridProps.scrollbarStartGap,\n scrollbarEndGap: virtualizedGridProps.scrollbarEndGap,\n class: classType,\n style: styleType,\n containerStyle: styleType,\n getRowHeight: {\n type: definePropType(Function),\n required: true\n },\n rowKey: tableV2RowProps.rowKey,\n onRowsRendered: {\n type: definePropType(Function)\n },\n onScroll: {\n type: definePropType(Function)\n }\n});\n\nexport { tableV2GridProps };\n//# sourceMappingURL=grid.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../virtual-list/index.mjs';\nimport { rowKey, columns, dataType, fixedDataType, expandKeys, classType, requiredNumber } from './common.mjs';\nimport { tableV2RowProps } from './row.mjs';\nimport { tableV2HeaderProps } from './header.mjs';\nimport { tableV2GridProps } from './grid.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { virtualizedGridProps, virtualizedScrollbarProps } from '../../virtual-list/src/props.mjs';\n\nconst tableV2Props = buildProps({\n cache: tableV2GridProps.cache,\n estimatedRowHeight: tableV2RowProps.estimatedRowHeight,\n rowKey,\n headerClass: {\n type: definePropType([\n String,\n Function\n ])\n },\n headerProps: {\n type: definePropType([\n Object,\n Function\n ])\n },\n headerCellProps: {\n type: definePropType([\n Object,\n Function\n ])\n },\n headerHeight: tableV2HeaderProps.headerHeight,\n footerHeight: {\n type: Number,\n default: 0\n },\n rowClass: {\n type: definePropType([String, Function])\n },\n rowProps: {\n type: definePropType([Object, Function])\n },\n rowHeight: {\n type: Number,\n default: 50\n },\n cellProps: {\n type: definePropType([\n Object,\n Function\n ])\n },\n columns,\n data: dataType,\n dataGetter: {\n type: definePropType(Function)\n },\n fixedData: fixedDataType,\n expandColumnKey: tableV2RowProps.expandColumnKey,\n expandedRowKeys: expandKeys,\n defaultExpandedRowKeys: expandKeys,\n class: classType,\n fixed: Boolean,\n style: {\n type: definePropType(Object)\n },\n width: requiredNumber,\n height: requiredNumber,\n maxHeight: Number,\n useIsScrolling: Boolean,\n indentSize: {\n type: Number,\n default: 12\n },\n iconSize: {\n type: Number,\n default: 12\n },\n hScrollbarSize: virtualizedGridProps.hScrollbarSize,\n vScrollbarSize: virtualizedGridProps.vScrollbarSize,\n scrollbarAlwaysOn: virtualizedScrollbarProps.alwaysOn,\n sortBy: {\n type: definePropType(Object),\n default: () => ({})\n },\n sortState: {\n type: definePropType(Object),\n default: void 0\n },\n onColumnSort: {\n type: definePropType(Function)\n },\n onExpandedRowsChange: {\n type: definePropType(Function)\n },\n onEndReached: {\n type: definePropType(Function)\n },\n onRowExpand: tableV2RowProps.onRowExpand,\n onScroll: tableV2GridProps.onScroll,\n onRowsRendered: tableV2GridProps.onRowsRendered,\n rowEventHandlers: tableV2RowProps.rowEventHandlers\n});\n\nexport { tableV2Props };\n//# sourceMappingURL=table.mjs.map\n","import '../../../../utils/index.mjs';\nimport { cAF, rAF } from '../../../../utils/raf.mjs';\n\nconst useGridWheel = ({ atXEndEdge, atXStartEdge, atYEndEdge, atYStartEdge }, onWheelDelta) => {\n let frameHandle = null;\n let xOffset = 0;\n let yOffset = 0;\n const hasReachedEdge = (x, y) => {\n const xEdgeReached = x <= 0 && atXStartEdge.value || x >= 0 && atXEndEdge.value;\n const yEdgeReached = y <= 0 && atYStartEdge.value || y >= 0 && atYEndEdge.value;\n return xEdgeReached && yEdgeReached;\n };\n const onWheel = (e) => {\n cAF(frameHandle);\n let x = e.deltaX;\n let y = e.deltaY;\n if (Math.abs(x) > Math.abs(y)) {\n y = 0;\n } else {\n x = 0;\n }\n if (e.shiftKey && y !== 0) {\n x = y;\n y = 0;\n }\n if (hasReachedEdge(xOffset, yOffset) && hasReachedEdge(xOffset + x, yOffset + y))\n return;\n xOffset += x;\n yOffset += y;\n e.preventDefault();\n frameHandle = rAF(() => {\n onWheelDelta(xOffset, yOffset);\n xOffset = 0;\n yOffset = 0;\n });\n };\n return {\n hasReachedEdge,\n onWheel\n };\n};\n\nexport { useGridWheel };\n//# sourceMappingURL=use-grid-wheel.mjs.map\n","import { defineComponent, getCurrentInstance, ref, computed, unref, nextTick, onMounted, h, resolveDynamicComponent } from 'vue';\nimport '../../../../utils/index.mjs';\nimport '../../../../hooks/index.mjs';\nimport ScrollBar from '../components/scrollbar.mjs';\nimport { useGridWheel } from '../hooks/use-grid-wheel.mjs';\nimport { useCache } from '../hooks/use-cache.mjs';\nimport { virtualizedGridProps } from '../props.mjs';\nimport { isRTL, getRTLOffsetType, getScrollDir } from '../utils.mjs';\nimport { ITEM_RENDER_EVT, SCROLL_EVT, FORWARD, BACKWARD, RTL_OFFSET_POS_DESC, RTL_OFFSET_NAG, AUTO_ALIGNMENT, RTL, RTL_OFFSET_POS_ASC } from '../defaults.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nimport { getScrollBarWidth } from '../../../../utils/dom/scroll.mjs';\nimport { hasOwn, isString } from '@vue/shared';\nimport { isClient } from '@vueuse/core';\n\nconst createGrid = ({\n name,\n clearCache,\n getColumnPosition,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getColumnOffset,\n getRowOffset,\n getRowPosition,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initCache,\n injectToInstance,\n validateProps\n}) => {\n return defineComponent({\n name: name != null ? name : \"ElVirtualList\",\n props: virtualizedGridProps,\n emits: [ITEM_RENDER_EVT, SCROLL_EVT],\n setup(props, { emit, expose, slots }) {\n const ns = useNamespace(\"vl\");\n validateProps(props);\n const instance = getCurrentInstance();\n const cache = ref(initCache(props, instance));\n injectToInstance == null ? void 0 : injectToInstance(instance, cache);\n const windowRef = ref();\n const hScrollbar = ref();\n const vScrollbar = ref();\n const innerRef = ref(null);\n const states = ref({\n isScrolling: false,\n scrollLeft: isNumber(props.initScrollLeft) ? props.initScrollLeft : 0,\n scrollTop: isNumber(props.initScrollTop) ? props.initScrollTop : 0,\n updateRequested: false,\n xAxisScrollDir: FORWARD,\n yAxisScrollDir: FORWARD\n });\n const getItemStyleCache = useCache();\n const parsedHeight = computed(() => Number.parseInt(`${props.height}`, 10));\n const parsedWidth = computed(() => Number.parseInt(`${props.width}`, 10));\n const columnsToRender = computed(() => {\n const { totalColumn, totalRow, columnCache } = props;\n const { isScrolling, xAxisScrollDir, scrollLeft } = unref(states);\n if (totalColumn === 0 || totalRow === 0) {\n return [0, 0, 0, 0];\n }\n const startIndex = getColumnStartIndexForOffset(props, scrollLeft, unref(cache));\n const stopIndex = getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, unref(cache));\n const cacheBackward = !isScrolling || xAxisScrollDir === BACKWARD ? Math.max(1, columnCache) : 1;\n const cacheForward = !isScrolling || xAxisScrollDir === FORWARD ? Math.max(1, columnCache) : 1;\n return [\n Math.max(0, startIndex - cacheBackward),\n Math.max(0, Math.min(totalColumn - 1, stopIndex + cacheForward)),\n startIndex,\n stopIndex\n ];\n });\n const rowsToRender = computed(() => {\n const { totalColumn, totalRow, rowCache } = props;\n const { isScrolling, yAxisScrollDir, scrollTop } = unref(states);\n if (totalColumn === 0 || totalRow === 0) {\n return [0, 0, 0, 0];\n }\n const startIndex = getRowStartIndexForOffset(props, scrollTop, unref(cache));\n const stopIndex = getRowStopIndexForStartIndex(props, startIndex, scrollTop, unref(cache));\n const cacheBackward = !isScrolling || yAxisScrollDir === BACKWARD ? Math.max(1, rowCache) : 1;\n const cacheForward = !isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1;\n return [\n Math.max(0, startIndex - cacheBackward),\n Math.max(0, Math.min(totalRow - 1, stopIndex + cacheForward)),\n startIndex,\n stopIndex\n ];\n });\n const estimatedTotalHeight = computed(() => getEstimatedTotalHeight(props, unref(cache)));\n const estimatedTotalWidth = computed(() => getEstimatedTotalWidth(props, unref(cache)));\n const windowStyle = computed(() => {\n var _a;\n return [\n {\n position: \"relative\",\n overflow: \"hidden\",\n WebkitOverflowScrolling: \"touch\",\n willChange: \"transform\"\n },\n {\n direction: props.direction,\n height: isNumber(props.height) ? `${props.height}px` : props.height,\n width: isNumber(props.width) ? `${props.width}px` : props.width\n },\n (_a = props.style) != null ? _a : {}\n ];\n });\n const innerStyle = computed(() => {\n const width = `${unref(estimatedTotalWidth)}px`;\n const height = `${unref(estimatedTotalHeight)}px`;\n return {\n height,\n pointerEvents: unref(states).isScrolling ? \"none\" : void 0,\n width\n };\n });\n const emitEvents = () => {\n const { totalColumn, totalRow } = props;\n if (totalColumn > 0 && totalRow > 0) {\n const [\n columnCacheStart,\n columnCacheEnd,\n columnVisibleStart,\n columnVisibleEnd\n ] = unref(columnsToRender);\n const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] = unref(rowsToRender);\n emit(ITEM_RENDER_EVT, {\n columnCacheStart,\n columnCacheEnd,\n rowCacheStart,\n rowCacheEnd,\n columnVisibleStart,\n columnVisibleEnd,\n rowVisibleStart,\n rowVisibleEnd\n });\n }\n const {\n scrollLeft,\n scrollTop,\n updateRequested,\n xAxisScrollDir,\n yAxisScrollDir\n } = unref(states);\n emit(SCROLL_EVT, {\n xAxisScrollDir,\n scrollLeft,\n yAxisScrollDir,\n scrollTop,\n updateRequested\n });\n };\n const onScroll = (e) => {\n const {\n clientHeight,\n clientWidth,\n scrollHeight,\n scrollLeft,\n scrollTop,\n scrollWidth\n } = e.currentTarget;\n const _states = unref(states);\n if (_states.scrollTop === scrollTop && _states.scrollLeft === scrollLeft) {\n return;\n }\n let _scrollLeft = scrollLeft;\n if (isRTL(props.direction)) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG:\n _scrollLeft = -scrollLeft;\n break;\n case RTL_OFFSET_POS_DESC:\n _scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n states.value = {\n ..._states,\n isScrolling: true,\n scrollLeft: _scrollLeft,\n scrollTop: Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight)),\n updateRequested: true,\n xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft),\n yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop)\n };\n nextTick(() => resetIsScrolling());\n onUpdated();\n emitEvents();\n };\n const onVerticalScroll = (distance, totalSteps) => {\n const height = unref(parsedHeight);\n const offset = (estimatedTotalHeight.value - height) / totalSteps * distance;\n scrollTo({\n scrollTop: Math.min(estimatedTotalHeight.value - height, offset)\n });\n };\n const onHorizontalScroll = (distance, totalSteps) => {\n const width = unref(parsedWidth);\n const offset = (estimatedTotalWidth.value - width) / totalSteps * distance;\n scrollTo({\n scrollLeft: Math.min(estimatedTotalWidth.value - width, offset)\n });\n };\n const { onWheel } = useGridWheel({\n atXStartEdge: computed(() => states.value.scrollLeft <= 0),\n atXEndEdge: computed(() => states.value.scrollLeft >= estimatedTotalWidth.value - unref(parsedWidth)),\n atYStartEdge: computed(() => states.value.scrollTop <= 0),\n atYEndEdge: computed(() => states.value.scrollTop >= estimatedTotalHeight.value - unref(parsedHeight))\n }, (x, y) => {\n var _a, _b, _c, _d;\n (_b = (_a = hScrollbar.value) == null ? void 0 : _a.onMouseUp) == null ? void 0 : _b.call(_a);\n (_d = (_c = vScrollbar.value) == null ? void 0 : _c.onMouseUp) == null ? void 0 : _d.call(_c);\n const width = unref(parsedWidth);\n const height = unref(parsedHeight);\n scrollTo({\n scrollLeft: Math.min(states.value.scrollLeft + x, estimatedTotalWidth.value - width),\n scrollTop: Math.min(states.value.scrollTop + y, estimatedTotalHeight.value - height)\n });\n });\n const scrollTo = ({\n scrollLeft = states.value.scrollLeft,\n scrollTop = states.value.scrollTop\n }) => {\n scrollLeft = Math.max(scrollLeft, 0);\n scrollTop = Math.max(scrollTop, 0);\n const _states = unref(states);\n if (scrollTop === _states.scrollTop && scrollLeft === _states.scrollLeft) {\n return;\n }\n states.value = {\n ..._states,\n xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft),\n yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),\n scrollLeft,\n scrollTop,\n updateRequested: true\n };\n nextTick(() => resetIsScrolling());\n onUpdated();\n emitEvents();\n };\n const scrollToItem = (rowIndex = 0, columnIdx = 0, alignment = AUTO_ALIGNMENT) => {\n const _states = unref(states);\n columnIdx = Math.max(0, Math.min(columnIdx, props.totalColumn - 1));\n rowIndex = Math.max(0, Math.min(rowIndex, props.totalRow - 1));\n const scrollBarWidth = getScrollBarWidth(ns.namespace.value);\n const _cache = unref(cache);\n const estimatedHeight = getEstimatedTotalHeight(props, _cache);\n const estimatedWidth = getEstimatedTotalWidth(props, _cache);\n scrollTo({\n scrollLeft: getColumnOffset(props, columnIdx, alignment, _states.scrollLeft, _cache, estimatedWidth > props.width ? scrollBarWidth : 0),\n scrollTop: getRowOffset(props, rowIndex, alignment, _states.scrollTop, _cache, estimatedHeight > props.height ? scrollBarWidth : 0)\n });\n };\n const getItemStyle = (rowIndex, columnIndex) => {\n const { columnWidth, direction, rowHeight } = props;\n const itemStyleCache = getItemStyleCache.value(clearCache && columnWidth, clearCache && rowHeight, clearCache && direction);\n const key = `${rowIndex},${columnIndex}`;\n if (hasOwn(itemStyleCache, key)) {\n return itemStyleCache[key];\n } else {\n const [, left] = getColumnPosition(props, columnIndex, unref(cache));\n const _cache = unref(cache);\n const rtl = isRTL(direction);\n const [height, top] = getRowPosition(props, rowIndex, _cache);\n const [width] = getColumnPosition(props, columnIndex, _cache);\n itemStyleCache[key] = {\n position: \"absolute\",\n left: rtl ? void 0 : `${left}px`,\n right: rtl ? `${left}px` : void 0,\n top: `${top}px`,\n height: `${height}px`,\n width: `${width}px`\n };\n return itemStyleCache[key];\n }\n };\n const resetIsScrolling = () => {\n states.value.isScrolling = false;\n nextTick(() => {\n getItemStyleCache.value(-1, null, null);\n });\n };\n onMounted(() => {\n if (!isClient)\n return;\n const { initScrollLeft, initScrollTop } = props;\n const windowElement = unref(windowRef);\n if (windowElement) {\n if (isNumber(initScrollLeft)) {\n windowElement.scrollLeft = initScrollLeft;\n }\n if (isNumber(initScrollTop)) {\n windowElement.scrollTop = initScrollTop;\n }\n }\n emitEvents();\n });\n const onUpdated = () => {\n const { direction } = props;\n const { scrollLeft, scrollTop, updateRequested } = unref(states);\n const windowElement = unref(windowRef);\n if (updateRequested && windowElement) {\n if (direction === RTL) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG: {\n windowElement.scrollLeft = -scrollLeft;\n break;\n }\n case RTL_OFFSET_POS_ASC: {\n windowElement.scrollLeft = scrollLeft;\n break;\n }\n default: {\n const { clientWidth, scrollWidth } = windowElement;\n windowElement.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n } else {\n windowElement.scrollLeft = Math.max(0, scrollLeft);\n }\n windowElement.scrollTop = Math.max(0, scrollTop);\n }\n };\n const { resetAfterColumnIndex, resetAfterRowIndex, resetAfter } = instance.proxy;\n expose({\n windowRef,\n innerRef,\n getItemStyleCache,\n scrollTo,\n scrollToItem,\n states,\n resetAfterColumnIndex,\n resetAfterRowIndex,\n resetAfter\n });\n const renderScrollbars = () => {\n const {\n scrollbarAlwaysOn,\n scrollbarStartGap,\n scrollbarEndGap,\n totalColumn,\n totalRow\n } = props;\n const width = unref(parsedWidth);\n const height = unref(parsedHeight);\n const estimatedWidth = unref(estimatedTotalWidth);\n const estimatedHeight = unref(estimatedTotalHeight);\n const { scrollLeft, scrollTop } = unref(states);\n const horizontalScrollbar = h(ScrollBar, {\n ref: hScrollbar,\n alwaysOn: scrollbarAlwaysOn,\n startGap: scrollbarStartGap,\n endGap: scrollbarEndGap,\n class: ns.e(\"horizontal\"),\n clientSize: width,\n layout: \"horizontal\",\n onScroll: onHorizontalScroll,\n ratio: width * 100 / estimatedWidth,\n scrollFrom: scrollLeft / (estimatedWidth - width),\n total: totalRow,\n visible: true\n });\n const verticalScrollbar = h(ScrollBar, {\n ref: vScrollbar,\n alwaysOn: scrollbarAlwaysOn,\n startGap: scrollbarStartGap,\n endGap: scrollbarEndGap,\n class: ns.e(\"vertical\"),\n clientSize: height,\n layout: \"vertical\",\n onScroll: onVerticalScroll,\n ratio: height * 100 / estimatedHeight,\n scrollFrom: scrollTop / (estimatedHeight - height),\n total: totalColumn,\n visible: true\n });\n return {\n horizontalScrollbar,\n verticalScrollbar\n };\n };\n const renderItems = () => {\n var _a;\n const [columnStart, columnEnd] = unref(columnsToRender);\n const [rowStart, rowEnd] = unref(rowsToRender);\n const { data, totalColumn, totalRow, useIsScrolling, itemKey } = props;\n const children = [];\n if (totalRow > 0 && totalColumn > 0) {\n for (let row = rowStart; row <= rowEnd; row++) {\n for (let column = columnStart; column <= columnEnd; column++) {\n children.push((_a = slots.default) == null ? void 0 : _a.call(slots, {\n columnIndex: column,\n data,\n key: itemKey({ columnIndex: column, data, rowIndex: row }),\n isScrolling: useIsScrolling ? unref(states).isScrolling : void 0,\n style: getItemStyle(row, column),\n rowIndex: row\n }));\n }\n }\n }\n return children;\n };\n const renderInner = () => {\n const Inner = resolveDynamicComponent(props.innerElement);\n const children = renderItems();\n return [\n h(Inner, {\n style: unref(innerStyle),\n ref: innerRef\n }, !isString(Inner) ? {\n default: () => children\n } : children)\n ];\n };\n const renderWindow = () => {\n const Container = resolveDynamicComponent(props.containerElement);\n const { horizontalScrollbar, verticalScrollbar } = renderScrollbars();\n const Inner = renderInner();\n return h(\"div\", {\n key: 0,\n class: ns.e(\"wrapper\"),\n role: props.role\n }, [\n h(Container, {\n class: props.className,\n style: unref(windowStyle),\n onScroll,\n onWheel,\n ref: windowRef\n }, !isString(Container) ? { default: () => Inner } : Inner),\n horizontalScrollbar,\n verticalScrollbar\n ]);\n };\n return renderWindow;\n }\n });\n};\n\nexport { createGrid as default };\n//# sourceMappingURL=build-grid.mjs.map\n","import { isFunction } from '@vue/shared';\nimport '../../../../utils/index.mjs';\nimport createGrid from '../builders/build-grid.mjs';\nimport { SMART_ALIGNMENT, AUTO_ALIGNMENT, CENTERED_ALIGNMENT, END_ALIGNMENT, START_ALIGNMENT, DEFAULT_DYNAMIC_LIST_ITEM_SIZE } from '../defaults.mjs';\nimport { isUndefined, isNumber } from '../../../../utils/types.mjs';\nimport { throwError } from '../../../../utils/error.mjs';\n\nconst { max, min, floor } = Math;\nconst SCOPE = \"ElDynamicSizeGrid\";\nconst ACCESS_SIZER_KEY_MAP = {\n column: \"columnWidth\",\n row: \"rowHeight\"\n};\nconst ACCESS_LAST_VISITED_KEY_MAP = {\n column: \"lastVisitedColumnIndex\",\n row: \"lastVisitedRowIndex\"\n};\nconst getItemFromCache = (props, index, gridCache, type) => {\n const [cachedItems, sizer, lastVisited] = [\n gridCache[type],\n props[ACCESS_SIZER_KEY_MAP[type]],\n gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]]\n ];\n if (index > lastVisited) {\n let offset = 0;\n if (lastVisited >= 0) {\n const item = cachedItems[lastVisited];\n offset = item.offset + item.size;\n }\n for (let i = lastVisited + 1; i <= index; i++) {\n const size = sizer(i);\n cachedItems[i] = {\n offset,\n size\n };\n offset += size;\n }\n gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]] = index;\n }\n return cachedItems[index];\n};\nconst bs = (props, gridCache, low, high, offset, type) => {\n while (low <= high) {\n const mid = low + floor((high - low) / 2);\n const currentOffset = getItemFromCache(props, mid, gridCache, type).offset;\n if (currentOffset === offset) {\n return mid;\n } else if (currentOffset < offset) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return max(0, low - 1);\n};\nconst es = (props, gridCache, idx, offset, type) => {\n const total = type === \"column\" ? props.totalColumn : props.totalRow;\n let exponent = 1;\n while (idx < total && getItemFromCache(props, idx, gridCache, type).offset < offset) {\n idx += exponent;\n exponent *= 2;\n }\n return bs(props, gridCache, floor(idx / 2), min(idx, total - 1), offset, type);\n};\nconst findItem = (props, gridCache, offset, type) => {\n const [cache, lastVisitedIndex] = [\n gridCache[type],\n gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]]\n ];\n const lastVisitedItemOffset = lastVisitedIndex > 0 ? cache[lastVisitedIndex].offset : 0;\n if (lastVisitedItemOffset >= offset) {\n return bs(props, gridCache, 0, lastVisitedIndex, offset, type);\n }\n return es(props, gridCache, max(0, lastVisitedIndex), offset, type);\n};\nconst getEstimatedTotalHeight = ({ totalRow }, { estimatedRowHeight, lastVisitedRowIndex, row }) => {\n let sizeOfVisitedRows = 0;\n if (lastVisitedRowIndex >= totalRow) {\n lastVisitedRowIndex = totalRow - 1;\n }\n if (lastVisitedRowIndex >= 0) {\n const item = row[lastVisitedRowIndex];\n sizeOfVisitedRows = item.offset + item.size;\n }\n const unvisitedItems = totalRow - lastVisitedRowIndex - 1;\n const sizeOfUnvisitedItems = unvisitedItems * estimatedRowHeight;\n return sizeOfVisitedRows + sizeOfUnvisitedItems;\n};\nconst getEstimatedTotalWidth = ({ totalColumn }, { column, estimatedColumnWidth, lastVisitedColumnIndex }) => {\n let sizeOfVisitedColumns = 0;\n if (lastVisitedColumnIndex > totalColumn) {\n lastVisitedColumnIndex = totalColumn - 1;\n }\n if (lastVisitedColumnIndex >= 0) {\n const item = column[lastVisitedColumnIndex];\n sizeOfVisitedColumns = item.offset + item.size;\n }\n const unvisitedItems = totalColumn - lastVisitedColumnIndex - 1;\n const sizeOfUnvisitedItems = unvisitedItems * estimatedColumnWidth;\n return sizeOfVisitedColumns + sizeOfUnvisitedItems;\n};\nconst ACCESS_ESTIMATED_SIZE_KEY_MAP = {\n column: getEstimatedTotalWidth,\n row: getEstimatedTotalHeight\n};\nconst getOffset = (props, index, alignment, scrollOffset, cache, type, scrollBarWidth) => {\n const [size, estimatedSizeAssociates] = [\n type === \"row\" ? props.height : props.width,\n ACCESS_ESTIMATED_SIZE_KEY_MAP[type]\n ];\n const item = getItemFromCache(props, index, cache, type);\n const estimatedSize = estimatedSizeAssociates(props, cache);\n const maxOffset = max(0, min(estimatedSize - size, item.offset));\n const minOffset = max(0, item.offset - size + scrollBarWidth + item.size);\n if (alignment === SMART_ALIGNMENT) {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n alignment = AUTO_ALIGNMENT;\n } else {\n alignment = CENTERED_ALIGNMENT;\n }\n }\n switch (alignment) {\n case START_ALIGNMENT: {\n return maxOffset;\n }\n case END_ALIGNMENT: {\n return minOffset;\n }\n case CENTERED_ALIGNMENT: {\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n }\n case AUTO_ALIGNMENT:\n default: {\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n }\n};\nconst DynamicSizeGrid = createGrid({\n name: \"ElDynamicSizeGrid\",\n getColumnPosition: (props, idx, cache) => {\n const item = getItemFromCache(props, idx, cache, \"column\");\n return [item.size, item.offset];\n },\n getRowPosition: (props, idx, cache) => {\n const item = getItemFromCache(props, idx, cache, \"row\");\n return [item.size, item.offset];\n },\n getColumnOffset: (props, columnIndex, alignment, scrollLeft, cache, scrollBarWidth) => getOffset(props, columnIndex, alignment, scrollLeft, cache, \"column\", scrollBarWidth),\n getRowOffset: (props, rowIndex, alignment, scrollTop, cache, scrollBarWidth) => getOffset(props, rowIndex, alignment, scrollTop, cache, \"row\", scrollBarWidth),\n getColumnStartIndexForOffset: (props, scrollLeft, cache) => findItem(props, cache, scrollLeft, \"column\"),\n getColumnStopIndexForStartIndex: (props, startIndex, scrollLeft, cache) => {\n const item = getItemFromCache(props, startIndex, cache, \"column\");\n const maxOffset = scrollLeft + props.width;\n let offset = item.offset + item.size;\n let stopIndex = startIndex;\n while (stopIndex < props.totalColumn - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemFromCache(props, startIndex, cache, \"column\").size;\n }\n return stopIndex;\n },\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getRowStartIndexForOffset: (props, scrollTop, cache) => findItem(props, cache, scrollTop, \"row\"),\n getRowStopIndexForStartIndex: (props, startIndex, scrollTop, cache) => {\n const { totalRow, height } = props;\n const item = getItemFromCache(props, startIndex, cache, \"row\");\n const maxOffset = scrollTop + height;\n let offset = item.size + item.offset;\n let stopIndex = startIndex;\n while (stopIndex < totalRow - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemFromCache(props, stopIndex, cache, \"row\").size;\n }\n return stopIndex;\n },\n injectToInstance: (instance, cache) => {\n const resetAfter = ({ columnIndex, rowIndex }, forceUpdate) => {\n var _a, _b;\n forceUpdate = isUndefined(forceUpdate) ? true : forceUpdate;\n if (isNumber(columnIndex)) {\n cache.value.lastVisitedColumnIndex = Math.min(cache.value.lastVisitedColumnIndex, columnIndex - 1);\n }\n if (isNumber(rowIndex)) {\n cache.value.lastVisitedRowIndex = Math.min(cache.value.lastVisitedRowIndex, rowIndex - 1);\n }\n (_a = instance.exposed) == null ? void 0 : _a.getItemStyleCache.value(-1, null, null);\n if (forceUpdate)\n (_b = instance.proxy) == null ? void 0 : _b.$forceUpdate();\n };\n const resetAfterColumnIndex = (columnIndex, forceUpdate) => {\n resetAfter({\n columnIndex\n }, forceUpdate);\n };\n const resetAfterRowIndex = (rowIndex, forceUpdate) => {\n resetAfter({\n rowIndex\n }, forceUpdate);\n };\n Object.assign(instance.proxy, {\n resetAfterColumnIndex,\n resetAfterRowIndex,\n resetAfter\n });\n },\n initCache: ({\n estimatedColumnWidth = DEFAULT_DYNAMIC_LIST_ITEM_SIZE,\n estimatedRowHeight = DEFAULT_DYNAMIC_LIST_ITEM_SIZE\n }) => {\n const cache = {\n column: {},\n estimatedColumnWidth,\n estimatedRowHeight,\n lastVisitedColumnIndex: -1,\n lastVisitedRowIndex: -1,\n row: {}\n };\n return cache;\n },\n clearCache: false,\n validateProps: ({ columnWidth, rowHeight }) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(columnWidth)) {\n throwError(SCOPE, `\n \"columnWidth\" must be passed as function,\n instead ${typeof columnWidth} was given.\n `);\n }\n if (!isFunction(rowHeight)) {\n throwError(SCOPE, `\n \"rowHeight\" must be passed as function,\n instead ${typeof rowHeight} was given.\n `);\n }\n }\n }\n});\n\nexport { DynamicSizeGrid as default };\n//# sourceMappingURL=dynamic-size-grid.mjs.map\n","import '../../../../utils/index.mjs';\nimport createGrid from '../builders/build-grid.mjs';\nimport { AUTO_ALIGNMENT, CENTERED_ALIGNMENT, END_ALIGNMENT, START_ALIGNMENT, SMART_ALIGNMENT } from '../defaults.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nimport { throwError } from '../../../../utils/error.mjs';\n\nconst SCOPE = \"ElFixedSizeGrid\";\nconst FixedSizeGrid = createGrid({\n name: \"ElFixedSizeGrid\",\n getColumnPosition: ({ columnWidth }, index) => [\n columnWidth,\n index * columnWidth\n ],\n getRowPosition: ({ rowHeight }, index) => [\n rowHeight,\n index * rowHeight\n ],\n getEstimatedTotalHeight: ({ totalRow, rowHeight }) => rowHeight * totalRow,\n getEstimatedTotalWidth: ({ totalColumn, columnWidth }) => columnWidth * totalColumn,\n getColumnOffset: ({ totalColumn, columnWidth, width }, columnIndex, alignment, scrollLeft, _, scrollBarWidth) => {\n width = Number(width);\n const lastColumnOffset = Math.max(0, totalColumn * columnWidth - width);\n const maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n const minOffset = Math.max(0, columnIndex * columnWidth - width + scrollBarWidth + columnWidth);\n if (alignment === \"smart\") {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n alignment = AUTO_ALIGNMENT;\n } else {\n alignment = CENTERED_ALIGNMENT;\n }\n }\n switch (alignment) {\n case START_ALIGNMENT:\n return maxOffset;\n case END_ALIGNMENT:\n return minOffset;\n case CENTERED_ALIGNMENT: {\n const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(width / 2)) {\n return 0;\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset;\n } else {\n return middleOffset;\n }\n }\n case AUTO_ALIGNMENT:\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n getRowOffset: ({ rowHeight, height, totalRow }, rowIndex, align, scrollTop, _, scrollBarWidth) => {\n height = Number(height);\n const lastRowOffset = Math.max(0, totalRow * rowHeight - height);\n const maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n const minOffset = Math.max(0, rowIndex * rowHeight - height + scrollBarWidth + rowHeight);\n if (align === SMART_ALIGNMENT) {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = AUTO_ALIGNMENT;\n } else {\n align = CENTERED_ALIGNMENT;\n }\n }\n switch (align) {\n case START_ALIGNMENT:\n return maxOffset;\n case END_ALIGNMENT:\n return minOffset;\n case CENTERED_ALIGNMENT: {\n const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(height / 2)) {\n return 0;\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset;\n } else {\n return middleOffset;\n }\n }\n case AUTO_ALIGNMENT:\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n getColumnStartIndexForOffset: ({ columnWidth, totalColumn }, scrollLeft) => Math.max(0, Math.min(totalColumn - 1, Math.floor(scrollLeft / columnWidth))),\n getColumnStopIndexForStartIndex: ({ columnWidth, totalColumn, width }, startIndex, scrollLeft) => {\n const left = startIndex * columnWidth;\n const visibleColumnsCount = Math.ceil((width + scrollLeft - left) / columnWidth);\n return Math.max(0, Math.min(totalColumn - 1, startIndex + visibleColumnsCount - 1));\n },\n getRowStartIndexForOffset: ({ rowHeight, totalRow }, scrollTop) => Math.max(0, Math.min(totalRow - 1, Math.floor(scrollTop / rowHeight))),\n getRowStopIndexForStartIndex: ({ rowHeight, totalRow, height }, startIndex, scrollTop) => {\n const top = startIndex * rowHeight;\n const numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n return Math.max(0, Math.min(totalRow - 1, startIndex + numVisibleRows - 1));\n },\n initCache: () => void 0,\n clearCache: true,\n validateProps: ({ columnWidth, rowHeight }) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isNumber(columnWidth)) {\n throwError(SCOPE, `\n \"columnWidth\" must be passed as number,\n instead ${typeof columnWidth} was given.\n `);\n }\n if (!isNumber(rowHeight)) {\n throwError(SCOPE, `\n \"columnWidth\" must be passed as number,\n instead ${typeof rowHeight} was given.\n `);\n }\n }\n }\n});\n\nexport { FixedSizeGrid as default };\n//# sourceMappingURL=fixed-size-grid.mjs.map\n","import { defineComponent, ref, computed, unref, nextTick, createVNode } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport '../../../../utils/index.mjs';\nimport { tableV2HeaderProps } from '../header.mjs';\nimport { enforceUnit } from '../utils.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { castArray } from 'lodash-unified';\n\nconst COMPONENT_NAME = \"ElTableV2Header\";\nconst TableV2Header = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2HeaderProps,\n setup(props, {\n slots,\n expose\n }) {\n const ns = useNamespace(\"table-v2\");\n const headerRef = ref();\n const headerStyle = computed(() => enforceUnit({\n width: props.width,\n height: props.height\n }));\n const rowStyle = computed(() => enforceUnit({\n width: props.rowWidth,\n height: props.height\n }));\n const headerHeights = computed(() => castArray(unref(props.headerHeight)));\n const scrollToLeft = (left) => {\n const headerEl = unref(headerRef);\n nextTick(() => {\n (headerEl == null ? void 0 : headerEl.scroll) && headerEl.scroll({\n left\n });\n });\n };\n const renderFixedRows = () => {\n const fixedRowClassName = ns.e(\"fixed-header-row\");\n const {\n columns,\n fixedHeaderData,\n rowHeight\n } = props;\n return fixedHeaderData == null ? void 0 : fixedHeaderData.map((fixedRowData, fixedRowIndex) => {\n var _a;\n const style = enforceUnit({\n height: rowHeight,\n width: \"100%\"\n });\n return (_a = slots.fixed) == null ? void 0 : _a.call(slots, {\n class: fixedRowClassName,\n columns,\n rowData: fixedRowData,\n rowIndex: -(fixedRowIndex + 1),\n style\n });\n });\n };\n const renderDynamicRows = () => {\n const dynamicRowClassName = ns.e(\"dynamic-header-row\");\n const {\n columns\n } = props;\n return unref(headerHeights).map((rowHeight, rowIndex) => {\n var _a;\n const style = enforceUnit({\n width: \"100%\",\n height: rowHeight\n });\n return (_a = slots.dynamic) == null ? void 0 : _a.call(slots, {\n class: dynamicRowClassName,\n columns,\n headerIndex: rowIndex,\n style\n });\n });\n };\n expose({\n scrollToLeft\n });\n return () => {\n if (props.height <= 0)\n return;\n return createVNode(\"div\", {\n \"ref\": headerRef,\n \"class\": props.class,\n \"style\": unref(headerStyle),\n \"role\": \"rowgroup\"\n }, [createVNode(\"div\", {\n \"style\": unref(rowStyle),\n \"class\": ns.e(\"header\")\n }, [renderDynamicRows(), renderFixedRows()])]);\n };\n }\n});\n\nexport { TableV2Header as default };\n//# sourceMappingURL=header.mjs.map\n","import { ref, computed, unref, defineComponent, inject, createVNode } from 'vue';\nimport '../../virtual-list/index.mjs';\nimport '../../../utils/index.mjs';\nimport './components/index.mjs';\nimport { TableV2InjectionKey } from './tokens.mjs';\nimport { tableV2GridProps } from './grid.mjs';\nimport { sum } from './utils.mjs';\nimport { isObject } from '@vue/shared';\nimport { isNumber } from '../../../utils/types.mjs';\nimport DynamicSizeGrid from '../../virtual-list/src/components/dynamic-size-grid.mjs';\nimport FixedSizeGrid from '../../virtual-list/src/components/fixed-size-grid.mjs';\nimport TableV2Header from './components/header.mjs';\n\nconst COMPONENT_NAME = \"ElTableV2Grid\";\nconst useTableGrid = (props) => {\n const headerRef = ref();\n const bodyRef = ref();\n const totalHeight = computed(() => {\n const {\n data,\n rowHeight,\n estimatedRowHeight\n } = props;\n if (estimatedRowHeight) {\n return;\n }\n return data.length * rowHeight;\n });\n const fixedRowHeight = computed(() => {\n const {\n fixedData,\n rowHeight\n } = props;\n return ((fixedData == null ? void 0 : fixedData.length) || 0) * rowHeight;\n });\n const headerHeight = computed(() => sum(props.headerHeight));\n const gridHeight = computed(() => {\n const {\n height\n } = props;\n return Math.max(0, height - unref(headerHeight) - unref(fixedRowHeight));\n });\n const hasHeader = computed(() => {\n return unref(headerHeight) + unref(fixedRowHeight) > 0;\n });\n const itemKey = ({\n data,\n rowIndex\n }) => data[rowIndex][props.rowKey];\n function onItemRendered({\n rowCacheStart,\n rowCacheEnd,\n rowVisibleStart,\n rowVisibleEnd\n }) {\n var _a;\n (_a = props.onRowsRendered) == null ? void 0 : _a.call(props, {\n rowCacheStart,\n rowCacheEnd,\n rowVisibleStart,\n rowVisibleEnd\n });\n }\n function resetAfterRowIndex(index, forceUpdate2) {\n var _a;\n (_a = bodyRef.value) == null ? void 0 : _a.resetAfterRowIndex(index, forceUpdate2);\n }\n function scrollTo(leftOrOptions, top) {\n const header$ = unref(headerRef);\n const body$ = unref(bodyRef);\n if (isObject(leftOrOptions)) {\n header$ == null ? void 0 : header$.scrollToLeft(leftOrOptions.scrollLeft);\n body$ == null ? void 0 : body$.scrollTo(leftOrOptions);\n } else {\n header$ == null ? void 0 : header$.scrollToLeft(leftOrOptions);\n body$ == null ? void 0 : body$.scrollTo({\n scrollLeft: leftOrOptions,\n scrollTop: top\n });\n }\n }\n function scrollToTop(scrollTop) {\n var _a;\n (_a = unref(bodyRef)) == null ? void 0 : _a.scrollTo({\n scrollTop\n });\n }\n function scrollToRow(row, strategy) {\n var _a;\n (_a = unref(bodyRef)) == null ? void 0 : _a.scrollToItem(row, 1, strategy);\n }\n function forceUpdate() {\n var _a, _b;\n (_a = unref(bodyRef)) == null ? void 0 : _a.$forceUpdate();\n (_b = unref(headerRef)) == null ? void 0 : _b.$forceUpdate();\n }\n return {\n bodyRef,\n forceUpdate,\n fixedRowHeight,\n gridHeight,\n hasHeader,\n headerHeight,\n headerRef,\n totalHeight,\n itemKey,\n onItemRendered,\n resetAfterRowIndex,\n scrollTo,\n scrollToTop,\n scrollToRow\n };\n};\nconst TableGrid = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2GridProps,\n setup(props, {\n slots,\n expose\n }) {\n const {\n ns\n } = inject(TableV2InjectionKey);\n const {\n bodyRef,\n fixedRowHeight,\n gridHeight,\n hasHeader,\n headerRef,\n headerHeight,\n totalHeight,\n forceUpdate,\n itemKey,\n onItemRendered,\n resetAfterRowIndex,\n scrollTo,\n scrollToTop,\n scrollToRow\n } = useTableGrid(props);\n expose({\n forceUpdate,\n totalHeight,\n scrollTo,\n scrollToTop,\n scrollToRow,\n resetAfterRowIndex\n });\n const getColumnWidth = () => props.bodyWidth;\n return () => {\n const {\n cache,\n columns,\n data,\n fixedData,\n useIsScrolling,\n scrollbarAlwaysOn,\n scrollbarEndGap,\n scrollbarStartGap,\n style,\n rowHeight,\n bodyWidth,\n estimatedRowHeight,\n headerWidth,\n height,\n width,\n getRowHeight,\n onScroll\n } = props;\n const isDynamicRowEnabled = isNumber(estimatedRowHeight);\n const Grid = isDynamicRowEnabled ? DynamicSizeGrid : FixedSizeGrid;\n const _headerHeight = unref(headerHeight);\n return createVNode(\"div\", {\n \"role\": \"table\",\n \"class\": [ns.e(\"table\"), props.class],\n \"style\": style\n }, [createVNode(Grid, {\n \"ref\": bodyRef,\n \"data\": data,\n \"useIsScrolling\": useIsScrolling,\n \"itemKey\": itemKey,\n \"columnCache\": 0,\n \"columnWidth\": isDynamicRowEnabled ? getColumnWidth : bodyWidth,\n \"totalColumn\": 1,\n \"totalRow\": data.length,\n \"rowCache\": cache,\n \"rowHeight\": isDynamicRowEnabled ? getRowHeight : rowHeight,\n \"width\": width,\n \"height\": unref(gridHeight),\n \"class\": ns.e(\"body\"),\n \"role\": \"rowgroup\",\n \"scrollbarStartGap\": scrollbarStartGap,\n \"scrollbarEndGap\": scrollbarEndGap,\n \"scrollbarAlwaysOn\": scrollbarAlwaysOn,\n \"onScroll\": onScroll,\n \"onItemRendered\": onItemRendered,\n \"perfMode\": false\n }, {\n default: (params) => {\n var _a;\n const rowData = data[params.rowIndex];\n return (_a = slots.row) == null ? void 0 : _a.call(slots, {\n ...params,\n columns,\n rowData\n });\n }\n }), unref(hasHeader) && createVNode(TableV2Header, {\n \"ref\": headerRef,\n \"class\": ns.e(\"header-wrapper\"),\n \"columns\": columns,\n \"headerData\": data,\n \"headerHeight\": props.headerHeight,\n \"fixedHeaderData\": fixedData,\n \"rowWidth\": headerWidth,\n \"rowHeight\": rowHeight,\n \"width\": width,\n \"height\": Math.min(_headerHeight + unref(fixedRowHeight), height)\n }, {\n dynamic: slots.header,\n fixed: slots.row\n })]);\n };\n }\n});\n\nexport { TableGrid as default };\n//# sourceMappingURL=table-grid.mjs.map\n","import { isVNode, createVNode, mergeProps } from 'vue';\nimport TableGrid from '../table-grid.mjs';\n\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nconst MainTable = (props, {\n slots\n}) => {\n const {\n mainTableRef,\n ...rest\n } = props;\n return createVNode(TableGrid, mergeProps({\n \"ref\": mainTableRef\n }, rest), _isSlot(slots) ? slots : {\n default: () => [slots]\n });\n};\n\nexport { MainTable as default };\n//# sourceMappingURL=main-table.mjs.map\n","import { isVNode, createVNode, mergeProps } from 'vue';\nimport TableGrid from '../table-grid.mjs';\n\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nconst LeftTable = (props, {\n slots\n}) => {\n if (!props.columns.length)\n return;\n const {\n leftTableRef,\n ...rest\n } = props;\n return createVNode(TableGrid, mergeProps({\n \"ref\": leftTableRef\n }, rest), _isSlot(slots) ? slots : {\n default: () => [slots]\n });\n};\n\nexport { LeftTable as default };\n//# sourceMappingURL=left-table.mjs.map\n","import { isVNode, createVNode, mergeProps } from 'vue';\nimport TableGrid from '../table-grid.mjs';\n\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nconst LeftTable = (props, {\n slots\n}) => {\n if (!props.columns.length)\n return;\n const {\n rightTableRef,\n ...rest\n } = props;\n return createVNode(TableGrid, mergeProps({\n \"ref\": rightTableRef\n }, rest), _isSlot(slots) ? slots : {\n default: () => [slots]\n });\n};\n\nexport { LeftTable as default };\n//# sourceMappingURL=right-table.mjs.map\n","import { inject, ref, computed, unref, nextTick, onMounted, defineComponent, createVNode, mergeProps } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { tableV2RowProps } from '../row.mjs';\nimport { TableV2InjectionKey } from '../tokens.mjs';\nimport { placeholderSign } from '../private.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nimport { isFunction, isArray } from '@vue/shared';\n\nconst useTableRow = (props) => {\n const {\n isScrolling\n } = inject(TableV2InjectionKey);\n const measured = ref(false);\n const rowRef = ref();\n const measurable = computed(() => {\n return isNumber(props.estimatedRowHeight) && props.rowIndex >= 0;\n });\n const doMeasure = (isInit = false) => {\n const $rowRef = unref(rowRef);\n if (!$rowRef)\n return;\n const {\n columns,\n onRowHeightChange,\n rowKey,\n rowIndex,\n style\n } = props;\n const {\n height\n } = $rowRef.getBoundingClientRect();\n measured.value = true;\n nextTick(() => {\n if (isInit || height !== Number.parseInt(style.height)) {\n const firstColumn = columns[0];\n const isPlaceholder = (firstColumn == null ? void 0 : firstColumn.placeholderSign) === placeholderSign;\n onRowHeightChange == null ? void 0 : onRowHeightChange({\n rowKey,\n height,\n rowIndex\n }, firstColumn && !isPlaceholder && firstColumn.fixed);\n }\n });\n };\n const eventHandlers = computed(() => {\n const {\n rowData,\n rowIndex,\n rowKey,\n onRowHover\n } = props;\n const handlers = props.rowEventHandlers || {};\n const eventHandlers2 = {};\n Object.entries(handlers).forEach(([eventName, handler]) => {\n if (isFunction(handler)) {\n eventHandlers2[eventName] = (event) => {\n handler({\n event,\n rowData,\n rowIndex,\n rowKey\n });\n };\n }\n });\n if (onRowHover) {\n ;\n [{\n name: \"onMouseleave\",\n hovered: false\n }, {\n name: \"onMouseenter\",\n hovered: true\n }].forEach(({\n name,\n hovered\n }) => {\n const existedHandler = eventHandlers2[name];\n eventHandlers2[name] = (event) => {\n onRowHover({\n event,\n hovered,\n rowData,\n rowIndex,\n rowKey\n });\n existedHandler == null ? void 0 : existedHandler(event);\n };\n });\n }\n return eventHandlers2;\n });\n const onExpand = (expanded) => {\n const {\n onRowExpand,\n rowData,\n rowIndex,\n rowKey\n } = props;\n onRowExpand == null ? void 0 : onRowExpand({\n expanded,\n rowData,\n rowIndex,\n rowKey\n });\n };\n onMounted(() => {\n if (unref(measurable)) {\n doMeasure(true);\n }\n });\n return {\n isScrolling,\n measurable,\n measured,\n rowRef,\n eventHandlers,\n onExpand\n };\n};\nconst COMPONENT_NAME = \"ElTableV2TableRow\";\nconst TableV2Row = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2RowProps,\n setup(props, {\n expose,\n slots,\n attrs\n }) {\n const {\n eventHandlers,\n isScrolling,\n measurable,\n measured,\n rowRef,\n onExpand\n } = useTableRow(props);\n expose({\n onExpand\n });\n return () => {\n const {\n columns,\n columnsStyles,\n expandColumnKey,\n depth,\n rowData,\n rowIndex,\n style\n } = props;\n let ColumnCells = columns.map((column, columnIndex) => {\n const expandable = isArray(rowData.children) && rowData.children.length > 0 && column.key === expandColumnKey;\n return slots.cell({\n column,\n columns,\n columnIndex,\n depth,\n style: columnsStyles[column.key],\n rowData,\n rowIndex,\n isScrolling: unref(isScrolling),\n expandIconProps: expandable ? {\n rowData,\n rowIndex,\n onExpand\n } : void 0\n });\n });\n if (slots.row) {\n ColumnCells = slots.row({\n cells: ColumnCells.map((node) => {\n if (isArray(node) && node.length === 1) {\n return node[0];\n }\n return node;\n }),\n style,\n columns,\n depth,\n rowData,\n rowIndex,\n isScrolling: unref(isScrolling)\n });\n }\n if (unref(measurable)) {\n const {\n height,\n ...exceptHeightStyle\n } = style || {};\n const _measured = unref(measured);\n return createVNode(\"div\", mergeProps({\n \"ref\": rowRef,\n \"class\": props.class,\n \"style\": _measured ? style : exceptHeightStyle,\n \"role\": \"row\"\n }, attrs, unref(eventHandlers)), [ColumnCells]);\n }\n return createVNode(\"div\", mergeProps(attrs, {\n \"ref\": rowRef,\n \"class\": props.class,\n \"style\": style,\n \"role\": \"row\"\n }, unref(eventHandlers)), [ColumnCells]);\n };\n }\n});\n\nexport { TableV2Row as default };\n//# sourceMappingURL=row.mjs.map\n","import { isVNode, createVNode, mergeProps } from 'vue';\nimport '../components/index.mjs';\nimport { tryCall } from '../utils.mjs';\nimport TableV2Row from '../components/row.mjs';\n\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nconst RowRenderer = (props, {\n slots\n}) => {\n const {\n columns,\n columnsStyles,\n depthMap,\n expandColumnKey,\n expandedRowKeys,\n estimatedRowHeight,\n hasFixedColumns,\n rowData,\n rowIndex,\n style,\n isScrolling,\n rowProps,\n rowClass,\n rowKey,\n rowEventHandlers,\n ns,\n onRowHovered,\n onRowExpanded\n } = props;\n const rowKls = tryCall(rowClass, {\n columns,\n rowData,\n rowIndex\n }, \"\");\n const additionalProps = tryCall(rowProps, {\n columns,\n rowData,\n rowIndex\n });\n const _rowKey = rowData[rowKey];\n const depth = depthMap[_rowKey] || 0;\n const canExpand = Boolean(expandColumnKey);\n const isFixedRow = rowIndex < 0;\n const kls = [ns.e(\"row\"), rowKls, {\n [ns.e(`row-depth-${depth}`)]: canExpand && rowIndex >= 0,\n [ns.is(\"expanded\")]: canExpand && expandedRowKeys.includes(_rowKey),\n [ns.is(\"fixed\")]: !depth && isFixedRow,\n [ns.is(\"customized\")]: Boolean(slots.row)\n }];\n const onRowHover = hasFixedColumns ? onRowHovered : void 0;\n const _rowProps = {\n ...additionalProps,\n columns,\n columnsStyles,\n class: kls,\n depth,\n expandColumnKey,\n estimatedRowHeight: isFixedRow ? void 0 : estimatedRowHeight,\n isScrolling,\n rowIndex,\n rowData,\n rowKey: _rowKey,\n rowEventHandlers,\n style\n };\n const handlerMosueEnter = (e) => {\n onRowHover == null ? void 0 : onRowHover({\n hovered: true,\n rowKey: _rowKey,\n event: e,\n rowData,\n rowIndex\n });\n };\n const handlerMouseLeave = (e) => {\n onRowHover == null ? void 0 : onRowHover({\n hovered: false,\n rowKey: _rowKey,\n event: e,\n rowData,\n rowIndex\n });\n };\n return createVNode(TableV2Row, mergeProps(_rowProps, {\n \"onRowExpand\": onRowExpanded,\n \"onMouseenter\": handlerMosueEnter,\n \"onMouseleave\": handlerMouseLeave,\n \"rowkey\": _rowKey\n }), _isSlot(slots) ? slots : {\n default: () => [slots]\n });\n};\n\nexport { RowRenderer as default };\n//# sourceMappingURL=row.mjs.map\n","import { renderSlot, createVNode } from 'vue';\n\nconst TableV2Cell = (props, {\n slots\n}) => {\n var _a;\n const {\n cellData,\n style\n } = props;\n const displayText = ((_a = cellData == null ? void 0 : cellData.toString) == null ? void 0 : _a.call(cellData)) || \"\";\n const defaultSlot = renderSlot(slots, \"default\", props, () => [displayText]);\n return createVNode(\"div\", {\n \"class\": props.class,\n \"title\": displayText,\n \"style\": style\n }, [defaultSlot]);\n};\nTableV2Cell.displayName = \"ElTableV2Cell\";\nTableV2Cell.inheritAttrs = false;\n\nexport { TableV2Cell as default };\n//# sourceMappingURL=cell.mjs.map\n","import { createVNode, mergeProps } from 'vue';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { ArrowRight } from '@element-plus/icons-vue';\n\nconst ExpandIcon = (props) => {\n const {\n expanded,\n expandable,\n onExpand,\n style,\n size\n } = props;\n const expandIconProps = {\n onClick: expandable ? () => onExpand(!expanded) : void 0,\n class: props.class\n };\n return createVNode(ElIcon, mergeProps(expandIconProps, {\n \"size\": size,\n \"style\": style\n }), {\n default: () => [createVNode(ArrowRight, null, null)]\n });\n};\n\nexport { ExpandIcon as default };\n//# sourceMappingURL=expand-icon.mjs.map\n","import { createVNode, renderSlot, mergeProps } from 'vue';\nimport { get } from 'lodash-unified';\nimport '../../../../utils/index.mjs';\nimport '../components/index.mjs';\nimport { Alignment } from '../constants.mjs';\nimport { placeholderSign } from '../private.mjs';\nimport { enforceUnit, tryCall, componentToSlot } from '../utils.mjs';\nimport { isFunction, isObject } from '@vue/shared';\nimport TableV2Cell from '../components/cell.mjs';\nimport ExpandIcon from '../components/expand-icon.mjs';\n\nconst CellRenderer = ({\n columns,\n column,\n columnIndex,\n depth,\n expandIconProps,\n isScrolling,\n rowData,\n rowIndex,\n style,\n expandedRowKeys,\n ns,\n cellProps: _cellProps,\n expandColumnKey,\n indentSize,\n iconSize,\n rowKey\n}, {\n slots\n}) => {\n const cellStyle = enforceUnit(style);\n if (column.placeholderSign === placeholderSign) {\n return createVNode(\"div\", {\n \"class\": ns.em(\"row-cell\", \"placeholder\"),\n \"style\": cellStyle\n }, null);\n }\n const {\n cellRenderer,\n dataKey,\n dataGetter\n } = column;\n const cellData = isFunction(dataGetter) ? dataGetter({\n columns,\n column,\n columnIndex,\n rowData,\n rowIndex\n }) : get(rowData, dataKey != null ? dataKey : \"\");\n const extraCellProps = tryCall(_cellProps, {\n cellData,\n columns,\n column,\n columnIndex,\n rowIndex,\n rowData\n });\n const cellProps = {\n class: ns.e(\"cell-text\"),\n columns,\n column,\n columnIndex,\n cellData,\n isScrolling,\n rowData,\n rowIndex\n };\n const columnCellRenderer = componentToSlot(cellRenderer);\n const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : renderSlot(slots, \"default\", cellProps, () => [createVNode(TableV2Cell, cellProps, null)]);\n const kls = [ns.e(\"row-cell\"), column.class, column.align === Alignment.CENTER && ns.is(\"align-center\"), column.align === Alignment.RIGHT && ns.is(\"align-right\")];\n const expandable = rowIndex >= 0 && expandColumnKey && column.key === expandColumnKey;\n const expanded = rowIndex >= 0 && expandedRowKeys.includes(rowData[rowKey]);\n let IconOrPlaceholder;\n const iconStyle = `margin-inline-start: ${depth * indentSize}px;`;\n if (expandable) {\n if (isObject(expandIconProps)) {\n IconOrPlaceholder = createVNode(ExpandIcon, mergeProps(expandIconProps, {\n \"class\": [ns.e(\"expand-icon\"), ns.is(\"expanded\", expanded)],\n \"size\": iconSize,\n \"expanded\": expanded,\n \"style\": iconStyle,\n \"expandable\": true\n }), null);\n } else {\n IconOrPlaceholder = createVNode(\"div\", {\n \"style\": [iconStyle, `width: ${iconSize}px; height: ${iconSize}px;`].join(\" \")\n }, null);\n }\n }\n return createVNode(\"div\", mergeProps({\n \"class\": kls,\n \"style\": cellStyle\n }, extraCellProps, {\n \"role\": \"cell\"\n }), [IconOrPlaceholder, Cell]);\n};\nCellRenderer.inheritAttrs = false;\n\nexport { CellRenderer as default };\n//# sourceMappingURL=cell.mjs.map\n","import '../../../utils/index.mjs';\nimport { columns } from './common.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst tableV2HeaderRowProps = buildProps({\n class: String,\n columns,\n columnsStyles: {\n type: definePropType(Object),\n required: true\n },\n headerIndex: Number,\n style: { type: definePropType(Object) }\n});\n\nexport { tableV2HeaderRowProps };\n//# sourceMappingURL=header-row.mjs.map\n","import { defineComponent, createVNode } from 'vue';\nimport '../../../../utils/index.mjs';\nimport { tableV2HeaderRowProps } from '../header-row.mjs';\nimport { isArray } from '@vue/shared';\n\nconst TableV2HeaderRow = defineComponent({\n name: \"ElTableV2HeaderRow\",\n props: tableV2HeaderRowProps,\n setup(props, {\n slots\n }) {\n return () => {\n const {\n columns,\n columnsStyles,\n headerIndex,\n style\n } = props;\n let Cells = columns.map((column, columnIndex) => {\n return slots.cell({\n columns,\n column,\n columnIndex,\n headerIndex,\n style: columnsStyles[column.key]\n });\n });\n if (slots.header) {\n Cells = slots.header({\n cells: Cells.map((node) => {\n if (isArray(node) && node.length === 1) {\n return node[0];\n }\n return node;\n }),\n columns,\n headerIndex\n });\n }\n return createVNode(\"div\", {\n \"class\": props.class,\n \"style\": style,\n \"role\": \"row\"\n }, [Cells]);\n };\n }\n});\n\nexport { TableV2HeaderRow as default };\n//# sourceMappingURL=header-row.mjs.map\n","import { isVNode, createVNode } from 'vue';\nimport '../components/index.mjs';\nimport { tryCall } from '../utils.mjs';\nimport TableV2HeaderRow from '../components/header-row.mjs';\n\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nconst HeaderRenderer = ({\n columns,\n columnsStyles,\n headerIndex,\n style,\n headerClass,\n headerProps,\n ns\n}, {\n slots\n}) => {\n const param = {\n columns,\n headerIndex\n };\n const kls = [ns.e(\"header-row\"), tryCall(headerClass, param, \"\"), {\n [ns.is(\"customized\")]: Boolean(slots.header)\n }];\n const extraProps = {\n ...tryCall(headerProps, param),\n columnsStyles,\n class: kls,\n columns,\n headerIndex,\n style\n };\n return createVNode(TableV2HeaderRow, extraProps, _isSlot(slots) ? slots : {\n default: () => [slots]\n });\n};\n\nexport { HeaderRenderer as default };\n//# sourceMappingURL=header.mjs.map\n","import { renderSlot, createVNode } from 'vue';\n\nconst HeaderCell = (props, {\n slots\n}) => renderSlot(slots, \"default\", props, () => {\n var _a, _b;\n return [createVNode(\"div\", {\n \"class\": props.class,\n \"title\": (_a = props.column) == null ? void 0 : _a.title\n }, [(_b = props.column) == null ? void 0 : _b.title])];\n});\nHeaderCell.displayName = \"ElTableV2HeaderCell\";\nHeaderCell.inheritAttrs = false;\n\nexport { HeaderCell as default };\n//# sourceMappingURL=header-cell.mjs.map\n","import { createVNode } from 'vue';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { SortUp, SortDown } from '@element-plus/icons-vue';\nimport { SortOrder } from '../constants.mjs';\n\nconst SortIcon = (props) => {\n const {\n sortOrder\n } = props;\n return createVNode(ElIcon, {\n \"size\": 14,\n \"class\": props.class\n }, {\n default: () => [sortOrder === SortOrder.ASC ? createVNode(SortUp, null, null) : createVNode(SortDown, null, null)]\n });\n};\n\nexport { SortIcon as default };\n//# sourceMappingURL=sort-icon.mjs.map\n","import { createVNode, renderSlot, mergeProps } from 'vue';\nimport '../components/index.mjs';\nimport { oppositeOrderMap, SortOrder, Alignment } from '../constants.mjs';\nimport { placeholderSign } from '../private.mjs';\nimport { enforceUnit, componentToSlot, tryCall } from '../utils.mjs';\nimport HeaderCell from '../components/header-cell.mjs';\nimport SortIcon from '../components/sort-icon.mjs';\n\nconst HeaderCellRenderer = (props, {\n slots\n}) => {\n const {\n column,\n ns,\n style,\n onColumnSorted\n } = props;\n const cellStyle = enforceUnit(style);\n if (column.placeholderSign === placeholderSign) {\n return createVNode(\"div\", {\n \"class\": ns.em(\"header-row-cell\", \"placeholder\"),\n \"style\": cellStyle\n }, null);\n }\n const {\n headerCellRenderer,\n headerClass,\n sortable\n } = column;\n const cellProps = {\n ...props,\n class: ns.e(\"header-cell-text\")\n };\n const columnCellRenderer = componentToSlot(headerCellRenderer);\n const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : renderSlot(slots, \"default\", cellProps, () => [createVNode(HeaderCell, cellProps, null)]);\n const {\n sortBy,\n sortState,\n headerCellProps\n } = props;\n let sorting, sortOrder;\n if (sortState) {\n const order = sortState[column.key];\n sorting = Boolean(oppositeOrderMap[order]);\n sortOrder = sorting ? order : SortOrder.ASC;\n } else {\n sorting = column.key === sortBy.key;\n sortOrder = sorting ? sortBy.order : SortOrder.ASC;\n }\n const cellKls = [ns.e(\"header-cell\"), tryCall(headerClass, props, \"\"), column.align === Alignment.CENTER && ns.is(\"align-center\"), column.align === Alignment.RIGHT && ns.is(\"align-right\"), sortable && ns.is(\"sortable\")];\n const cellWrapperProps = {\n ...tryCall(headerCellProps, props),\n onClick: column.sortable ? onColumnSorted : void 0,\n class: cellKls,\n style: cellStyle,\n [\"data-key\"]: column.key\n };\n return createVNode(\"div\", mergeProps(cellWrapperProps, {\n \"role\": \"columnheader\"\n }), [Cell, sortable && createVNode(SortIcon, {\n \"class\": [ns.e(\"sort-icon\"), sorting && ns.is(\"sorting\")],\n \"sortOrder\": sortOrder\n }, null)]);\n};\n\nexport { HeaderCellRenderer as default };\n//# sourceMappingURL=header-cell.mjs.map\n","import { createVNode } from 'vue';\n\nconst Footer = (props, {\n slots\n}) => {\n var _a;\n return createVNode(\"div\", {\n \"class\": props.class,\n \"style\": props.style\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n};\nFooter.displayName = \"ElTableV2Footer\";\n\nexport { Footer as default };\n//# sourceMappingURL=footer.mjs.map\n","import { renderSlot, createVNode } from 'vue';\nimport { ElEmpty } from '../../../empty/index.mjs';\n\nconst Footer = (props, {\n slots\n}) => {\n const defaultSlot = renderSlot(slots, \"default\", {}, () => [createVNode(ElEmpty, null, null)]);\n return createVNode(\"div\", {\n \"class\": props.class,\n \"style\": props.style\n }, [defaultSlot]);\n};\nFooter.displayName = \"ElTableV2Empty\";\n\nexport { Footer as default };\n//# sourceMappingURL=empty.mjs.map\n","import { createVNode } from 'vue';\n\nconst Overlay = (props, {\n slots\n}) => {\n var _a;\n return createVNode(\"div\", {\n \"class\": props.class,\n \"style\": props.style\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n};\nOverlay.displayName = \"ElTableV2Overlay\";\n\nexport { Overlay as default };\n//# sourceMappingURL=overlay.mjs.map\n","import { isVNode, defineComponent, provide, unref, createVNode, mergeProps } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { useTable } from './use-table.mjs';\nimport { TableV2InjectionKey } from './tokens.mjs';\nimport { tableV2Props } from './table.mjs';\nimport MainTable from './renderers/main-table.mjs';\nimport LeftTable from './renderers/left-table.mjs';\nimport LeftTable$1 from './renderers/right-table.mjs';\nimport RowRenderer from './renderers/row.mjs';\nimport CellRenderer from './renderers/cell.mjs';\nimport HeaderRenderer from './renderers/header.mjs';\nimport HeaderCellRenderer from './renderers/header-cell.mjs';\nimport Footer from './renderers/footer.mjs';\nimport Footer$1 from './renderers/empty.mjs';\nimport Overlay from './renderers/overlay.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nconst COMPONENT_NAME = \"ElTableV2\";\nconst TableV2 = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2Props,\n setup(props, {\n slots,\n expose\n }) {\n const ns = useNamespace(\"table-v2\");\n const {\n columnsStyles,\n fixedColumnsOnLeft,\n fixedColumnsOnRight,\n mainColumns,\n mainTableHeight,\n fixedTableHeight,\n leftTableWidth,\n rightTableWidth,\n data,\n depthMap,\n expandedRowKeys,\n hasFixedColumns,\n mainTableRef,\n leftTableRef,\n rightTableRef,\n isDynamic,\n isResetting,\n isScrolling,\n bodyWidth,\n emptyStyle,\n rootStyle,\n headerWidth,\n footerHeight,\n showEmpty,\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n getRowHeight,\n onColumnSorted,\n onRowHeightChange,\n onRowHovered,\n onRowExpanded,\n onRowsRendered,\n onScroll,\n onVerticalScroll\n } = useTable(props);\n expose({\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow\n });\n provide(TableV2InjectionKey, {\n ns,\n isResetting,\n isScrolling\n });\n return () => {\n const {\n cache,\n cellProps,\n estimatedRowHeight,\n expandColumnKey,\n fixedData,\n headerHeight,\n headerClass,\n headerProps,\n headerCellProps,\n sortBy,\n sortState,\n rowHeight,\n rowClass,\n rowEventHandlers,\n rowKey,\n rowProps,\n scrollbarAlwaysOn,\n indentSize,\n iconSize,\n useIsScrolling,\n vScrollbarSize,\n width\n } = props;\n const _data = unref(data);\n const mainTableProps = {\n cache,\n class: ns.e(\"main\"),\n columns: unref(mainColumns),\n data: _data,\n fixedData,\n estimatedRowHeight,\n bodyWidth: unref(bodyWidth) + vScrollbarSize,\n headerHeight,\n headerWidth: unref(headerWidth),\n height: unref(mainTableHeight),\n mainTableRef,\n rowKey,\n rowHeight,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n useIsScrolling,\n width,\n getRowHeight,\n onRowsRendered,\n onScroll\n };\n const leftColumnsWidth = unref(leftTableWidth);\n const _fixedTableHeight = unref(fixedTableHeight);\n const leftTableProps = {\n cache,\n class: ns.e(\"left\"),\n columns: unref(fixedColumnsOnLeft),\n data: _data,\n estimatedRowHeight,\n leftTableRef,\n rowHeight,\n bodyWidth: leftColumnsWidth,\n headerWidth: leftColumnsWidth,\n headerHeight,\n height: _fixedTableHeight,\n rowKey,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n useIsScrolling,\n width: leftColumnsWidth,\n getRowHeight,\n onScroll: onVerticalScroll\n };\n const rightColumnsWidth = unref(rightTableWidth);\n const rightColumnsWidthWithScrollbar = rightColumnsWidth + vScrollbarSize;\n const rightTableProps = {\n cache,\n class: ns.e(\"right\"),\n columns: unref(fixedColumnsOnRight),\n data: _data,\n estimatedRowHeight,\n rightTableRef,\n rowHeight,\n bodyWidth: rightColumnsWidthWithScrollbar,\n headerWidth: rightColumnsWidthWithScrollbar,\n headerHeight,\n height: _fixedTableHeight,\n rowKey,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n width: rightColumnsWidthWithScrollbar,\n style: `--${unref(ns.namespace)}-table-scrollbar-size: ${vScrollbarSize}px`,\n useIsScrolling,\n getRowHeight,\n onScroll: onVerticalScroll\n };\n const _columnsStyles = unref(columnsStyles);\n const tableRowProps = {\n ns,\n depthMap: unref(depthMap),\n columnsStyles: _columnsStyles,\n expandColumnKey,\n expandedRowKeys: unref(expandedRowKeys),\n estimatedRowHeight,\n hasFixedColumns: unref(hasFixedColumns),\n rowProps,\n rowClass,\n rowKey,\n rowEventHandlers,\n onRowHovered,\n onRowExpanded,\n onRowHeightChange\n };\n const tableCellProps = {\n cellProps,\n expandColumnKey,\n indentSize,\n iconSize,\n rowKey,\n expandedRowKeys: unref(expandedRowKeys),\n ns\n };\n const tableHeaderProps = {\n ns,\n headerClass,\n headerProps,\n columnsStyles: _columnsStyles\n };\n const tableHeaderCellProps = {\n ns,\n sortBy,\n sortState,\n headerCellProps,\n onColumnSorted\n };\n const tableSlots = {\n row: (props2) => createVNode(RowRenderer, mergeProps(props2, tableRowProps), {\n row: slots.row,\n cell: (props3) => {\n let _slot;\n return slots.cell ? createVNode(CellRenderer, mergeProps(props3, tableCellProps, {\n \"style\": _columnsStyles[props3.column.key]\n }), _isSlot(_slot = slots.cell(props3)) ? _slot : {\n default: () => [_slot]\n }) : createVNode(CellRenderer, mergeProps(props3, tableCellProps, {\n \"style\": _columnsStyles[props3.column.key]\n }), null);\n }\n }),\n header: (props2) => createVNode(HeaderRenderer, mergeProps(props2, tableHeaderProps), {\n header: slots.header,\n cell: (props3) => {\n let _slot2;\n return slots[\"header-cell\"] ? createVNode(HeaderCellRenderer, mergeProps(props3, tableHeaderCellProps, {\n \"style\": _columnsStyles[props3.column.key]\n }), _isSlot(_slot2 = slots[\"header-cell\"](props3)) ? _slot2 : {\n default: () => [_slot2]\n }) : createVNode(HeaderCellRenderer, mergeProps(props3, tableHeaderCellProps, {\n \"style\": _columnsStyles[props3.column.key]\n }), null);\n }\n })\n };\n const rootKls = [props.class, ns.b(), ns.e(\"root\"), {\n [ns.is(\"dynamic\")]: unref(isDynamic)\n }];\n const footerProps = {\n class: ns.e(\"footer\"),\n style: unref(footerHeight)\n };\n return createVNode(\"div\", {\n \"class\": rootKls,\n \"style\": unref(rootStyle)\n }, [createVNode(MainTable, mainTableProps, _isSlot(tableSlots) ? tableSlots : {\n default: () => [tableSlots]\n }), createVNode(LeftTable, leftTableProps, _isSlot(tableSlots) ? tableSlots : {\n default: () => [tableSlots]\n }), createVNode(LeftTable$1, rightTableProps, _isSlot(tableSlots) ? tableSlots : {\n default: () => [tableSlots]\n }), slots.footer && createVNode(Footer, footerProps, {\n default: slots.footer\n }), unref(showEmpty) && createVNode(Footer$1, {\n \"class\": ns.e(\"empty\"),\n \"style\": unref(emptyStyle)\n }, {\n default: slots.empty\n }), slots.overlay && createVNode(Overlay, {\n \"class\": ns.e(\"overlay\")\n }, {\n default: slots.overlay\n })]);\n };\n }\n});\n\nexport { TableV2 as default };\n//# sourceMappingURL=table-v2.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst autoResizerProps = buildProps({\n disableWidth: Boolean,\n disableHeight: Boolean,\n onResize: {\n type: definePropType(Function)\n }\n});\n\nexport { autoResizerProps };\n//# sourceMappingURL=auto-resizer.mjs.map\n","import { ref, onMounted, onBeforeUnmount, watch } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\n\nconst useAutoResize = (props) => {\n const sizer = ref();\n const width$ = ref(0);\n const height$ = ref(0);\n let resizerStopper;\n onMounted(() => {\n resizerStopper = useResizeObserver(sizer, ([entry]) => {\n const { width, height } = entry.contentRect;\n const { paddingLeft, paddingRight, paddingTop, paddingBottom } = getComputedStyle(entry.target);\n const left = Number.parseInt(paddingLeft) || 0;\n const right = Number.parseInt(paddingRight) || 0;\n const top = Number.parseInt(paddingTop) || 0;\n const bottom = Number.parseInt(paddingBottom) || 0;\n width$.value = width - left - right;\n height$.value = height - top - bottom;\n }).stop;\n });\n onBeforeUnmount(() => {\n resizerStopper == null ? void 0 : resizerStopper();\n });\n watch([width$, height$], ([width, height]) => {\n var _a;\n (_a = props.onResize) == null ? void 0 : _a.call(props, {\n width,\n height\n });\n });\n return {\n sizer,\n width: width$,\n height: height$\n };\n};\n\nexport { useAutoResize };\n//# sourceMappingURL=use-auto-resize.mjs.map\n","import { defineComponent, createVNode } from 'vue';\nimport '../../../../hooks/index.mjs';\nimport { autoResizerProps } from '../auto-resizer.mjs';\nimport '../composables/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useAutoResize } from '../composables/use-auto-resize.mjs';\n\nconst AutoResizer = defineComponent({\n name: \"ElAutoResizer\",\n props: autoResizerProps,\n setup(props, {\n slots\n }) {\n const ns = useNamespace(\"auto-resizer\");\n const {\n height,\n width,\n sizer\n } = useAutoResize(props);\n const style = {\n width: \"100%\",\n height: \"100%\"\n };\n return () => {\n var _a;\n return createVNode(\"div\", {\n \"ref\": sizer,\n \"class\": ns.b(),\n \"style\": style\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots, {\n height: height.value,\n width: width.value\n })]);\n };\n }\n});\n\nexport { AutoResizer as default };\n//# sourceMappingURL=auto-resizer.mjs.map\n","import '../../utils/index.mjs';\nimport TableV2 from './src/table-v2.mjs';\nexport { default as TableV2 } from './src/table-v2.mjs';\nimport AutoResizer from './src/components/auto-resizer.mjs';\nexport { Alignment as TableV2Alignment, FixedDir as TableV2FixedDir, SortOrder as TableV2SortOrder } from './src/constants.mjs';\nexport { autoResizerProps } from './src/auto-resizer.mjs';\nexport { placeholderSign as TableV2Placeholder } from './src/private.mjs';\nexport { tableV2Props } from './src/table.mjs';\nexport { tableV2RowProps } from './src/row.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElTableV2 = withInstall(TableV2);\nconst ElAutoResizer = withInstall(AutoResizer);\n\nexport { ElAutoResizer, ElTableV2 };\n//# sourceMappingURL=index.mjs.map\n","const tabsRootContextKey = Symbol(\"tabsRootContextKey\");\n\nexport { tabsRootContextKey };\n//# sourceMappingURL=constants.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\n\nconst tabBarProps = buildProps({\n tabs: {\n type: definePropType(Array),\n default: () => mutable([])\n }\n});\n\nexport { tabBarProps };\n//# sourceMappingURL=tab-bar.mjs.map\n","import { defineComponent, getCurrentInstance, inject, ref, watch, nextTick, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { tabsRootContextKey } from './constants.mjs';\nimport { tabBarProps } from './tab-bar.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { throwError } from '../../../utils/error.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { capitalize } from '../../../utils/strings.mjs';\n\nconst COMPONENT_NAME = \"ElTabBar\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: tabBarProps,\n setup(__props, { expose }) {\n const props = __props;\n const instance = getCurrentInstance();\n const rootTabs = inject(tabsRootContextKey);\n if (!rootTabs)\n throwError(COMPONENT_NAME, \"\");\n const ns = useNamespace(\"tabs\");\n const barRef = ref();\n const barStyle = ref();\n const getBarStyle = () => {\n let offset = 0;\n let tabSize = 0;\n const sizeName = [\"top\", \"bottom\"].includes(rootTabs.props.tabPosition) ? \"width\" : \"height\";\n const sizeDir = sizeName === \"width\" ? \"x\" : \"y\";\n const position = sizeDir === \"x\" ? \"left\" : \"top\";\n props.tabs.every((tab) => {\n var _a, _b;\n const $el = (_b = (_a = instance.parent) == null ? void 0 : _a.refs) == null ? void 0 : _b[`tab-${tab.uid}`];\n if (!$el)\n return false;\n if (!tab.active) {\n return true;\n }\n offset = $el[`offset${capitalize(position)}`];\n tabSize = $el[`client${capitalize(sizeName)}`];\n const tabStyles = window.getComputedStyle($el);\n if (sizeName === \"width\") {\n if (props.tabs.length > 1) {\n tabSize -= Number.parseFloat(tabStyles.paddingLeft) + Number.parseFloat(tabStyles.paddingRight);\n }\n offset += Number.parseFloat(tabStyles.paddingLeft);\n }\n return false;\n });\n return {\n [sizeName]: `${tabSize}px`,\n transform: `translate${capitalize(sizeDir)}(${offset}px)`\n };\n };\n const update = () => barStyle.value = getBarStyle();\n watch(() => props.tabs, async () => {\n await nextTick();\n update();\n }, { immediate: true });\n useResizeObserver(barRef, () => update());\n expose({\n ref: barRef,\n update\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"barRef\",\n ref: barRef,\n class: normalizeClass([unref(ns).e(\"active-bar\"), unref(ns).is(unref(rootTabs).props.tabPosition)]),\n style: normalizeStyle(barStyle.value)\n }, null, 6);\n };\n }\n});\nvar TabBar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"tab-bar.vue\"]]);\n\nexport { TabBar as default };\n//# sourceMappingURL=tab-bar2.mjs.map\n","import { defineComponent, getCurrentInstance, inject, ref, computed, nextTick, watch, onMounted, onUpdated, createVNode } from 'vue';\nimport { useDocumentVisibility, useWindowFocus, useResizeObserver } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ArrowLeft, ArrowRight, Close } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport TabBar from './tab-bar2.mjs';\nimport { tabsRootContextKey } from './constants.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { throwError } from '../../../utils/error.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { capitalize } from '../../../utils/strings.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\n\nconst tabNavProps = buildProps({\n panes: {\n type: definePropType(Array),\n default: () => mutable([])\n },\n currentName: {\n type: [String, Number],\n default: \"\"\n },\n editable: Boolean,\n type: {\n type: String,\n values: [\"card\", \"border-card\", \"\"],\n default: \"\"\n },\n stretch: Boolean\n});\nconst tabNavEmits = {\n tabClick: (tab, tabName, ev) => ev instanceof Event,\n tabRemove: (tab, ev) => ev instanceof Event\n};\nconst COMPONENT_NAME = \"ElTabNav\";\nconst TabNav = defineComponent({\n name: COMPONENT_NAME,\n props: tabNavProps,\n emits: tabNavEmits,\n setup(props, {\n expose,\n emit\n }) {\n const vm = getCurrentInstance();\n const rootTabs = inject(tabsRootContextKey);\n if (!rootTabs)\n throwError(COMPONENT_NAME, ``);\n const ns = useNamespace(\"tabs\");\n const visibility = useDocumentVisibility();\n const focused = useWindowFocus();\n const navScroll$ = ref();\n const nav$ = ref();\n const el$ = ref();\n const tabBarRef = ref();\n const scrollable = ref(false);\n const navOffset = ref(0);\n const isFocus = ref(false);\n const focusable = ref(true);\n const sizeName = computed(() => [\"top\", \"bottom\"].includes(rootTabs.props.tabPosition) ? \"width\" : \"height\");\n const navStyle = computed(() => {\n const dir = sizeName.value === \"width\" ? \"X\" : \"Y\";\n return {\n transform: `translate${dir}(-${navOffset.value}px)`\n };\n });\n const scrollPrev = () => {\n if (!navScroll$.value)\n return;\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n if (!currentOffset)\n return;\n const newOffset = currentOffset > containerSize ? currentOffset - containerSize : 0;\n navOffset.value = newOffset;\n };\n const scrollNext = () => {\n if (!navScroll$.value || !nav$.value)\n return;\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n if (navSize - currentOffset <= containerSize)\n return;\n const newOffset = navSize - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize - containerSize;\n navOffset.value = newOffset;\n };\n const scrollToActiveTab = async () => {\n const nav = nav$.value;\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav)\n return;\n await nextTick();\n const activeTab = el$.value.querySelector(\".is-active\");\n if (!activeTab)\n return;\n const navScroll = navScroll$.value;\n const isHorizontal = [\"top\", \"bottom\"].includes(rootTabs.props.tabPosition);\n const activeTabBounding = activeTab.getBoundingClientRect();\n const navScrollBounding = navScroll.getBoundingClientRect();\n const maxOffset = isHorizontal ? nav.offsetWidth - navScrollBounding.width : nav.offsetHeight - navScrollBounding.height;\n const currentOffset = navOffset.value;\n let newOffset = currentOffset;\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset = currentOffset - (navScrollBounding.left - activeTabBounding.left);\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset = currentOffset + activeTabBounding.right - navScrollBounding.right;\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset = currentOffset - (navScrollBounding.top - activeTabBounding.top);\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset = currentOffset + (activeTabBounding.bottom - navScrollBounding.bottom);\n }\n }\n newOffset = Math.max(newOffset, 0);\n navOffset.value = Math.min(newOffset, maxOffset);\n };\n const update = () => {\n var _a;\n if (!nav$.value || !navScroll$.value)\n return;\n props.stretch && ((_a = tabBarRef.value) == null ? void 0 : _a.update());\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n if (containerSize < navSize) {\n scrollable.value = scrollable.value || {};\n scrollable.value.prev = currentOffset;\n scrollable.value.next = currentOffset + containerSize < navSize;\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize;\n }\n } else {\n scrollable.value = false;\n if (currentOffset > 0) {\n navOffset.value = 0;\n }\n }\n };\n const changeTab = (e) => {\n const code = e.code;\n const {\n up,\n down,\n left,\n right\n } = EVENT_CODE;\n if (![up, down, left, right].includes(code))\n return;\n const tabList = Array.from(e.currentTarget.querySelectorAll(\"[role=tab]:not(.is-disabled)\"));\n const currentIndex = tabList.indexOf(e.target);\n let nextIndex;\n if (code === left || code === up) {\n if (currentIndex === 0) {\n nextIndex = tabList.length - 1;\n } else {\n nextIndex = currentIndex - 1;\n }\n } else {\n if (currentIndex < tabList.length - 1) {\n nextIndex = currentIndex + 1;\n } else {\n nextIndex = 0;\n }\n }\n tabList[nextIndex].focus({\n preventScroll: true\n });\n tabList[nextIndex].click();\n setFocus();\n };\n const setFocus = () => {\n if (focusable.value)\n isFocus.value = true;\n };\n const removeFocus = () => isFocus.value = false;\n watch(visibility, (visibility2) => {\n if (visibility2 === \"hidden\") {\n focusable.value = false;\n } else if (visibility2 === \"visible\") {\n setTimeout(() => focusable.value = true, 50);\n }\n });\n watch(focused, (focused2) => {\n if (focused2) {\n setTimeout(() => focusable.value = true, 50);\n } else {\n focusable.value = false;\n }\n });\n useResizeObserver(el$, update);\n onMounted(() => setTimeout(() => scrollToActiveTab(), 0));\n onUpdated(() => update());\n expose({\n scrollToActiveTab,\n removeFocus\n });\n watch(() => props.panes, () => vm.update(), {\n flush: \"post\",\n deep: true\n });\n return () => {\n const scrollBtn = scrollable.value ? [createVNode(\"span\", {\n \"class\": [ns.e(\"nav-prev\"), ns.is(\"disabled\", !scrollable.value.prev)],\n \"onClick\": scrollPrev\n }, [createVNode(ElIcon, null, {\n default: () => [createVNode(ArrowLeft, null, null)]\n })]), createVNode(\"span\", {\n \"class\": [ns.e(\"nav-next\"), ns.is(\"disabled\", !scrollable.value.next)],\n \"onClick\": scrollNext\n }, [createVNode(ElIcon, null, {\n default: () => [createVNode(ArrowRight, null, null)]\n })])] : null;\n const tabs = props.panes.map((pane, index) => {\n var _a, _b, _c, _d;\n const uid = pane.uid;\n const disabled = pane.props.disabled;\n const tabName = (_b = (_a = pane.props.name) != null ? _a : pane.index) != null ? _b : `${index}`;\n const closable = !disabled && (pane.isClosable || props.editable);\n pane.index = `${index}`;\n const btnClose = closable ? createVNode(ElIcon, {\n \"class\": \"is-icon-close\",\n \"onClick\": (ev) => emit(\"tabRemove\", pane, ev)\n }, {\n default: () => [createVNode(Close, null, null)]\n }) : null;\n const tabLabelContent = ((_d = (_c = pane.slots).label) == null ? void 0 : _d.call(_c)) || pane.props.label;\n const tabindex = !disabled && pane.active ? 0 : -1;\n return createVNode(\"div\", {\n \"ref\": `tab-${uid}`,\n \"class\": [ns.e(\"item\"), ns.is(rootTabs.props.tabPosition), ns.is(\"active\", pane.active), ns.is(\"disabled\", disabled), ns.is(\"closable\", closable), ns.is(\"focus\", isFocus.value)],\n \"id\": `tab-${tabName}`,\n \"key\": `tab-${uid}`,\n \"aria-controls\": `pane-${tabName}`,\n \"role\": \"tab\",\n \"aria-selected\": pane.active,\n \"tabindex\": tabindex,\n \"onFocus\": () => setFocus(),\n \"onBlur\": () => removeFocus(),\n \"onClick\": (ev) => {\n removeFocus();\n emit(\"tabClick\", pane, tabName, ev);\n },\n \"onKeydown\": (ev) => {\n if (closable && (ev.code === EVENT_CODE.delete || ev.code === EVENT_CODE.backspace)) {\n emit(\"tabRemove\", pane, ev);\n }\n }\n }, [...[tabLabelContent, btnClose]]);\n });\n return createVNode(\"div\", {\n \"ref\": el$,\n \"class\": [ns.e(\"nav-wrap\"), ns.is(\"scrollable\", !!scrollable.value), ns.is(rootTabs.props.tabPosition)]\n }, [scrollBtn, createVNode(\"div\", {\n \"class\": ns.e(\"nav-scroll\"),\n \"ref\": navScroll$\n }, [createVNode(\"div\", {\n \"class\": [ns.e(\"nav\"), ns.is(rootTabs.props.tabPosition), ns.is(\"stretch\", props.stretch && [\"top\", \"bottom\"].includes(rootTabs.props.tabPosition))],\n \"ref\": nav$,\n \"style\": navStyle.value,\n \"role\": \"tablist\",\n \"onKeydown\": changeTab\n }, [...[!props.type ? createVNode(TabBar, {\n \"ref\": tabBarRef,\n \"tabs\": [...props.panes]\n }, null) : null, tabs]])])]);\n };\n }\n});\n\nexport { TabNav as default, tabNavEmits, tabNavProps };\n//# sourceMappingURL=tab-nav.mjs.map\n","import { defineComponent, getCurrentInstance, ref, watch, nextTick, provide, createVNode, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { Plus } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport { tabsRootContextKey } from './constants.mjs';\nimport TabNav from './tab-nav.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { isString } from '@vue/shared';\nimport { isNumber, isUndefined } from '../../../utils/types.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useOrderedChildren } from '../../../hooks/use-ordered-children/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\n\nconst tabsProps = buildProps({\n type: {\n type: String,\n values: [\"card\", \"border-card\", \"\"],\n default: \"\"\n },\n closable: Boolean,\n addable: Boolean,\n modelValue: {\n type: [String, Number]\n },\n editable: Boolean,\n tabPosition: {\n type: String,\n values: [\"top\", \"right\", \"bottom\", \"left\"],\n default: \"top\"\n },\n beforeLeave: {\n type: definePropType(Function),\n default: () => true\n },\n stretch: Boolean\n});\nconst isPaneName = (value) => isString(value) || isNumber(value);\nconst tabsEmits = {\n [UPDATE_MODEL_EVENT]: (name) => isPaneName(name),\n tabClick: (pane, ev) => ev instanceof Event,\n tabChange: (name) => isPaneName(name),\n edit: (paneName, action) => [\"remove\", \"add\"].includes(action),\n tabRemove: (name) => isPaneName(name),\n tabAdd: () => true\n};\nconst Tabs = defineComponent({\n name: \"ElTabs\",\n props: tabsProps,\n emits: tabsEmits,\n setup(props, {\n emit,\n slots,\n expose\n }) {\n var _a;\n const ns = useNamespace(\"tabs\");\n const {\n children: panes,\n addChild: registerPane,\n removeChild: unregisterPane\n } = useOrderedChildren(getCurrentInstance(), \"ElTabPane\");\n const nav$ = ref();\n const currentName = ref((_a = props.modelValue) != null ? _a : \"0\");\n const setCurrentName = async (value, trigger = false) => {\n var _a2, _b, _c;\n if (currentName.value === value || isUndefined(value))\n return;\n try {\n const canLeave = await ((_a2 = props.beforeLeave) == null ? void 0 : _a2.call(props, value, currentName.value));\n if (canLeave !== false) {\n currentName.value = value;\n if (trigger) {\n emit(UPDATE_MODEL_EVENT, value);\n emit(\"tabChange\", value);\n }\n (_c = (_b = nav$.value) == null ? void 0 : _b.removeFocus) == null ? void 0 : _c.call(_b);\n }\n } catch (e) {\n }\n };\n const handleTabClick = (tab, tabName, event) => {\n if (tab.props.disabled)\n return;\n setCurrentName(tabName, true);\n emit(\"tabClick\", tab, event);\n };\n const handleTabRemove = (pane, ev) => {\n if (pane.props.disabled || isUndefined(pane.props.name))\n return;\n ev.stopPropagation();\n emit(\"edit\", pane.props.name, \"remove\");\n emit(\"tabRemove\", pane.props.name);\n };\n const handleTabAdd = () => {\n emit(\"edit\", void 0, \"add\");\n emit(\"tabAdd\");\n };\n watch(() => props.modelValue, (modelValue) => setCurrentName(modelValue));\n watch(currentName, async () => {\n var _a2;\n await nextTick();\n (_a2 = nav$.value) == null ? void 0 : _a2.scrollToActiveTab();\n });\n provide(tabsRootContextKey, {\n props,\n currentName,\n registerPane,\n unregisterPane\n });\n expose({\n currentName\n });\n return () => {\n const addSlot = slots[\"add-icon\"];\n const newButton = props.editable || props.addable ? createVNode(\"span\", {\n \"class\": ns.e(\"new-tab\"),\n \"tabindex\": \"0\",\n \"onClick\": handleTabAdd,\n \"onKeydown\": (ev) => {\n if (ev.code === EVENT_CODE.enter)\n handleTabAdd();\n }\n }, [addSlot ? renderSlot(slots, \"add-icon\") : createVNode(ElIcon, {\n \"class\": ns.is(\"icon-plus\")\n }, {\n default: () => [createVNode(Plus, null, null)]\n })]) : null;\n const header = createVNode(\"div\", {\n \"class\": [ns.e(\"header\"), ns.is(props.tabPosition)]\n }, [newButton, createVNode(TabNav, {\n \"ref\": nav$,\n \"currentName\": currentName.value,\n \"editable\": props.editable,\n \"type\": props.type,\n \"panes\": panes.value,\n \"stretch\": props.stretch,\n \"onTabClick\": handleTabClick,\n \"onTabRemove\": handleTabRemove\n }, null)]);\n const panels = createVNode(\"div\", {\n \"class\": ns.e(\"content\")\n }, [renderSlot(slots, \"default\")]);\n return createVNode(\"div\", {\n \"class\": [ns.b(), ns.m(props.tabPosition), {\n [ns.m(\"card\")]: props.type === \"card\",\n [ns.m(\"border-card\")]: props.type === \"border-card\"\n }]\n }, [...props.tabPosition !== \"bottom\" ? [header, panels] : [panels, header]]);\n };\n }\n});\n\nexport { Tabs as default, tabsEmits, tabsProps };\n//# sourceMappingURL=tabs.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst tabPaneProps = buildProps({\n label: {\n type: String,\n default: \"\"\n },\n name: {\n type: [String, Number]\n },\n closable: Boolean,\n disabled: Boolean,\n lazy: Boolean\n});\n\nexport { tabPaneProps };\n//# sourceMappingURL=tab-pane.mjs.map\n","import { defineComponent, getCurrentInstance, useSlots, inject, ref, computed, watch, reactive, onMounted, onUnmounted, unref, withDirectives, openBlock, createElementBlock, normalizeClass, renderSlot, vShow, createCommentVNode } from 'vue';\nimport { eagerComputed } from '@vueuse/core';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { tabsRootContextKey } from './constants.mjs';\nimport { tabPaneProps } from './tab-pane.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { throwError } from '../../../utils/error.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst _hoisted_1 = [\"id\", \"aria-hidden\", \"aria-labelledby\"];\nconst COMPONENT_NAME = \"ElTabPane\";\nconst __default__ = defineComponent({\n name: COMPONENT_NAME\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: tabPaneProps,\n setup(__props) {\n const props = __props;\n const instance = getCurrentInstance();\n const slots = useSlots();\n const tabsRoot = inject(tabsRootContextKey);\n if (!tabsRoot)\n throwError(COMPONENT_NAME, \"usage: \");\n const ns = useNamespace(\"tab-pane\");\n const index = ref();\n const isClosable = computed(() => props.closable || tabsRoot.props.closable);\n const active = eagerComputed(() => {\n var _a;\n return tabsRoot.currentName.value === ((_a = props.name) != null ? _a : index.value);\n });\n const loaded = ref(active.value);\n const paneName = computed(() => {\n var _a;\n return (_a = props.name) != null ? _a : index.value;\n });\n const shouldBeRender = eagerComputed(() => !props.lazy || loaded.value || active.value);\n watch(active, (val) => {\n if (val)\n loaded.value = true;\n });\n const pane = reactive({\n uid: instance.uid,\n slots,\n props,\n paneName,\n active,\n index,\n isClosable\n });\n onMounted(() => {\n tabsRoot.registerPane(pane);\n });\n onUnmounted(() => {\n tabsRoot.unregisterPane(pane.uid);\n });\n return (_ctx, _cache) => {\n return unref(shouldBeRender) ? withDirectives((openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: `pane-${unref(paneName)}`,\n class: normalizeClass(unref(ns).b()),\n role: \"tabpanel\",\n \"aria-hidden\": !unref(active),\n \"aria-labelledby\": `tab-${unref(paneName)}`\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1)), [\n [vShow, unref(active)]\n ]) : createCommentVNode(\"v-if\", true);\n };\n }\n});\nvar TabPane = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"tab-pane.vue\"]]);\n\nexport { TabPane as default };\n//# sourceMappingURL=tab-pane2.mjs.map\n","import '../../utils/index.mjs';\nimport Tabs from './src/tabs.mjs';\nexport { tabsEmits, tabsProps } from './src/tabs.mjs';\nimport TabPane from './src/tab-pane2.mjs';\nexport { tabBarProps } from './src/tab-bar.mjs';\nexport { tabNavEmits, tabNavProps } from './src/tab-nav.mjs';\nexport { tabPaneProps } from './src/tab-pane.mjs';\nexport { tabsRootContextKey } from './src/constants.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElTabs = withInstall(Tabs, {\n TabPane\n});\nconst ElTabPane = withNoopInstall(TabPane);\n\nexport { ElTabPane, ElTabs, ElTabs as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { componentSizes } from '../../../constants/size.mjs';\n\nconst textProps = buildProps({\n type: {\n type: String,\n values: [\"primary\", \"success\", \"info\", \"warning\", \"danger\", \"\"],\n default: \"\"\n },\n size: {\n type: String,\n values: componentSizes,\n default: \"\"\n },\n truncated: {\n type: Boolean\n },\n lineClamp: {\n type: [String, Number]\n },\n tag: {\n type: String,\n default: \"span\"\n }\n});\n\nexport { textProps };\n//# sourceMappingURL=text.mjs.map\n","import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, normalizeClass, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../utils/index.mjs';\nimport { textProps } from './text.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { isUndefined } from '../../../utils/types.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElText\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: textProps,\n setup(__props) {\n const props = __props;\n const textSize = useFormSize();\n const ns = useNamespace(\"text\");\n const textKls = computed(() => [\n ns.b(),\n ns.m(props.type),\n ns.m(textSize.value),\n ns.is(\"truncated\", props.truncated),\n ns.is(\"line-clamp\", !isUndefined(props.lineClamp))\n ]);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), {\n class: normalizeClass(unref(textKls)),\n style: normalizeStyle({ \"-webkit-line-clamp\": _ctx.lineClamp })\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"style\"]);\n };\n }\n});\nvar Text = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"text.vue\"]]);\n\nexport { Text as default };\n//# sourceMappingURL=text2.mjs.map\n","import '../../utils/index.mjs';\nimport Text from './src/text2.mjs';\nexport { textProps } from './src/text.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElText = withInstall(Text);\n\nexport { ElText, ElText as default };\n//# sourceMappingURL=index.mjs.map\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import '../../../../utils/index.mjs';\nimport { timePanelSharedProps } from './shared.mjs';\nimport { buildProps, definePropType } from '../../../../utils/vue/props/runtime.mjs';\n\nconst panelTimeRangeProps = buildProps({\n ...timePanelSharedProps,\n parsedValue: {\n type: definePropType(Array)\n }\n});\n\nexport { panelTimeRangeProps };\n//# sourceMappingURL=panel-time-range.mjs.map\n","import { defineComponent, inject, computed, ref, unref, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createVNode, createCommentVNode } from 'vue';\nimport dayjs from 'dayjs';\nimport { union } from 'lodash-unified';\nimport '../../../../hooks/index.mjs';\nimport '../../../../utils/index.mjs';\nimport '../../../../constants/index.mjs';\nimport { panelTimeRangeProps } from '../props/panel-time-range.mjs';\nimport { useTimePanel } from '../composables/use-time-panel.mjs';\nimport { useOldValue, buildAvailableTimeSlotGetter } from '../composables/use-time-picker.mjs';\nimport TimeSpinner from './basic-time-spinner.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { isArray } from '@vue/shared';\n\nconst _hoisted_1 = [\"disabled\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"panel-time-range\",\n props: panelTimeRangeProps,\n emits: [\"pick\", \"select-range\", \"set-picker-option\"],\n setup(__props, { emit }) {\n const props = __props;\n const makeSelectRange = (start, end) => {\n const result = [];\n for (let i = start; i <= end; i++) {\n result.push(i);\n }\n return result;\n };\n const { t, lang } = useLocale();\n const nsTime = useNamespace(\"time\");\n const nsPicker = useNamespace(\"picker\");\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue\n } = pickerBase.props;\n const startContainerKls = computed(() => [\n nsTime.be(\"range-picker\", \"body\"),\n nsTime.be(\"panel\", \"content\"),\n nsTime.is(\"arrow\", arrowControl),\n showSeconds.value ? \"has-seconds\" : \"\"\n ]);\n const endContainerKls = computed(() => [\n nsTime.be(\"range-picker\", \"body\"),\n nsTime.be(\"panel\", \"content\"),\n nsTime.is(\"arrow\", arrowControl),\n showSeconds.value ? \"has-seconds\" : \"\"\n ]);\n const startTime = computed(() => props.parsedValue[0]);\n const endTime = computed(() => props.parsedValue[1]);\n const oldValue = useOldValue(props);\n const handleCancel = () => {\n emit(\"pick\", oldValue.value, false);\n };\n const showSeconds = computed(() => {\n return props.format.includes(\"ss\");\n });\n const amPmMode = computed(() => {\n if (props.format.includes(\"A\"))\n return \"A\";\n if (props.format.includes(\"a\"))\n return \"a\";\n return \"\";\n });\n const handleConfirm = (visible = false) => {\n emit(\"pick\", [startTime.value, endTime.value], visible);\n };\n const handleMinChange = (date) => {\n handleChange(date.millisecond(0), endTime.value);\n };\n const handleMaxChange = (date) => {\n handleChange(startTime.value, date.millisecond(0));\n };\n const isValidValue = (_date) => {\n const parsedDate = _date.map((_) => dayjs(_).locale(lang.value));\n const result = getRangeAvailableTime(parsedDate);\n return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1]);\n };\n const handleChange = (start, end) => {\n emit(\"pick\", [start, end], true);\n };\n const btnConfirmDisabled = computed(() => {\n return startTime.value > endTime.value;\n });\n const selectionRange = ref([0, 2]);\n const setMinSelectionRange = (start, end) => {\n emit(\"select-range\", start, end, \"min\");\n selectionRange.value = [start, end];\n };\n const offset = computed(() => showSeconds.value ? 11 : 8);\n const setMaxSelectionRange = (start, end) => {\n emit(\"select-range\", start, end, \"max\");\n const _offset = unref(offset);\n selectionRange.value = [start + _offset, end + _offset];\n };\n const changeSelectionRange = (step) => {\n const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];\n const mapping = [\"hours\", \"minutes\"].concat(showSeconds.value ? [\"seconds\"] : []);\n const index = list.indexOf(selectionRange.value[0]);\n const next = (index + step + list.length) % list.length;\n const half = list.length / 2;\n if (next < half) {\n timePickerOptions[\"start_emitSelectRange\"](mapping[next]);\n } else {\n timePickerOptions[\"end_emitSelectRange\"](mapping[next - half]);\n }\n };\n const handleKeydown = (event) => {\n const code = event.code;\n const { left, right, up, down } = EVENT_CODE;\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1;\n changeSelectionRange(step);\n event.preventDefault();\n return;\n }\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1;\n const role = selectionRange.value[0] < offset.value ? \"start\" : \"end\";\n timePickerOptions[`${role}_scrollDown`](step);\n event.preventDefault();\n return;\n }\n };\n const disabledHours_ = (role, compare) => {\n const defaultDisable = disabledHours ? disabledHours(role) : [];\n const isStart = role === \"start\";\n const compareDate = compare || (isStart ? endTime.value : startTime.value);\n const compareHour = compareDate.hour();\n const nextDisable = isStart ? makeSelectRange(compareHour + 1, 23) : makeSelectRange(0, compareHour - 1);\n return union(defaultDisable, nextDisable);\n };\n const disabledMinutes_ = (hour, role, compare) => {\n const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : [];\n const isStart = role === \"start\";\n const compareDate = compare || (isStart ? endTime.value : startTime.value);\n const compareHour = compareDate.hour();\n if (hour !== compareHour) {\n return defaultDisable;\n }\n const compareMinute = compareDate.minute();\n const nextDisable = isStart ? makeSelectRange(compareMinute + 1, 59) : makeSelectRange(0, compareMinute - 1);\n return union(defaultDisable, nextDisable);\n };\n const disabledSeconds_ = (hour, minute, role, compare) => {\n const defaultDisable = disabledSeconds ? disabledSeconds(hour, minute, role) : [];\n const isStart = role === \"start\";\n const compareDate = compare || (isStart ? endTime.value : startTime.value);\n const compareHour = compareDate.hour();\n const compareMinute = compareDate.minute();\n if (hour !== compareHour || minute !== compareMinute) {\n return defaultDisable;\n }\n const compareSecond = compareDate.second();\n const nextDisable = isStart ? makeSelectRange(compareSecond + 1, 59) : makeSelectRange(0, compareSecond - 1);\n return union(defaultDisable, nextDisable);\n };\n const getRangeAvailableTime = ([start, end]) => {\n return [\n getAvailableTime(start, \"start\", true, end),\n getAvailableTime(end, \"end\", false, start)\n ];\n };\n const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(disabledHours_, disabledMinutes_, disabledSeconds_);\n const {\n timePickerOptions,\n getAvailableTime,\n onSetOption\n } = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds\n });\n const parseUserInput = (days) => {\n if (!days)\n return null;\n if (isArray(days)) {\n return days.map((d) => dayjs(d, props.format).locale(lang.value));\n }\n return dayjs(days, props.format).locale(lang.value);\n };\n const formatToString = (days) => {\n if (!days)\n return null;\n if (isArray(days)) {\n return days.map((d) => d.format(props.format));\n }\n return days.format(props.format);\n };\n const getDefaultValue = () => {\n if (isArray(defaultValue)) {\n return defaultValue.map((d) => dayjs(d).locale(lang.value));\n }\n const defaultDay = dayjs(defaultValue).locale(lang.value);\n return [defaultDay, defaultDay.add(60, \"m\")];\n };\n emit(\"set-picker-option\", [\"formatToString\", formatToString]);\n emit(\"set-picker-option\", [\"parseUserInput\", parseUserInput]);\n emit(\"set-picker-option\", [\"isValidValue\", isValidValue]);\n emit(\"set-picker-option\", [\"handleKeydownInput\", handleKeydown]);\n emit(\"set-picker-option\", [\"getDefaultValue\", getDefaultValue]);\n emit(\"set-picker-option\", [\"getRangeAvailableTime\", getRangeAvailableTime]);\n return (_ctx, _cache) => {\n return _ctx.actualVisible ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([unref(nsTime).b(\"range-picker\"), unref(nsPicker).b(\"panel\")])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsTime).be(\"range-picker\", \"content\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsTime).be(\"range-picker\", \"cell\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsTime).be(\"range-picker\", \"header\"))\n }, toDisplayString(unref(t)(\"el.datepicker.startTime\")), 3),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(startContainerKls))\n }, [\n createVNode(TimeSpinner, {\n ref: \"minSpinner\",\n role: \"start\",\n \"show-seconds\": unref(showSeconds),\n \"am-pm-mode\": unref(amPmMode),\n \"arrow-control\": unref(arrowControl),\n \"spinner-date\": unref(startTime),\n \"disabled-hours\": disabledHours_,\n \"disabled-minutes\": disabledMinutes_,\n \"disabled-seconds\": disabledSeconds_,\n onChange: handleMinChange,\n onSetOption: unref(onSetOption),\n onSelectRange: setMinSelectionRange\n }, null, 8, [\"show-seconds\", \"am-pm-mode\", \"arrow-control\", \"spinner-date\", \"onSetOption\"])\n ], 2)\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsTime).be(\"range-picker\", \"cell\"))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsTime).be(\"range-picker\", \"header\"))\n }, toDisplayString(unref(t)(\"el.datepicker.endTime\")), 3),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(endContainerKls))\n }, [\n createVNode(TimeSpinner, {\n ref: \"maxSpinner\",\n role: \"end\",\n \"show-seconds\": unref(showSeconds),\n \"am-pm-mode\": unref(amPmMode),\n \"arrow-control\": unref(arrowControl),\n \"spinner-date\": unref(endTime),\n \"disabled-hours\": disabledHours_,\n \"disabled-minutes\": disabledMinutes_,\n \"disabled-seconds\": disabledSeconds_,\n onChange: handleMaxChange,\n onSetOption: unref(onSetOption),\n onSelectRange: setMaxSelectionRange\n }, null, 8, [\"show-seconds\", \"am-pm-mode\", \"arrow-control\", \"spinner-date\", \"onSetOption\"])\n ], 2)\n ], 2)\n ], 2),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(nsTime).be(\"panel\", \"footer\"))\n }, [\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(nsTime).be(\"panel\", \"btn\"), \"cancel\"]),\n onClick: _cache[0] || (_cache[0] = ($event) => handleCancel())\n }, toDisplayString(unref(t)(\"el.datepicker.cancel\")), 3),\n createElementVNode(\"button\", {\n type: \"button\",\n class: normalizeClass([unref(nsTime).be(\"panel\", \"btn\"), \"confirm\"]),\n disabled: unref(btnConfirmDisabled),\n onClick: _cache[1] || (_cache[1] = ($event) => handleConfirm())\n }, toDisplayString(unref(t)(\"el.datepicker.confirm\")), 11, _hoisted_1)\n ], 2)\n ], 2)) : createCommentVNode(\"v-if\", true);\n };\n }\n});\nvar TimeRangePanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"panel-time-range.vue\"]]);\n\nexport { TimeRangePanel as default };\n//# sourceMappingURL=panel-time-range.mjs.map\n","import { defineComponent, ref, provide, createVNode, mergeProps } from 'vue';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { DEFAULT_FORMATS_TIME } from './constants.mjs';\nimport CommonPicker from './common/picker.mjs';\nimport TimePickPanel from './time-picker-com/panel-time-pick.mjs';\nimport TimeRangePanel from './time-picker-com/panel-time-range.mjs';\nimport { timePickerDefaultProps } from './common/props.mjs';\n\ndayjs.extend(customParseFormat);\nvar TimePicker = defineComponent({\n name: \"ElTimePicker\",\n install: null,\n props: {\n ...timePickerDefaultProps,\n isRange: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:modelValue\"],\n setup(props, ctx) {\n const commonPicker = ref();\n const [type, Panel] = props.isRange ? [\"timerange\", TimeRangePanel] : [\"time\", TimePickPanel];\n const modelUpdater = (value) => ctx.emit(\"update:modelValue\", value);\n provide(\"ElPopperOptions\", props.popperOptions);\n ctx.expose({\n focus: (e) => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.handleFocusInput(e);\n },\n blur: (e) => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.handleBlurInput(e);\n },\n handleOpen: () => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.handleOpen();\n },\n handleClose: () => {\n var _a;\n (_a = commonPicker.value) == null ? void 0 : _a.handleClose();\n }\n });\n return () => {\n var _a;\n const format = (_a = props.format) != null ? _a : DEFAULT_FORMATS_TIME;\n return createVNode(CommonPicker, mergeProps(props, {\n \"ref\": commonPicker,\n \"type\": type,\n \"format\": format,\n \"onUpdate:modelValue\": modelUpdater\n }), {\n default: (props2) => createVNode(Panel, props2, null)\n });\n };\n }\n});\n\nexport { TimePicker as default };\n//# sourceMappingURL=time-picker.mjs.map\n","import TimePicker from './src/time-picker.mjs';\nexport { default as CommonPicker } from './src/common/picker.mjs';\nexport { default as TimePickPanel } from './src/time-picker-com/panel-time-pick.mjs';\nexport { buildTimeList, dateEquals, extractDateFormat, extractTimeFormat, formatter, makeList, parseDate, rangeArr, valueEquals } from './src/utils.mjs';\nexport { DEFAULT_FORMATS_DATE, DEFAULT_FORMATS_DATEPICKER, DEFAULT_FORMATS_TIME, timeUnits } from './src/constants.mjs';\nexport { timePickerDefaultProps } from './src/common/props.mjs';\n\nconst _TimePicker = TimePicker;\n_TimePicker.install = (app) => {\n app.component(_TimePicker.name, _TimePicker);\n};\nconst ElTimePicker = _TimePicker;\n\nexport { ElTimePicker, _TimePicker as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { Clock, CircleClose } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-size/index.mjs';\nimport { useEmptyValuesProps } from '../../../hooks/use-empty-values/index.mjs';\n\nconst timeSelectProps = buildProps({\n format: {\n type: String,\n default: \"HH:mm\"\n },\n modelValue: String,\n disabled: Boolean,\n editable: {\n type: Boolean,\n default: true\n },\n effect: {\n type: String,\n default: \"light\"\n },\n clearable: {\n type: Boolean,\n default: true\n },\n size: useSizeProp,\n placeholder: String,\n start: {\n type: String,\n default: \"09:00\"\n },\n end: {\n type: String,\n default: \"18:00\"\n },\n step: {\n type: String,\n default: \"00:30\"\n },\n minTime: String,\n maxTime: String,\n name: String,\n prefixIcon: {\n type: definePropType([String, Object]),\n default: () => Clock\n },\n clearIcon: {\n type: definePropType([String, Object]),\n default: () => CircleClose\n },\n ...useEmptyValuesProps\n});\n\nexport { timeSelectProps };\n//# sourceMappingURL=time-select.mjs.map\n","const parseTime = (time) => {\n const values = (time || \"\").split(\":\");\n if (values.length >= 2) {\n let hours = Number.parseInt(values[0], 10);\n const minutes = Number.parseInt(values[1], 10);\n const timeUpper = time.toUpperCase();\n if (timeUpper.includes(\"AM\") && hours === 12) {\n hours = 0;\n } else if (timeUpper.includes(\"PM\") && hours !== 12) {\n hours += 12;\n }\n return {\n hours,\n minutes\n };\n }\n return null;\n};\nconst compareTime = (time1, time2) => {\n const value1 = parseTime(time1);\n if (!value1)\n return -1;\n const value2 = parseTime(time2);\n if (!value2)\n return -1;\n const minutes1 = value1.minutes + value1.hours * 60;\n const minutes2 = value2.minutes + value2.hours * 60;\n if (minutes1 === minutes2) {\n return 0;\n }\n return minutes1 > minutes2 ? 1 : -1;\n};\nconst padTime = (time) => {\n return `${time}`.padStart(2, \"0\");\n};\nconst formatTime = (time) => {\n return `${padTime(time.hours)}:${padTime(time.minutes)}`;\n};\nconst nextTime = (time, step) => {\n const timeValue = parseTime(time);\n if (!timeValue)\n return \"\";\n const stepValue = parseTime(step);\n if (!stepValue)\n return \"\";\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes\n };\n next.minutes += stepValue.minutes;\n next.hours += stepValue.hours;\n next.hours += Math.floor(next.minutes / 60);\n next.minutes = next.minutes % 60;\n return formatTime(next);\n};\n\nexport { compareTime, formatTime, nextTime, padTime, parseTime };\n//# sourceMappingURL=utils.mjs.map\n","import { defineComponent, ref, computed, openBlock, createBlock, unref, withCtx, normalizeClass, resolveDynamicComponent, createCommentVNode, createElementBlock, Fragment, renderList } from 'vue';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { ElSelect } from '../../select/index.mjs';\nimport '../../form/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { timeSelectProps } from './time-select.mjs';\nimport { parseTime, formatTime, compareTime, nextTime } from './utils.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTimeSelect\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: timeSelectProps,\n emits: [\"change\", \"blur\", \"focus\", \"update:modelValue\"],\n setup(__props, { expose }) {\n const props = __props;\n dayjs.extend(customParseFormat);\n const { Option: ElOption } = ElSelect;\n const nsInput = useNamespace(\"input\");\n const select = ref();\n const _disabled = useFormDisabled();\n const { lang } = useLocale();\n const value = computed(() => props.modelValue);\n const start = computed(() => {\n const time = parseTime(props.start);\n return time ? formatTime(time) : null;\n });\n const end = computed(() => {\n const time = parseTime(props.end);\n return time ? formatTime(time) : null;\n });\n const step = computed(() => {\n const time = parseTime(props.step);\n return time ? formatTime(time) : null;\n });\n const minTime = computed(() => {\n const time = parseTime(props.minTime || \"\");\n return time ? formatTime(time) : null;\n });\n const maxTime = computed(() => {\n const time = parseTime(props.maxTime || \"\");\n return time ? formatTime(time) : null;\n });\n const items = computed(() => {\n const result = [];\n if (props.start && props.end && props.step) {\n let current = start.value;\n let currentTime;\n while (current && end.value && compareTime(current, end.value) <= 0) {\n currentTime = dayjs(current, \"HH:mm\").locale(lang.value).format(props.format);\n result.push({\n value: currentTime,\n disabled: compareTime(current, minTime.value || \"-1:-1\") <= 0 || compareTime(current, maxTime.value || \"100:100\") >= 0\n });\n current = nextTime(current, step.value);\n }\n }\n return result;\n });\n const blur = () => {\n var _a, _b;\n (_b = (_a = select.value) == null ? void 0 : _a.blur) == null ? void 0 : _b.call(_a);\n };\n const focus = () => {\n var _a, _b;\n (_b = (_a = select.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);\n };\n expose({\n blur,\n focus\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElSelect), {\n ref_key: \"select\",\n ref: select,\n \"model-value\": unref(value),\n disabled: unref(_disabled),\n clearable: _ctx.clearable,\n \"clear-icon\": _ctx.clearIcon,\n size: _ctx.size,\n effect: _ctx.effect,\n placeholder: _ctx.placeholder,\n \"default-first-option\": \"\",\n filterable: _ctx.editable,\n \"empty-values\": _ctx.emptyValues,\n \"value-on-clear\": _ctx.valueOnClear,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = (event) => _ctx.$emit(\"update:modelValue\", event)),\n onChange: _cache[1] || (_cache[1] = (event) => _ctx.$emit(\"change\", event)),\n onBlur: _cache[2] || (_cache[2] = (event) => _ctx.$emit(\"blur\", event)),\n onFocus: _cache[3] || (_cache[3] = (event) => _ctx.$emit(\"focus\", event))\n }, {\n prefix: withCtx(() => [\n _ctx.prefixIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(nsInput).e(\"prefix-icon\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.prefixIcon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ]),\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(items), (item) => {\n return openBlock(), createBlock(unref(ElOption), {\n key: item.value,\n label: item.value,\n value: item.value,\n disabled: item.disabled\n }, null, 8, [\"label\", \"value\", \"disabled\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"model-value\", \"disabled\", \"clearable\", \"clear-icon\", \"size\", \"effect\", \"placeholder\", \"filterable\", \"empty-values\", \"value-on-clear\"]);\n };\n }\n});\nvar TimeSelect = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"time-select.vue\"]]);\n\nexport { TimeSelect as default };\n//# sourceMappingURL=time-select2.mjs.map\n","import TimeSelect from './src/time-select2.mjs';\n\nTimeSelect.install = (app) => {\n app.component(TimeSelect.name, TimeSelect);\n};\nconst _TimeSelect = TimeSelect;\nconst ElTimeSelect = _TimeSelect;\n\nexport { ElTimeSelect, _TimeSelect as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, provide, h, renderSlot } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst Timeline = defineComponent({\n name: \"ElTimeline\",\n setup(_, { slots }) {\n const ns = useNamespace(\"timeline\");\n provide(\"timeline\", slots);\n return () => {\n return h(\"ul\", { class: [ns.b()] }, [renderSlot(slots, \"default\")]);\n };\n }\n});\n\nexport { Timeline as default };\n//# sourceMappingURL=timeline.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\n\nconst timelineItemProps = buildProps({\n timestamp: {\n type: String,\n default: \"\"\n },\n hideTimestamp: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n values: [\"top\", \"bottom\"],\n default: \"bottom\"\n },\n type: {\n type: String,\n values: [\"primary\", \"success\", \"warning\", \"danger\", \"info\"],\n default: \"\"\n },\n color: {\n type: String,\n default: \"\"\n },\n size: {\n type: String,\n values: [\"normal\", \"large\"],\n default: \"normal\"\n },\n icon: {\n type: iconPropType\n },\n hollow: {\n type: Boolean,\n default: false\n }\n});\n\nexport { timelineItemProps };\n//# sourceMappingURL=timeline-item.mjs.map\n","import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, normalizeStyle, createBlock, withCtx, resolveDynamicComponent, createCommentVNode, renderSlot, toDisplayString } from 'vue';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { timelineItemProps } from './timeline-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTimelineItem\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: timelineItemProps,\n setup(__props) {\n const props = __props;\n const ns = useNamespace(\"timeline-item\");\n const defaultNodeKls = computed(() => [\n ns.e(\"node\"),\n ns.em(\"node\", props.size || \"\"),\n ns.em(\"node\", props.type || \"\"),\n ns.is(\"hollow\", props.hollow)\n ]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([unref(ns).b(), { [unref(ns).e(\"center\")]: _ctx.center }])\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"tail\"))\n }, null, 2),\n !_ctx.$slots.dot ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(defaultNodeKls)),\n style: normalizeStyle({\n backgroundColor: _ctx.color\n })\n }, [\n _ctx.icon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(ns).e(\"icon\"))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))\n ]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)\n ], 6)) : createCommentVNode(\"v-if\", true),\n _ctx.$slots.dot ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass(unref(ns).e(\"dot\"))\n }, [\n renderSlot(_ctx.$slots, \"dot\")\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"wrapper\"))\n }, [\n !_ctx.hideTimestamp && _ctx.placement === \"top\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([unref(ns).e(\"timestamp\"), unref(ns).is(\"top\")])\n }, toDisplayString(_ctx.timestamp), 3)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"content\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2),\n !_ctx.hideTimestamp && _ctx.placement === \"bottom\" ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: normalizeClass([unref(ns).e(\"timestamp\"), unref(ns).is(\"bottom\")])\n }, toDisplayString(_ctx.timestamp), 3)) : createCommentVNode(\"v-if\", true)\n ], 2)\n ], 2);\n };\n }\n});\nvar TimelineItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"timeline-item.vue\"]]);\n\nexport { TimelineItem as default };\n//# sourceMappingURL=timeline-item2.mjs.map\n","import '../../utils/index.mjs';\nimport Timeline from './src/timeline.mjs';\nimport TimelineItem from './src/timeline-item2.mjs';\nexport { timelineItemProps } from './src/timeline-item.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElTimeline = withInstall(Timeline, {\n TimelineItem\n});\nconst ElTimelineItem = withNoopInstall(TimelineItem);\n\nexport { ElTimeline, ElTimelineItem, ElTimeline as default };\n//# sourceMappingURL=index.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst tooltipV2CommonProps = buildProps({\n nowrap: Boolean\n});\nvar TooltipV2Sides = /* @__PURE__ */ ((TooltipV2Sides2) => {\n TooltipV2Sides2[\"top\"] = \"top\";\n TooltipV2Sides2[\"bottom\"] = \"bottom\";\n TooltipV2Sides2[\"left\"] = \"left\";\n TooltipV2Sides2[\"right\"] = \"right\";\n return TooltipV2Sides2;\n})(TooltipV2Sides || {});\nconst tooltipV2Sides = Object.values(TooltipV2Sides);\nconst tooltipV2OppositeSide = {\n [\"top\" /* top */]: \"bottom\" /* bottom */,\n [\"bottom\" /* bottom */]: \"top\" /* top */,\n [\"left\" /* left */]: \"right\" /* right */,\n [\"right\" /* right */]: \"left\" /* left */\n};\nconst tooltipV2ArrowBorders = {\n [\"top\" /* top */]: [\"left\" /* left */, \"top\" /* top */],\n [\"bottom\" /* bottom */]: [\"bottom\" /* bottom */, \"right\" /* right */],\n [\"left\" /* left */]: [\"bottom\" /* bottom */, \"left\" /* left */],\n [\"right\" /* right */]: [\"top\" /* top */, \"right\" /* right */]\n};\n\nexport { TooltipV2Sides, tooltipV2ArrowBorders, tooltipV2CommonProps, tooltipV2OppositeSide, tooltipV2Sides };\n//# sourceMappingURL=common.mjs.map\n","import '../../../utils/index.mjs';\nimport { tooltipV2Sides } from './common.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst tooltipV2ArrowProps = buildProps({\n width: {\n type: Number,\n default: 10\n },\n height: {\n type: Number,\n default: 10\n },\n style: {\n type: definePropType(Object),\n default: null\n }\n});\nconst tooltipV2ArrowSpecialProps = buildProps({\n side: {\n type: definePropType(String),\n values: tooltipV2Sides,\n required: true\n }\n});\n\nexport { tooltipV2ArrowProps, tooltipV2ArrowSpecialProps };\n//# sourceMappingURL=arrow.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useAriaProps } from '../../../hooks/use-aria/index.mjs';\n\nconst tooltipV2Strategies = [\"absolute\", \"fixed\"];\nconst tooltipV2Placements = [\n \"top-start\",\n \"top-end\",\n \"top\",\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"left-start\",\n \"left-end\",\n \"left\",\n \"right-start\",\n \"right-end\",\n \"right\"\n];\nconst tooltipV2ContentProps = buildProps({\n arrowPadding: {\n type: definePropType(Number),\n default: 5\n },\n effect: {\n type: String,\n default: \"\"\n },\n contentClass: String,\n placement: {\n type: definePropType(String),\n values: tooltipV2Placements,\n default: \"bottom\"\n },\n reference: {\n type: definePropType(Object),\n default: null\n },\n offset: {\n type: Number,\n default: 8\n },\n strategy: {\n type: definePropType(String),\n values: tooltipV2Strategies,\n default: \"absolute\"\n },\n showArrow: {\n type: Boolean,\n default: false\n },\n ...useAriaProps([\"ariaLabel\"])\n});\n\nexport { tooltipV2ContentProps };\n//# sourceMappingURL=content.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst tooltipV2RootProps = buildProps({\n delayDuration: {\n type: Number,\n default: 300\n },\n defaultOpen: Boolean,\n open: {\n type: Boolean,\n default: void 0\n },\n onOpenChange: {\n type: definePropType(Function)\n },\n \"onUpdate:open\": {\n type: definePropType(Function)\n }\n});\n\nexport { tooltipV2RootProps };\n//# sourceMappingURL=root.mjs.map\n","import '../../../utils/index.mjs';\nimport { definePropType, buildProps } from '../../../utils/vue/props/runtime.mjs';\n\nconst EventHandler = {\n type: definePropType(Function)\n};\nconst tooltipV2TriggerProps = buildProps({\n onBlur: EventHandler,\n onClick: EventHandler,\n onFocus: EventHandler,\n onMouseDown: EventHandler,\n onMouseEnter: EventHandler,\n onMouseLeave: EventHandler\n});\n\nexport { tooltipV2TriggerProps };\n//# sourceMappingURL=trigger.mjs.map\n","import '../../../utils/index.mjs';\nimport { tooltipV2RootProps } from './root.mjs';\nimport { tooltipV2TriggerProps } from './trigger.mjs';\nimport { tooltipV2ArrowProps } from './arrow.mjs';\nimport { tooltipV2ContentProps } from './content.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst tooltipV2Props = buildProps({\n ...tooltipV2RootProps,\n ...tooltipV2ArrowProps,\n ...tooltipV2TriggerProps,\n ...tooltipV2ContentProps,\n alwaysOn: Boolean,\n fullTransition: Boolean,\n transitionProps: {\n type: definePropType(Object),\n default: null\n },\n teleported: Boolean,\n to: {\n type: definePropType(String),\n default: \"body\"\n }\n});\n\nexport { tooltipV2Props };\n//# sourceMappingURL=tooltip.mjs.map\n","const tooltipV2RootKey = Symbol(\"tooltipV2\");\nconst tooltipV2ContentKey = Symbol(\"tooltipV2Content\");\nconst TOOLTIP_V2_OPEN = \"tooltip_v2.open\";\n\nexport { TOOLTIP_V2_OPEN, tooltipV2ContentKey, tooltipV2RootKey };\n//# sourceMappingURL=constants.mjs.map\n","import { defineComponent, ref, computed, unref, watch, onMounted, onBeforeUnmount, provide, renderSlot } from 'vue';\nimport { useTimeoutFn } from '@vueuse/core';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { TOOLTIP_V2_OPEN, tooltipV2RootKey } from './constants.mjs';\nimport { tooltipV2RootProps } from './root.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { isPropAbsent, isNumber } from '../../../utils/types.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTooltipV2Root\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: tooltipV2RootProps,\n setup(__props, { expose }) {\n const props = __props;\n const _open = ref(props.defaultOpen);\n const triggerRef = ref(null);\n const open = computed({\n get: () => isPropAbsent(props.open) ? _open.value : props.open,\n set: (open2) => {\n var _a;\n _open.value = open2;\n (_a = props[\"onUpdate:open\"]) == null ? void 0 : _a.call(props, open2);\n }\n });\n const isOpenDelayed = computed(() => isNumber(props.delayDuration) && props.delayDuration > 0);\n const { start: onDelayedOpen, stop: clearTimer } = useTimeoutFn(() => {\n open.value = true;\n }, computed(() => props.delayDuration), {\n immediate: false\n });\n const ns = useNamespace(\"tooltip-v2\");\n const contentId = useId();\n const onNormalOpen = () => {\n clearTimer();\n open.value = true;\n };\n const onDelayOpen = () => {\n unref(isOpenDelayed) ? onDelayedOpen() : onNormalOpen();\n };\n const onOpen = onNormalOpen;\n const onClose = () => {\n clearTimer();\n open.value = false;\n };\n const onChange = (open2) => {\n var _a;\n if (open2) {\n document.dispatchEvent(new CustomEvent(TOOLTIP_V2_OPEN));\n onOpen();\n }\n (_a = props.onOpenChange) == null ? void 0 : _a.call(props, open2);\n };\n watch(open, onChange);\n onMounted(() => {\n document.addEventListener(TOOLTIP_V2_OPEN, onClose);\n });\n onBeforeUnmount(() => {\n clearTimer();\n document.removeEventListener(TOOLTIP_V2_OPEN, onClose);\n });\n provide(tooltipV2RootKey, {\n contentId,\n triggerRef,\n ns,\n onClose,\n onDelayOpen,\n onOpen\n });\n expose({\n onOpen,\n onClose\n });\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\", { open: unref(open) });\n };\n }\n});\nvar TooltipV2Root = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"root.vue\"]]);\n\nexport { TooltipV2Root as default };\n//# sourceMappingURL=root2.mjs.map\n","import { defineComponent, inject, computed, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass } from 'vue';\nimport { tooltipV2RootKey, tooltipV2ContentKey } from './constants.mjs';\nimport { tooltipV2ArrowProps, tooltipV2ArrowSpecialProps } from './arrow.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\n\nconst __default__ = defineComponent({\n name: \"ElTooltipV2Arrow\"\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n ...tooltipV2ArrowProps,\n ...tooltipV2ArrowSpecialProps\n },\n setup(__props) {\n const props = __props;\n const { ns } = inject(tooltipV2RootKey);\n const { arrowRef } = inject(tooltipV2ContentKey);\n const arrowStyle = computed(() => {\n const { style, width, height } = props;\n const namespace = ns.namespace.value;\n return {\n [`--${namespace}-tooltip-v2-arrow-width`]: `${width}px`,\n [`--${namespace}-tooltip-v2-arrow-height`]: `${height}px`,\n [`--${namespace}-tooltip-v2-arrow-border-width`]: `${width / 2}px`,\n [`--${namespace}-tooltip-v2-arrow-cover-width`]: width / 2 - 1,\n ...style || {}\n };\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n ref_key: \"arrowRef\",\n ref: arrowRef,\n style: normalizeStyle(unref(arrowStyle)),\n class: normalizeClass(unref(ns).e(\"arrow\"))\n }, null, 6);\n };\n }\n});\nvar TooltipV2Arrow = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"arrow.vue\"]]);\n\nexport { TooltipV2Arrow as default };\n//# sourceMappingURL=arrow2.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle